Страница 1 из 2
самопальный драйвер ШД
Добавлено: 10 июл 2015, 22:32
Крафтер
Накидаю что ли драйвер для шагового двигателя на этом же микроконтроллере. Пока планирую сделать микрошаг (3 штырька, перемычки означают число делений микрошагов, 000 - в 1 шаге 1 микрошаг, 111 - в 1 шаге 256 микрошагов = 2^(1*4+1*2+1*1 + 1)), добавлю снижение тока при ожидании через 1 сек, ток задаётся напряжением на ножке мк.
Re: Самопальный интерпретатор
Добавлено: 11 июл 2015, 06:43
selenur
А если сделать интерфейс связи между основным контроллером, и драйверами моторов, например через uart, или spi, то тогда можно настроить всю электронику с компьютера, и не лазя за джамперами,или переключателями, и конечно появляется больший простор для расширения функционала, и прочего, не переделывая при этом плату драйвера.
Re: Самопальный интерпретатор
Добавлено: 11 июл 2015, 10:48
tooshka
Крафтер писал(а):Накидаю что ли драйвер для шагового двигателя на этом же микроконтроллере. Пока планирую сделать микрошаг (3 штырька, перемычки означают число делений микрошагов, 000 - в 1 шаге 1 микрошаг, 111 - в 1 шаге 256 микрошагов = 2^(1*4+1*2+1*1 + 1)), добавлю снижение тока при ожидании через 1 сек, ток задаётся напряжением на ножке мк.

А какую максимальную входную частоту на этом камне можно получить? может вам попробовать встроить прямо в драйвер "умножитель/выравниватель сигнала" что то вроде Михаилова СтепМастера только одноканального. Еще конечно важна настройка драйвера именно на конкретный мотор, тогда микрошаг будет более равномерный по окружности. Эээ чего это я разошелся?)))
Re: Самопальный интерпретатор
Добавлено: 11 июл 2015, 13:13
Крафтер
selenur писал(а):А если сделать интерфейс связи между основным контроллером, и драйверами моторов, например через uart, или spi, то тогда можно настроить всю электронику с компьютера, и не лазя за джамперами,или переключателями, и конечно появляется больший простор для расширения функционала, и прочего, не переделывая при этом плату драйвера.
Сделать связь через uart звучит заманчиво, я тоже об этом думал, но если этим будут пользоваться другие люди, им всё же удобней джамперами. Потом можно будет допилить.
tooshka писал(а):А какую максимальную входную частоту на этом камне можно получить? может вам попробовать встроить прямо в драйвер "умножитель/выравниватель сигнала" что то вроде Михаилова СтепМастера только одноканального. Еще конечно важна настройка драйвера именно на конкретный мотор, тогда микрошаг будет более равномерный по окружности. Эээ чего это я разошелся?)))
Есть два варианта топологии.
Первый: настраиваем таймер на аппаратный счёт шагов, в основном потоке постоянно опрашиваем счётчик таймера и назначаем соответствующие напряжения.
Плюсы: частота шагов может быть хоть 50 мегагерц, ядро не нагружается лишними прерываниями.
Минусы: если шаги не являются микрошагами, то на большой частоте начнутся пропуски. Например, повторяем мы в очередной раз цикл назначения напряжений, а с предыдущего раза уже на таймер пришло 2 шага.
Второй вариант: при изменении сигнала на ножке STEP ловим прерывание и назначаем новые напряжения. Хотя и тут надо будет в основном цикле их переназначать, чтобы контролировать ток.
Да, первый явно лучше.
Настройку на конкретный мотор можно сделать проще простого. В программе будет лежать массив значений cos и sin, можно будет вбить свои значения. Хотя не думаю, что кто-то будет с этим заморачиваться.
Re: Самопальный интерпретатор
Добавлено: 11 июл 2015, 13:36
tooshka
Крафтер писал(а):Настройку на конкретный мотор можно сделать проще простого. В программе будет лежать массив значений cos и sin, можно будет вбить свои значения. Хотя не думаю, что кто-то будет с этим заморачиваться.
Таки конечно 90% не будут с таким возиться, вот если бы драйвер сам умел настраиваться? Как современные сервосистемы. Правда без обратной связи боюсь - анрил.
Re: Самопальный интерпретатор
Добавлено: 19 июл 2015, 01:07
Крафтер
Есть два варианта сравнения тока. Либо измерять напряжение микроконтроллером, а потом сравнивать программно, либо сравнивать внешним компаратором, а на мк слать сигнал больше/меньше. В первом случае неизвестно, на сколько хватит точности АЦП, и будет занята лишняя ножка мк, во втором случае будет лишняя деталь, и компаратор может быть слишком медленным. Сделаю первый вариант.
Re: Самопальный интерпретатор
Добавлено: 19 июл 2015, 01:59
Serg
Крафтер писал(а):и будет занята лишняя ножка мк
А сигнал от компаратора по радио будет передаваться?

