воскресенье, 31 августа 2014 г.

Управление шаговым двигателем через LPT, ATtiny2313 и самодельный драйвер.

Как было написано ранее самодельный драйвер двигателей на транзисторах можно использовать не только для управления коллекторными моторчиками постоянного тока но и для управления шаговыми двигателями. Шаговые двигатели можно использовать для изготовления самодельных станков, роботов и прочих интересных вещей. Коллекторные двигатели тоже можно использовать для этих целей и асинхронные тоже но шаговые для таких применений обладают преимуществами: 1) точность, 2) отсутствие необходимости в обратной связи, 3) высокий момент и 4) низкие обороты. Начать освоение шаговых двигателей можно с каких нибудь дешёвых небольших например таких:
Рисунок 1 - Шаговый двигатель

У этого двигателя имеется 4 вывода 2 из них идут на одну обмотку остальные 2 на другую. Ротор двигателя будет вращаться если на определённые выводы в определённой последовательности подавать определённые напряжения. Есть несколько способов управления шаговым двигателем, один из них иллюстрируется на рисунке:
Рисунок 2 - Пример управления шаговым двигателем

Микроконтроллер может управлять драйвером так чтобы ротор подключённого к этому драйверу шагового двигателя вращался, для этого можно например хранить последовательности состояний выводов в массиве и перебирать их по очереди с необходимой периодичностью и в нужном направлении. А можно управляющую программу запускать на компьютере а микроконтроллер использовать для преобразования последовательного кода в набор состояний выводов микроконтроллера. LPT-порт параллельный и для управления шаговым двигателем в этом нет необходимости но так всё же можно поступить например для того чтобы не переделывать (сделанную ранее) схему для перепрограммирования микроконтроллера:
Рисунок 3 - ATtiny2313 и LPT-порт

Драйвер также не нужно переделывать:
Рисунок 4 - Драйвер двигателей

Прошивку для ATtiny2313 вместе с проектом для WinAVR можно скачать здесь. Программу (вместе с inpout32.dll) для управления двигателем можно скачать здесь, для этой программы как и для предыдущей необходим файл inpout32.dll который должен находится в той же папке что и программа. Эту программу можно использовать не только для управления шаговым двигателем. Вообще она подойдёт для управления как угодно драйвером на небольшой частоте. Посмотреть всё в действии можно на видео:
Купить ATtiny2313 в dip корпусе.
КАРТА БЛОГА (содержание)

суббота, 16 августа 2014 г.

LPT, ATtiny2313 и управление двигателем.

LPT порт редко имеется на современных компьютерах и ноутбуках, однако управление устройствами с компьютера через LPT порт является наиболее простым, особенно это важно для тех кто не имеет опыта управления самодельными устройствами с компьютера. Управлять устройствами через LPT порт можно напрямую или же через микроконтроллер. Особого преимущества в использовании микроконтроллера, в данном случае, нет однако можно использовать данный способ например для записи в микроконтроллер команд без его перепрограммирования. Но сначала можно потренироваться на простых действиях например попытаться управлять двигателем. Рассмотрим схему:
Рисунок 1 - ATtiny3213 и разъём для LPT

Схема почти такая же как и в предыдущей статье только здесь теперь показано подключение к LPT порту. Подключение такое что через LPT порт микроконтроллер также можно и перепрограммировать в среде WinAVR, поэтому данное устройство почти не изменено после проверки самодельного драйвера двигателей:
Рисунок 2 - Драйвер электродвигателей

Единственное изменение это отсоединение одного из двигателей:
Рисунок 3 - Подключение двигателя

Программа для микроконтроллера:
Скачать проект с яндекс диска.
Программа для управления LPT портом оказалась сложнее и для её работы в Windows XP необходима библиотека inpout32.dll (есть и другие: vbio32.dll, dlportio.dll и т.д.). Для использования программы код который приведен ниже в папке с этой программой должна находиться библиотека inpout32.dll. Т.к. эта библиотека загружается динамически то заголовочные файлы и другие библиотеки не нужны. Рассмотрим код:
Скачать программу и код управления LPT портом с яндекс диска.
Сначала идёт поиск и загрузка библиотеки потом определение адресов функций после чего само управление LPT портом (4 попытки после) затем освобождение памяти и выход. Данная программа писалась в среде Dev C++. Для создания такой программы в этой среде:
1)Открываем Dev C++,
2)Выбираем Файл->Создать->Исходный файл,
3)Записываем исходный код,
4)Нажимаем Ctrl+F9 (или Выполнить->Скомпилировать)
5)Указываем папку
6)В указанной ранее папке появляется файл расширением exe это и есть наша программа, в данную папку необходимо переместить/скопировать библиотеку inpout32.dll. LPT, ATtiny2313 и управление двигателем видео:

КАРТА БЛОГА (содержание)

воскресенье, 10 августа 2014 г.

Драйвер двигателей своими руками.

