Лабораторный стенд для шагового двигателя

Опубликовано 27.09.2013 23:12:00


Автор: tamerby

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

Итак возможности:

 -  автоматический / ручной режим
 -  шаг / полушаг
 -  реверс
 -  отображение скорости (расчетная)
 -  гнезда для подключения лог анализатора / осциллографа

 

 

Выбор компонентов:

Контроллер был выбран Atmega328P, почему такой мощный? а просто какой был в наличии.

Драйвер шагового двигателя L297. Отличная микросхема. Все управление осуществляется 5ю входами: Enable(включение), CW/CWW (выбор направления вращения), Clock (тактовый вход), Half / Full (выбор режима шаг / полушаг), Reset (сброс драйвера в первноначальное состояние). Конечно функционал драйвера можно было бы реализовать в контроллере, но зачем изобретать велосипед, следить за интервалами и тд, к тому же тут имеется возможность сделать обратную связь по току через шунтирующий резистор (первоначально в стенде планировалось использовать более мощный двигатель, но потом было решено поставить маломощный, т.к. стенд носит только демонстративный характер, и никакая нагрузка не подключается)

Усилителем выходов L297 была выбрана транзисторная сборка Дарлингтона ULN2803. Так как она имеет 8 каналов, каждый по 0,5А, а обмоток только 4, то было решено запараллелить по два, вышло максимальный ток до 1А, что с лихвой покрывает потребности двигателя. Почему именно ULN  а не обычные транзисторы? А потому, что ее удобнее разводить на плате, входы слева - выходы справа (идеальная микросхема), имеются базовые резисторы, обратные диоды для защиты транзисторов от пробоя.

Схема одного канала ULN2803


 

Дисплей 

Выбран тоже какой оказался под рукой им оказался WH1602 с ибей без поддержки кирилицы. Кирилица была сделана из одинкаковых символов которые имеются в латинице и кирилице, и недостающие Л П У м б и н Ч добавлены через lcd.createChar   http://pastebin.com/jdYdBwk9


 

Блок питания

Для питания стенда необходимо два уровня напряжения: +5 В (для питания контроллера и тд) и +12 В (для двигателя) БП построен на трансформаторе, мосте и двух кренках (фото кликабельно). Было решено упрять БП в отдельную коробку, к основному блоку подключается через 5DIN разъем


 

Контрольные гнезда 

Подключены к линии CLOCK и выходу обмотки А(остальные выходные линии дают такую же картинки, толька сдвинуты), там наблюдаем такую картинку.

 

В режиме полушага

Импульсы управления шаговым двигателем в режиме полушага

 

В режиме полного шага

Импульсы управления шаговым двигателем в режиме полного шага

 

Отличное пособие по шаговым двигателям, от конструкции до принципов управления Емельянов, А. В., Шилин, А. Н. Шаговые двигатели: Учебное пособие


 

 

Принципиальная схема

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


 

Не было времени наносить номиналы на картинку, поэтому спецификация отдельно:)

C1 SMD1206 0,1 мкФ 50 В
C2 2200 мкФ 25В
C3 0,33 мкФ 50В
C4 100 мкФ 25В
C5 SMD1206 22пФ 50В
C6 100 мкФ 25 В    
C7 SMD1206 22пФ 50В
C8 0,33 мкФ 50 В
C9 SMD1206 0,1 мкФ 50 В
C10 100 мкФ 25В
C11 SMD1206 0,1 мкФ 50 В
C12 2200 мкФ 25В
DA1 LM7812
DA2 LM7805
DD1 Atmega328P DIP-28
DD2 L297 DIP-20
DD3 ULN2803A DIP-18
FU1-FU2 0,5A 250V
HG1 WH1602D
М1 23-ВВ-Н
R1-R8 SMD1206 10 кОм
R9 Потенциометр 10 кОм
SA1 Переключатель двухполюсный
SB1-SB8 Кнопка тактовая
TV1 SLT5J234S
VD1 КЦ405Е
XP1 2x2,54 мм
XP2 ОНЦ-ВГ-4-5/16-В
XS1 ОНЦ-ВГ-4-5/16-Р
XS2-X S3 Гнездо R1-22-B
ZQ1 16 МГц


 

Печатка БП

контроллер шагового двигателя печатная плата

Lay файл для скачивания

 

Основной блок 

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

контроллер шагового двигателя печатная плата

Lay для скачивания


 

 

 

Прошивка контроллера:

Контроллер можно прошить двумя способами:

1) Прошиваем нужный скетч в Arduino UNO и вытаскиваем контроллер и вставляем в панельку на нашей плате (для этого способа все должно быть идеально отлажено, иначе придется нескольо раз туда сюда ставить его)

2) Наиболее удобно прошивать через USB-UART преобразователь, для этих целей специально не использованы пины контроллера RESET, RX (D0), TX (D1) соединяем их с преобразователем. Я использовал преобразователь на чипе CP2102, его особенностью является то что он не сбрасывает контроллер, перед загрузкой необходимо сбросить контроллер в ручную.

3) Можно использовать USB - UART преобразователь платы Arduino, для этого придется вытащить контроллер и теперь можно подключаться, принцип тот же, что и в пункте 2.

4) Обычно контроллеры прошивают через ISP, описывать это не буду, т.к. нужные пины были заняты, да и тогда не имел нужного опыта, а через UART безопаснееsmiley

Чуть не забыл скетч:)  на pastebin


 

Ну и медиа которые не вошли в основной текст.

Небольшое видео в процессе отладки (снято тем же калькулятором).

Внешний вид собранного контроллера

 


А как же комментарии?