Инкрементный преобразователь линейных перемещений

Инкрементный преобразователь линейных перемещений

Dr. Bob Davidov

Инкрементный преобразователь линейных перемещений

Цель работы: рассмотреть варианты вычисления измеряемого перемещения по сигналам инкрементного датчика.
Задача работы: подключение преобразователя линейных перемещений ISKRA TGM01 к контроллеру Arduino. Приборы и принадлежности: инкрементный преобразователь линейных перемещений ISKRA TGM01, контроллер Arduino UNO, персональный компьютер c Simulink.

Шильдик датчика TGM01

 

ВВЕДЕНИЕ
Инкрементные датчики широко используются для измерения перемещений особенно в тех случаях, когда отношение диапазона перемещений к величине отсчета превышает несколько порядков и применение цифровых датчиков абсолютного перемещения ограничено этим отношением или их стоимостью. Подключение незнакомого инкрементного датчика к средствам построения и отображения координаты перемещения требует определенных навыков диагностики выходных сигналов, согласования линий, ввода сигналов в контроллер, разработки и отладки алгоритма преобразования импульсов датчика в измеряемую координату. В этой работе решаются затронутые вопросы подключения датчика линейных перемещений ISKRA TGM01 при отсутствии документации и схем подключения.

 

ДИАГНОСТИКА ПРЕОБРАЗОВАТЕЛЯ ЛИНЕЙНЫХ ПЕРЕМЕЩЕНИЙ ISKRA TGM01

Внешний вид преобразователя линейных перемещений ISKRA TGM01 показан на Рис. 1. Он включает: корпус преобразователя, считывающую головку, кабель в металлорукаве и
10-контактный разъем PC10 TB.

 

Преобразователь линейных перемещений ISKRA TGM01

Рис. 1. Преобразователь линейных перемещений ISKRA TGM01

Паспортные данные преобразователя выбитые на его шильдике показаны на Рис. 2. Длинаизмеряемого перемещения Lm = 720 мм. Период регулярного растра измерительной шкалы
D = 0.02 мм. Вид сигналов: прямоугольные импульсные сигналы А и В и их инверсные сигналы.

 

Шильдик датчика TGM01

Рис. 2. Шильдик датчика TGM01.

Поиск в Интернет схем подключения преобразователя TGM01 дал отрицательный результат. На форуме http://www.chipmaker.ru/topic/73966/ сообщается, что преобразователь
TGM может иметь несколько модификаций по питанию (+5 или +12В), по типу выходного сигнала (синусоидальный токовый сигнал, синусоидальный сигнал напряжения,
прямоугольный импульсный сигнал) и по амплитуде сигнала. Для подключения преобразователя в первую очередь необходимо найти контакты питания, а затем, постепенно увеличивая напряжения питания и наблюдая за потреблением тока, определить рабочее напряжение преобразователя.

 

 

Номера контактов разъема преобразователя линейных перемещений ISKRA TGM01 - 10 контактная вилка PC10TB с кожухом.

 

 

Рис. 3. Номера контактов разъема преобразователя линейных перемещений ISKRA TGM01- 10 контактная вилка PC10TB с кожухом.

Часть электрической схемы преобразователя – подключенные к 10-контактному разъему провода, удалось увидеть раскрутив разъем. Цветная провода кабеля и их маркировка показаны на Рис. 4.

 

Цветная маркировка проводов разъема PC10TB.

1 — белый; 2 — черный; 3 — зеленый; 4 — розовый; 5 — серый; 6 — красный; 7 — желтый; 8 — коричневый; 9 — — свободный контакт; 10 — зеленый, экран.

Рис. 4. Цветная маркировка проводов разъема PC10TB.

Для питания электронных устройств довольно часто используются синий или черный провода как общий (GND) и красный провод — как провод питающего напряжения. Так,
например, в блоках питания компьютера +5В подается красным проводом, GND – черным и +12В – желтым проводом. В электропроводке правила цветовой маркировки проводов менялись несколько раз и разные по назначению провода в разных редакциях обозначались одним и тем же цветом, что до сих пор вносит путаницу. По правилам ПУЭ-7 202 г. Как и по европейским правилам используется следующее цветовое обозначение проводов электропроводки.

