Skip to content
 

Контроллер биполярного шагового двигателя на 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 Comments

  1. Алексей Леонидович сказав:

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

  2. Дмитрий сказав:

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

  3. Дмитрий сказав:

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

    • electra сказав:

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

  4. Дмитрий сказав:

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

  5. Chukcha сказав:

    Здравствуйте автор! А можно схему драйвера лицезреть? С уважением.

  6. Артем сказав:

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

  7. Дмитрий сказав:

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

    • electra сказав:

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

  8. Дмитрий сказав:

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

  9. Дмитрий сказав:

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

Leave a Reply