Чем отличается драйвер от контроллера

Обновлено: 04.07.2024

Принцип работы драйвера и контроллера Шагового Двигателя

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Принцип работы драйвера и контроллера Шагового Двигателя

kvadrat » 11 мар 2012, 22:25

В чем разница между драйвером шаговго двигателя и микроконтроллером ШД при управлении с компьютера?
Есть ли разница в их работе?
Как (на словах, принципиально) должна выглядеть прграмма микроконтроллера ШД для того что бы ШД сделал точно задаваемое количетсво шагов? И какая исходня информация должна поступить из компьютера?

dccharacter » 11 мар 2012, 22:56

Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.

kvadrat » 16 мар 2012, 10:53

L297 подходит только для управления биполярными шд? можно униполярным этой штукой управлять?

шд что во флопиках это какой тип шд? судя о 4 контактам - биполярные. так?

Добавлено спустя 41 минуту 22 секунды:
А можно в этом хламе найти что то содержащее в себе источник импульсного тока?

TomaT » 18 мар 2012, 17:18

kvadrat писал(а): L297 подходит только для управления биполярными шд? можно униполярным этой штукой управлять? kvadrat писал(а): шд что во флопиках это какой тип шд? судя о 4 контактам - биполярные. так?

Так (как правило).

Еще раз советую внимательнейшим образом прочитать статью Леонида Ивановича.

Myp » 19 мар 2012, 10:06

прям так просто?
а выбор мотора соответсно делается ножками Drive Sel ? <telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!

TomaT » 20 мар 2012, 01:28

Не помню точно, но что то вроде того. У флопика вообще мозгов нет. Там только усилители головок, драйвер шаговика и шпинделя. Ну и мелочь вроде концевиков.

Добавлено спустя 45 минут 16 секунд:
"Motor Enable" - включает шпиндель, "Drive Sel" - Разрешает копошение на остальных ногах. На какой А или В откликаться выбирается перемычкой на флопике. Чтоб при наличие двух флопов на одном ремешке перемычки не трогать, между ними перехлест в ремешке сделан.

Добавлено спустя 7 минут 45 секунд:
Помнится имела место еще какая то сугубая заморочь с этим перехлестом, но убей не помню какая именно.

kvadrat » 20 мар 2012, 16:40

Не попадалось вам такое же готовое решение для униполярного ШД, как для L297 для биполярного? Нигде не могу найти - только микроконтроллеры, а их еще нужно уметь программировать

TomaT » 20 мар 2012, 19:42

The L297 Stepper Motor Controller IC generates four phase drive signals for two phase bipolar and four phase unipolar step motors in microcomputer controlled applications.
Швелешь ей не два Н-моста, а четыре отдельных ключа, вот и вся разница.

kvadrat » 20 мар 2012, 21:14

это здорово если вы правы. для униполярного двигателя режимы на L297 Полный шаг/Пол шага так же будут работать?

setar » 20 мар 2012, 23:16

kvadrat писал(а): Не попадалось вам такое же готовое решение для униполярного ШД, как для L297 для биполярного? Нигде не могу найти - только микроконтроллеры, а их еще нужно уметь программировать

Dmitry__ » 20 мар 2012, 23:54

setar писал(а): вот хороший шилд готовый, использую в 3D принтере

TomaT » 21 мар 2012, 00:00

В общем случае драйвер биполярного шаговика будет крутить униполярный, но могут быть нюансы.
Просто будут работать только нижние ключи мостов.
297-я она без выходных ключей, ей фиолетово чем управлять. Полшага/шаг будет так-же.
Униполярным драйвером биполярный движок крутить не получится.
Это если у него выводы всех обмоток в кучку соединены (5 проводов).
Если отдельные выводы от средних точек (6 проводов), то лучше включить как биполярник, оставив средние точки в воздухе висеть.
Момент больше будет, правда из-за возросшей индуктивности обмоток момент начнет падать при более низкой частоте шагов. Можно конечно подключить половинки обмоток, но это будет шило на мыло с униполярным, т.к. опять же только половина меди будет работать.

ЗЫ. А нюанс в том, что верхний ключ замкнет нерабочую обмотку. А ее нужно "бросить". Все равно 297-й фиолетово.

