Закрыть ... [X]

Датчик расстояния своими руками

Во время моего последнего визита к родителям, у меня возникли трудности парковки автомобиля (большой пикап) в их гараже. И у меня возникла идея сделать простенький стационарный парктроник для гаража. Я использовал контроллер Arduino Duemilanove и ультразвуковой датчик расстояния (Sonar Range Finder).

Материал:

Для того, чтобы сделать парктроник своими руками нам понадобится:

  • Контроллер Arduino (я использовал Duemilanove)
  • Ultrasonic Range Finder
  • Провода
  • Пластиковый бокс
  • 9В источник питания
  • Трехцветный светодиод
  • Клей
  • Макетная плата

Комплектующие

Сборка парктроника

1. Приклейте плату Arduino ко дну ящика при помощи клея или силикона и подведите питание к контроллеру.

Монтаж контроллера в бокс

2. Присоедините питание ультразвукового датчика 5В.

Питание УЗ датчикадатчик расстояния своими руками src="http://cxem.net/arduino/arduino13-3.jpg">

3. Подключите выход ультразвукового датчика "SIG" к выводу ШИМ Arduino (это нужно для того, чтобы мы могли слать импульсы в датчик, а потом считывать их возврат). Я использовал вывод 7 контроллера.

4. Перед подключением трехцветного светодиода, определите какие ноги за какой цвет отвечают. Красный, зеленый и синий я подсоединил соответственно к 11, 12 и 13 выводу Arduino.

Подключение светодиода

5. Теперь осталось дело за программой. После тестирования ПО, если все нормально работает, то закрепите датчик на стене вашего гаража, а светодиод выведите в удобное для вас место.

Программа

К счастью, софт Arduino уже содержит пример для работы с ультразвуковым датчиком. Пример этот находится: File -> Examples -> Sensors -> Ping example. Откройте этот пример и скопируйте весь код в новый проект. Назовите его как-нибудь (к примеру Parking Example) и сохраните.

Внесем некоторые изменения в программу. Для начала мы увеличим интервал посылок к датчику, т.к. нам не нужно посылать сигнал каждые 100 мс, достаточно и 1 секунды.

delay(1000);

Далее, мы должны установить номера выводов для светодиода. Для этого перед строкой

const int pingPin = 7;

добавьте:

pinMode(13, OUTPUT); // синий pinMode(12, OUTPUT); // зеленый pinMode(11, OUTPUT); // красный

Теперь мы должны определиться, при каком расстоянии, какие цвета светодиода будут показываться. К примеру я сделал так: дальше чем 60 см от стены горит зеленый цвет, когда остается меньше 60 см, загорается синий цвет, а когда до стены остается менее 15 см загорается красный цвет.

Наш код с учетом вышеприведенных вычислений будет таким:

cm = microsecondsToCentimeters(duration); // show LED colors if(cm > 0 && cm <= 15) { // горит красный цвет digitalWrite(13, LOW); digitalWrite(12, LOW); digitalWrite(11, HIGH); } else if(cm <= 60 && cm > 15) { // горит голубой digitalWrite(12, LOW); digitalWrite(11, LOW); digitalWrite(13, HIGH); } else { // горит зеленый цвет digitalWrite(13, LOW); digitalWrite(11, LOW); digitalWrite(12, HIGH); }

Вышеприведенный код управляет выходами Arduino для индикации определенного цвета светодиода, в зависимости от дистанции до препятствия (в данном случае автомобиль), которую определил ультразвуковой датчик. Наш конечный код будет выглядеть следующим образом:

/ Ping))) Sensor Схема: +V выход датчика подсоединяется к +5V GND выход датчика подсоединяется к земле SIG выход датчика подсоединяется к цифровому выводу 7 http://www.arduino.cc/en/Tutorial/Ping created 3 Nov 2008 by David A. Mellis modified 30 Jun 2009 by Tom Igoe This example code is in the public domain. / pinMode(13, OUTPUT); // синий pinMode(12, OUTPUT); // зеленый pinMode(11, OUTPUT); // красный const int pingPin = 7; void setup() { Serial.begin(9600); } void loop() { long duration, cm; // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); // The same pin is used to read the signal from the PING))): a HIGH // pulse whose duration is the time (in microseconds) from the sending // of the ping to the reception of its echo off of an object. pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // конвертируем время в расстояние cm = microsecondsToCentimeters(duration); // показ определенного цвета, в зависимости от расстояния if(cm > 0 && cm <= 15) { // горит красный цвет digitalWrite(13, LOW); digitalWrite(12, LOW); digitalWrite(11, HIGH); } else if(cm <= 60 && cm > 15) { // горит голубой digitalWrite(12, LOW); digitalWrite(11, LOW); digitalWrite(13, HIGH); } else { // горит зеленый цвет digitalWrite(13, LOW); digitalWrite(11, LOW); digitalWrite(12, HIGH); Serial.print(cm); Serial.print("cm"); Serial.println(); delay(1000); } long microsecondsToCentimeters(long microseconds) { // Скорость звука 340 м/с или 29 мкс на сантиметр. // Во время измерения расстояния волна проходит туда и обратно, // поэтому нужно еще поделить пополам полученное значение от датчика return microseconds / 29 / 2; }

Фото готового парктроника

Оригинал статьи

Теги:


Источник: http://cxem.net/arduino/arduino13.php

Поделись с друзьями



Рекомендуем посмотреть ещё:



Как сделать самодельный дальномер своими руками - простой прибор Утолщенные ногти на ногах у пожилых людей

Датчик расстояния своими руками Ультразвуковой датчик расстояния своими руками - ЭЛЕКТРОННЫЕ
Датчик расстояния своими руками Ультразвуковой датчик расстояния своими руками
Датчик расстояния своими руками Инфракрасный датчик расстояния своими руками
Датчик расстояния своими руками Датчик расстояния своими руками
Датчик расстояния своими руками Второй брак и дети от первого брака
Как вырвать зуб в домашних условиях, рекомендации о том Как подобрать стрижку? ПарикмахерКолористДмитрий Как сшить мягкие буквы, мастер-класс / How to sew fabric Конкурс стихов «ЗОЛОТОЕ ПЕРО » Конкурсы Стихов «ПОЭТИКА » ВКонтакте Насекомые: к чему снятся, много, большие Ответы Подскажите поздравление родителям (маме ) с первой Пинетки крючком и спицами для новорожденных схемы вязания и описания

ШОКИРУЮЩИЕ НОВОСТИ