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

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

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

Сообщение Крафтер »

Накидаю что ли драйвер для шагового двигателя на этом же микроконтроллере. Пока планирую сделать микрошаг (3 штырька, перемычки означают число делений микрошагов, 000 - в 1 шаге 1 микрошаг, 111 - в 1 шаге 256 микрошагов = 2^(1*4+1*2+1*1 + 1)), добавлю снижение тока при ожидании через 1 сек, ток задаётся напряжением на ножке мк. :controller:
по просьбе ТС, некоторые сообщения отделены в эту, отдельную тему, начало было здесь Re: Самопальный интерпретатор #200
NightV
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

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

Сообщение selenur »

А если сделать интерфейс связи между основным контроллером, и драйверами моторов, например через uart, или spi, то тогда можно настроить всю электронику с компьютера, и не лазя за джамперами,или переключателями, и конечно появляется больший простор для расширения функционала, и прочего, не переделывая при этом плату драйвера.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

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

Сообщение tooshka »

Крафтер писал(а):Накидаю что ли драйвер для шагового двигателя на этом же микроконтроллере. Пока планирую сделать микрошаг (3 штырька, перемычки означают число делений микрошагов, 000 - в 1 шаге 1 микрошаг, 111 - в 1 шаге 256 микрошагов = 2^(1*4+1*2+1*1 + 1)), добавлю снижение тока при ожидании через 1 сек, ток задаётся напряжением на ножке мк. :controller:
А какую максимальную входную частоту на этом камне можно получить? может вам попробовать встроить прямо в драйвер "умножитель/выравниватель сигнала" что то вроде Михаилова СтепМастера только одноканального. Еще конечно важна настройка драйвера именно на конкретный мотор, тогда микрошаг будет более равномерный по окружности. Эээ чего это я разошелся?)))
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

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

Сообщение Крафтер »

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

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

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

Да, первый явно лучше.
Настройку на конкретный мотор можно сделать проще простого. В программе будет лежать массив значений cos и sin, можно будет вбить свои значения. Хотя не думаю, что кто-то будет с этим заморачиваться.
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

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

Сообщение tooshka »

Крафтер писал(а):Настройку на конкретный мотор можно сделать проще простого. В программе будет лежать массив значений cos и sin, можно будет вбить свои значения. Хотя не думаю, что кто-то будет с этим заморачиваться.
Таки конечно 90% не будут с таким возиться, вот если бы драйвер сам умел настраиваться? Как современные сервосистемы. Правда без обратной связи боюсь - анрил.
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

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

Сообщение Крафтер »

Есть два варианта сравнения тока. Либо измерять напряжение микроконтроллером, а потом сравнивать программно, либо сравнивать внешним компаратором, а на мк слать сигнал больше/меньше. В первом случае неизвестно, на сколько хватит точности АЦП, и будет занята лишняя ножка мк, во втором случае будет лишняя деталь, и компаратор может быть слишком медленным. Сделаю первый вариант.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

Сообщение Крафтер »

Первый вариант: 1 ножка для эталонного напряжения, 1 ножка для измерения тока каждой обмотки шд, всего 3 ноги. Второй вариант: 1 ножка для каждой обмотки, всего 2 ноги.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

Сообщение Сергей Саныч »

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

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

Сообщение Serg »

И у многих современных МК вполне хватает производительности встроенных АЦП...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

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

Сообщение Крафтер »

Сергей Саныч писал(а):А эталонное напряжение на компараторы откуда пойдет? Те самые sin/cos.
Ой, действительно. Ну тогда только первый вариант. А встроенный АЦП до 1 МГц умеет.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Крафтер писал(а):А встроенный АЦП до 1 МГц умеет.
А куда больше? Там и 100 кГц за глаза.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

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

Сообщение Крафтер »

UAVpilot писал(а):А куда больше? Там и 100 кГц за глаза.
Если бы со всех выходов измеряло параллельно, то да. А поскольку он измеряет на первой, потом на второй, на третьей ножке, то частота получается 300 кГц, уже не так круто.

Прошивку накатал, осталось проверить в работе.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

