NightV
самопальный драйвер ШД
- Крафтер
 - Мастер
 - Сообщения: 211
 - Зарегистрирован: 27 мар 2015, 22:25
 - Репутация: 61
 - Настоящее имя: Андрей
 - Откуда: Ростов-на-Дону
 - Контактная информация:
 
самопальный драйвер ШД
Накидаю что ли драйвер для шагового двигателя на этом же микроконтроллере. Пока планирую сделать микрошаг (3 штырька, перемычки означают число делений микрошагов, 000 - в 1 шаге 1 микрошаг, 111 - в 1 шаге 256 микрошагов = 2^(1*4+1*2+1*1 + 1)), добавлю снижение тока при ожидании через 1 сек, ток задаётся напряжением на ножке мк.  
			
			
									
									
						по просьбе ТС, некоторые сообщения отделены в эту, отдельную тему, начало было здесь Re: Самопальный интерпретатор #200
NightV
NightV
- selenur
 - Почётный участник

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

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

 - Сообщения: 1803
 - Зарегистрирован: 24 окт 2012, 14:26
 - Репутация: 209
 - Настоящее имя: Андрей
 - Откуда: Нижний Новгород
 - Контактная информация:
 
Re: Самопальный интерпретатор
Таки конечно 90% не будут с таким возиться, вот если бы драйвер сам умел настраиваться? Как современные сервосистемы. Правда без обратной связи боюсь - анрил.Крафтер писал(а):Настройку на конкретный мотор можно сделать проще простого. В программе будет лежать массив значений cos и sin, можно будет вбить свои значения. Хотя не думаю, что кто-то будет с этим заморачиваться.
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
						под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
- Крафтер
 - Мастер
 - Сообщения: 211
 - Зарегистрирован: 27 мар 2015, 22:25
 - Репутация: 61
 - Настоящее имя: Андрей
 - Откуда: Ростов-на-Дону
 - Контактная информация:
 
Re: Самопальный интерпретатор
Есть два варианта сравнения тока. Либо измерять напряжение микроконтроллером, а потом сравнивать программно, либо сравнивать внешним компаратором, а на мк слать сигнал больше/меньше. В первом случае неизвестно, на сколько хватит точности АЦП, и будет занята лишняя ножка мк, во втором случае будет лишняя деталь, и компаратор может быть слишком медленным. Сделаю первый вариант.
			
			
									
									
						- Serg
 - Мастер
 - Сообщения: 21923
 - Зарегистрирован: 17 апр 2012, 14:58
 - Репутация: 5183
 - Заслуга: c781c134843e0c1a3de9
 - Настоящее имя: Сергей
 - Откуда: Москва
 - Контактная информация:
 
Re: Самопальный интерпретатор
А сигнал от компаратора по радио будет передаваться?Крафтер писал(а):и будет занята лишняя ножка мк
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
						- Крафтер
 - Мастер
 - Сообщения: 211
 - Зарегистрирован: 27 мар 2015, 22:25
 - Репутация: 61
 - Настоящее имя: Андрей
 - Откуда: Ростов-на-Дону
 - Контактная информация:
 
Re: Самопальный интерпретатор
Первый вариант: 1 ножка для эталонного напряжения, 1 ножка для измерения тока каждой обмотки шд, всего 3 ноги. Второй вариант: 1 ножка для каждой обмотки, всего 2 ноги.
			
			
									
									
						- Сергей Саныч
 - Мастер
 - Сообщения: 9116
 - Зарегистрирован: 30 май 2012, 14:20
 - Репутация: 2858
 - Откуда: Тюмень
 - Контактная информация:
 
Re: Самопальный интерпретатор
А эталонное напряжение на компараторы откуда пойдет? Те самые sin/cos.Крафтер писал(а):Второй вариант: 1 ножка для каждой обмотки, всего 2 ноги.
Чудес не бывает. Бывают фокусы.
						- Serg
 - Мастер
 - Сообщения: 21923
 - Зарегистрирован: 17 апр 2012, 14:58
 - Репутация: 5183
 - Заслуга: c781c134843e0c1a3de9
 - Настоящее имя: Сергей
 - Откуда: Москва
 - Контактная информация:
 
