самопальный драйвер ШД

Контроллеры, драйверы, датчики, управляющие устройства.

самопальный драйвер ШД

Сообщение Крафтер » 10 июл 2015, 22:32

Накидаю что ли драйвер для шагового двигателя на этом же микроконтроллере. Пока планирую сделать микрошаг (3 штырька, перемычки означают число делений микрошагов, 000 - в 1 шаге 1 микрошаг, 111 - в 1 шаге 256 микрошагов = 2^(1*4+1*2+1*1 + 1)), добавлю снижение тока при ожидании через 1 сек, ток задаётся напряжением на ножке мк. :controller:

по просьбе ТС, некоторые сообщения отделены в эту, отдельную тему, начало было здесь Re: Самопальный интерпретатор #200
NightV
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение selenur » 11 июл 2015, 06:43

А если сделать интерфейс связи между основным контроллером, и драйверами моторов, например через uart, или spi, то тогда можно настроить всю электронику с компьютера, и не лазя за джамперами,или переключателями, и конечно появляется больший простор для расширения функционала, и прочего, не переделывая при этом плату драйвера.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Аватара пользователя
selenur
Почётный участник
Почётный участник
 
Сообщения: 4042
Зарегистрирован: 21 авг 2013, 19:44
Откуда: Новый Уренгой
Репутация: 1438
Медальки:
Настоящее имя: Сергей

Re: Самопальный интерпретатор

Сообщение tooshka » 11 июл 2015, 10:48

Крафтер писал(а):Накидаю что ли драйвер для шагового двигателя на этом же микроконтроллере. Пока планирую сделать микрошаг (3 штырька, перемычки означают число делений микрошагов, 000 - в 1 шаге 1 микрошаг, 111 - в 1 шаге 256 микрошагов = 2^(1*4+1*2+1*1 + 1)), добавлю снижение тока при ожидании через 1 сек, ток задаётся напряжением на ножке мк. :controller:

А какую максимальную входную частоту на этом камне можно получить? может вам попробовать встроить прямо в драйвер "умножитель/выравниватель сигнала" что то вроде Михаилова СтепМастера только одноканального. Еще конечно важна настройка драйвера именно на конкретный мотор, тогда микрошаг будет более равномерный по окружности. Эээ чего это я разошелся?)))
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
tooshka
Почётный участник
Почётный участник
 
Сообщения: 1798
Зарегистрирован: 24 окт 2012, 14:26
Откуда: Нижний Новгород
Репутация: 209
Медальки:
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение Крафтер » 11 июл 2015, 13:13

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

Сделать связь через uart звучит заманчиво, я тоже об этом думал, но если этим будут пользоваться другие люди, им всё же удобней джамперами. Потом можно будет допилить.
tooshka писал(а):А какую максимальную входную частоту на этом камне можно получить? может вам попробовать встроить прямо в драйвер "умножитель/выравниватель сигнала" что то вроде Михаилова СтепМастера только одноканального. Еще конечно важна настройка драйвера именно на конкретный мотор, тогда микрошаг будет более равномерный по окружности. Эээ чего это я разошелся?)))

Есть два варианта топологии.

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

Второй вариант: при изменении сигнала на ножке STEP ловим прерывание и назначаем новые напряжения. Хотя и тут надо будет в основном цикле их переназначать, чтобы контролировать ток.

Да, первый явно лучше.
Настройку на конкретный мотор можно сделать проще простого. В программе будет лежать массив значений cos и sin, можно будет вбить свои значения. Хотя не думаю, что кто-то будет с этим заморачиваться.
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение tooshka » 11 июл 2015, 13:36

Крафтер писал(а):Настройку на конкретный мотор можно сделать проще простого. В программе будет лежать массив значений cos и sin, можно будет вбить свои значения. Хотя не думаю, что кто-то будет с этим заморачиваться.

Таки конечно 90% не будут с таким возиться, вот если бы драйвер сам умел настраиваться? Как современные сервосистемы. Правда без обратной связи боюсь - анрил.
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
tooshka
Почётный участник
Почётный участник
 
Сообщения: 1798
Зарегистрирован: 24 окт 2012, 14:26
Откуда: Нижний Новгород
Репутация: 209
Медальки:
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение Крафтер » 19 июл 2015, 01:07