• голубой цвет — для обозначения ноля, нулевого рабочего или среднего проводника электрической сети (N);
• двухцветная комбинация зелено-желтого цвета используется для обозначения заземления, защитного или нулевого защитного проводника (PE);
• черный, коричневый, красный, фиолетовый, серый, розовый, белый, оранжевый, бирюзовый цвет — для обозначения фазного проводника (L).

Среди наиболее вероятных проводов питания преобразователя выделены провода черного и белого цветов, подключенные к контактам 2 и 1 соответственно. Однако приведенные выше примеры цветовой маркировки не позволяют однозначно определить требуемую полярность контактов преобразователя при подключении питания. Измерение межконтактного сопротивления разъема показало, что сопротивление между контактами 1 и 2 — 1.8 кОм, между остальными контактами — несколько Мегаом. Поскольку у преобразователя однотипных сигнальных проводов должно быть больше, чем проводов питания, то результат измерения сопротивления увеличил вероятность, того что
пара контактов 1 и 2 используется для подключения питания. В соединителе PC10TB линейных инкрементных преобразователей ЛИР компании СКБ ИС [1] черный цвет провода используется для обозначения +5В, -12В, +10 .. +30В, а белый цвет – для обозначения провода питания с потенциалом 0В. С учетом предыдущих рассуждений, белый и черный провода кабеля выбраны для подключения к преобразователю регулируемого источника постоянного напряжения HY3003 с цифровыми индикаторами
выходного напряжения и тока (Рис. 5). Постепенное увеличение выходного напряжения блока питания HY3003 до +5В показало, что короткого замыкания нет, а потребление преобразователя при +5В составляет 70 мА. Такой ток позволяет запитать преобразователь и от контроллера Arduino UNO, подключаемого к компьютеру через USB канал +5В/>500мА.

Питание преобразователя линейных перемещений от блока HY3003. Вход 10- разрядного АЦП 0 контроллера Arduino подключен к линии питания преобразователя. "Земли" контроллера и блока питания объединены.

Рис. 5. Питание преобразователя линейных перемещений от блока HY3003. Вход 10-разрядного АЦП 0 контроллера Arduino подключен к линии питания преобразователя. «Земли» контроллера и блока питания объединены.

При поиске сигнальных контактов преобразователя в качестве осциллографа использовался контроллер Arduino UNO с графопостроителем Simulink. Напряжение на контактах
преобразователя поступало в контроллер через 10-разрядные АЦП, затем данные АЦП через USB линию передавались графопостроителю Simulink, который и отображал сигналы
с периодом сэмплирования 20 мсек. Код контроллера Arduino для ввода аналогового напряжения и передачи его цифрового значения в последовательный канал данных АЦП для их отображения в среде Simulink выглядит следующим образом.

[tip]const int adc_port = A0; // ADC port number
int adc_smpl;
unsigned long set_time = 0;
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(115200); // 57600; for MatLAB
// Serial.begin(9600); // for serial monitor
}
void loop() {
unsigned long time = millis();
if (time > set_time) {
set_time = set_time + 20;
// read the ADC:
adc_smpl = analogRead(adc_port);
// Send ADC out in MatLAB:
Serial.print(«A»); // it is header
Serial.write(adc_smpl);
Serial.write(adc_smpl >> 8);
}
}

[/tip]

Программа (модель) Simulink для отображения сигналов контроллера Arduino каждые 20 мсек. Программа (модель) Simulink для отображения сигналов контроллера Arduino каждые 20 мсек.

Рис. 6. Программа (модель) Simulink для отображения сигналов контроллера Arduino
каждые 20 мсек.

При медленном ручном перемещении считывающей головки преобразователя на контактах N3, N4, N6 и N7 появлялся цифровой сигнал, как показано на Рис. 7.