В USB 4 пина: +5V, +Data, -Data и земля.
Если вы подключите двигатель к +5 и земле, он конечно сможет работать, но далеко не все материнские платы умеют отключать питание подающееся на USB, и управлять им не получится. Со скоростью все еще интереснее - скорость двигателей регулируется изменением напряжения или при помощи ШИМ. Изменять напряжение на USB вы не сможете, а попытка реализовать ШИМ отключением питания на USB может открыть врата ада.

Не морочьте голову, купите какую-нибудь *-дуину или аттини за пол доллара, и играйтесь. И начинать лучше с мигания светодиодиком - так сложнее что-нибудь сжечь.

И да, для всяких -дуин есть IDE с поддержкой кучи языков.

И второй уровень, с файфаем - есть такая штука как ESP8266 - это контроллер со встроенным вайфаем. Очень часто используется во всякой любительской электронике. Стоит в районе $2.5 - $3.

Jeer

Спасибо за ответ.
Про usb, это я по незнанию, не обязательно и питать и управлять через него, просто через usb может подключаться практически вся компьютерная периферия (принтеры, дисководы и т.д.) а так же телефонные устройства (селфи-палка, да много чего). Я и подумал, что через usb самый простой способ.
Про управление питанием через компьютер я тоже понимаю, имел в виду, что не прямо из ПК мы регулируем напряжение, а мы лишь передаём сигнал. Уже внутри нашего вентилятора реализуем увеличение/уменьшение напряжения, как и замыкание-размыкание сети. И управляем этим всем через сигналы.
Как я понял, Ардуино (еще нашел Raspberry Pi и Lego Mindstorm) - это такие платы, в которых есть процессор, оперативная память, даже примитивный монитор - по сути упрощённые компьютеры. Эти платы созданы так, что они легко расширяются - можно в них втыкать моторы и упомянутый вами ESP8266 - модуль вайфая. И для них есть свои языки, как говорят, лёгкие в обучении, так? На самом деле мне этого вполне достаточно, куплю себе какой-нибудь конструктор из этих и поиграюсь.
Но у меня появился еще один вопрос. Допустим, что я собрал на ардуино такой вентилятор, написал свою программу управления на ПК с четыремя кнопками, подружил вентилятор с компьютером и всё это как-то заработало. Что нужно будет сделать, чтобы собрать аналогичный вентилятор без ардуино? К примеру для того, чтобы делать такие вентиляторы на продажу. Ардуино даёт мощь и гибкость, но я буду использовать лишь малую часть его потенциала, а за остальное всё равно придётся платить. Так вот? Изучать схемотехнику, забрать, грубо говоря, используемые мной узлы. А потом что, моя программа, написанная для ардуино не будет работать, моя программа, написанная для ПК не будет работать.
Не надо придираться к тому, что это никому не нужный вентилятор, это лишь пример. Мне очень важно понять сами принципы и дальнейшее развитие. Еще придумал другой пример, не вентилятор, а квадрокоптер. Я так понимаю, что смогу собрать квадрокоптер на ардуино. Сейчас продаются куча разных квадрокоптеров, возможно, есть и с вайфаем, возможно есть и с управлением через компьютер/телефон, но внутри них же не стоит ардуино. Что там внутри? Аналогичная плата с процессором и оперативной памятью? Но без таких широких возможностей, как в ардуино, а с узкой специализацией? Но раз есть процессор, значит, нужны и драйвера (которые написаны на c/c++ или ассемблере)? В принтере с вайфаем тоже есть плата с процессором и оперативной памятью? Значит, там есть своя внутренняя программа (на чем она написана?) и на компьютер ставится программа, чтобы он мог управлять этим принтером, так? Как это всё связывают вместе? Как это всё работает?
Как я понял, Ардуино (еще нашел Raspberry Pi и Lego Mindstorm) - это такие платы, в которых есть процессор, оперативная память, даже примитивный монитор - по сути упрощённые компьютеры. Эти платы созданы так, что они легко расширяются - можно в них втыкать моторы и упомянутый вами ESP8266 - модуль вайфая. И для них есть свои языки, как говорят, лёгкие в обучении, так?

Про лего не скажу, но там и цена странная и возможности так себе.

Ардуино - это действительно платка с контроллером и некоторой обвязкой. Экрана в базовой версии нет, но его можно подключить. Но есть упрощенные модели ардуины, в том числе китайские клоны. И самое крутое - можно купить отдельно чип контроллера, и работать напрямую с ним. Аттини стоит 30-40 центов, например.

