Контроллер биполярного шагового двигателя на ATtiny24

Эта штука разрабатывалась “на заказ” для верчения шаговым моторчиком с разными скоростями. Проект не то, чтобы коммерческий  – он довольно прост. К тому же клиент оказался чудаком на букву “М” и куда-то пропал, но я к этому всегда относился философски. К первоначальной “заказной” идее я добавил немного универсальности с программированием скоростей и получилось то, что получилось. Особенно полезной данная конструкция, думаю, будет тому, кто знаком с принципом работы шагового двигателя, его драйвером и кого останавливает только отсутствие источника управляющего сигнала. Вот схема:

Логически схема разбита на четыре части. Как вы это уже будете размещать в своей конструкции зависит только от вас. Секцию “драйвер шагового двигателя” и собственно двигатель выбираете вы, на стабилизаторе MC34063 я тоже не буду останавливаться, она всего лишь понижает напряжение питания до 8в. О MC34063 не знает только ленивый. Остановлюсь на контроллере и схеме управления. Контроллер имеет четыре вывода управления ШД. На них в порядке A1-B1-A2-B2 и обратном появляются управляющие импульсы с частотой примерно от 15гц до 1300гц. Кнопка “старт” запускает / останавливает процесс. Кнопка “выбор” перебирает по кругу восемь предустановленных скоростей. Выбор скорости производится только когда двигатель не крутится. Данные о скорости хранятся в энергонезависимой памяти. Также туда сохраняется номер последней скорости. Первые семь скоростей прямые, т.е. A1-B1-A2-B2, восьмая реверс – т.е. – B2-A2-B1-A1. И наконец самое интересное – все восемь скоростей “программируются” пользователем без правок кода и программатора! Для этого выполняем следующую последовательность действий:
1. Замыкаем переключатель “обучение”
2. Выбираем скорость, которую будем “обучать”
3. Жмем “старт”
4. Переменным резистором “скорость” устанавливаем требуемую скорость.
5. Жмем “старт” – скорость запомнена для того номера на котором находились.
6. Размыкаем “обучение” – возвращаемся к нормальной работе.
Как побочный эффект – можно пользовать режим “обучения” для плавной регулировки переменным резистором. Тогда этот выключатель и резистор выносят на переднюю панель.

Теперь немного о конструкции:
На ATtiny24 выбор пал как на самый подходящий контроллер по количеству лап и наличию АЦП. Для оптимизации использования ног вывод на светодиоды производится через сдвиговый регистр 74HC164, также отдельно “оптимизирована” кнопка “выбор”, которая по совместительству является и линией данных регистра. Итого от контроллера до клавиатуры имеем пять проводков. В целом не так и плохо для восьми светодиодов и двух кнопок. Микроконтроллер тактируется кварцем на 8мгц, потому скорость вращения можно смело считать стабилизированной.

Да вот в общем то и все… Добавить тут что-либо очень сложно. Ах да! Во избежание возникновения сквозных токов в моментах переключения A1–>B1 и т.д. реализован deadtime. Я драйвер для тестов делал простейший на транзисторах, размещено все конструктивно на двух платах – клавиатура и все остальное. Плату прилагаю внизу для извлечения оттуда фрагментов “разводки”, потому как в целом виде вряд ли кому-то будет нужна. И в конце, как всегда фузы.

Файлы:
Схема в SPlan 7
Печатная плата в Spint Layout 5
Прошивка контроллера
Прошивка EEPROM с предустановленными скоростями