Есть два варианта сравнения тока. Либо измерять напряжение микроконтроллером, а потом сравнивать программно, либо сравнивать внешним компаратором, а на мк слать сигнал больше/меньше. В первом случае неизвестно, на сколько хватит точности АЦП, и будет занята лишняя ножка мк, во втором случае будет лишняя деталь, и компаратор может быть слишком медленным. Сделаю первый вариант.
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение UAVpilot » 19 июл 2015, 01:59

Крафтер писал(а):и будет занята лишняя ножка мк

А сигнал от компаратора по радио будет передаваться? :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 18489
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4530
Медальки:
Настоящее имя: Сергей

Re: Самопальный интерпретатор

Сообщение Крафтер » 19 июл 2015, 02:22

Первый вариант: 1 ножка для эталонного напряжения, 1 ножка для измерения тока каждой обмотки шд, всего 3 ноги. Второй вариант: 1 ножка для каждой обмотки, всего 2 ноги.
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение Сергей Саныч » 19 июл 2015, 06:47

Крафтер писал(а):Второй вариант: 1 ножка для каждой обмотки, всего 2 ноги.
А эталонное напряжение на компараторы откуда пойдет? Те самые sin/cos.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 8439
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2642
Медальки:

Re: Самопальный интерпретатор

Сообщение UAVpilot » 19 июл 2015, 10:32

И у многих современных МК вполне хватает производительности встроенных АЦП...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 18489
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4530
Медальки:
Настоящее имя: Сергей

Re: Самопальный интерпретатор

Сообщение Крафтер » 19 июл 2015, 14:35

Сергей Саныч писал(а):А эталонное напряжение на компараторы откуда пойдет? Те самые sin/cos.

Ой, действительно. Ну тогда только первый вариант. А встроенный АЦП до 1 МГц умеет.
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение UAVpilot » 19 июл 2015, 17:52

Крафтер писал(а):А встроенный АЦП до 1 МГц умеет.

А куда больше? Там и 100 кГц за глаза.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 18489
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4530
Медальки:
Настоящее имя: Сергей

Re: Самопальный интерпретатор

Сообщение Крафтер » 19 июл 2015, 18:11

UAVpilot писал(а):А куда больше? Там и 100 кГц за глаза.

Если бы со всех выходов измеряло параллельно, то да. А поскольку он измеряет на первой, потом на второй, на третьей ножке, то частота получается 300 кГц, уже не так круто.

Прошивку накатал, осталось проверить в работе.
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение UAVpilot » 19 июл 2015, 22:27

А что ты собрался чаще мерять, если даже ШИМ нет смысла выше 50 кГц задирать?..

P.S. А на третьей-то зачем?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 18489
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4530
Медальки:
Настоящее имя: Сергей

Re: Самопальный интерпретатор

Сообщение Крафтер » 20 июл 2015, 01:52

Лишняя ножка - это вход от подстроечного резистора, который задаёт ток.

Вот код и прошивка с максимальной оптимизацией.
step_motor_driver_1.zip
(148.93 Кб) Скачиваний: 250


A0, A1, A2, A3 - выход ШИМ, А1 - это инвертированный А0, А3 - инвертированный А2. А0 и А1 надо подключать к первому полумосту, А2 и А3 ко второму.
A6 - STEP, A5 - DIR
A4 - напряжение, обозначающее необходимый ток
A7, B1 - сюда подавать напряжение от измерительных резисторов
A9, A10 - перемычки для микрошага. Если на обоих ножках 1, то шаг делится на два 3 раза, т.е. 8 микрошагов.

Получилось дешевле чем L297 :D
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение Крафтер » 21 июл 2015, 23:22

Кто-нибудь пробовал запускать? В некоторых случаях напряжение залипать может, так что как время будет, перепишу.
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение Крафтер » 25 июл 2015, 20:43

Накатал новую версию, выложу после проверки. Как с пурелогика мощные движки приедут, надо будет для них налепить таких драйверов. Потом можно свой интерпретатор на нормальный протокол STEP/DIR переводить.
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение Крафтер » 29 авг 2015, 01:31

