[an error occurred while processing this directive]
|
Микроконтроллер не успеет. Схема с триггерами очень требовательна к форме импульсов и работает не со всеми датчиками.
Правильный вариант: Скачай микрочиповский аппликейшн AN532 Servo control of a DC-brush motor, там есть готовая программа для PLD 16R8. ПЛУ выпускается кучей фирм, мы использовали Atmel 16V8, и несложный транслятор Atmel CUPL с незначительной переделкой программы. Выходы импульсов счета заводи на внешние входы счетчиков контроллера (обязательно!), разрядность счетчиков нарасти программно до 32 бит. Их разность и будет искомое значение положения.
Теперь о шести каналах. Засунуть шестиканальный декодер можно в бОльшую матрицу, присмотрись к Atmel ATF15XX или аналогичным, но ни у одного микроконтроллера не найдется 12 счетчиков. Самый простой вариант - использовать обычные микросхемы счетчиков, посадить их на одну шину и считывать поочередно. Другой вариант - использовать ПЛМ покруче. Выбор за тобой.
Предвижу вопрос, зачем нужен аппаратный счетчик? Затем, что во время останова на границе импульса энкодер может дребезжать с большой частотой из-за малейшей вибрации, процессор не успеет обрабатывать прерывания, в неблагоприятном случае показания могут уползти весьма далеко и это будет предметом весьма длительного секса. Кроме того, во время рывков и ударов в механической системе, частота импульсов заметно превысит расчетную, те кто говорят, что при таких исходных можно и программно, мыслят правильно, просто они не реализовывали подобную штуковину.
E-mail: info@telesys.ru