Re: Самопальный интерпретатор
Добавлено: 19 июл 2015, 02:22
Крафтер
Первый вариант: 1 ножка для эталонного напряжения, 1 ножка для измерения тока каждой обмотки шд, всего 3 ноги. Второй вариант: 1 ножка для каждой обмотки, всего 2 ноги.
Re: Самопальный интерпретатор
Добавлено: 19 июл 2015, 06:47
Сергей Саныч
Крафтер писал(а):Второй вариант: 1 ножка для каждой обмотки, всего 2 ноги.
А эталонное напряжение на компараторы откуда пойдет? Те самые sin/cos.
Re: Самопальный интерпретатор
Добавлено: 19 июл 2015, 10:32
Serg
И у многих современных МК вполне хватает производительности встроенных АЦП...
Re: Самопальный интерпретатор
Добавлено: 19 июл 2015, 14:35
Крафтер
Сергей Саныч писал(а):А эталонное напряжение на компараторы откуда пойдет? Те самые sin/cos.
Ой, действительно. Ну тогда только первый вариант. А встроенный АЦП до 1 МГц умеет.
Re: Самопальный интерпретатор
Добавлено: 19 июл 2015, 17:52
Serg
Крафтер писал(а):А встроенный АЦП до 1 МГц умеет.
А куда больше? Там и 100 кГц за глаза.
Re: Самопальный интерпретатор
Добавлено: 19 июл 2015, 18:11
Крафтер
UAVpilot писал(а):А куда больше? Там и 100 кГц за глаза.
Если бы со всех выходов измеряло параллельно, то да. А поскольку он измеряет на первой, потом на второй, на третьей ножке, то частота получается 300 кГц, уже не так круто.
Прошивку накатал, осталось проверить в работе.
Re: Самопальный интерпретатор
Добавлено: 19 июл 2015, 22:27
Serg
А что ты собрался чаще мерять, если даже ШИМ нет смысла выше 50 кГц задирать?..
P.S. А на третьей-то зачем?
Re: Самопальный интерпретатор
Добавлено: 20 июл 2015, 01:52
Крафтер
Лишняя ножка - это вход от подстроечного резистора, который задаёт ток.
Вот код и прошивка с максимальной оптимизацией.
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

Re: Самопальный интерпретатор
Добавлено: 21 июл 2015, 23:22
Крафтер
Кто-нибудь пробовал запускать? В некоторых случаях напряжение залипать может, так что как время будет, перепишу.
Re: Самопальный интерпретатор
Добавлено: 25 июл 2015, 20:43
Крафтер
Накатал новую версию, выложу после проверки. Как с пурелогика мощные движки приедут, надо будет для них налепить таких драйверов. Потом можно свой интерпретатор на нормальный протокол STEP/DIR переводить.
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
Re: Самопальный интерпретатор
Добавлено: 20 сен 2015, 22:40
Крафтер
Вот последняя версия драйвера ШД, если кому нечем заняться
Ещё для входов опторазвязку сделать и на steam его

. 3 перемычки дают максимум 128 микрошагов, в режиме полушага раскручивается как самолётный двигатель

. В основном номиналы взяты не с потолка, а тестились в LTspice IV.
Работает следующим образом: при запуске по конфигурации перемычек выбирается число микрошагов, настраивается таймер для выдачи сигналов сброса и таймера для ШИМ. В цикле 2 раза в секунду измеряется опорное напряжение, в остальное время ШИМом выдаётся напряжение, сглаживается и используется компаратором, сравнивающим его с напряжением на измерительном резисторе, при превышении напряжения сигнал выдаётся на вход сброса RS-триггера, выход RS-триггера подключён к входу enable микросхемы-драйвера полумоста. Сам микроконтроллер в зависимости от текущего микрошага выдаёт либо 0 либо 1 на вход этой же микросхемы. Сигналы совместимы с микросхемой lm298, силовую часть можно заменить на неё.
Порядок прошивки контроллера через usb-com переходник:
Поставить джампер на boot0.
Подключить питание к 0 и 3.3v (от 5 вольт может сдохнуть, на моём переходнике есть выход 3 вольта), как вариант можно подключить gnd от com переходника и включить питание логической части драйвера, он сам запитает контроллер.
Подключить Rx, Tx (если перепутать, ничего не сгорит).
Дальше нужна утилита flash loader demonstrator.
Если кнопка next не работает, то это либо Rx и Tx перепутан, либо контролер был запущен без джампера и надо замкнуть выводы reset.
Дальше всё просто. выбрать прошивку, залить.
Re: Самопальный интерпретатор
Добавлено: 24 окт 2015, 20:56
Крафтер
Сейчас делаю новую версию станка, завис на креплении рельс. Где-то на форуме видел вопрос, как лучше приделать рельсы к станине, прямо снизу прикрутить или рейку к станине, а к рейке уже рельс. И вроде как на рейке болтаться будут. Так может легче брусок взять, должно жёстко получиться.

- Безымянный.PNG (916 байт) 6417 просмотров