Здавствуйте господа. Почитал то что тут написано, аж голова закипела.
Что хотел бы прежде всего сказать, прошу воспринимать без обид и нt считать наездом
Делать однозначно необходимо на AVR mega 16, 32 и тд
В чем плюсы:
огромное число портов ввода-вывода, в том числе для ацп - 8 каналов
можно иметь по три интерфейса COM, LPT и USB на одном контроллере
аппаратная!!! реализация ШИМ (PWM) от 4х до 8 или 10 штук, никак не ест ресурсы процессора, т.е ШИМом и АЦП можно будет контролировать ток в каждой обмотке четырех шаговиков
упраление шаговиками синхронно
организация выходов на силовые ключи с драйверами
простое внутрисхемное программирование, т.е. даже не надо контроллер вынимать, чтобы залить модернизированную программу
В итоге по количеству компонентов получится дешевый контроллер на одном процессоре с минимум обвязки: кварц, пятерка-десятка кондеров и столько же резисторов. Ну и силовые полевики с их драйверами (я ставлю кт972+973 в преобразователях напряжения)
Тем кто знаком с программированием думаю будет не сложно перейти на avr, тем более если все пишется на си. Разница только в начальном коде.
Как я предлагаю организовать передачу данных в контроллер
Используем для этого пакет из 6 байт: по два байта на ось
0,1 бит - ось
2 бит - направление
3-7 - время шага ( допустим максимальная скорость 10 мм/сек - 4000шагов/сек -->0.00025 сек/имп ) Вот эти 250мксек и будут множителем этих 5ти бит. То есть получем время шага 5бит*25мксек
второй байт - перемещение по оси в шагах, именно перемещение, а не координаты
выполнение подготовки этих данных возложить на ПК
Пример
по оси X переместить с координаты 10.400 на 10.600 со скоростью 0.5 мм/сек
01_1_10100 --> ось Х_направление_время шага (т.е 0.5мм/с=200 об/с=0.005сек/об которые поделив на 0.00025сек дадут нам 20 или 10100)
01010000 - перемещение на 0.2мм или 80 шагов
можно также использовать и скорость вместо времени шага, но тогда еще придется отправлять отношение шагов/оборот и загружать микроонтроллер
скорости com порта хватит за глаза