Про языки программирования: внутри контроллера все равно будет крутиться ассемблер. Но под самые распространенные модели есть IDE и компиляторы, способные загонять туда даже программы написанные на javascript. Ардуина основана на atmega-вском чипе, а младшие версии этих чипов имеют ту-же архитектуру, только чуть помедленее, ножек поменьше и памяти поменьше. В итоге нетребовательные к ресурсам прошивки можно перенести с ардуины на аттини почти без изменений кода.

ESP8266-Wifi-Chip-with-SDIO-2-0.jpg

ESP8266 - не просто модуль файфая - это контроллер со встроенным файфаем. Т.е. и мозги и память и файфай - всё внутри одной вот такой штучки:

HTB1.CmSGXXXXXalXVXXq6xXFXXXN.jpg

А с минимальной платкой с обвесом получится примерно так:

К примеру для того, чтобы делать такие вентиляторы на продажу.

Я какбы уже догадался, что вы хотите сделать что-то на продажу, потому и указываю цены. Attiny13 обойдутся в 28 центов/шт при покупек 10 штук на алиэкспрессе. Если закажете их тысячами у производителя - будет дешевле.

Что там внутри? Аналогичная плата с процессором и оперативной памятью?

Кристофер Ллойд, перелогиньтесь! У вас снова сломалась машина времени?

ОДНОКРИСТАЛЬНЫЕ МИКРОКОНТРОЛЛЕРЫ производятся с конца восьмидесятых, и сейчас уже стоят копейки. Там на одном кристалле и процессор и память и куча всего. atmega, attiny, stm32

SoC - System on Chip - более крутая и современная штука, но для ваших целей слишком крутая, наверное (потому что дороже). Это ядро всяких телефонов.

vePhR6MtINDqiqe0vgtXxJMliDOY70o1KOa7.jpg

Есть и другое всякое, вплоть до intel edison, на котором можно win 10 запустить!

Значит, там есть своя внутренняя программа (на чем она написана?) и на компьютер ставится программа, чтобы он мог управлять этим принтером, так? Как это всё связывают вместе? Как это всё работает?

Это в комментарии не уместится. Почитайте про архитектуру вычислительных систем, про устройство процессоров.

Да, для работы с самодельной периферией придется что-то писать. Если это что-то фабричное или широко распространенное - скорее всего есть готовые решения. Примерами управления движком забит весь интернет, например.

В любом процесоре - и в вашем десктопе, и в телефоне. и в контроллере стиральной машинки "внутренняя программа" - набор машинных кодов. Ближе всего к ним идет ассемблер, но и для других языков есть компиляторы, которые генерируют машинные коды или байткод. Если вы выбираете именно по поддержке языков - присмотритесь к атмеловским контроллерам. На волне популярности ардуино было очень много всего сделано для компиляции под атмегу и аттини заодно.

К примеру, покупаем привод (микромоторчик), приппаиваем к нему провод usb (или нужен переходник?) и втыкаем в комп, тогда моторчик начинает крутиться, так как есть ток, верно? Теперь, чтобы сделать включение/выключение с компьютера, и уж тем более скорость вращения, нам нужен некий контроллер. Для которого просто необходим драйвер?
Дикая идея. Чисто теоретически можно запитать моторчик от USB, но лучше этого не делать. Даже если ты запитаешь моторчик от USB он просто будет крутится, для управления моторчиком с компьютера нужен микроконтроллер с соответствующей программой (не драйвером, учись использовать правильную терминологию) и программа управления на компьютер. Проблема в том, что МК с аппаратным USB стоят дорого, а программный USB штука для новичка сложная, но есть выход это платы Arduino (или их более дешевые и такие же надежные китайские братья). На платах Arduino есть конвертер USB-UART, т.е. при подключении такой платы к компьютеру у тебя будет обычный COM порт (вот тут тебе понадобится драйвер конвертера) с помощью которого можно обмениваться данными с МК.

И второй уровень, если я хочу подключить wi-fi (питание тут не интересует, из розетки или батареек), то мне в вентилятор необходимо добавить сам модуль wi-fi, но чтобы теперь организовать работоспособность, необходим процессор, который будет работать с вайфаем? То есть в вентиляторе нужна управляющая программа (прошивка? программа-сервер?), а так же драйверы по управлению приводами, которые необходимо писать для этого процессора? На компьютере же у нас останется только программа с вызовом (клиент?).
Да пожалуйста, без проблем


