Линейный лазерный энкодер

Добрый день. Приобрел линейный энкодер.


Вот пины на русском;
Назначение вывода J1:
• 1: A + канал квадратурного кодирующего устройства
• 2: A-канал квадратурного кодирующего устройства
• 3: B + канал квадратурного кодирующего устройства
• 4: B-канал квадратурного кодирующего устройства
• 5: Опорный сигнал, активный высокий
• 6: + 5 В постоянного тока
• 7: Возврат для питания + 5 В постоянного тока
• 8: Подключается к корпусу, если на следующие контакты подается ток двигателя
• 9: Подключен к J2-1
• 10: Подключен к J2-2
• 11: Подключен к J2-2

Назначение вывода J2:
• 1: Подключен к J1-9
• 2: Подключен к J1-10
• 3: Подключен к J1-11

Пытаясь его проверить собрал следующую схему.


Написал следующий код

int PinA = 12;
int PinB = 2;
int val = 0;
int val2 = 0;

void setup(void) {
 Serial.begin(9600);
 pinMode(PinA, INPUT_PULLUP);
 pinMode(PinB, INPUT_PULLUP);
}

void loop(void) {
 val = digitalRead(PinA); 
 val2 = digitalRead(PinB); 
 
 Serial.print("A value: ");
 Serial.print(val);
 
Serial.print("\tB value: ");
 Serial.println(val2);
}

Получаю следующий результат


Канал B реагирует на на изменения и меняет 1 на 0 при касании лазера. Канал А не реагирует ни на что, постоянно висит 0. Я думаю может в схеме подключения где то накосячил. У когото есть идею почему канал А не работает ?. И еще что за 5 канал написано что это опорный канал, как бы я его не подключал к + и к -, он ни начто не влияет.

Именно.


Вот последняя схема подключения. Подключал к 12 пину. Все равно результат тот же.

А что на выходах девайса видно осциллографом относительно GND?
Что показывает двухканальный на A+ A-
Если нет осциллографа очень помогает это.

А документация к нему есть? Какой-нить мануал? Даташит?

1 лайк

Нашёл только чертёж.

Осциллографа нету(

Вот есть сайт производителя

На зарубежном форуме мне подсказали что, выходы представляют собой дифференциальные квадратурные выходы TTL и копать следует сюда. но я хз что это значит.

А зачем ты подключил к минусу выводы A̲ ̲ и B̲ ?
это не питание, это инверсные выходы.

Вот картинка с китайского сайта коробочки которая преобразует дифференциальные квадратурные выходы TTL в удобоваримый сигнал. Получаются два сигнала как из обычного энкодера.

Или здесь посмотри.
https://cnc360.ru/blog/spravochnik/dekoder-kvadraturnyh-signalov-lir-964/#

1 лайк

Теперь яподключил их на вход тоже.

int PinA1 = 12;
int PinB1 = 2;
int PinA2 = 13;
int PinB2 = 4;
int val = 0;
int val2 = 0;
int val01 = 0;
int val02 = 0;

void setup(void) {
 Serial.begin(9600);
 pinMode(PinA1, INPUT_PULLUP);
 pinMode(PinB1, INPUT_PULLUP);
 pinMode(PinA2, INPUT_PULLUP);
 pinMode(PinB2, INPUT_PULLUP);
}

void loop(void) {
 val = digitalRead(PinA1); 
 val2 = digitalRead(PinB1); 
 val01 = digitalRead(PinA2); 
 val02 = digitalRead(PinB2); 
 
 Serial.print("A1 value: ");
 Serial.print(val);

Serial.print("\tA2 value: ");
 Serial.print(val01);
 
 Serial.print("\tB1 value: ");
 Serial.print(val2);

Serial.print("\tB2 value: ");
 Serial.print(val02);

}

В итоге получил следующее


При прикосновении к лазеру значения В+ и В- изменяются, значения же А+ и А- постоянно равны 0.

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

Поздравляю, ты выжег канал А линейки.

Дифпара подключается вот так:


Обрати внимание на правую сторону рисунка, левая это то , что в самой линейке.
Оба сигнала, это выходы, просто один инверсирован относительно входного сигнала. А на другом конце ОУ приемника преобразует сигнал в обычный вид. Сделано так, для того, что бы не ловить помехи и наводки.
Как думаешь, что будет с микросхемой, если ее выход закоротить на землю ?

1 лайк

Придется, походу новый брать