eddy_em: (Костерок)
eddy_em ([personal profile] eddy_em) wrote2013-11-20 07:15 pm

Управление шаговиками

Вчера, после полудня безуспешной борьбы с таймером TIM1 STM32, я таки реализовал управление пятью ШД. Правда, через одно место: вместо задуманного (выход первого порта таймера на каждый тик инвертируется, а выход второго считает импульсы и по прерыванию compare-capture вырубает таймер) я тупо генерирую ШИМ со скважностью 50%, а по прерыванию compare-capture декрементирую количество шагов.

Репозиторий на сосфорже обновил еще вчера, но сегодня заметил пару небольших "косяков", которые пока что решил не пихать в новый commit, а потерпеть немного: нужно еще добавить работу с SPI (24-битный ЦАП для термодатчиков), ZacWire (благо, таймеров хватает, а вот ноги у 64-ножечного МК уже кончаться начали, а 144-ножечный закажу позже, правда, там нет USB — придется паять самому).
Еще был аппаратный "косяк": для снятия напряжения с обмоток двигателя надо подать на вход EN драйвера высокий уровень, я решил, что хватит подать туда +3.3В, а минусовой поджимать к земле пушпульным выходом МК. Но этого оказалось мало — зато +5В отлично работают.
С входами PUL и DIR таких проблем не было, хоть там подключение и наоборот (минусовой на общий, а плюс поджимается к +3.3В верхним ключом пушпульного выхода МК).
Идея была простая: все входы DIR и PUL соединены между собой. А вот EN отдельный для каждого движка. Поэтому включить нужный двигатель достаточно просто: подаем на соответствующую ногу МК единичку и нужный EN разрешает нашему двигателю работать. Кстати, только сейчас до меня дошло, что я неправильно сделал: режим push-pull ноги EN надо сменить, чтобы логическая единица не поджималась к 1, а висела в воздухе.

Ну и напоследок фото рабочего места:
S6301001

[identity profile] sevasat.livejournal.com 2016-05-12 10:50 pm (UTC)(link)
У тебя там тектроникс русифицированый?
inb4 некропостер 80лвл.