Пример сигнала на контактах N3, N4, N6 и N7 преобразователя

 Рис. 7. Пример сигнала на контактах N3, N4, N6 и N7 преобразователя. На контактах N5 и N8 обнаружен плавающий сигнал (Рис. 8). Возможно, это контакты
сигнала референтной метки (начала отсчета).

Примеры плавающего сигнала на контактах N5 и N8 преобразователя (720 мм) при движении считывателя со скоростью около ~ 720мм/10сек в прямом и обратном направлениях.
Примеры плавающего сигнала на контактах N5 и N8 преобразователя (720 мм) при движении считывателя со скоростью около ~ 720мм/10сек в прямом и обратном направлениях.

Рис. 8. Примеры плавающего сигнала на контактах N5 и N8 преобразователя (720 мм) при движении считывателя со скоростью около ~ 720мм/10сек в прямом и обратном

направлениях. В выделенной группе из 4 сигналов (N3, 4, 6 и 7) период которых совпадает с периодом растра измерительной шкалы (20 мкм) необходимо найти пару основных и пару инверсных сигналов. По основным сигналам (сдвинутым на 90 градусов – четверть периода) определяется величина и направление перемещения [2, 3].

Для определения фазовых сдвигов сигналы группы попарно подключали к двум АЦП контроллера Arduino UNO и на графопостроителе Simulink наблюдали фазу сигналов при
медленном смещении считывающей головки. Для наглядности, к одному из сигналов добавили постоянный сдвиг 2 вольта. Коды программ контроллера Arduino и модели
Simulink для отображения двух сигналов показаны ниже.

[tip]const int adc1_port = A0; // ADC port number
const int adc2_port = A1; // ADC port number
int adc1_smpl, adc2_smpl;
unsigned long set_time = 0;
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(115200); // 57600; for MatLAB
// Serial.begin(9600); // for serial monitor
}
void loop() {
unsigned long time = millis();
if (time > set_time) {
set_time = set_time + 20;
// read the ADC:
adc1_smpl = analogRead(adc1_port);
adc2_smpl = analogRead(adc2_port);
// Send ADC out in MatLAB:
Serial.print(«A»); // it is header
Serial.write(adc1_smpl);
Serial.write(adc1_smpl >> 8);
Serial.write(adc2_smpl);
Serial.write(adc2_smpl >> 8);
}
}

[/tip]

Модель Simulink для приема и отображения двух сигналов. Сигналы COM порта принимаются и отображаются каждые 20 мсек.

 

Рис. 9. Модель Simulink для приема и отображения двух сигналов. Сигналы COM порта принимаются и отображаются каждые 20 мсек.

Сигналы контактов N3 и N6 (левый график) и контактов N4 и N7 (правый график) сдвинуты по фазе на четверть периода. Для наглядности, один из сигналов смещен на осциллограмме на 2 В. Сигналы контактов N3 и N6 (левый график) и контактов N4 и N7 (правый график) сдвинуты по фазе на четверть периода. Для наглядности, один из сигналов смещен на осциллограмме на 2 В.

Рис. 10. Сигналы контактов N3 и N6 (левый график) и контактов N4 и N7 (правый график) сдвинуты по фазе на четверть периода. Для наглядности, один из сигналов смещен на осциллограмме на 2 В.

Сигналы контактов N6 и N4 (левый график) и контактов N3 и N7 (правый график) инверсны – изменяются в противофазе. Сигналы контактов N6 и N4 (левый график) и контактов N3 и N7 (правый график) инверсны – изменяются в противофазе.

Рис. 11. Сигналы контактов N6 и N4 (левый график) и контактов N3 и N7 (правый график) инверсны – изменяются в противофазе.

По данным осциллограммам Рис. 10 и Рис. 11 сигнальным линиям можно присвоитьследующее обозначение.
N3  A
N4  B
N6 (инверсный B)
N7 (инверсный A)

Сигналы А и В сдвинуты относительно друг друга на четверть периода. Изменение амплитуды сигналов при увеличении скорости движения считывающей головки показано на

