Dr. Bob Davidov
Широкодиапазонный скоростной измеритель перемещения высокого разрешения
        Цель: снижение стоимости измерителя перемещений для цифровых систем управления.
        Задача: построение высокоскоростного измерителя перемещений в широком диапазоне с высоким разрешением на базе датчиков Холла.
        Приборы и принадлежности: Два датчика Холла с аналоговым выходом, магнит, контроллер с АЦП, персональный компьютер с МатЛАБ.
Введение
        Существует множество измерителей перемещения, построенных на разных принципах. Цифровые измерители абсолютного положения требуют большого количества портов для передачи параллельного кода. Передача кода через последовательный канал, например, I2C, снижает быстродействие измерителя. Датчикам относительного перемещения с инкрементальным выходом требуются аппаратные или программные счётчики. Использование прерываний для подсчёта дискрет перемещения также ограничивает скорость измерения и может потребовать значительных вычислительныъ ресурсов.
        Датчики угловых перемещений с линейным аналоговым выходом имеют высокое разрешение, причём частота счёта периодов выходного сигнала значительно ниже частоты счёта инкрементальных датчиков. Снижение стоимости датчиков перемещения с аналоговым выходом и использование недорогих контроллеров (например, Arduino) позволяет построить недорогую быстродействующую систему перемещения, работающую в широком диапазоне измеряемых величин с высоким разрешением и с малыми вычислительными затратами.
        В этой работе рассматриваются характеристики существующих бесконтактных измерителей перемещения и предлагается вариант построения бюджетного высокоскоростного измерителя относительного перемещения в широком диапазоне величин с высоким разрешением.
Общие сведения
    Инкрементальный датчик угловых перемещений. Подсчёт импульсов датчика с использованием прерываний
Пример инкрементального датчика угловых перемещений на элементах компьютерной мыши (см. рис. 1) рассмотрен в работе [1]. Импульсы датчика, генерируемые при перемещении объекта, поступают на входы прерываний (D2 и D3) контроллера Arduino UNO. Прерывания подсчитываются программными счётчиками. Измеритель работает при частоте импульсов датчика до 10 кГц, что соответствует измеряемой линейной скорости перемещения 50 мм/с (50 периодов структуры/оборот, четыре импульса/период, 1 мм линейного перемещения/оборот вала). Разрешение измерителя 5 микрон (1/200 оборота). Выходные сигналы двухканального датчика показаны на рис. 2.
    Примечание: На форуме Интернет fhttp://forum.arduino.cc/index.php?topic=l3729.0) сообщается о программном счётчике  контроллера Arduino, работающим на прерываниях со скоростью до 72 КГц.

Рис. 1. Считывающий блок инкрементального углового датчика на двух оптопарах [1].

Рис. 2. Выходные сигналы инкрементального датчика при движении объекта в прямом (левый рисунок) и обратном (правый рисунок) направлениях.
     Подсчёт импульсов аппаратными средствами контроллера
        Для увеличения максимальной скорости измерения и разгрузки контроллера была собрана и проверена схема (рис. 3), в которой роль реверсивного счётчика импульсов инкрементальной оптической головки HEDL-5540 выполнял аппаратный блок контроллера Teensy 3.1. Подсчёт импульсов на высокой частоте аппаратными средствами не требует процессорного времени в отличие от подсчёта программными средствами. Передача значений счётчика управляющему контроллеру Arduino UNO выполнялась по последовательному интерфейсу I2C.

Рис. 3. Применение контроллера Teensy 3.1. для подсчета инкрементов оптического датчика перемещения HEDL-5540 в контуре управления приводом на базе шагового двигателя AM 1524 V3.
        Скорость счёта удалось поднять до 100 кГц. Макет системы управления с оптической головкой для измерения угловых перемещений HEDL-5540 (рис. 3) показан на рис. 4.

Рис. 4. Измеритель угловых перемещений на базе оптической головки HEDL-5540, которая закреплена на оси шагового двигателя, и контроллера Teensy 3.1 (зелёная плата).
        Структурная схема шагового привода на базе контроллера Arduino UNO показана на рис. 3. (Стоимость контроллера Teensy 3.1 ~25 Евро.) Управление шаговым двигателем выполнялось через плату сопряжения Amperka Motor shield (fhttp://amperka.ru/product/arduino-motor-shield).
    Подсчёт импульсов специализированной микросхемой
        Подсчёт импульсов датчика вместо контроллера можно выполнить и с использованием специализированной микросхемы, например, LSI-LS7366R (http://www.lsicsi.com/pdfs/Data Sheets/LS7366R.pdf), которая содержит 32-разрядный реверсивный счетчик (40МГц/5В, 20МГц/ЗВ)  и последовательный интерфейс SPI. Arduino UNO поддерживает SPI соединение через порты D10 (SS), Dll (MOSI), D12 (MISO), D13 (SCK). Для работы с интерфейсом существует SPI библиотека.

Рис. 5. Структура измерителя: инкрементальный датчик RM22, счетчик LS7366R и контроллер с SPI интерфейсом.
     Датчик перемещения с аналоговым выходом
        Магнит в держателе бесконтактного датчика (Рис. 6, верхняя часть), вращаясь вместе с валом объекта, наводит переменное магнитное поле в неподвижном блоке датчика, который преобразует магнитную индукцию поля в электрический сигнал.

Рис. 6. Преобразователи угловых перемещений серий RM22 (слева, диаметр корпуса 22 мм) и RM08V (справа, диаметр корпуса 8 мм) компании RLS состоит из держателя магнита (верхняя часть), который закрепляется на оси вращения объекта, и неподвижного магнитоэлектрического преобразователя (encoder).
     Характеристики датчиков серии RM22:
        •     Бесконтактный;
        •     Скорость вращения, до 500 об/с;
        •     Разрядность, до 13 разрядов (8 192 отсчётов на оборот);
        •     Формат выходного сигнала: абсолютный – параллельный 9 разрядный код, инкрементальный, аналоговый sin/cos, аналоговый линейный, последовательный (SSI) код; (SSI интерфейс не входит в список интерфейсов контроллера Arduino.). Точность ±0.5 отсчета;
    Модификация датчика с линейным выходом 5В/10 разрядов на полпериода:
        •     Напряжение питания:                               Vdd = 5 В ± 5%;
        •     Потребление:                                           20 мА;
        •     Выходное напряжение:                            0 В до Vdd на 1/8; !4; Уг, или полный оборот;

Рис. 7.
        •     Максимальный выходной ток:                                         до 10 мА;
        •     Нелинейность:                                                                1 %.
        •     Стоимость датчика без магнита:                                      ~75 Евро
    Диапазон выходного сигнала
        10-разрядный датчик с линейным аналоговым выходом RM22VB0010B10F1B00, подключенный к АЦП Arduino UNO, показал максимальное (5В*1020/1023) и минимальное (5В*2/1023) выходное напряжение, как показано на рис. 8.

Рис. 8. Максимальное и минимальное значения 10 разрядного углового датчика. Ошибка в 3 разряда
соответствует 15 мВ (как5В*3/1024).
     Динамические характеристики датчика
        Предварительная проверка динамических характеристик канала измерения, включающего измерительную головку датчика RM22V с линейным выходом 5В на пол оборота, 10 -разрядное АЦП и программу подсчета пилообразных сигналов (поворотов на пол оборота), выполнялась при ручном вращении магнитной головки датчика в углублении первичного преобразователя.
        Вид программной переменной выходного сигнала датчика показан на Рис. 9 и Рис. 10.

Рис. 9. Разгон датчика в диапазоне от 0.5 до 8.5 оборотов (1000 .. 17000 единиц датчика) за 0.4 сек (левый график. И
реверсивное движение с максимальной скоростью 1200 бит/20 мс или 30 об/с (правый график).

Рис. 10. График изменения скорости (бит/5мс) при ручном вращении держателя магнита в углублении датчика.
Максимальная скорость 40бит/5мс или 8000/с или ~4 об/с.
     Шум в канале АЦП контроллера
        Шум в канале АЦП датчика может ухудшить его точностные характеристики. Для подавления шума важно знать его спектр и уровень. В разрабатываемой системе управления на базе контроллера Arduino UNO датчик измерения положения подключён ко входу АЦП.
        Усиление PWM сигнала контроллера для управления током двигателя (6В/1.5А) выполнялось через плату расширения Amperka Motor Shield (http://amperka.ru/product/arduino-motor-shield). Шум, наводимый двигателем постоянного тока в канале АЦП контроллера с подключенным двигателем (рис. 11, левый рисунок) не превышал единицы младшего разряда АЦП (рис. 11, правый рисунок). Проведенный тест показал, что работа двигателя не влияет на показания углового датчика положения с аналоговым выходом.

Рис. 11. Элементы системы позиционного управления двигателем постоянного тока на базе контроллера Arduino UNO и плат расширения.
        При работающем двигателе, пульсации в канале датчика измерения углового положения не превышают 1 бит (5мВ) 10 разрядного 5В АЦП контроллера.
        Работа датчиков Холла с аналоговым выходом
Выходной  электрический  сигнал  датчика Холла  пропорционален  магнитной  индукции  поля. Стоимость датчика, например, А1324 (рис. 3) около одного Евро.

Рис. 12. Корпуса и размеры датчика Холла А1324А.
Выходной сигнал и частотные характеристики датчика Холла А1324 показаны на Рис. 13.

Рис. 13. Характеристики датчика Холла А1324А: Зависимость выходного напряжения от магнитной индукции поля (левый график) и зависимость амплитуды выходного сигнала датчика от частоты изменения магнитного поля (правый график).
        Выходной сигнал датчика Холла наблюдался при помощи 10 разрядного 5В АЦП контроллера Arduino UNO, подключенного к графопостроителям среды Simulink MatLAB. При приближении датчика к магниту (рис. 14) напряжение сначала увеличилось с 5Вх510бит/1023бит до 5Вх600бит/1023бит, а затем, когда датчик оказался над магнитом, резко уменьшилось до нуля. При перемещении датчика над плоскостью магнита напряжение не изменялось. При перемещении перевёрнутого датчика сигнал изменялся на противоположный симметрично
относительно линии 2.5В. Стабильность выходного сигнала при отсутствии магнитного поля показана рис. 14.

Рис. 14. Зависимость выходного напряжения датчика Холла А1324 от положения магнита, при постепенном смещении магнита.
        Сигнал 1023 бит на графике соответствует напряжению выходному напряжению датчика 5В. При отсутствии магнитного поля напряжение на выходе датчика изменялось на 1 бит датчика АЦП (2.5В +/- 5мВ).

Рис. 15. Выходное напряжение датчика А1324 при отсутствии поля магнита.
        Зависимость сигнала датчика Холла А1324 от его положения относительно магнитной пластины или держателя со встроенным магнитом, при вращении датчика или магнита, показана на рис. 17, рис. 18, рис. 19. Сигнал датчика не изменяется при вращении магнита вблизи датчика в плоскости, параллельной плоскости датчика (рис. 16). Амплитуда сигнала равняется его min или max значению в зависимости от того, какой стороной датчик обращен к магниту.

Рис. 16. Вращение магнита в плоскости, параллельной плоскости датчика.

Рис. 17. Изменение выходного сигнала при вращении датчика вокруг оси, лежащей в плоскости
параллельной плоскости магнита.

Рис. 18. Изменение выходного сигнала датчика Холла при его вращении вокруг оси магнитного держателя датчика RM22V.
        Датчик Холла расположен внутри держателя. При расположении датчика Холла в месте первичного преобразователя датчика RM22V относительно держателя магнита (Рис. 19), наблюдается следующее изменение двойной амплитуды (max-min) сигнала датчика относительно расстояния между датчиком и держателем.
Расстояние 
Амплитуда сигнала
< 2 мм Насыщение, 0 .. 5 В
2 мм
5 В
5 мм
1 В
10 мм
0.12 В

Рис. 19. Изменение выходного сигнала датчика Холла при его вращении вокруг оси магнитного держателя.
        Датчик Холла расположен снаружи держателя в месте первичного преобразователя датчика RM22V.

Рис. 20. Зависимость сигнала датчика Холла от угла между вектором магнитной индукции и нормалью к плоскости датчика.
        Для   получения   синусоидального   сигнала  необходимо,   чтобы   плоскость   датчика  пересекала магнитный поток как показано рис. 21.

Рис. 21. Положение двух датчиков Холла относительно постоянного магнита и поток силовых линий, проходящих через плоскости датчиков.
        Вращение магнита меняет магнитный поток через плоскость датчиков. Перпендикулярное расположение датчиков относительно друг друга позволяет разнести их сигналы по фазе на четверть периода, что необходимо для вычисления угла. Радиальные и осевые отклонения магнита углового датчика с относительным расположением элементов, как показано на рис. 21, могут заметно изменять выходной сигнал датчика, поэтому биения необходимо ограничить. Пример величин допустимых отклонений магнита относительно датчика RM22 показаны на рис. 22.

Рис. 22. Требования к точности положения держателя магнита (Magnetic actuator) относительно первичного преобразователя (Encoder) углового магнитного датчика RM22 http://www.rls.si/rm22-rotary-magnetic-modular-encoder.
        На рис. 23 показана схема углового датчика, нечувствительного к радиальным и осевым отклонениям. Недостатком этой схемы являются дополнительные затраты на передачу энергии и приём сигнала вращающихся электронных компонентов.

Рис. 23. Схема датчика нечувствительного к радиальным и осевым отклонениям.
     Подсчёт периодов датчика с линейным выходом
    Сравнительные характеристики датчиков
Сравнительные параметры рассмотренных датчиков перемещения для контроллерных систем приведены в табл.
Параметр Инкрементальный датчик    с    подсчётом прерываний Инкрементальный датчик   с   аппаратным счётчиком Датчик с линейным выходом
Скорость Минимальная (подсчёт инкрементов) Максимальная (подсчёт инкрементов) Максимальная (подсчёт периодов)
Разрешение Максимальное (инкремент) Максимальное (инкремент) Максимальное (инкремент)
Разрядность Не ограничена Ограничена (16, 32 бит) Не ограничена
Зависимость измерения положения от шума в выходном канале датчика Минимальная Минимальная Максимальная
Используемые
вычислительные
ресурсы
Максимальные (обработка
прерываний, чтение портов, выделение, и суммирование импульсов)
Минимальные (передача данных контроллеру) Минимальные (чтение АЦП и подсчет периодов)
Стоимость Минимальная (стоимость датчика) Максимальная (стоимость и счётчика) Минимальная (стоимость датчика)
Заключение.
        Сравнительные данные таблицы показывают, что датчик с линейным выходом имеет лучшую интегральную характеристику, при условии, что уровень шумов на входе АЦП контроллера не высок, в идеальном варианте, не превышает разрешение датчика. Рассмотренный вариант построения датчика перемещения на двух датчиках Холла может пригодиться при разработке недорогих быстродействующих систем перемещения, работающих в широком диапазоне измеряемых величин с высоким разрешением с малым объёмом вычислений. Построение собственного датчика углового перемещения целесообразно для бюджетных систем, поскольку стоимость его основных компонентов в десятки раз ниже стоимости покупных датчиков. Например, цена двух датчиков Холла
А1324А равна 2 Евро, тогда как цена датчика RM22 без магнита равна 75 Евро.
Библиография
        1. Dr. Bob Davidov. Аппаратно-программные     реализации     датчиков     перемещения. http://portalnp.ru/2015/05/2583.
        2. Dr. Bob Davidov. Компьютерные    технологии    управления    в    технических    системах http://portalnp.ru/author/bobdavidov.

В оглавление