12 коментарів до “Контроллер биполярного шагового двигателя на ATtiny24

  1. Требуется контроллер управление шаговым двигателем FL28S TH-0674A для домашней игрушки «Качели». Двигатель вращает небольшую шестеренку, которая перемещается по стационарному зубчатому сектору. Поворачивающееся с ней основание будет качать установленные сверху маленькие качели с куклой. Питание от вставляемого сбоку аккумулятора мобильного телефона. Корпус деревянный. Для размещения платы сбоку есть ниша длиной 130 мм, шириной 35 мм, глубиной 20 мм. Выводы для удобного соединения снаружи с аккумулятором под ней с середины широкой стороны платы, соединение с двигателем – с боковой стороны. Режим работы – периодические, циклами с паузами в течение часа, качания качелей.

  2. Здравствуйте. Пытался повторить конструкцию, была мысль сделать намоточный станок для трансформаторов. Но после сборки возникли проблемы: на выходах формирования импульсов никаких сигнал нет, кроме бредятины (подозреваю что наводки), при переключении скоростей светодиоды перескакивают в большей мере произвольно, при дотрагивании щупами осцылографа к какой нибудь дорожке платы светодиоды переключаются. немогу понять неисправности, может ли быть это вызвано прошивкой, фюзами или еепромом? прошил два контроллера, оба читаются через юсбасп авр дуд, но не работают в железе. незнаю куда дальше копать, может автор Вы чего нибудь подскажете

  3. Прибор запустил, схема работоспособна, но проблема в другом – дребезг контактов тактовых кнопок. Надо нажимать на кнопки очень чётко, иначе правильный выбор скоростей и режимов не осуществляется. Было бы не плохо если бы автор немного подкоректировал программу для программного устранения дребезга, что бы не использовать тригеры, тогда цены бы ей не было

    • Программное подавление дребезга контактов в прошивке разумеется есть. У меня проблем не было (с обычными тактовыми кнопками). Но если Вы настаиваете – вот прошивка с увеличенной задержкой (в 4 раза) для подавления дребезга контактов:
      http://www.aliot.com.ua/files/motor_t24/long_key_delay.zip

  4. electra, большое человеческое спасибо, теперь можно приступить к реализации механической части станка.

  5. Контроллер является не совершенным , по причине отсутствия стабилизации тока фаз. А так, в целом, конструкция работоспособна .

  6. Добрый вечер electra) собрал контроллер ещё два года назад, но никак не было времен на сборку механизма… имею следующую проблему – при нажатии на кнопку выбора, скорости перебираются четко (использовал прошивку с увеличенными задержками подавления дребезга), а вот регистр не всегда нормально записывает данные… пробовал разные кнопки, если некоторые экземпляры нажимать очень чётко, то более мение работает, но мне нужны другие кнопки… и от их дребезга регистру плохеет… что можете посоветовать? использовать триггер? в конечном итоге можно задействовать РЕСЕТ – сначала программно подавить дребезг, а потом уже перенаправить дату на 4 вывод контроллера…

    • Добрый! То-ли еще вечер, то-ли уже утро… Гм… Странно. Немного странно или не совсем понято: скорости выбираются четко, а регистру “плохеет”? Может попробуете просто другой регистр? Может у Вас просто “медленный” LS164 или что-то в этом духе? А если я таки неправильно Вас понял и дело в кнопках – тогда просто попробуйте повесить кондесатор 1…47n параллельно кнопке.

  7. Добрый вечер. проверил, очень странно, но я думаю проблема действительно в кнопках… на кнопку СЕЛЕКТ не получиться поставить конденсатор, так как скорости вообще выбрать невозможно, там же РЦ цепочка будет… у меня стоит СМД регистр, подпаивал в ДИП вроде как работало коректней… и сначала и в смд как бы нормально, но все зависит от качества нажатия… хотел у Вас спросить, можно ли еще добавить задержку на подавление дребезга??? не хочется городить триггерную схему… к тому же посмотрев диаграммы работы триггера, вроде как все должно работать… я написал что переключается контроллер более мение потому, что скоростя переключаются иногда нормально, а когда нет то триггер может не засветить светодиодов вовсе… а тактовый сигнал генерится постоянно??? просто как я понимаю тут ДАТА – это низкий уровень для контроллера, а регистр работает по фронту и если принять во внимание дребезг, то у контроллера есть программная задержка, а у регистра нет…

  8. Наблюдаю такой процесс – при нажатии старт-стоп в форсированом режиме, то есть раза два в секунду скорость остается та же, а на светодиодах она скачет на 1-3 светодиода, после чего гаснет светодиод… при повторном нажатии старт, регистр не реагирует… только после выбора скорости светодиод засвечивается, при этом скорость показывает верную… вот так вот…

Залишити коментар до Дмитрий Скасувати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *