Контроллер на 2 сигнала STEP/DIR
Приветствую всех!
Надо тут разработать контроллер для двух драйверов на основе микроконтроллера PIC18Fxxxx.
Драйверы готовые китайского производства. Управляются с помощью стандартных сигналов типа STEP/DIR.
Есть готовый девайс-контроллер STEP/DIR на одном PIC18F.
Но он умеет управлять только одной парой сигналов STEP/DIR.
С целью уменьшения цены и дальнейшего удобства по увеличению функциональности
решил управлять двумя китайскими драйверами ШД с помощью одного пик контроллера.
Какие грабли могут ждать меня при таком алгоритме?
PIC18F Был выбран по причине наличия в нем нескольких 16 разрядных таймеров. Для создания независимых временных периодов необходимых для двух сигналов
STEP/DIR.
А скорость у меня задается с помощью АЦП. АЦП нужен для джойстика-потенциометра который указывает направление и скорость вращения ШД.
Какой предполaгается тираж?
А в чем суть? Управление в ручном режиме? Руками неудобно рулить.
Какой предполaгается тираж?
Пока совсем небольшой. Но…
Кто нибудь разрабатывал такой 2 осевой контроллер на базе МК?
Сам немного программирую PIC контроллеры. Но именно на одном контроллере две независимые частоты еще не реализовывал.
Ну ясно что будет использовано прерывание и таймеры. Ну кто знает какие грабли меня ждут. пока делаем как было, два PIC18 работают каждый на свою координату.
Захотелось сделать индикатор, кнопки и.т.д. А это значить(да и вообще так правильно) что должен быть ОДИН управляющий контроллер.
Где то уважаемый AT_LAB писал про какие то недостатки подобной реализации управления. Но никак не смог найти эту тему.
А в чем суть? Управление в ручном режиме? Руками неудобно рулить.
Есть два варианта. Управление с помощью компьютера и джойстика
со встроенным контроллером(ручной режим). Оба варинта генерируют
стандартные сигналы STEP/DIR.
Хотя в будущем кто знает. В МК можно залить и операционную систему.
Подключить внешнюю память типа SD, загонять туда какие нибудь операции или даже алгоритмы и.т.д. Но это потом конечно.
Подключить внешнюю память типа SD
Просто для ознакомления it-en.ru/cnc/
Просто для ознакомления it-en.ru/cnc/
Ну, система хорошая. Понравилось. Но что-то не понял сколько они просят за прошитый контроллер.
Но к сожалению там Атмега, а я не умею писать под Атмелы.
А программу все равно придется переделывать.
Причина по вышеописанным причинам. Мне все же нужен именно ручной режим, причем с управлением от джойстика-потенциометра. Где отклоняя угол можно менять скорость и направление.(дозировать)
Неужели здесь никто не разрабатывает свои контроллеры для ШД?
Разрабатывает, разрабатывает…
Разрабатывает, разрабатывает…
Я на форуме не часто бываю. Но вы mura кажется имеете достаточный уровень квалификации по разработкам контроллеров ШД. Не так ли?
Пробовали создавать нечто подобное что я собираюсь делать?
Пишите для АВР?
Пишу и для AVR то-же, скажу что для получения двух независимых частот хватит и одного таймера. Был пульт, но там было все кнопками.
Я бы делал для каждой координаты свой кристалл, максимально быстрый алгоритм роботы и обработки данных. Насчет SD это хорошо, но для хобииста это лишнее. Если бы я рассчитывал на массовость своей продукции, то есть тысячами, так бы и сделал, а одну две или 100 – незачем нагружать микроконтроллер лишними движениями. Насчет PIC, у AVR тоже есть несколько таймеров 16-ти разрядных таймеров, и тоже есть прерывания по переполнению. Дело привычки. А кристалл бы сделал с возможностью подключения би- и униполярных ШД. Большой шаг деления скажем 1/32 или 1/256 😃.
А в результате получается, что дешевле и быстрее поставить старый комп с ДОС и какой-нибудь программой. Или даже с win XP/Linux - что-нибудь в ITX формате.
Разработка - дело дорогое и небыстрое, особенно когда ТЗ толком не сформулировано, а все держится на неясных вопросах/пожеланиях.
А в результате получается, что дешевле и быстрее поставить старый комп с ДОС и какой-нибудь программой. Или даже с win XP/Linux - что-нибудь в ITX формате.
Разработка - дело дорогое и небыстрое, особенно когда ТЗ толком не сформулировано, а все держится на неясных вопросах/пожеланиях.
Да ладно вам разработка.😉 Старые компы как раз есть. даже 466 селерон рабочий дома валяется.😁
Алгоритм довольно прост. Это даже за разработку считать нельзя.
С потенциометра измеряем напряжение с помощью АЦП.
Результат через перекодировочную таблицу помещается в таймер, и ждем пока не установится флаг.
Как только флаг таймера установится, все повторяется снова. (следующий микрошаг)
Просто, как лучше сделать чередование для двух сигналов. То есть уже не один а два процесса. (временных интервалов.)
Я хотел посоветоваться только на счет этого и все.
А в результате получается, что дешевле и быстрее поставить старый комп с ДОС и какой-нибудь программой.
Это правда!
Но в этом случае, похоже, запуск станка не цель.
Да ладно вам разработка…
Алгоритм довольно прост. Это даже за разработку считать нельзя.
…Я хотел посоветоваться только на счет этого и все.
Так что же советоваться то? Это же не разработка: минут 10 посидел и готово 😵
“Нравится” мне такой подход: мне самому думать лень и свое время тратить не хочется, а вам что, трудно? Это же фигня, не разработка… 😈
С потенциометра измеряем напряжение с помощью АЦП.
Результат через перекодировочную таблицу помещается в таймер, и ждем пока не установится флаг.
Как только флаг таймера установится, все повторяется снова. (следующий микрошаг)
Просто, как лучше сделать чередование для двух сигналов. То есть уже не один а два процесса. (временных интервалов.)
Делал я такую ерундовину, когда в мастерской компа не было, а станок покрутить хотелось.
Система элементарная - два джойстика - 4 потенциометра на АЦП
AVR, один таймер на максимальную частоту шага. В прерывании таймера выставляем степ на нужном канале по перекодированным через таблицу данным АЦП и запускаем второй таймер, который сбрасывает степ. Заодно вывод скорости по осям на ЖКИ, пару кнопок, светодиодов, два выхода вкл/выкл.
Делалось на макетке ATmega32.
если надо - могу забросить схему и программу.
ЗЫ. Делалось чтобы попробывать станок, так что для нормальной работы нужно добавить ограничение максимального ускорения - чтобы при резких рывках джойстика не срывался движок. Но мне лень:)
Думаю будут проблемы с контроллером для двух драйверов и самая большая – синхронизация двух потоков step.
Делал я такую ерундовину, когда в мастерской компа не было, а станок покрутить хотелось.
Система элементарная - два джойстика - 4 потенциометра на АЦП
AVR, один таймер на максимальную частоту шага. В прерывании таймера выставляем степ на нужном канале по перекодированным через таблицу данным АЦП и запускаем второй таймер, который сбрасывает степ. Заодно вывод скорости по осям на ЖКИ, пару кнопок, светодиодов, два выхода вкл/выкл.Делалось на макетке ATmega32.
если надо - могу забросить схему и программу.
ЗЫ. Делалось чтобы попробывать станок, так что для нормальной работы нужно добавить ограничение максимального ускорения - чтобы при резких рывках джойстика не срывался движок. Но мне лень:)
Спасибо за толковый ответ! Если вас не затруднит с удовольствием бы посмотрел на программу и схему.😃
И еще хотел спросить. А где запускаете измерение АЦП. В основной программе?
Измеряете сразу все 4 канала? Или идет случайный характер?