Для непосредственного управления маломощными электродвигателями можно использовать готовые микросхемы драйверы такие как например L293D. Однако мощность интегральных микросхем ограничена и во многих случаях бывает целесообразно применять драйвер на транзисторах например:
Схема 1 - Драйвер электродвигателей

Этот драйвер представляет собой набор полумостов с усилителями напряжения и обратными диодами. Через такой драйвер можно управлять двумя маломощными коллекторными электродвигателями постоянного тока, одним подходящим маломощным асинхронными электродвигателем или одним подходящим четырёхвыводным маломощными шаговым электродвигателем а также этому драйверу можно найти много других применений (например для передачи напряжений на динамик, для преобразования напряжений и т.д. для чего применяются мосты). В общем полезная вещь для использования совместно с микроконтроллером. Рассмотрим пример подключения к этому драйверу маломощных коллекторных электродвигателей постоянного тока:
Схема 2 - Пример подключения коллекторных двигателей

Можно подключать так но в принципе не обязательно, можно и по другому. Пример подключения драйвера к микроконтроллеру ATtiny2313:
Рисунок 3 - Подключение драйвера к микроконтроллеру

Для изготовления платы драйвера можно использовать двусторонний фольгированный стеклотекстолит и надфиль (надфиль используется как инструмент для вырезания дорожек на фольгированном стеклотекстолите).
Для силовых транзисторов сверлятся отверстия:
Широкие медные площадки способствует отводу тепла. Термопасту использовать не надо т.к. нужен ещё и хороший электрический контакт между корпусом силового транзистора (который соединён с коллектором) и площадкой. На обратной стороне площадка разделяется вдоль (одна-земля (GND), другая"+" питания):
Металлические части корпуса транзисторов немного очищаются для лучшего электрического и теплового контактов и прикручиваются к плате (КТ817 на площадку с "+"ом, КТ816 на площадку с землёй (GND)):
Далее к плате припаиваются остальные детали:
Можно испытать драйвер с микроконтроллером с прошивкой из предыдущей статьи, как это будет работать можно посмотреть на видео:

КАРТА БЛОГА (содержание)

воскресенье, 3 августа 2014 г.

Многоцветный RGB светодиод и микроконтроллер ATtiny2313.

ATtiny2313 -это ещё один из avr микроконтроллеров который полезно освоить т.к. он дешевле чем например ATmega8, ATmega16. ATtiny2313 имеет меньше функций чем ATmega8, ATmega16 но многие функции очень часто бывают лишними в простых устройствах на микроконтроллере к тому же ATtiny2313 имеет количество выводов достаточное для многих практических применений. Освоение ATtiny2313 начнём с сознания устройства для управления многоцветным RGB светодиодом. Такой светодиод можно найти в магазине радиодеталей например можно спросить о его наличии у продавца или найти нужный светодиод в интернете и заказать. Рассмотрим схему:
Рисунок 1 - Многоцветный RGB светодиод и микроконтроллер ATtiny2313

Кнопкой S1 будем менять интенсивность свечения. R2,R3,С1-для нейтрализации последствий дребезга контактов (последствия-микроконтроллер "думает" что на кнопку нажато много раз хотя на самом деле кнопка нажата один раз). R1,R7,R8,R9-внешние подтягивающие резисторы (т.к. в отличии от ATmega8, ATmega16 для ATtiny2313 внутренних недостаточно). Многопозиционный переключатель S2 -для выбора света интенсивность которого будет меняться. Назначения выводов светодиода можно определить мультиметром в режиме проверки диодов. Рассмотрим исходный код программы на языке C:


Глобальные переменные объявляются так:
volatile unsigned char глобальная_переменная;
Регистр разрешения прерываний на int0 теперь называется GIMSK (для ATmega16 GICR это можно увидеть из кода на странице счётчик на ATmega16 (там же подробно про настройку внешних прерываний на INT0 и INT1)). В остальном ничего сложного.
Проект делался в среде WinAVR, скачать проект можно по ссылке: https://yadi.sk/d/J-8K7n5UYyYAt. Подробнее о программировании микроконтроллеров можно узнать на сайте: myrobot.ru в разделе "шаг за шагом".
Устройство в действии:

Для определения шестнадцатеричного числа конфигурирования портов ввода вывода микроконтроллера ATtiny2313 можно воспользоваться программой приведённой ниже. Галочки означают - логические единицы, пустые чекбоксы (квадратики) - логические нули.
ATtiny2313
1 PA2 VCC 20
2 PD0 PB7 19
3 PD1 PB6 18
4 PA1 PB5 17
5 PA0 PB4 16
6 PD2 PB3 15
7 PD3 PB2 14
8 PD4 PB1 13
9 PD5 PB0 12
10 GND PD6 11


PB=
PD=
Купить микроконтроллер ATtiny2313 в dip корпусе.
RGB светодиод 5мм 10шт.
КАРТА БЛОГА (содержание)