Рис. 12. При движении амплитуда сигналов уменьшается с 5 В до 4.5 В.

Изменение амплитуды сигналов А и В при движении считывающей головки.

Рис. 12. Изменение амплитуды сигналов А и В при движении считывающей головки.

Наличие инверсных сигналов на выходе разъема инкрементного преобразователя позволяет построить схему уменьшения искажения сигналов при перемещении считывающей головки. Для этого прямые и инверсные (дифференциальные) сигналы соединяются на приёмном устройстве через согласующий резистор величина которого равна волновому
(характеристическому) сопротивлению кабеля. В этом случае сигнал, пройдя кабель, воспринимается приемным устройством полностью, без отражения. Любая другая нагрузка,
даже её отсутствие, вызывает отраженные волны [4]. В линейных инкрементных преобразователях аналогичных TGM01 [5] используется кабель с волновым сопротивлением 120 Ом. Полученные сигналы преобразователя при подключении сопротивления 120 Ом показаны на Рис. 13 и Рис. 14. Схема подключения
приведена на Рис. 15.

При подключении двух резисторов 120 Ом потребление преобразователя от 5В выросло с 0.07 А до 0.14 A. Ток потребления увеличился более чем на 50 мА (2 х 3 В / 120 Ом).
Потребление от внешнего источника не зависит от того запитан ли контроллер от 5В USB линии или нет. Уровни согласованных сигналов 0.94 B и 4.055В не изменяются (см. Рис. 13 и Рис. 14) при движении считывающей головки.

Сигналы А и В преобразователя TGM01 с согласованными линиями

Рис. 13. Сигналы А и В преобразователя TGM01 с согласованными линиями.

Уровни сигнала 0.94 B и 4.055 V преобразователя TGM01 с согласованными линиями. Уровни сигнала 0.94 B и 4.055 V преобразователя TGM01 с согласованными линиями.

Рис. 14. Уровни сигнала 0.94 B и 4.055 V преобразователя TGM01 с согласованными линиями.

ПОДКЛЮЧЕНИЕ ПРЕОБРАЗОВАТЕЛЯ К КОНТРОЛЛЕРУ И ДИСПЛЕЮ

Схема согласования сигнальных линий и подключения преобразователя TGM01 к контроллеру Arduino UNO.

 

Рис. 15. Схема согласования сигнальных линий и подключения преобразователя TGM01 к
контроллеру Arduino UNO.

Измеряемое перемещение пропорционально количеству периодов считывающей головки. Алгоритм подсчета дискрет в четверть периода сигналов А и В считывающей головки включает

1. Выделение фронтов сигнала А и В при их переходе через уровни компараторов (618 и 405 бит), отстоящих на 1/3 амплитуды от уровней сигнала.

Расчет порогов компараторов для выделения высокого и низкого уровня сигнала. Напряжению сигнала выше 3 В присвоен высокий уровень, напряжению меньше 2 В присвоен низкий уровень.

Рис. 16. Расчет порогов компараторов для выделения высокого и низкого уровня сигнала. Напряжению сигнала выше 3 В присвоен высокий уровень, напряжению меньше 2 В присвоен низкий уровень.

2. Формирование инкрементного (суммируемого) импульса в момент появления фронта сигнала А при высоком уровне сигнала В или спаде сигнала А при низком уровне сигнала В или по фронту сигнала В при низком уровне сигнала А или спаде сигнала В при высоком уровне сигнала А.

Относительный сдвиг сигналов А и В при движении считывающей головки в прямом и обратном направлениях.

Рис. 17. Относительный сдвиг сигналов А и В при движении считывающей головки в прямом и обратном направлениях.

3. Формирование декрементного (вычитаемого) импульса по фронту сигнала А при низком уровне сигнала В или спаде сигнала А при высоком уровне сигнала В или по фронту сигнала В при высоком уровне сигнала А или спаде сигнала В при низком уровне сигнала А.