Re: Самопальный интерпретатор
И у многих современных МК вполне хватает производительности встроенных АЦП...
			
			
									
									Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
						- Крафтер
 - Мастер
 - Сообщения: 211
 - Зарегистрирован: 27 мар 2015, 22:25
 - Репутация: 61
 - Настоящее имя: Андрей
 - Откуда: Ростов-на-Дону
 - Контактная информация:
 
Re: Самопальный интерпретатор
Ой, действительно. Ну тогда только первый вариант. А встроенный АЦП до 1 МГц умеет.Сергей Саныч писал(а):А эталонное напряжение на компараторы откуда пойдет? Те самые sin/cos.
- Serg
 - Мастер
 - Сообщения: 21923
 - Зарегистрирован: 17 апр 2012, 14:58
 - Репутация: 5183
 - Заслуга: c781c134843e0c1a3de9
 - Настоящее имя: Сергей
 - Откуда: Москва
 - Контактная информация:
 
Re: Самопальный интерпретатор
А куда больше? Там и 100 кГц за глаза.Крафтер писал(а):А встроенный АЦП до 1 МГц умеет.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
						- Крафтер
 - Мастер
 - Сообщения: 211
 - Зарегистрирован: 27 мар 2015, 22:25
 - Репутация: 61
 - Настоящее имя: Андрей
 - Откуда: Ростов-на-Дону
 - Контактная информация:
 
Re: Самопальный интерпретатор
Если бы со всех выходов измеряло параллельно, то да. А поскольку он измеряет на первой, потом на второй, на третьей ножке, то частота получается 300 кГц, уже не так круто.UAVpilot писал(а):А куда больше? Там и 100 кГц за глаза.
Прошивку накатал, осталось проверить в работе.
- Serg
 - Мастер
 - Сообщения: 21923
 - Зарегистрирован: 17 апр 2012, 14:58
 - Репутация: 5183
 - Заслуга: c781c134843e0c1a3de9
 - Настоящее имя: Сергей
 - Откуда: Москва
 - Контактная информация:
 
Re: Самопальный интерпретатор
А что ты собрался чаще мерять, если даже ШИМ нет смысла выше 50 кГц задирать?..
P.S. А на третьей-то зачем?
			
			
									
									P.S. А на третьей-то зачем?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
						- Крафтер
 - Мастер
 - Сообщения: 211
 - Зарегистрирован: 27 мар 2015, 22:25
 - Репутация: 61
 - Настоящее имя: Андрей
 - Откуда: Ростов-на-Дону
 - Контактная информация:
 
Re: Самопальный интерпретатор
Лишняя ножка - это вход от подстроечного резистора, который задаёт ток.
Вот код и прошивка с максимальной оптимизацией. 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
			
			
									
									
						Вот код и прошивка с максимальной оптимизацией. 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
- Крафтер
 - Мастер
 - Сообщения: 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
			
			
									
									
						Попробовал крутить 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: Самопальный интерпретатор
Вот последняя версия драйвера ШД, если кому нечем заняться  
 
Ещё для входов опторазвязку сделать и на 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.
Дальше всё просто. выбрать прошивку, залить.
			
			
									
									
						Работает следующим образом: при запуске по конфигурации перемычек выбирается число микрошагов, настраивается таймер для выдачи сигналов сброса и таймера для ШИМ. В цикле 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.
Дальше всё просто. выбрать прошивку, залить.
- Крафтер
 - Мастер
 - Сообщения: 211
 - Зарегистрирован: 27 мар 2015, 22:25
 - Репутация: 61
 - Настоящее имя: Андрей
 - Откуда: Ростов-на-Дону
 - Контактная информация:
 
Re: Самопальный интерпретатор
Сейчас делаю новую версию станка, завис на креплении рельс. Где-то на форуме видел вопрос, как лучше приделать рельсы к станине, прямо снизу прикрутить или рейку к станине, а к рейке уже рельс. И вроде как на рейке болтаться будут. Так может легче брусок взять, должно жёстко получиться.