Как уважаемый хабрапользователь наверняка знает, «драйвер устройства» — это компьютерная программа управляющая строго определенным типом устройства, подключенным к или входящим в состав любого настольного или переносного компьютера.

Основная задача любого драйвера – это предоставление софтового интерфейса для управления устройством, с помощью которого операционная система и другие компьютерные программы получают доступ к функциям данного устройства, «не зная» как конкретно оно используется и работает.

Обычно драйвер общается с устройством через шину или коммуникационную подсистему, к которой подключено непосредственное устройство. Когда программа вызывает процедуру (очередность операций) драйвера – он направляет команды на само устройство. Как только устройство выполнило процедуру («рутину»), данные посылаются обратно в драйвер и уже оттуда в ОС.

Любой драйвер является зависимым от самого устройства и специфичен для каждой операционной системы. Обычно драйверы предоставляют схему прерывания для обработки асинхронных процедур в интерфейсе, зависимом от времени ее исполнения.

Любая операционная система обладает «картой устройств» (которую мы видим в диспетчере устройств), для каждого из которых необходим специфический драйвер. Исключения составляют лишь центральный процессор и оперативная память, которой управляет непосредственно ОС. Для всего остального нужен драйвер, который переводит команды операционной системы в последовательность прерываний – пресловутый «двоичный код».

Как работает драйвер и для чего он нужен?

Основное назначение драйвера – это упрощение процесса программирования работы с устройством.

Он служит «переводчиком» между хардовым (железным) интерфейсом и приложениями или операционными системами, которые их используют. Разработчики могут писать, с помощью драйверов, высокоуровневые приложения и программы не вдаваясь в подробности низкоуровневого функционала каждого из необходимых устройств в отдельности.

Как уже упоминалось, драйвер специфичен для каждого устройства. Он «понимает» все операции, которые устройство может выполнять, а также протокол, с помощью которого происходит взаимодействие между софтовой и железной частью. И, естественно, управляется операционной системой, в которой выполняет конкретной приложение либо отдельная функция самой ОС («печать с помощью принтера»).

Если вы хотите отформатировать жесткий диск, то, упрощенно, этот процесс выглядит следующим образом и имеет определенную последовательность: (1) сначала ОС отправляет команду в драйвер устройства используя команду, которую понимает и драйвер, и операционная система. (2) После этого драйвер конкретного устройства переводит команду в формат, который понимает уже только устройство. (3) Жесткий диск форматирует себя, возвращает результат драйверу, который уже впоследствии переводит эту команду на «язык» операционной системы и выдает результат её пользователю (4).

Как создается драйвер устройства


Для каждого устройства существует свой строгий порядок выполнения команд, называемой «инструкцией». Не зная инструкцию к устройству, невозможно написать для него драйвер, так как низкоуровневые машинные команды являются двоичным кодом (прерываниями) которые на выходе отправляют в драйвер результат, полученный в ходе выполнения этой самой инструкции.

При создании драйвера для Линукса, вам необходимо знать не только тип шины и ее адрес, но и схематику самого устройства, а также весь набор электрических прерываний, в ходе исполнения которых устройство отдает результат драйверу.

Написание любого драйвера начинается с его «скелета» — то есть самых основных команд вроде «включения/выключения» и заканчивая специфическими для данного устройства параметрами.

И чем драйвер не является

Часто драйвер устройства сравнивается с другими программами, выполняющими роль «посредника» между софтом и/или железом. Для того, чтобы расставить точки над «i», уточняем:

  • Драйвер не является интерпретатором, так как не исполняется напрямую в софтовом слое приложения или операционной системы.
  • Драйвер не является компилятором, так как не переводит команды из одного софтового слоя в другой, такой же.

Ну и на правах рекламы – вы всегда знаете, где скачать новейшие драйвера для любых устройств под ОС Windows.

«Слетели драйвера», «У меня нет драйверов на принтер», «Видеокарте нужны драйвера» — если вам непонятно, что это значит и на что влияют драйверы, то эта статья для вас.

Что такое драйвер

Драйвер — это программа, которая работает как инструкция для операционной системы. Драйвер объясняет операционке, как пользоваться каким-то устройством.

Устройство — это то, что физически подключается к компьютеру:

  • видеокарта,
  • мышь,
  • криптотокен,
  • монитор,
  • сканер,
  • джойстик для игр.