P.S. А на третьей-то зачем?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

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

Сообщение Крафтер »

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

Вот код и прошивка с максимальной оптимизацией.
step_motor_driver_1.zip
(148.93 КБ) 528 скачиваний
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
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

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

Сообщение Крафтер »

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

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

Сообщение Крафтер »

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

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

Сообщение Крафтер »

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

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

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

Сообщение Крафтер »

Вот последняя версия драйвера ШД, если кому нечем заняться :hehehe:
stm32_step_motor_driver.zip
(200.35 КБ) 496 скачиваний
верх.PNG (6611 просмотров) <a class='original' href='./download/file.php?id=58421&mode=view' target=_blank>Загрузить оригинал (24.34 КБ)</a>
низ.PNG (6611 просмотров) <a class='original' href='./download/file.php?id=58422&mode=view' target=_blank>Загрузить оригинал (23.56 КБ)</a>
Ещё для входов опторазвязку сделать и на steam его :D . 3 перемычки дают максимум 128 микрошагов, в режиме полушага раскручивается как самолётный двигатель :stepper: . В основном номиналы взяты не с потолка, а тестились в LTspice IV.
Работает следующим образом: при запуске по конфигурации перемычек выбирается число микрошагов, настраивается таймер для выдачи сигналов сброса и таймера для ШИМ. В цикле 2 раза в секунду измеряется опорное напряжение, в остальное время ШИМом выдаётся напряжение, сглаживается и используется компаратором, сравнивающим его с напряжением на измерительном резисторе, при превышении напряжения сигнал выдаётся на вход сброса RS-триггера, выход RS-триггера подключён к входу enable микросхемы-драйвера полумоста. Сам микроконтроллер в зависимости от текущего микрошага выдаёт либо 0 либо 1 на вход этой же микросхемы. Сигналы совместимы с микросхемой lm298, силовую часть можно заменить на неё.
тест.PNG (6611 просмотров) <a class='original' href='./download/file.php?id=58429&mode=view' target=_blank>Загрузить оригинал (17.81 КБ)</a>
current_control.zip
(1.37 КБ) 487 скачиваний
Порядок прошивки контроллера через usb-com переходник:
Поставить джампер на boot0.
Подключить питание к 0 и 3.3v (от 5 вольт может сдохнуть, на моём переходнике есть выход 3 вольта), как вариант можно подключить gnd от com переходника и включить питание логической части драйвера, он сам запитает контроллер.
Подключить Rx, Tx (если перепутать, ничего не сгорит).
Дальше нужна утилита flash loader demonstrator.
шаг 1.PNG (6611 просмотров) <a class='original' href='./download/file.php?id=58424&mode=view' target=_blank>Загрузить оригинал (22.93 КБ)</a>
Если кнопка next не работает, то это либо Rx и Tx перепутан, либо контролер был запущен без джампера и надо замкнуть выводы reset.
Дальше всё просто. выбрать прошивку, залить.
шаг 2.PNG (6611 просмотров) <a class='original' href='./download/file.php?id=58425&mode=view' target=_blank>Загрузить оригинал (21.3 КБ)</a>
шаг 3.PNG (6611 просмотров) <a class='original' href='./download/file.php?id=58426&mode=view' target=_blank>Загрузить оригинал (29.61 КБ)</a>
шаг 4.PNG (6611 просмотров) <a class='original' href='./download/file.php?id=58427&mode=view' target=_blank>Загрузить оригинал (25.41 КБ)</a>
шаг 5.PNG (6611 просмотров) <a class='original' href='./download/file.php?id=58423&mode=view' target=_blank>Загрузить оригинал (23.25 КБ)</a>
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

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

Сообщение Крафтер »

Сейчас делаю новую версию станка, завис на креплении рельс. Где-то на форуме видел вопрос, как лучше приделать рельсы к станине, прямо снизу прикрутить или рейку к станине, а к рейке уже рельс. И вроде как на рейке болтаться будут. Так может легче брусок взять, должно жёстко получиться.
Безымянный.PNG
Безымянный.PNG (916 байт) 6379 просмотров
Ответить

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