Цель работы: Рассмотрение особенностей датчиков перемещения.
Задача работы: Построение датчика относительного перемещения на базе контроллера Arduino.
Приборы и принадлежности: Контроллер Arduino UNO, оптопара и дисковая решетка компьютерной мыши, пакет Simulink MathLab.
ВВЕДЕНИЕ
Измерители перемещения широко используются в системах управления, как для задания управляющих воздействий, так и для определения координат объекта. В этой работе особое внимание уделено вопросам построения цифровых датчиков относительного перемещения. Такие угловые и линейные датчики характеризуются высокой точностью и быстродействием в большом диапазоне измеряемых перемещений. Необходимость определения начала отсчета, в сравнении с датчиками абсолютного перемещения, пожалуй, единственный недостаток, который не сильно усложняет и удорожает датчик. Практические примеры построения датчиков перемещения используют контроллер Arduino UNO и компоненты датчика перемещения компьютерной мыши.
В этой работе рассматриваются следующие вопросы
- Особенности построения датчиков перемещения;
- Принципы действия датчиков перемещения на основе периодических структур;
- Аналоговые и дискретные считывающие устройства датчиков;
- Варианты аппаратной и программной реализаций функций датчика;
- Инициализация датчиков относительного перемещения;
- Особенности и примеры построения датчиков относительного перемещения и скорости на базе контроллера Arduino.
ОБЩИЕ СВЕДЕНИЯ
Классификация датчиков перемещения
По выходному сигналу датчики перемещения можно разделить на аналоговые и цифровые, измеряющие абсолютное и относительное положение (Рис. 1). Аналоговые датчики, например, потенциометрические или индукционные подключаются к компьютеру через АЦП. Цифровые датчики абсолютного перемещения (Рис. 2) выдают цифровой код положения объекта, им не требуется операции определения начала отчета для калибровки датчика, например, после смещения объекта при выключенном датчике. Недостатками датчиков абсолютного перемещения по сравнению с датчиками относительного перемещения является высокая стоимость кодовых линеек и относительно невысокое отношение диапазона перемещения к разрешающей способности.
Рис. 1. Классификация датчиков перемещения.
Рис. 2. Принцип действия датчика абсолютного перемещения [1]. Линейка с кодовыми отверстиями пропускает свет на фотоприемники. Диапазон перемещения датчика равен произведению разрешающей способности (ширины минимального отверстия решетки) на 2n, где n – количество разрядов кодовой решетки или количество фотоприемников. К примеру, для измерения перемещения в 1000 дискрет требуется 10-разрядная решетка.
Датчики относительного перемещения (Рис. 3) включают периодическую структуру, считывающий блок из 2-х оптопар, формирователь импульсов (Рис. 4) и реверсивный счетчик для подсчета импульсов формирователя, генерируемых при перемещении считывающего блока относительно периодической структуры. Счетчик должен устанавливаться в начальное состояние при срабатывании датчика начального положения.
Рис. 3. Работа датчика относительного перемещения. Оптопары считывающего блока должны располагаться на расстоянии кратном периоду структуры со сдвигом в четверть периода. Это необходимо для определения направления перемещения.
На (Рис. 3) показан считыватель, использующий отражение от периодической поверхности. Существуют считыватели работающие на просвет, в которых оси источника и приемника излучения совпадают.
Рис. 4. Выходные импульсы считывателя периодической структуры, перемещаемой равномерно в прямом и обратных направления. Суммируемые импульсы (“+”) формируются положительным фронтом сигнала А при низком уровне сигнала B или отрицательным фронтом сигнала А при высоком уровне сигнала B. Вычитаемые импульсы (“-”) формируются отрицательным фронтом сигнала А и при низком уровне сигнала B или положительным фронтом сигнала А при высоком уровне сигнала B.
Измеряемое перемещение импульсных датчиков (Рис. 4) пропорционально разности сумм положительных и отрицательных импульсов. Разрешение считывателя равно половине периода структуры, 2 импульсам за период. Частота импульсов пропорциональна скорости движения считывателя относительно периодической структуры. Импульсы отсутствуют, когда считыватель находится в покое.
Функция выделения импульсов с удвоенным разрешением (четыре импульса за период) выглядит следующим образом.
Рис. 5. Электрическая схема датчика относительных перемещений с разрешением половина периода периодической структуры, например, показанной на Рис. 11. Сигналы (Sin и Cos) фотодиодов преобразуются в меандры (сигналы прямоугольной формы) на компараторах микросхемы MAX 478. Одновибраторы 564 AG3 формируют импульсы, запускаемые подъемом/спадом меандра B, которые, пройдя логический блок схемы, поступают (в зависимости от фазового сдвига меандров (см. Рис. 4)) на положительный или отрицательный вход 8 разрядного реверсивного счетчика (микросхемы SN74AL). Сброс счетчика выполняется сигналом R от контроллера. Счетчик может выполнить начальную установку входного кода D по сигналу PE низкого уровня. Выходной код счетчика показывает относительное перемещение периодической структуры в диапазоне от 0 до 255 полупериодов А и В сигналов.
Применение периодических структур, формирующих синусоидальные выходные сигналы на выходе считывателя, позволяет повысить разрешающую способность датчика положения. В таких датчиках положение внутри периода вычисляется через arctg отношения амплитуд Sin и Cos сигналов считывателя.
Рис. 6. Взаимодействие основных компонентов магнитного датчика положения
По такому же принципу устроены магнитные датчики угловых смещений (Рис. 6), у которых период структуры равен полному обороту входного вала.
Рис. 7. Пример магнитного датчика вращения RS 714 [2]. Магнит (справа) закрепляется на 6 мм валу.
Характеристики датчика:
- Диапазон измерения: 0 .. 360о
- Выход: 3-проводной последовательный интерфейс
- Максимальная тактовая частота интерфейса: 1 МГц
- Разрешение: 12 бит (RS 714-2693), 10 бит (RS 714-0234)
- Макс скорость вращения (механическая): 12000 оборотов в минуту
- Диапазон рабочих температур: от -40 до + 125 ° C
- Напряжение питания: от 4,5 до + 5,5 В
- Диаметр вала: 6 мм
- Длина вала: 8,5 ± 1,0 мм
- Стоимость: £16.82 (RS 714-0234)
Периодическими структурами датчиков относительного перемещения могут быть волны лазеров, пазы или просветы в материалах, муаровые полосы дифракционных решеток (Рис. 8).
Рис. 8. Типы периодических структур.
Пример простейшего лазерного интерферометра показан на Рис. 9. Для интерференции необходимо, чтобы объединяемые лучи были когерентными (с синхронными колебаниями в разных точках волн) и монохроматическими (одинаковой частоты). Это достигается использованием одного лазерного источника излучения и светоделительной пластины для формирования опорного и отражаемого от объекта лучей.
Рис. 9. Пример интерферометра Майкельсона. Выходной луч лазера коллимируется — расходящиеся лучи собираются в параллельный пучок, светоделительная пластина делит луч на два, один из которых идет до неподвижного отражателя, а другой – до отражателя, перемещаемого с объектом, отраженные лучи объединяются на пластине и проходят в зону фотоприемников, которые сдвинуты относительно полос интерференционной картины на 90 градусов.
Кольца интерференционной картины меняют интенсивность при перемещении объекта. Они, как бы сужаются к центру или расширяются в обратную сторону в зависимости от направления движения отражателя. Смещение объекта на половину длины волны лазера (~0.3 мкм) вызывает повторение интерференционной картины. Выделение дробной части с использованием компараторов (Рис. 4) позволяет увеличить разрешение интерферометра в 4 раза (1).
Рис. 10. Диаграмма сложения отраженных волн от опорного и перемещаемого отражателей. Длина волны периодической структуры, например, газового He-Ne лазера равна 0.6328 мкм. Если фазы отраженных от опорного и подвижного отражателей волн совпадают (), то интенсивность объединенной волны (при ) удваивается (), если отраженные волны идут в противофазе (или ) – интенсивность объединенной волны равна нулю (). В интерферометре Майкельсона смещение отражателя на половину волны источника излучения вызывает смещение объединяемых волн на целый период.
Разрешение интерферометра можно повысить увеличением числа отражений от отражателя перемещаемого объекта. В этом случае период сигнала фотодиодов равен
P =(λ/2)m,
где λ – длина волны лазера (~0.6 мкм); m – количество отражений от объекта.
Измерение фазы периода по Sin/Cos сигналам фотодиодов также позволяет повысить разрешение интерферометра.
Точным интерферометрам в большом диапазоне перемещений требуется высокостабильный лазер.
Оси лучей, идущих к фотоприёмному блоку должны совпадать. Интерферометр очень чувствителен к угловым отклонениям лучей. Развороты отражателя при перемещении объекта не лишь искажают интерференционную картину, но могут привести и к ее потере.
Растровые шкалы и дифракционные решетки
Датчики на основе растровых шкал и дифракционных решеток (Рис. 8) строятся на одинаковом принципе контроля перемещений. Они имеют длинную шкалу в виде периодически нанесенных штрихов и визирную короткую шкалу с таким же или кратным периодом штрихов и отверстий. Одна из шкал неподвижна, другая — перемещается вместе с объектом.
Рис. 11. Колесико компьютерной мышки — растровая структура 50 периодов/оборот и его подключение к объекту – валу привода. Применение цифрового считывателя с полным разрешением (4 импульса за период) позволяет зарегистрировать угловое смещение винтовой пары (шаг 1 мм/об.) в 1.8 градуса (360о/200), что соответствует линейному смещению гайки на 5 мкм.
Растровые и дифракционные периодические структуры отличаются частотой расположения штрихов. У дифракционных решеток количество штрихов на мм выше 100.
Легкий разворот дифракционных решеток позволяет создать Муаровые полосы (Рис. 12), которые дают следующие преимущества.
- муаровая картина не зависит от длины волны света. Это позволяет применять в качестве источника света обычные лампы накаливания.
- сохраняется высокий контраст муаровой картины при относительно больших (до десяти мм) зазорах между решетками.
- шаг муаровой картины может соответствовать величине перемещений в несколько раз меньше, чем расстояние между штрихами решеток.
Рис. 12. Образование муаровых полос. Уменьшение разворота увеличивает период муаровых полос.
Рис. 13. Пример сигналов на выходе фотодиодов считывателя при неравномерном движение в прямом направлении (левая часть графиков — верхний сигнал отстает от нижнего) и движении в обратном направлении (правая часть графиков — нижний сигнал отстает от верхнего). Период сигнала равен периоду структуры.
Определение начального положения
Точность определения датчика относительного перемещения зависит от точности определения начального положения. Пример схемы датчика начального положения, его подключения и выходной сигнал показаны на Рис. 14. Этот же датчик можно использовать для контроля выхода объекта на границу зоны перемещения.
Рис. 14. Датчик Холла A3212 и его выходной сигнал. Датчик срабатывает (переход в ноль) при приближении магнита.
ПРИМЕРЫ ПОЛУЧЕНИЯ ПРОВЕРЕННЫХ РЕЗУЛЬТАТОВ И ВАРИАНТЫ ДЛЯ САМОКОНТРОЛЯ
Задание 1. Построение датчика перемещения на базе считывателя с аналоговыми выходами и контроллера Arduino UNO.
1.Подключите выход считывателя компьютерной мышки к аналоговым входам контроллера
Рис. 15. Расположение элементов 3-х датчиков углового перемещения устаревшей (с шариком) компьютерной мышки. Светодиод и фотодиоды электрически отключены от платы мышки (соответствующие проводники печатной платы перерезаны). Частота излучения светодиодов лежит за пределами спектра видимого излучения.
Рис. 16. Схема подключения светодиода и фотодиодов считывателя к аналоговым входам контроллера.
Рис. 17. Пример монтажа электрической схемы (Рис. 16).
2.Подключите выходы АЦП контроллера через последовательный интерфейс к графопостроителю (МатЛАБ), см. пример
Рис. 18. Пример Sin/Cos выходных сигналов считывателя при медленном смещении диска с отверстиями. Амплитуда и смещение сигналов зависят от тока светодиода, резисторов фотодиодов (Рис. 16) и углового положения светодиода.
3.Используя функцию (1) или функцию, показанную на на Рис. 4, разработайте код программный реализации датчика относительного перемещения для контроллера .
4.Проверьте работу датчика по выходному сигналу в МатЛАБ.
Задание 2. Построение датчика скорости на базе считывателя с дискретными выходами и контроллера Arduino UNO.
1.Соберите схему считывателя с дискретными выходами и подключите ее к дискретным портам контроллера которые могут генерировать прерывания.
Рис. 19. Схема датчика относительных перемещений с дискретным считывателем. Контроллер подсчитывает фронты сигналов используя функцию (1) или функцию, показанную на Рис. 4.
Примечание: Для защиты датчика от ложных импульсов, которые могут генерировать шумы при амплитуде входного сигнала A фотодиода близкой к порогу компаратора (2.5 В) следует включить в схему Рис. 19 триггер шмидта. Подключение триггера и его диаграмма работы показаны на Рис. 20.
Рис. 20. Триггер Шмитта и диаграмма работы триггера. При сопротивлениях R1 = R2 = 1Ком, R3 = 10 КОм и выходном напряжении Vout = 0/5V пороги срабатывания триггера V+ = 2.36/2.6 V,
2.Проверьте аналоговые и дискретные сигналы считывателя подключив их к каналу АЦП контроллера – канал последовательной передачи контроллера – графопостроитель МатЛАБ, см. пример []. При необходимости, настройте схему считывателя (Рис. 16).
Рис. 21. Аналоговый и дискретный сигналы канала А при медленном вращении диска считывателя.
Рис. 22. Аналоговый и дискретный сигналы канала В при медленном вращении диска считывателя.
Рис. 23. Относительное положение дискретных сигналов А (верхние графики) и В (нижние графики) при вращении диска с отверстиями в одну сторону (левые графики) и обратную сторону (правые графики).
3. Разработайте программу контроллера для определения скорости вращения диска. Необходимо вычислять разность сумм фронтов дискретных сигналов А и В каждые 20 мс. Программа должна использовать прерывания по фронту портов 2 и 3. Результат вычисления необходимо передавать в МатЛАБ для построения графика скорости в реальном времени.
Пример программы с использованием кода [3]:
#define encoderPinA 2
#define encoderPinB 3
unsigned int encoderPos = 0;
unsigned int encoderPosPrev = 0;
unsigned int encoderPosInc;
unsigned long set_time = 0;
void setup() {
pinMode(encoderPinA, INPUT);
pinMode(encoderPinB, INPUT);
// encoder pin on interrupt 0 (pin 2)
attachInterrupt(0, doEncoderA, CHANGE);
// encoder pin on interrupt 1 (pin 3)
attachInterrupt(1, doEncoderB, CHANGE);
Serial.begin (57600);
}
void loop(){ //Do stuff here
unsigned long time = millis();
if (time > set_time) {
set_time = set_time + 20;
if (encoderPos > encoderPosPrev) {
encoderPosInc = encoderPos — encoderPosPrev;
}
else
{
encoderPosInc = encoderPosPrev — encoderPos;
}
byte Rate_Hi = ((encoderPosInc >> 6) & 0xFE);
byte Rate_Lo = ((encoderPosInc << 1) & 0xFE);
//Send ADC out in MatLAB:
Serial.print(«A»); // it is header
Serial.write(Rate_Lo);
Serial.write(Rate_Hi); // output byte: uint8
encoderPosPrev = encoderPos;
}
}
void doEncoderA(){
// look for a low-to-high on channel A
if (digitalRead(encoderPinA) == HIGH) {
// check channel B to see which way encoder is turning
if (digitalRead(encoderPinB) == LOW) {
encoderPos = encoderPos + 1; // CW
}
else {
encoderPos = encoderPos — 1; // CCW
}
}
else // must be a high-to-low edge on channel A
{
// check channel B to see which way encoder is turning
if (digitalRead(encoderPinB) == HIGH) {
encoderPos = encoderPos + 1; // CW
}
else {
encoderPos = encoderPos — 1; // CCW
}
}
}
void doEncoderB(){
// look for a low-to-high on channel B
if (digitalRead(encoderPinB) == HIGH) {
// check channel A to see which way encoder is turning
if (digitalRead(encoderPinA) == HIGH) {
encoderPos = encoderPos + 1; // CW
}
else {
encoderPos = encoderPos — 1; // CCW
}
}
// Look for a high-to-low on channel B
else {
// check channel B to see which way encoder is turning
if (digitalRead(encoderPinA) == LOW) {
encoderPos = encoderPos + 1; // CW
}
else {
encoderPos = encoderPos — 1; // CCW
}
}
}
Рис. 24. Разложение 16р. переменной контроллера для побайтной передачи в COM порт контроллера.
4. Постройте график скорости. Определите максимальную скорость измерения, см. пример [].
Рис. 25. Пример изменения скорости вращения диска. При превышении скорости вращения 180 импульсов (прерываний) за 20 мс (45 оборотов в cекунду) амплитуда выходного сигнала начинает уменьшаться – датчик работает некорректно. Максимальная частота корректной обработки прерываний ~ 11 КГц. Возможно, это не предельная частота, которой необходим сдвиг между дискретными сигналами точно в четверть периода.
Задание 3. Построение датчика положения на базе считывателя с дискретными выходами и контроллера Arduino UNO.
1.Доработайте код программы задания 2 для передачи в МатЛАБ углового положения диска датчика, вместо скорости.
2.Доработайте модель МатЛАБ для цифрового отображения положения диска и графического отображения скорости диска, также см. пример [].
Рис. 26. Модель МатЛАБ для приема и отображения данных контроллера.
Рис. 27. Тестовые значения перемещения и скорости перемещения дискового датчика.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Сравните программные (задание 3) и аппаратные (Рис. 5) реализации выделения и подсчета фронтов выходных сигналов считывателя датчика положения.
2. Назовите способы уменьшения количества портов контроллера для подключения высокоразрядных датчиков перемещения.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
Автор: Dr. Bob Davidov