4. Подсчет суммируемых и вычитаемых импульсов реверсивным счетчиком. Результат суммирования пропорционален перемещению считывающей головки.

5. Масштабирование. Величина перемещения равна произведению суммы дискрет навеличину дискреты (минимальный размер дискреты равен 5 мкм при периоде сигналов А и В 20 мкм).

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

Когда алгоритм подсчета дискрет реализуется на программном уровне без обработки прерываний, передача данных в последовательный канал COM может прерывать вычисление координаты относительного перемещения (выделения и подсчета дискрет) и, таким образом, искажать результат измерения перемещения. Чтобы этого не происходило, необходимо, чтобы подсчет выполнялся независимо, например, аппаратным счетчиком [2], или на программном уровне с наивысшим приоритетом. Или, чтобы время передачи данных не превышало интервал между фронтами импульсов А и В преобразователя. Последнее условие выполнимо когда измерительная головка находится в положении покоя или её скорость не превышает порогового значения которое должно быть меньше отношения дискреты (например, 5 мкм) ко времени передачи (например, 0.35 мсек). Подключение к контроллеру собственного дисплея и отображение на нём координаты относительного перемещения позволяет отказаться от внешнего дисплея и передачи данных через СОМ порт.

ПРИМЕРЫ ПОЛУЧЕНИЯ ПРОВЕРЕННЫХ РЕЗУЛЬТАТОВ И ВАРИАНТЫ ДЛЯ САМОКОНТРОЛЯ

Задание 1. Вычисление относительной координаты считывающей головки преобразователя.
1. Разработайте программу контроллера Arduino для определения относительной координаты инкрементного преобразователя TGM01 в диапазоне 720 мм с периодом
преобразователя 20 мкм и разрешением 5 мкм. Алгоритм программы приведен выше. Пример кода вычисления относительной координаты и передачи результата в СОМ порт каждую секунду.

[tip]const int adc1_port = A0; // ADC port number
const int adc2_port = A1; // ADC port number
int adc1, adc2;
int A_smpl, B_smpl;
int A_prev, B_prev;
long counter = 200000; // more than range of 14400 bit (as 720mm x 4 / 0.02 mm)
unsigned long set_time = 0;
void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(115200); // 57600; for MatLAB
// Serial.begin(9600); // for serial monitor
}
void loop() {
// A
adc1 = analogRead(adc1_port);
if (adc1 < 405) A_smpl = LOW;
if (adc1 > 618) A_smpl = HIGH;
// B
adc2 = analogRead(adc2_port);
if (adc2 < 405) B_smpl = LOW;
if (adc2 > 618) B_smpl = HIGH;
// front A
if ((A_prev == LOW) && (A_smpl == HIGH)) {
if (B_smpl == HIGH) counter = counter + 1;
if (B_smpl == LOW) counter = counter — 1;
}
// drop A
if ((A_prev == HIGH) && (A_smpl == LOW)) {
if (B_smpl == LOW) counter = counter + 1;
if (B_smpl == HIGH) counter = counter — 1;
}
// front B
if ((B_prev == LOW) && (B_smpl == HIGH)) {
if (A_smpl == LOW) counter = counter + 1;
if (A_smpl == HIGH) counter = counter — 1;
}
// drop A
if ((B_prev == HIGH) && (B_smpl == LOW)) {
if (A_smpl == HIGH) counter = counter + 1;
if (A_smpl == LOW) counter = counter — 1;
}
// update data
A_prev = A_smpl;
B_prev = B_smpl;
unsigned long time = millis();
if (time > set_time) {
set_time = set_time + 1000;
// Send ADC out in MatLAB:
Serial.print(«A»); // it is header
Serial.write(counter);
Serial.write(counter >> 8);
Serial.write(counter >> 16);
}
}

[/tip]

 

2. В среде Simulink разработайте модель для отображения величины относительного перемещения считывающей головки инкрементного преобразователя TGM01.

Пример блок-схемы Simulink для приема, масштабирования и отображения относительного перемещения считывающей головки преобразователя.

 

