Собираем персональный радар малого радиуса действия
Идея создания некоего подобия радара для определения расстояния пришла одному из моих студентов. Мы продолжили ее разработку и решили ввести в программу курса в качестве одного из проектов.
После пары недель подготовки мы, наконец, определились, как его начинать и что для этого может понадобиться. Проект не должен был быть очень продвинутым; мы установили средний уровень сложности. Ниже представлен пример использования персонального радара узкого диапазона. Он и должен был выглядеть немного смешно, так что можете смеяться!
Описание и цель проекта
Целью проекта было создание функционирующего радара. От системы требуется лишь измерять расстояние под углом в 90 градусов, как показано в примере выше. В зависимости от выбранного сенсора, система функционирует в пределах 4-30 см, 20-150 см и 1-5,5 м.
Результаты проекта повлияют на последующие разработки, в которых мы попытаемся интегрировать радар для навигации мобильных роботов в естественных условиях.
Электронные детали
- Стабилизатор напряжения LM7805 5 В
- Микроконтроллер PIC18F452
- ИК Сенсор GP2D120
- Кварцевый резонатор на 4 или 8 MHz
- Переключатель
- Конденсатор
- 30-тиконтактный разъем
- 5 триггеров 74LS373
- Макетная плата
- Припой
- 36 индикаторов
- Провод 30 AWG
- Инструменты для работы с проводами
- Паяльник
Подробный список запчастей
Вы можете знать, а можете и не знать всего относительно вышеперечисленных деталей, поэтому, чтобы помочь разобраться в них, было включено изображение каждой детали. Появились три новых объекта, не указанных до этого в проекте: сервосистема, 74HCT373 и ИК сенсоры. Скоро появится описание и ИК датчиков; что касается 74HCT373 — ниже будет пред ставлен краткий обзор. Вы всегда можете свериться с спецификацией микросхем, просто задав поиск по запросу «74HCT373».
74HCT373
74HCT373
Восьмиразрядная микросхема, содержащая в себе трехстабильный триггер. Проще говоря, данный чип способен хранить 8 бит цифровой логики и удерживать в памяти до стирания или изменения ее посредством LE-Latch Enable вывода.
Принципы работы
- Управляющие выводы LE и OE
- 8 Ввод данных D0-D7
- 8 Вывод данных D0-D7
Питание (Vcc & GND.)
Активация вывода (ОЕ) позволяет Q0-Q7 выводить данные на данный момент находящиеся в D-триггерах.
Активация триггера (LE) позволяет перезапись данных, содержащихся на D0-D7, в D- триггер.
Обзор схемы
Схема для данного проекта намного сложнее предыдущих. В нашей разработке есть 4 основных преимущества.
- Мы сможем программировать изображения с разрабатываемой платы.
- Мы будем контролировать сервосистему.
- Мы будем снимать данные с ИК сенсора расстояния.
- Мы установим 36 LEВ индикаторов для отображения вывода данных, полученных с ИК сенсора.
- Питание осуществляется через аккумулятор на 9В, подключенный к LM7805 с конденсатором 1uF, подключенным к выводу/заземлению для обеспечения бесперебойного постоянного тока LM7805.
- Программный цикл
- Программирование осуществляется посредством подсоединения двух разъемов от контроллера к программатору, предоставляя первому разъему программатора доступ к MCLR*/Vpp-Pin1 на контроллере. В целях безопасности установлен выпрямительный диод.
- ИК Сенсор Расстояния
- ИК Сенсор использует один разъем контроллера PIN 2 — RA0. Используются аналоговые возможности этого вывода для получения значения АЦП, так как с ИК сенсора снимается только аналоговый сигнал. Данное значение сообщает, есть ли что-то в радиусе охвата сенсора.
В общей сложности еcть 40 LED индикаторов. Каждый чип 74HCT373 контролирует до 8 индикаторов; так как 40/8=5, нам нужно 5 схем 74HCT373, чтобы управлять всеми 40 индикаторами. Необходимо отметить на схеме, что для всех 5 чипов используется одна шина данных.
Данная разработка использует три основных прибора для создания персонального радара. ИК сенсор подключается к микроконтроллеру, и затем выводится на сегмент индикаторов. Предоставляется наглядная демонстрация этого процесса:
Использование разных сенсоров
Важным аспектом в точности ИК сенсоров, используемым в данном проекте является то, что они имеют одинаковые характеристики напряжения, поэтому данная программа совместима со всеми индикаторами. Единственное, что необходимо знать, — как используется сенсор для определения расстояния, выводимого на индикаторах.
Итак, взглянем на окончательный вид прибора:
Таков внешний вид собранного прибора. Перейдем к следующему разделу и продолжим сборку прибора.
Пластиковый корпус внизу на картинке не упоминался в списке запчастей. Это обычный корпус, который можно приобрести у любого производителя или продавца электроники. В первую очередь необходимо просверлить 36 отверстий для индикаторов в схеме и закрепить в них индикаторы. Перед вставкой индикаторов в отверстия было использовано закрепляющее вещество.
После того, как панель спаяна, начинаем подключение схемы. Каждый проводок нужно подключить сквозь маленькое отверстие корпуса.
Рисунок выше отображает вид панели на ранней стадии. В начале подключения проводов наблюдается скопление огромного их количества, например, вот так:
Последним штрихом в разработке персонального радара является возможность его использования он-лайн. Используются провода длиной 2-4-метра при подключении сервосистему и ИК сенсор. Проделываем отверстие спереди корпуса для данных проводов:
Последним штрихом в разработке персонального радара является возможность его использования он-лайн. Используются провода длиной 2-4-метра при подключении сервосистему и ИК сенсор. Проделываем отверстие спереди корпуса для данных проводов:
Покончив со сборкой перейдем к программной части разработок. Это, безусловано, более тонкая часть разработки, чем даже прокладывание проводов.
Программное обеспечение для данного прибора включает три основных части:
- Управление Сервосистемой
- Управление LED-индикацией
- ввод A/D/
Поскольку все программное обеспечение данного проекта не поместится на одной странице, будет объяснено, что это за части и как они работают.
Управление Сервосистемой
Управление сервосистемой осуществляется таймерами и прерываниями. Двумя отдельными прерываниями, срабатывающими одновременно для создания желаемого звука, генерируется сигнал в 50 Ггц, и указатель сервосистемы двигается маленькими шагами регулируя скрипящий звук.
Регулирование LED индикации.
Индикаторы регулируются триггерами 74LS373/74HCT373. Система постоянно обновляет данные триггера, выводимые на индикаторы.
А/Ц Ввод
ИК сенсор осуществляет аналоговый вывод. Используется конвертор для определения значения напряжения, сообщающий, что объект вышел на расстояние вне зоны действия ИК сенсора.
Завершена сборка и настройка прибора — нужно протестировать его. В заисимости от используемого вами сенсора, индикация будет разная. Сенсоры на выбор GP2D120, GP2Y0A21YK и GP2Y0A700K0F.
Данные и наблюдения
Первым тестом радара будет тест на близком расстоянии. В качестве препятствий были использованы консервные банки.
На втором видео (на первой страничке) тестируются индикаторы 20 см — 150 см и 1 м — 5.5 м, позволяющие преодолевать более серьезные препятствия. Посмотрите, чтобы понять, о чем идет речь.
Два видеоролика продемонстрируют работу сенсора, однако при самостоятельной сборке возможны небольшие затруднения, которые будут описаны в заключении.
Обзор персонального радара
Сборка и настройка данного прибора занимает немного времени. Это проект, который вы сможете за день, и он уже имеет нишу в применении, но с течением времени будут возникать дополнительные трудности. ИК сенсоры могут становиться ненадежными, результаты вывода могут быть малыми из-за влияния среды и окружения.
Действия, которые нужно предпринять
Для увеличения радиуса охвата сенсора планируется использование ультразвуковых датчиков, эквивалентных описанным выше «звуковым сенсорам», передавая данные о расстоянии от вас до объекта. Диапазон ультразвука шире чем у инфракрасного излучения, и он более надежен в неблагоприятных условиях.
Заключение
Проект был увлекательным изучением сенсоров ИК излучения. Он демонстрирует, что результаты могут быть получены и использованы реально. Многие дальнейшие проекты могут быть разработаны на базе этого.
Источник
Самодельный радар с монитором на Ардуино
Не знаю кто как, но я давно хотел сделать радар, такой чтоб туда-сюда излучатель крутился и на экране видно было наличие и дистанцию до объектов. Конечно в домашних условиях вещь, подобную военным или авиа службам сделать не получится — там и мощности, и размеры недосягаемые. Но что-то похожее, причём совсем не сложное и не дорогое (пару тысяч рублей) соорудить возможно. Итак, на основе популярного Ардуино вы можете сделать такую себе мини РЛС с помощью ультразвукового детектора и собственно платы Arduino. Схема подсмотрена на сайте «Мехатроник». Все, что нужно для этого проекта: ультразвуковой датчик для обнаружения объектов, маленький серводвигатель для поворота датчика и плата Arduino для управления ими. Ну и макетка с проводами.
Сначала сделаем крепление для подключения ультразвукового датчика к серводвигателю. Изготавливаем его, как это показано на рисунке ниже, потом он приклеивается и крепится к двигателю с помощью винта.
Теперь прикрепите штырьки, на которые припаяем 4 провода для подключения датчика.
Прикрепите мотор сервопривода к плате Arduino, используя обычную резинку для волос.
Мы подключили ультразвуковой датчик HC-sr04 к выводам 10 и 11, а серводвигатель к 12 контакту на плате Arduino.
Исходный код
Теперь нужно взять код и загрузить его на плату Ардуино, которая позволит взаимодействовать между Arduino и обработкой сигнала. Здесь будем получать значения для угла и расстояние, измеренное с помощью датчика с платы Arduino на обработку IDE с помощью функции SerialEvent(), которая считывает данные из последовательного порта, и будем ставить значения угла и расстояния в переменные iAngle и iDistance. Эти переменные будут использоваться для построения линии обнаружения объектов.
void drawRadar() <
pushMatrix();
translate(960,1000); // moves the starting coordinats to new location
noFill();
strokeWeight(2);
stroke(98,245,31);
// draws the arc lines
arc(0,0,1800,1800,PI,TWO_PI);
arc(0,0,1400,1400,PI,TWO_PI);
arc(0,0,1000,1000,PI,TWO_PI);
arc(0,0,600,600,PI,TWO_PI);
// draws the angle lines
line(-960,0,960,0);
line(0,0,-960*cos(radians(30)),-960*sin(radians(30)));
line(0,0,-960*cos(radians(60)),-960*sin(radians(60)));
line(0,0,-960*cos(radians(90)),-960*sin(radians(90)));
line(0,0,-960*cos(radians(120)),-960*sin(radians(120)));
line(0,0,-960*cos(radians(150)),-960*sin(radians(150)));
line(-960*cos(radians(30)),0,960,0);
popMatrix();
>
Для рисования линии, которая движется вдоль радара, сделана функция drawLine(). Переменная iAngle используется как линия, что перерисовывается для каждой ступени.
void drawLine() <
pushMatrix();
strokeWeight(9);
stroke(30,250,60);
translate(960,1000); // moves the starting coordinats to new location
line(0,0,950*cos(radians(iAngle)),-950*sin(radians(iAngle))); // draws the line according to the angle
popMatrix();
>
Для прорисовывания обнаруженных объектов служит функция drawObject(). Она получает расстояние от ультразвукового датчика, преобразует его в пикселах, и в сочетании с углом датчика рисует объект на радаре — экране ЖК монитора.
void drawObject() <
pushMatrix();
translate(960,1000); // moves the starting coordinats to new location
strokeWeight(9);
stroke(255,10,10); // red color
pixsDistance = iDistance*22.5; // covers the distance from the sensor from cm to pixels
// limiting the range to 40 cms
if(iDistance
|