0

Подключение дальномера GP2Y0A710K0F к Raspberry pi

Эта статья про инфракрасный дальномер GP2Y0A710K0F с рабочей дальностью от 100 до 550 см. Дальномер аналоговый. Для считывания его данных можно использоваться вольтметр. Умножая вольты на специальную величину, можно получить измеряемое расстояние.  Для подключения GP2Y0A710K0F к Raspberry pi понадобится АЦП. Я использовал АЦП ADS1115.

Характеристики дальномера GP2Y0A710K0F

  • Напряжение: 5в (+/- 0.5)
  • Дистанция: 100-550см
  • Ток потребления: 0,03А (на практике 0.021А)
  • Размер : 58×17.6×22.5 мм
  • Цена: $13 на aliexpress

Принцип действия

Для определения расстояния GP2Y0A710K0F использует принцип триангуляции. При измерении, инфракрасный свет образует треугольник. Дальномер состоит из двух линз. Первая линза — это источник инфракрасного света. В ней стоит специальный светодиод. Он испускает тонкий луч под прямым углом. Вторая линза — это приемник. Свет отражается от препятствия и улавливается чувствительной поверхностью приемника. Главная задача приемника — определить угол, под которым вернулся луч инфракрасного света.

Принцип действия дальномера

Энергопотребление дальномера GP2Y0A710K0F

На фото видна линза, из которой выходит инфракрасный свет. Вторая линза — приемник.

Дальномер находит дистанцию по формуле для прямоугольного треугольника D = A * tg(α). Мы знаем нижний катет A (расстояние между линзами дальномера) и примыкающий к нему угол α. Эти расчеты происходят внутри дальномера. Наружу мы получаем напряжение, которое зависит от измеряемой дистанции.

В даташите этого дальномера есть график зависимости дистанции от выходного напряжения. Он почти линейный.

Зависимость напряжения от дистанции

Зная параметры этой линии вычисляем формулу перевода вольт в сантиметры

Дистанция = 137.5 /(Напряжение — 1.125)

Подключение дальномера GP2Y0A710K0F к вольтметруНа фото выше дальномер лежал у меня на столе и измерял расстояние от стола до потолка. Вольтметр показывал 1.9в. Переводим вольты в сантиметре по формуле выше 137.5 /(1.9 — 1.125) = 177.4см. Данные аналоговых датчиков можно считывать вольтметром. Это удобно для отладки.

Подключение дальномера GP2Y0A710K0F к Raspberry pi

Для подключения дальномера к Raspberry pi необходим АЦП (что-то вроде вольтметра). Я буду использовать ADS1115. О нем я уже писал в этой статье.  GP2Y0A710K0F имеет 5 пинов. Если положить дальномер маркировкой вверх, то контакты нумеруются с конца.

5 GND (-5в)

4 Vout (выходной сигнал)

3 Vcc (+5в)

2 Vcc (+5в)

1 GND (-5в)

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

GP2Y0A710K0F контакты дальномера

Вот примерная схема подключения. На картинке ниже использован вариант с внешним источником питания. Дальномер также можно подключить и выходу 5в в Raspberry, но не желательно. Диаграмму можно скачать тут GP2Y0A710K0F-ADS1115-RaspberryPi.fzz.zip

Диаграмма подключения GP2Y0A710K0F к Raspberry pi с помощью АЦП ADS1115

Конденсатор 220μF 16vДля стабилизации показаний дальномера рекомендуют впаять конденсатор емкость от 10μF между плюсом и минусом источника питания дальномера (для обоих контактов).  Емкость конденсатора подбирается опытным путем.

Запускать пример я буду на платформе Johnny-five на javascript. Немного расширим пример из статьи про подключение ADS1115. Добавим функцию перевода напряжения в сантиметры. Чтобы код заработал, на вашей плате должен быть установлен Node.js и 2 библиотеки.

npm i raspi-io johnny-five
const Raspi = require('raspi-io');
const five = require('johnny-five');
const board = new five.Board({
  io: new Raspi()
});

const pga = 6114; //берем из таблицы  

board.on('ready', function() {
  const virtual = new five.Board.Virtual(new five.Expander({ controller: 'ADS1115' }));
  // virtual.io.REGISTER.PIN[0]= 0b11000001; // первый байт конфига 
  virtual.io.REGISTER.PIN_DATA = 0b10100011; // второй байт конфига

  const sensor = new five.Sensor({
    pin: 0,
    board: virtual,
    freq: 250
  });

  sensor.on('data', function() {
    const volts = this.value * pga / 32768;
    console.log(getDistanceFromVoltage(volts / 1000), 'sm');
  });
});

function getDistanceFromVoltage(volts) {
  return 137.5 / (volts - 1.125); //только для GP2Y0A710K0F
}

Выбор дальномера для марсохода

Всего у меня три дальномера:

  • инфракрасный GP2Y0A710K0F (100-500см)
  • ультразвуковой HC-SR04 (2-400см)
  • лазерный VL53L0X ( до 200см)

Дальномеры

Дальномер GP2Y0A710K0F я выбрал из-за его дальности 100-500см. Это довольно хороший бюджетный прибор. Однако не могу сказать, что он очень точный на расстояниях больше 300см. Выходной сигнал очень зашумлен. Без фильтра Калмана с его значениями работать сложно.

Вот так этот дальномер выглядит на марсоходе.

GPДальномер 2Y0A710K0F на марсоходе

В ночном режиме виден пучок инфракрасного света в центре экрана. Эту точку видно только на камере без инфракрасного фильтра.

Вцелом дальномер GP2Y0A710K0F неплохой. Его главные достоинства, это простота в использовании и сравнительно небольшая цена. К минусам я бы отнес большую зашумленность выходного сигнала на измерениях больше 300см.

Михаил Костин

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.