Страница 1 из 1

многоканальный счетчик импульсов

Добавлено: Сб янв 21, 2012 10:16:57
gergerichii
Доброго времени суток!
Возникла необходимость собрать устройство подсчета импульсов с инкрементальных энкодеров (причем при сдвиге как в одну сторону, так и в другую). Количество - энкодеров от 20 шт. и выше.
Т.к. я в электронике настоящий про.... хм... профан =), по этому прошу совета у Гуру =)

Условия задачи таковы:
Минимальная цена, минимальное количество радиоэлементов (т.к. все устройство должно, примерно, умещаться на ладони)
Желательно чтобы работала на одном МК. Возможность модульно добавлять энкодеры.
А самое главное: частота импульсов может достигать 2-2,5кГц но НЕЛЬЗЯ упустить НЕ ЕДИНОГО импульса! Это самое важное условие. Не должно накапливаться погрешностей. =)

Энкодеры будут ленточные (т.е. перфорированная лента с оптическими датчиками. Как в струйниках)

Я не прошу принципиальных схем =) мне важно понять как вообще это можно реализовать, с помощью каких компонентов.

За ранее спасибо!

Re: многоканальный счетчик импульсов

Добавлено: Сб янв 21, 2012 10:50:12
orinoko
Мне думается, что это не есть непосильная задача для МК. Главное, чтоб количество портов было не меньше необходимого количества входных линий. Например, поставить чего-нибудь типа ATmega128 с кварцем на 16 МГц - там портов вполне достаточно. Прерывание по таймеру с периодом 0,1 мсек. По прерыванию считываются все входные линии, при сравнении с предыдущим значением определяем, какая линия перешла 1->0 (или 1->0), и инкремент соответствующего счётчика (какое максимальное значение счётчика?). Но тут я бы советовал писать на асме, чтобы лучше контролировать выполнение программы, чтобы не было гонок.
Тут ещё вопрос, а что с этими данными потом нужно делать?
Ну и не забыть про согласование уровней енкодера и МК.

Re: многоканальный счетчик импульсов

Добавлено: Сб янв 21, 2012 11:08:00
gergerichii
orinoko писал(а):Мне думается, что это не есть непосильная задача для МК. Главное, чтоб количество портов было не меньше необходимого количества входных линий. Например, поставить чего-нибудь типа ATmega128 с кварцем на 16 МГц - там портов вполне достаточно. Прерывание по таймеру с периодом 0,1 мсек. По прерыванию считываются все входные линии, при сравнении с предыдущим значением определяем, какая линия перешла 1->0 (или 1->0), и инкремент соответствующего счётчика (какое максимальное значение счётчика?). Но тут я бы советовал писать на асме, чтобы лучше контролировать выполнение программы, чтобы не было гонок.
Тут ещё вопрос, а что с этими данными потом нужно делать?
Ну и не забыть про согласование уровней енкодера и МК.
Количество энкодеров может увеличится до 100. желательно чтобы их можно было добавлять модульно, т.е. с использованием какого ни будь интерфейса типа i2c. А модули могут быть разного размера от 1 до 20 энкодеров на модуль.
По поводу алгоритма (программного) обработки сигналов с самих энкодеров - я разобрался... но это если энкодер напрямую к МК подключен. В идеале, что бы энкодеры каким-то образом своей жизнью жили, а МК только данные с них собирал =)
Потом эти данные буду пересылаться через USB на ПК либо в виде ID датчика:его дельта, либо в виде вектора пары датчиков (каждый датчик является вержиной (узлом) сложной геометрической системы)

Хотя, наверное, можно обрабатывать и по 50 датчиков, т.к. 2 МК на систему - удовлетворяет условиям. Просто смысл - именно в дешевизне и простоте обслуживания.

Re: многоканальный счетчик импульсов

Добавлено: Сб янв 21, 2012 15:08:36
coredumped
Для реализации задачи нужно не менее 40 портов для подключения 20 энкодеров. А это минимум mega64. И повозиться прийдется неслабо. Кстати, быстродействия AVR может и не хватить - нужно ведь еще вывод данных обеспечить. Я бы посоветовал рассредоточить задачу на несколько "малоногих" контроллеров - пусть считают импульсы и хранят результаты, а мастер-контроллер по I2C или SPI будет опраишвать данные по мере необходимости. Можно генерить сигнал при изменении данных, который будет вызывать прерывание у мастер-контроллера. Как-то так.

Re: многоканальный счетчик импульсов

Добавлено: Сб янв 21, 2012 17:25:44
s64
Полностью поддерживаю предыдущий пост. Распараллелить задачу - одна тинька, один энкодер. Над интерфейсом нужно думать. Проще всего, по моему, заложится на RS485, хотя там ограничение в 32 устр-ва на шине, i2c - тоже самое.

Re: многоканальный счетчик импульсов

Добавлено: Сб янв 21, 2012 18:51:54
gergerichii
Собственно, про модульность я и написал в предыдущем посте.... в идеале, чтобы каждый модуль мог обрабатывать до 20 энкодеров и запоминать значения, чтобы потом можно было бы опрашивать каким-то образом эти модули и собранную инфу отправлять в ПК