Рис. 18. Пример блок-схемы Simulink для приема, масштабирования и отображения относительного перемещения считывающей головки преобразователя.

3. По схеме Рис. 15 подключите преобразователь к контроллеру и через него к компьютеру.

 

Преобразователь TGM01 подключенный к компьютеру через контроллер Arduino UNO и USB канал.Преобразователь TGM01 подключенный к компьютеру через контроллер Arduino UNO и USB канал.

 

Рис. 19. Преобразователь TGM01 подключенный к компьютеру через контроллер Arduino UNO и USB канал.

4. Убедитесь что цифровой дисплей и графопостроитель показывают относительное положение считывающей головки.

Примеры отображения координаты считывающей головки преобразователя при ее перемещении из начальной точки 1000 мм. Период отображения данных – 1 секунда. Примеры отображения координаты считывающей головки преобразователя при ее перемещении из начальной точки 1000 мм. Период отображения данных – 1 секунда.
Рис. 20. Примеры отображения координаты считывающей головки преобразователя при ее перемещении из начальной точки 1000 мм. Период отображения данных – 1 секунда.

5. Определите максимальную скорость преобразователя.

Перемещение на 40 мм и возврат в исходную точку контролируются по линейке (Рис. 19). Скорость перемещения 40 мм / 25 сек, или 1.6 мм/сек, или 96 мм/мин.
Рис. 21. Перемещение на 40 мм и возврат в исходную точку контролируются по линейке (Рис. 19). Скорость перемещения 40 мм / 25 сек, или 1.6 мм/сек, или 96 мм/мин.

Корректное отображение перемещения на 40 мм с возвратом в исходную точку на скорости 40 мм/6сек, или 6.7 мм/сек, или 400 мм/мин (левая осциллограмма). Справа показан график некорректного измерения перемещения на 100 мм с возвратом. Скорость перемещения достигала 100 мм/4сек, или 25 мм/сек, или 1500 мм/мин. Корректное отображение перемещения на 40 мм с возвратом в исходную точку на скорости 40 мм/6сек, или 6.7 мм/сек, или 400 мм/мин (левая осциллограмма). Справа показан график некорректного измерения перемещения на 100 мм с возвратом. Скорость перемещения достигала 100 мм/4сек, или 25 мм/сек, или 1500 мм/мин.
Рис. 22. Корректное отображение перемещения на 40 мм с возвратом в исходную точку на скорости 40 мм/6сек, или 6.7 мм/сек, или 400 мм/мин (левая осциллограмма). Справа показан график некорректного измерения перемещения на 100 мм с возвратом. Скорость перемещения достигала 100 мм/4сек, или 25 мм/сек, или 1500 мм/мин.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Для чего применяется согласование сигнальных линий?
2. Как исключить влияние передачи данных в последовательный канал на показания
инкрементного измерителя линейных перемещений.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. ОАО «СКБ ИС» Соединители инкрементных преобразователей
http://www.skbis.ru/pdf/Connectors/Con_Inc.pdf
2. Dr. Bob Davidov. Аппаратно-программные реализации датчиков перемещения.
http://portalnp.ru/2015/05/2583, https://cxem.net/cms/drafts/4986/preview/
3. Dr. Bob Davidov. Обработка и oтображение сигналов на частоте преобразования АЦП.
http://habrahabr.ru/post/257303/, http://portalnp.ru/2015/05/2600
4. Хоровиц П., Хилл У. Искусство схемотехники (Глава 9: Сопряжение цифровых и
аналоговых сигналов): В 2-х т. Т. 2. Пер. с англ. — Изд. 3-е, стереотип. — М.: Мир, 1986. —
590 с., ил; http://www.e-reading.by/djvureader.php/142082/43/Hill_-
_Iskusstvo_shemotehniki._Tom_2..html
5. СКБ ИС. Замена импортных датчиков угловых перемещений
http://www.skbis.ru/index.php?p=8

Скачать статью в pdf — Инкрементный преобразователь линейных перемещений.pdf

Ссылка на основную публикацию