Управление шаговиками
Nov. 20th, 2013 07:15 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вчера, после полудня безуспешной борьбы с таймером 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, а висела в воздухе.
Ну и напоследок фото рабочего места:

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

no subject
Date: 2016-05-12 10:50 pm (UTC)inb4 некропостер 80лвл.
no subject
Date: 2016-05-13 07:20 am (UTC)Хотя, лично я не понимаю, нафига париться. Английский — международный, а осциллограф — не стиралка, с ним лохи обычно не работают. А электронщик без знания английского — не электронщик.
no subject
Date: 2016-05-13 07:52 am (UTC)Я спросил потому что что-то сильно по-колхозному сделана панель, я сначала грешным делом подумал что это вообще самоделка на принтере распечатаная)
Про английский - согласен по всем пунктам.
no subject
Date: 2016-05-13 09:38 am (UTC)no subject
Date: 2016-05-13 12:43 pm (UTC)