Нормально ли, что движки шипят при подключении питания? Весь день сегодня возился, запустил наконец. Частота ШИМ = 50 кГц, за один период контроллер успевает сделать 8 измерений, может шум из-за такой дискретности.
Попробовал крутить 500 шагов/сек с 64 микрошагами, питание 12 вольт. На большей скорости не крутится, а по расчётам вроде должен.
R = w*L = 2 * Pi * f * L= 6 * 500 Гц * 0.003 Гн = 10 Ом, хотя бы 1 Ампер должен получиться.

Всё, получилось разогнать до 20 об/сек.
https://youtu.be/wnCAoO3qKmk
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение Крафтер » 20 сен 2015, 22:40

Вот последняя версия драйвера ШД, если кому нечем заняться :hehehe:
stm32_step_motor_driver.zip
(200.35 Кб) Скачиваний: 228

самопальный драйвер ШД верх.PNG
самопальный драйвер ШД низ.PNG

Ещё для входов опторазвязку сделать и на steam его :D . 3 перемычки дают максимум 128 микрошагов, в режиме полушага раскручивается как самолётный двигатель :stepper: . В основном номиналы взяты не с потолка, а тестились в LTspice IV.
Работает следующим образом: при запуске по конфигурации перемычек выбирается число микрошагов, настраивается таймер для выдачи сигналов сброса и таймера для ШИМ. В цикле 2 раза в секунду измеряется опорное напряжение, в остальное время ШИМом выдаётся напряжение, сглаживается и используется компаратором, сравнивающим его с напряжением на измерительном резисторе, при превышении напряжения сигнал выдаётся на вход сброса RS-триггера, выход RS-триггера подключён к входу enable микросхемы-драйвера полумоста. Сам микроконтроллер в зависимости от текущего микрошага выдаёт либо 0 либо 1 на вход этой же микросхемы. Сигналы совместимы с микросхемой lm298, силовую часть можно заменить на неё.
самопальный драйвер ШД тест.PNG

current_control.zip
(1.37 Кб) Скачиваний: 213

Порядок прошивки контроллера через usb-com переходник:
Поставить джампер на boot0.
Подключить питание к 0 и 3.3v (от 5 вольт может сдохнуть, на моём переходнике есть выход 3 вольта), как вариант можно подключить gnd от com переходника и включить питание логической части драйвера, он сам запитает контроллер.
Подключить Rx, Tx (если перепутать, ничего не сгорит).
Дальше нужна утилита flash loader demonstrator.
самопальный драйвер ШД шаг 1.PNG

Если кнопка next не работает, то это либо Rx и Tx перепутан, либо контролер был запущен без джампера и надо замкнуть выводы reset.
Дальше всё просто. выбрать прошивку, залить.
самопальный драйвер ШД шаг 2.PNG

самопальный драйвер ШД шаг 3.PNG

самопальный драйвер ШД шаг 4.PNG

самопальный драйвер ШД шаг 5.PNG
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

Re: Самопальный интерпретатор

Сообщение Крафтер » 24 окт 2015, 20:56

Сейчас делаю новую версию станка, завис на креплении рельс. Где-то на форуме видел вопрос, как лучше приделать рельсы к станине, прямо снизу прикрутить или рейку к станине, а к рейке уже рельс. И вроде как на рейке болтаться будут. Так может легче брусок взять, должно жёстко получиться.
Безымянный.PNG
Безымянный.PNG (916 байт) Просмотров: 3256
Аватара пользователя
Крафтер
Мастер
 
Сообщения: 202
Зарегистрирован: 27 мар 2015, 22:25
Откуда: Ростов-на-Дону
Репутация: 59
Настоящее имя: Андрей

След.

Вернуться в Электроника

Кто сейчас на конференции

Зарегистрированные пользователи: asher, astronomo, Bing [Bot], borodaagvali, daemon78, engineer_78, fara8018, frezeryga, Gestap, Google [Bot], Igor1, iMaks-RS, jb_arch, Kachik, Lunatic, Mamont, MGG, nevkon, pegas13, Q-starь, rage, Raptirius, Ruslan_Zp, sam1k, Samodelkin 88, sas_75, serpvect, simplify, Timpampam, VAT, xvovanx, Yandex [bot], Кашин, ДНК, шпиндель

Reputation System ©'