CUSTOMELECTRONICS.RU
Информационно-учебный блог о разработке электроники
Эл. почта: info@customelectronics.ru

8ми канальный датчик линии для linefollow-робота

Соревнования между роботами, следующими по линии, проходят очень часто и выступают в них, в основном роботы, построенные на базе Lego Mindstorm. Мы решили разбавить их армию, нашим роботом и начали с изготовления хорошего датчика линии. В этой статье мы поделимся всем, чему научились сами в процессе изготовления датчика на восемь каналов..

Что такое датчик линии?

Беглое изучение существующих готовых решений показало, что большинство из них строятся на основе оптопары — светодиода с фототранзистором. Их разделяют на аналоговые и цифровые. Разница между заключается в том, что в аналоговых датчиках сигнал с фототранзистора передается прямо на выход датчика, а в цифровых он пропускается через компаратор и выдает уже логический ноль или единицу. С точки зрения простоты и скорости работы цифровой датчик лучше, но нам хотелось получить максимальную гибкость и дополнительные возможности по калибровке показаний. Мы решили делать аналоговый.

Схема датчика

В ней восемь одинаковых каналов, в каждом из которых по светодиоду и фототранзистору:

Схема датчика

Схема датчика

Все схемы включения классические. Когда свет от светодиода попадает на фототранзистор (сегмент на белом фоне) транзистор открывается и на соответствующем выходе низкое напряжение. Если транзистор не засвечен (сегмент на линии), то транзистор закрыт и на его выходе высокое напряжение. Потребляет схема не более 150мА при питающем напряжении 5В.
Стоит отдельно отметить выбор светодиодов и фототранзисторов. Мы выбрали инфракрасные светодиод L-34SF4C и фототранзистор SFH300-3/4. Работа в ИК-диапазоне позволяет значительно снизить паразитные засветки от внешних источников. Диаметр светодиода — 3мм, фототранзистора — 5мм. Они оба работают в инфракрасном диапазоне и имеют довольно узкую характеристику. Если будете выбирать другую пару, то обязательно проследите за соответствием длин волн. Например, наша пара имеет вот такие спектральные характеристики (светодиод SF4):

Спектральные характеристики оптопары

Слева — светодиод, справа — фототранзистор

Корпус и плата

Очень важно правильно расположить оптические элементы схемы. Обычно в соревнованиях использую линию шириной 15мм, поэтому мы выбрали расстояние между каналами 7мм. Фототранзистор и светодиод должны находиться под углом и разделены перегородкой для избежания паразитной засветки. Мы решили, что проще всего эти условия будет выполнить, если напечатать оправку на 3D-принтере.

Корпус датчика

Корпус датчика

Такой корпус однозначно обеспечивает правильную установку светодиодов. Его размеры получились 20х18х75.
Плата тоже учитывает все эти размеры. Ее разъем выполнен так, чтобы удобно было припаять обычный шлейф на десять проводов. Плюсы светодиодов и коллекторы транзисторов слева!

Печатная плата датчика

Печатная плата датчика

Сборка датчика

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

Распечатанный корпус датчика

Распечатанный корпус датчика

Чтобы упростить сборку датчика, проще сначала распаять все резисторы, а затем просто расставить светодиоды и фототранзисторы. После этого нужно поставить сверху корпус датчика и соединить их винтами. Если использовать квадратные гайки, то даже не придется их придерживать. Далее мы просто через щель в верней части поплотнее вдавили оптические приборы и запаяли их. Шлейф мы прикрепили к язычку на корпусе изолентой.
Очень важно не ошибиться с правильностью установки полупроводников. Сверьтесь с документацией несколько раз, прежде чем запаивать их! Будет очень обидно, если хотя-бы один канал окажется не рабочим.
Выглядит собранный датчик вот так:

Датчик линии, вид сверху

Датчик линии, вид сверху

Датчик линии, вид снизу

Датчик линии, вид снизу

Работа датчика линии

Для проверки работоспособности датчика мы подключили его к нашей плате EduBoard и контролировали состояние каналов при помощи TutorShield’а. К сожалению, у этой платы только шесть каналов АЦП, поэтому прямо к ней все каналы подключить не получится.
Для проверки мы написали простенькую программу для Arduino:

int val;

void setup() {
    //Serial.begin(9600);
    for (int i=2; i<8; i++) {
        pinMode(i,OUTPUT);
    }
}

void loop() {
    for (int i=2; i<8; i++) {
        val = analogRead(i+12);
        //Serial.print(i-2);
        //Serial.print("-pin = ");
        //Serial.println(val);
        if(val > 150) digitalWrite(i,LOW);
        else digitalWrite(i,HIGH);
    }
    //delay(1000);
}

Программа в цикле опрашивает состояние каналов АЦП и если полученное значение больше 150ти, то она гасит соответствующий светодиод на шилде. Происходит это, когда светодиод попадает на черную линию. В противном случае светодиод зажигается. Вот как это выглядит на видео:

Если расскомментировать куски кода, то можно будет через терминальную программу контролировать состояние выходов датчика. Когда датчик попадает на черный фон, то 10ти битный АЦП возвращает значение 20-30. При попадании его на линию число увеличивается до 300-600. То есть различить эти два состояния очень легко.

Материалы к статье

Будем рады, если вы захотите повторить нашу конструкцию и выкладываем все файлы проекта:

  1. Печатная плата в формате Sprint-Layout
  2. stl-файл для печати корпуса на 3D-принтере
  3. Модель корпуса, выполненная в SketchUp, на случай если вы захотите внести в ней изменения

Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.

Метки: , , , , , Просмотров: 6810