half 3axis контроллер шаговыз двигателей hobbyrc
В копилку нашего форума !
Сделал на pic 16f877A плату навроде hobbycnc , работает на аппаратных прерываниях по приходу сигнала в порт B. Работает в полушаге ! Имеется шим регулировка тока удержания ротора(Правда пока на уровне исходника). Потом сделаю программу в которую можно будет изменять параметры шим-а. Пока тестировал на тестовой плате. Кто будет делать рекомендую поставить оптопары типа PC847 на входы step/dir.
Прошивка с шим удержания ,нижний уровень 100мс и верхний 100мс
Проштвка с шим 1мс и 1мс для тестирования в PIC Simulator IDE для наглядности.
В копилку нашего форума !
Сделал на pic 16f877A плату навроде hobbycnc , работает на аппаратных прерываниях по приходу сигнала в порт B. Работает в полушаге ! Имеется шим регулировка тока удержания ротора(Правда пока на уровне исходника). Потом сделаю программу в которую можно будет изменять параметры шим-а. Пока тестировал на тестовой плате. Кто будет делать рекомендую поставить оптопары типа PC847 на входы step/dir.
Прошивка с шим удержания ,нижний уровень 100мс и верхний 100мс
Проштвка с шим 1мс и 1мс для тестирования в PIC Simulator IDE для наглядности.
Замечания к схеме те же, что и в rcopen.com/forum/f41/topic41741
Пожелания:
- не хватает керамических конденсаторов в питании +5В (у выводов питания PIC - обязательно)
- емкость электролитического конденсатора в цепи +5В (470 мкФ) слишком велика, да и не нужна такая большая - мощных потребителей тока по питанию +5В нет, а, с другой стороны, такая большая емкость
- нарушает нормальный режим работы стабилизатора +5В (посмотрите типовые схемы включения стабилизаторов, там конденсатор большой емкости включается перед стабилизатором)
- может привести к сбоям в работе PIC из-за нарушения ограничений по скорости нарастания напряжения питания (таблица 17.1 параметр Svdd),
- нужно поставить в цепь MCLR PIC супервизор питания, или хотя бы его суррогат на транзисторе или (в крайнем случае) просто конденсатор - см. типовые схемы из раздела 14.4 datasheet.
- обязательно) добавить резисторы включеные между затворами и стоками (общим проводом) для исключения ситуации, когда выход PIC будет в 3-м состоянии (настроен на вход при включении (до инициализации) или из-за сбоя), и через IRLZ будет течь неконтролируемый ток, что может привести к перегоранию обмоток двигателей или транзисторов
- обязательно поставить диоды параллельно обмоткам двигателя
- организовать аппаратный контроль тока через обмотки (в PIC же есть и АЦП и компараторы) или поставить токоограничивающие резисторы в цепи стоков.
Какова частота и разрядность ШИМ для управления током через обмотки (мне лень дизассемблировать прошивку и разбиравться с ней)?
Наверняка ведь частота ШИМ не превышает нескольких килогерц даже при кварце 20 МГц и небольшой разрядности, поскольку реализация программная. Поэтому предвижу проблемы с максимальной частотой шагов двигателя.
По поводу опторазвязки:
не вижу смысла ее ставить после LPT - Вы же не ставите опторазвязку на принтер или плоттер? Возможно имеет смысл ее поставить между PIC и ключами IRLZ, тогда силовая и сигнальная части будут разделены, хотя при грамотной разводке платы и это не нужно.
P.S. Может Вам, все же сначала почитать/перечитать статью Л.Ридико “Контроллер шагового двигателя”?
P.P.S. IMHO, вы напрасно взяли за основу идею венгра - это ошибка, тупик.
P.S. Может Вам, все же сначала почитать/перечитать статью Л.Ридико “Контроллер шагового двигателя”?
Первое что прочитал это была эта статья !
За советы спасибо !
Я же не говорил что это конечный результат , доведу до ума схему, сделаю платку под утюг !
[За советы спасибо !
Я же не говорил что это конечный результат , доведу до ума схему, сделаю платку под утюг !
А ШИМ то на какой частоте и с какой разрядностью?
Вот печатка в формате sprint layout
И фотки ,то что у меня вышло .
Исходник на PCW C Compiler IDE
Просто и работает быстро ! Мож кто еще че нибудь посоветует добавить в прошивку ?
Так я все же про частоту ШИМ:
правильно ли я понял, что оператор
delay_ms(delay)
формирует задержку в миллисекундах?
Если это так, то, как я и предполагал, никакого ШИМ управления током в обмотках нет, поскольку
последовательность операторов в main loop
loop:
output_a(step[stx]);
…
delay_ms(shim_delay); // 100 мс
output_a(0);
delay_ms(shim_delay2); // 200 мс
…
goto loop;
выполняется примерно за 300 мс, т.е. частота ШИМ будет около 3,3 Гц.
Налицо явное непонимание того, что такое ШИМ, и модуляция вообще - частота несущей не должна быть ниже частоты модулирующего сигнала (обычно предполагается, что частота несущей не меньше чем на порядок выше частоты модулирующего сигнала). В данном конкретном случае - частота несущей 3,3 Гц, а частота модулирующего сигнала (частота шагания) может быть, например, 1000 Гц. Нонсенс. Поэтому, фактически никакого ШИМ нет, основной цикл работы программы - в обработчике прерываний.
Теперь по поводу обработки прерываний:
обработка прерываний от сигналов STEP (RB4-RB6) сделана не совсем корректно - для целей данного приложения - поэтому шагание будет производиться дважды на каждый импульс шага (по переднему и заднему фронту).
Выводы: молодец, что своими руками что-то делаешь (а ведь мог бы вместо этого водку пить!), но лучше бы сначала самому во всем разобраться, все проверить и опробовать, а потом уже предлагать народу для использования.
АтLab Вы бы вместо постояннолй критики взяли бы да и сделали что нибудь хорошее для народа, по всем Вашим правилам. Рас Вы такой профессионал.
Насчет двойного шагания брехня, загрузите в эмулятор для наглядности и посмотрите что шаг происходит только после прихода следующего сигнала.
А про ШИМ
Широтно-импульсная модуляция – это способ влияния на управляющее воздействие при дискретном выходе. А у меня как раз это и есть. В режиме простоя вал ШД удерживается импульсами с заданной частотой.
АтLab Вы бы вместо постояннолй критики взяли бы да и сделали что нибудь хорошее для народа, по всем Вашим правилам. Рас Вы такой профессионал.
А народу это надо? Чтобы я его облагодетельствовал?
Насчет двойного шагания брехня, загрузите в эмулятор для наглядности и посмотрите что шаг происходит только после прихода следующего сигнала.
Читайте datasheet.
А если кратко, то интересующие нас прерывания возникают от изменения состояния выводов PORTB4-7.
- Предположим, что на входе изначально был 0, его и считали с порта при инициализации (в защелке порта 0).
- Пришел импульс STEP вида __/—\__, длительностью, скажем 200 мкс.
- По переднему фронту возникает прерывание (на входе 1 а в защелке 0), в обработчике прерываний считываем состояние порта, ликвидируя тем самым разницу между входом и защелкой порта (в защелке порта теперь 1). Здесь же выполняем шаг двигателя, считав очередную комбинацию сигналов из таблицы. Затем возвращаемся из прерывания.
- По заднему фронту вновь возникнет прерывание - поскольку на входе 0, а в защелке 1. Снова обработка прерывания и очередной шаг. И т.д.
Чтобы это понять не нужен никакой эмулятор, достаточно знать работк микроконтроллера, тем более что среда, в которой Вы программируете и на которую Вы ссылаетесь, не слишком широко распространена.
А про ШИМ
Широтно-импульсная модуляция – это способ влияния на управляющее воздействие при дискретном выходе. А у меня как раз это и есть. В режиме простоя вал ШД удерживается импульсами с заданной частотой.
Тут вообще без комментариев… %)
P.S. Выкладывая свое творение на всеобщее обозрение, нужно быть готовым к его критике.
“Мож кто еще че нибудь посоветует добавить в прошивку?” - не Ваш ли призыв?
Вот я и посоветовал - разобраться с устройством и работой микроконтроллера, ШИМ, и причесать свое произведение. Чего обижаться-то?
Успехов!
Неспорю насчет ваших знаний по части работы МК ,но вот я вижу что с C вы неработали. Нормальную работу шаг/импульс обеспечивает оператор input().
На этом я закончу диалог ,с Вами можно спорить очень долго !
Неспорю насчет ваших знаний по части работы МК ,но вот я вижу что с C вы неработали. Нормальную работу шаг/импульс обеспечивает оператор input().
На этом я закончу диалог ,с Вами можно спорить очень долго !
Вам все правильно говорят. Учитесь понимать и принимать критику. А то, что вы сделали, я бы пока не советовал предлагать общественности - сыро, даже мокро 😃.
2 STEPMOTOR
Хочу спросить… Вы эксплуатируете данный контроллер? Какие результаты?
Уважаемый ALL
Остановился на схеме
mac1.ifrance.com/cnc3ax/index.htm
можно ли ей доверять кто юзал ее?
рабочая ли схема и плата этого сайта?
Какие корявки (если они есть) в ней?
Сам я не силен в схемотехнике.
Как запитывать движки?
Подавать питание на каждый отдельно
(поставить на каждый блок питания 2,4А 36В)
или все запитать через один блок питания?
У меня движки 3А 36В.
С уважением
Уважаемый ALL
Остановился на схеме
mac1.ifrance.com/cnc3ax/index.htm
можно ли ей доверять кто юзал ее?
рабочая ли схема и плата этого сайта?
Какие корявки (если они есть) в ней?
Сам я не силен в схемотехнике.
Как запитывать движки?
Подавать питание на каждый отдельно
(поставить на каждый блок питания 2,4А 36В)
или все запитать через один блок питания?
У меня движки 3А 36В.С уважением
Я эту плату собирал, с первого раза полностью не заработала, но потом разобрался в чем дело и все закрутилось завертелось ! Правда потом из-за нагрева сильного движков в режиме простоя решил собрать с сайта hobbycnc.hu ,все работало хорошо только один недостаток что в режиме полного шага ! Решил сделать свой ,сейчас на нем в полушаге пашет !
Я эту плату собирал, с первого раза полностью не заработала, но потом разобрался в чем дело и все закрутилось завертелось ! Правда потом из-за нагрева сильного движков в режиме простоя решил собрать с сайта hobbycnc.hu ,все работало хорошо только один недостаток что в режиме полного шага ! Решил сделать свой ,сейчас на нем в полушаге пашет !
Спасибо, буду знать что там козявки,
но если знаете какие, можно намылить
чтоб человек не мучился
…Спасибо, буду знать что там козявки,
но если знаете какие, можно намылить
чтоб человек не мучился
Посмотрите внимательно на печатку и схему и все увидете !
Посмотрите внимательно на печатку и схему и все увидете !
А вы садист однако ))
Может проще ткнуть где козявка!