ИК-радар

maksim
Offline
Зарегистрирован: 12.02.2012

На самом деле этот маленький проект является частью большого проекта, который еще не закончен. Основные элементы это - ИК-дальномер SHARP 2Y0A02, который собственно говоря и измеряет расстояния до объектов , мотор-редуктор Gekko MR12-100, который вращает ИК-дальномер, "скользящик контакт" и ИК-датчик определяющий точку отсчета. Принцип действия я думаю всем понятен и без объяснения.

Вот видео www.youtube.com/watch

Схема:


 

Код:

// Дуина
uint32_t millisold, sens1 = 0;
uint16_t sens = 0;
volatile uint16_t angle = 0;
uint8_t distant[150];

void setup() {
  Serial.begin(115200);
  digitalWrite(2, HIGH);
  attachInterrupt(0, circle, RISING);
}

void loop() {
  if(millis()-millisold > 5){
    sens = 14145/(analogRead(A0)+7);
    if(sens > 255){
      sens = 255;
    }
    distant[angle] = sens;
    angle++;
    if(angle > 149){
      angle = 149;
    }
    millisold = millis();
    if(angle < 149){
      Serial.println(distant[angle], BYTE);
    }
  }
}

void circle() {
  Serial.println(0, BYTE);
  angle = 0; 
}

/* 
// Процессинг
import processing.serial.*;
 
 Serial myPort; 
 int distant = 0;      
 float x, y, speed;
 float angle = 0.0;
 
 void setup() {
 size(550, 550);
 String portName = Serial.list()[2];
 myPort = new Serial(this, portName, 115200);
 smooth();
 x = width/2;
 y = height/2;
 speed = 0.0141;
 background(100);
 fill(100);
 ellipse(width/2, height/2, 520, 520);
 }
 
 void draw() {  
 stroke(80);
 line(width/2, height/2, 275, 535);
 while(myPort.available () > 0) {
 distant = myPort.read();
 if (distant == 0) {
 angle = 1.52;
 }       
 pushMatrix();
 translate(x, y);
 rotate(angle);
 stroke(100);
 fill(100);
 triangle(0, 0, 257, 9, 257, 13);
 stroke(255);
 fill(255);
 triangle(0, 0, distant, 0, distant, distant/15); 
 popMatrix();
 angle += speed;
 }
 }
 */

 Фото:

"Arduino 2012"

leshak
Offline
Зарегистрирован: 29.09.2011

 Футуристично выглядит :)  Даже агрессивно. 

А можно чуть подробней про "скользящий контакт". Как вы его делали? Или из чего-то готового взяли?

Просто много где он может пригодится.

Zaliv
Offline
Зарегистрирован: 05.03.2011

  Тоже интересно про скользящий контакт. А вывод графики - это processing?

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

Делал сам из кусоча текстолита, а сами контакты взял из потенциометра.

Тут доржки смазаны литолом:

С близкого растояния, конечно не очень выглядит, ну и ладно, этой чати все равно не видно и самое главное, что работает нормально. 

leshak
Offline
Зарегистрирован: 29.09.2011

Спасибо за подробные фотки.

 >  а сами контакты взял из потенциометра.

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

 Еще раз спасибо.

А белый пластик, из которого шасси радара сделано, это часом не полиморфус (поликапролактон)?

maksim
Offline
Зарегистрирован: 12.02.2012

 Не знаю, вродебы обычное белое оргстекло.

maksim
Offline
Зарегистрирован: 12.02.2012

Zaliv пишет:

А вывод графики - это processing?

Да.

Mastino
Offline
Зарегистрирован: 03.12.2011

Здесь Тоже хорошая статья на эту тему:
http://luckylarry.co.uk/arduino-projects/arduino-processing-make-a-radar...

maksim
Offline
Зарегистрирован: 12.02.2012

Mastino пишет:

Здесь Тоже хорошая статья на эту тему:
http://luckylarry.co.uk/arduino-projects/arduino-processing-make-a-radar...

Этот радар очень медленный, он поворачивается на 180° за 30 секунд.

Russk1j
Offline
Зарегистрирован: 03.05.2012

Можно немного подробнее про скользящий контакт. У вас на фото вижу 2 контакта, припаяных к кусочку макетки, которые трутся о лист текстолита. А где 3ий? Всего же 3 на ИК датчике, или третий это сам штырек которые в редуктор входит?

maksim
Offline
Зарегистрирован: 12.02.2012

Все верно - ось редуктора это земля.

Russk1j
Offline
Зарегистрирован: 03.05.2012

Т.е. прошиваем ардуину кодом "//Дуина"

А код "//Процессинг" компилируем и Tools>Serial Monitor. Будет выводить в виде диаграммы?

У меня просто не компилирует. Ругается на строчку 

import processing.serial.*;

'Import' does not name a type

Версия arduino-0021.

И в видео на диаграмме видны изменения. Это при помещении предметов в плоскость видимости датчика, или это дребезг скользящего контакта?

maksim
Offline
Зарегистрирован: 12.02.2012

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

azzzazzzelDEAN
Offline
Зарегистрирован: 19.10.2013

А какой разброс(угол) у ИК-дальномера? ведь чем дальше припятствие тем меньше разрешающая способность датчика?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

А если лазером сканировать? Из CD-ROM лазеры ик, датчик тоже откалибровать и сфокусировать линзой на дальнее расстояние?