Драйвер рассказывает компьютеру, как этим железом пользоваться, что оно умеет, какие команды понимает и как это железо могут использовать другие программы.

👉 Технически драйвер — это программа, которая висит в памяти компьютера всё время, пока компьютеру нужно это устройство.

Что такое драйвер и зачем он нужен

Известное и неизвестное железо

Операционная система в компьютере знает и умеет многое, в том числе и работать со стандартным оборудованием. Стандартным — это значит тем, которое предоставляет стандартные возможности.

Например, клавиатура, мышь или веб-камера — это стандартное оборудование, потому что независимо от производителя они делают примерно одно и то же.

Разработчики операционной системы знают про такое оборудование, поэтому могут написать стандартные драйверы, которые подойдут к большинству устройств. Именно поэтому мы можем купить в магазине новую мышь и просто подключить её к компьютеру без установки дополнительных программ — операционная система сама разберётся, что делать.

Но бывает так, что разработчики добавили в устройство нестандартные возможности: переназначение сочетаний клавиш, сделали мышь с несколькими колёсиками или встроенный лазерный дальномер в видеокамеру. В этом случае компьютер не разберётся, как этим всем пользоваться, потому что в стандартных драйверах про это ничего нет.

В таких случаях разработчики устройств пишут свой драйвер, который объяснит компьютеру, как пользоваться всеми возможностями устройства. Этот драйвер нужно будет установить.

Сложное оборудование

Ещё бывает так, что оборудование хоть и стандартное, но сложное, например, видеокарта или принтер. Каждый производитель добавляет свои функции и технологии, которые считает нужными, и чаще всего они не совпадают с другими. Если подключить такое устройство к компьютеру, то компьютер, скорее всего, разберётся, что именно в него воткнули, то как с этим работать — неизвестно.

Здесь тоже нужны драйверы — они идут или в комплекте с устройством на компакт-диске или их качают с официального сайта производителя. Чем сложнее устройство, тем больше вероятность, что без установки дополнительных драйверов оно работать не будет.

Например, если у вас навороченная видеокарта, вы вставляете её в компьютер и сначала видите странную огромную картинку с низким разрешением. Это значит, что компьютер пока не нашёл драйверов на эту карточку и запустил её в «режиме совместимости» — то есть в том режиме, в котором он точно сможет ей управлять. Но возможности видеокарты будут сильно порезаны, пока мы не установим нужные нам драйверы.

Что значит «слетели драйвера»?

Это значит, что компьютер не может найти файлы с инструкциями от какого-то устройства. Так бывает при обновлениях системы, заражении вирусом или просто кто-то случайно мог удалить нужные файлы или папку целиком.

Решение простое: берёте заново драйвер с официального сайта или тот, который шёл в комплекте с устройством, и запускаете программу-установщик заново. А она уже сама разберётся, каких файлов не хватает, и настроит всё заново.

Драйверы нужны только на Windows?

Драйверы нужны на всех компьютерах и для всех операционных систем. Но некоторые операционки идут с кучей драйверов в комплекте, а у других этот набор более скромный.

Общее правило для 2021 года такое: большая часть оборудования, которое нужно для обычной офисной работы, подключится к любому компьютеру без необходимости что-то устанавливать. Операционка сама поймёт, что это за устройство, и, скорее всего, у неё уже будут драйверы.

А вот какое-то более сложное оборудование (например, профессиональная аудиокарта или видеокамера) потребуют установки драйверов от производителя.

В чём проблема с драйверами

Проблема в том, что часто производители не делают новые драйверы для старого оборудования. Например:

Есть диджейский контроллер Numark NS7 — это профессиональное оборудование для диджеев и артистов, оно стоит дорого и нужно примерно 100 тысячам человек на всей планете.

Когда контроллер только вышел, компания Numark выпускала драйвера на все свежие операционные системы, проблем с совместимостью не было.

Потом аппарат сняли с производства, поддержку прекратили. Последняя версия драйверов, которую выпустил Numark, — для Windows 10 и MacOS 10.12 (Sierra). С тех пор у Windows вышло большое обновление до 11, а MacOS обновился раз пять. Причём последние две версии сделаны для процессоров Apple, и уже нет надежды, что Numark обновит драйверы для этой архитектуры.

Так что, если вам достался этот редкий профессиональный прибор, вы вынуждены сидеть на древней MacOS Sierra, которая стремительно перестаёт поддерживаться современным софтом.

Читайте также: