Управление драйвером шагового двигателя

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Родился
Аватара пользователя
Сообщения: 12
Зарегистрирован: Вс сен 18, 2011 11:57:25

Сообщение alexandrg »

Здравствуйте. После недели биений с pic12F675 я понял что это не мое и нужно просить помощь зала.

Задача следующая...
Имеется процессор pic 12f675, да и впрочем куча других, хоть AVR, PIC, STM32 ... Но предпочтительней на 12f675 потому как с поставленной задачей он справится.

Есть ШД с конроллером управляемым низкоуровневым сигналом step (т.е. на step подали 0 двигатель шагнул).

На GP3 подаем 0, на GP0 появляется - 1, а на GP2 формируется сигнал step с частотой 1кгц до появления низкого уровня на GP4 (концевик 1), мотор стал. В случае подачи на GP3 высокий уровень, на GP0 устанавливаем 0, а на GP2 снова начинает формироваться сигнал STEP до появления низкого уровня на GP5 (концевик 2) и опять мотор стал. Весь этот цикл будет выполняться при условии что на GP1 высокий уровень, в случае появления 0 на GP1, формируем на GP0 - 1? а на GP2 step до срабатывания концевика 2 (GP5) и стоим пока на GP1 снова не появится высокий уровень.

Вух, вроде так. Очень буду благодарен за помощь. Могу оплатить услугу. Спасибо.
-= Одной ногой в моБиле =-
Реклама
Сверлит текстолит когтями
Сообщения: 1180
Зарегистрирован: Пт авг 21, 2009 03:22:12

Сообщение bolek »

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

Изображение

Модель прилагается
Вложения
step_control.zip
(11.04 КБ) 192 скачивания
Реклама
Родился
Аватара пользователя
Сообщения: 12
Зарегистрирован: Вс сен 18, 2011 11:57:25

Сообщение alexandrg »

bolek писал(а):Вот все, что нужно для реализации алгоритма управления: кусочек логической микросхемы и никакого программирования.
Генератор можно сделать тоже на логике.
Модель прилагается
) Вы конечно меня озадачили на пару часов, но все равно спасибо. Я уже крутил логику. В этом нет смысла. pic это всего лишь 8 ног, а логика это уже печатная плата. )
Немного неправильно.
Генератор должен срабатывать всегда после изменения уровня на gp3. Попробую объяснить проще. Это колесо, которое крутится на пол оборота влево (если на gp3 - 1), при появлении на gp3 - 0, вправо, и так далее. GP0 всего лишь сигнал dir для контроллера. Запускает двигатель именно GP3. GP1 это как бы контрольный сигнал и сигнал завершения. Если на GP1 лог 1, тогда работаем, а вдруг там появляется 0, тогда включаем генератор до концевика 2 и все, больше GP3 не участвует в этом процессе. Ждем GP1.
-= Одной ногой в моБиле =-
Сверлит текстолит когтями
Сообщения: 1180
Зарегистрирован: Пт авг 21, 2009 03:22:12

Сообщение bolek »

:))
Я всего лишь показал, что агоритм неполон:
сигналы управления никак не связаны с концевиками, это приведет к "мертвым" точкам.
Тепрь вот еще вспывают подробности...
У Вас не получилось сделать самостоятельно не от отсутствия знаний/опыта, а от неверно поставленной задачи.
Рисуйте блок-схему алгоритма - поможет. И не забывайте детали.

P.S. Для 8-ногой микросхемы так же нужна плата как и для пары корпусов логики. А если еще потребуется супервизор, то экономия места уже не так очевидна... :)) :))
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Аватара пользователя
Сообщения: 12
Зарегистрирован: Вс сен 18, 2011 11:57:25

Сообщение alexandrg »

bolek писал(а)::))
Я всего лишь показал, что агоритм неполон:
Ну почему же, как раз описал все точно, может быть не совсем понятно, ну извините, речи президенту ни разу не готовил. :)
Блок схема давно нарисована, и на delphi макет есть, мне так понятнее. Причем механика готова и в ручном режиме этот процесс уже работает.
Дело совсем не в экономии места, места предостаточно, дело скорее в цене вопроса. Зачем городить на семечках, тем более что pic12f675 smd влепенил на переходник smd-dip и прям в контроллер двумя ногами ... :))
И еще раз спасибо, благодаря вашей схеме, логику на пике я уже оформил, теперь пытаюсь генератор вписать. Вот с таймерами уже сложнее. Ну надо же когда то воткнуть в этот PIC. На AVR мне как то полегче, сам не пойму. :dont_know:
-= Одной ногой в моБиле =-
Реклама
Сверлит текстолит когтями
Сообщения: 1180
Зарегистрирован: Пт авг 21, 2009 03:22:12

Сообщение bolek »

alexandrg писал(а):
bolek писал(а)::))
Я всего лишь показал, что агоритм неполон:
Ну почему же, как раз описал все точно, может быть не совсем понятно...
Отчего же, все понятно: по вашему изложению нарисовал блок-схему, а уж по ней - схему на логике.
Вы пропустили мое замечание о "мертвых точках":
На GP3 подаем 0, на GP0 появляется - 1, а на GP2 формируется сигнал step с частотой 1кгц до появления низкого уровня на GP4 (концевик 1), мотор стал.
- это мертвая точка, из нее двигатель никогда не выйдет, если не добавить условие - шагать в этой точке (сработавшего концевика 1) можно, но только в сторону другого концевика.
Аналогично и для концевика 2: из точки, где он сработал, двигаться можно только в сторону концевика 1.

Эти условия добавят связи между независимыми на моей схеме (нарисованной по вашему первому посту) элементами 3И-НЕ и схема уже не будет такой простой, ее действительно проще будет сделать на МК. :))

А с таймерами в PIC какие проблемы? Использовать Timer1, в таймер писать число, соответствующее времени счета 500 мкс, в прерывании по переполнению таймера формировать на GP2 поочередно 1 и 0 сигнала Step и вновь писать в таймер вышеупомянутое число.
Когда генерация должна быть остановлена - не чередовать на GP2 1 и 0, писать только 1 (или только 0, как требуется).

Кстати, если использовать внутренний генератор 4 Мгц, то может быть удобно использовать Timer0 c предделителем 2, тогда период прерывания по его переполнению будет 512 мкс - чуть больше чем надо - зато можно не задумываться о записываемом числе, а таймер 1 задействовать на опрос управляющих сигналов и подавление дребезга.
Реклама
Ответить

Вернуться в «Периферия»