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

koteishna
Offline
Зарегистрирован: 18.02.2012

 Всем доброго вечера! Подскажите, пожалуйста, в чем причина: подключаю к Arduino Mega через IO Shild датчики SHARP GP2Y0A02YK0F (датчик расстояния) и ИК детектор SEN0018. Оба они выдают какие-то странные данные при запуске программы. Цифры, совершенно не зависящие друг от друга, не имеющие периодичности или цикличности. Правда, дальномер выдает через каждые 2 цифры 0. Это закодированные сигналы? Или неисправные датчики? И Что делать? их 4 штуки таких!

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

koteishna пишет:

 Всем доброго вечера! Подскажите, пожалуйста, в чем причина: подключаю к Arduino Mega через IO Shild датчики SHARP GP2Y0A02YK0F (датчик расстояния) и ИК детектор SEN0018. Оба они выдают какие-то странные данные при запуске программы. Цифры, совершенно не зависящие друг от друга, не имеющие периодичности или цикличности. Правда, дальномер выдает через каждые 2 цифры 0. Это закодированные сигналы? Или неисправные датчики? И Что делать? их 4 штуки таких!

Как подключен SHARP GP2Y0A02YK0F? Какой код пользуете?

ИК детектор SEN0018 - выдает HIGH когда что то движется.

 

koteishna
Offline
Зарегистрирован: 18.02.2012

 SHARP GP2Y0A02YK0F подключен через аналоговый вход. напрямую к шилду. код из библиотеки среды разработки Arduino. Номера входов не путаю! Перепроверила на 100 раз.

Код:

#include <Servo.h>

//Define Pins
int servoPin = 9;
int distPin = 0;

//Create Servo Object
Servo jeremysServo;

void setup()
{

//Attaches the Servo to our object
jeremysServo.attach(servoPin);
}

void loop()
{
//Read the Distance Sensor and adjust values
int dist = analogRead(distPin);
int pos = map(dist, 0, 1023, 0, 180);

//Turn the servo
jeremysServo.write(pos);

}

koteishna
Offline
Зарегистрирован: 18.02.2012

 ИК детектор выдает 0 и 1, но данных, которые он выдает при работе нет никакого порядка! То есть не выдает строго1  когда что-то видит и 0 - когда не видит

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

ИК детектор выдает 1 и еще какое то время после того как то что двигалось, уже не двигается..:) Напишите какой код используете для ИК детекторa. SHARP попробуйте с этим кодом:

char GP2D12;
char a,b;
int val;
int tmp;

void setup() {
  Serial.begin(9600);
}

void loop() {
 GP2D12=read_gp2d12_range(0);
  a=GP2D12/10;
  b=GP2D12%10;
  val=a*10+b;
 Serial.print(a,DEC);
 Serial.print(b,DEC);
 Serial.println("cm");

}
float read_gp2d12_range(byte pin)
{
  
  tmp = analogRead(pin);
  if (tmp < 3)return -1;
  return (6787.0 /((float)tmp - 3.0)) - 4.0;
}

 

koteishna
Offline
Зарегистрирован: 18.02.2012

 спасибо, сейчас попробую потестить

koteishna
Offline
Зарегистрирован: 18.02.2012

выдает нечто странное... 

 

76cm
42cm
0-1cm
91cm
42cm
0-1cm
113cm
43cm
0-1cm
65cm
42cm
0-1cm
76cm
43cm
0-1cm
90cm
41cm
0-1cm
109cm
43cm
0-1cm
64cm
43cm
0-1cm
74cm
42cm
0-1cm
88cm
42cm
0-1cm
107cm
43cm
 

koteishna
Offline
Зарегистрирован: 18.02.2012

 по идее - то же..

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Эх , время идет а ничего не меняется.

Почти уверен что нет подтяжек. Отсюда и бредовые показания .

И если датчик движения цифровой (хрен его знает как сним общаться) , то Шарп точно аналоговый , показания с него можно считывать вольтметром. 

koteishna
Offline
Зарегистрирован: 18.02.2012

нашла еще вариант кода: 

int _measure()
{
int val=0, tmp;
for (byte i = 0 ; i < 5 ; ++i) {
val += analogRead(sensorPin);
delay(24);
}
return val/1024.0;
}

void loop() {
float val =_measure();
}

выдает:

0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00

koteishna
Offline
Зарегистрирован: 18.02.2012

 хорошо, попробую к земле притянуть, так и быть. и вольтметром пометять напряжение. завтра отпишусь. сомневаюсь вообще, что датчик исправен...

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Сомневаюсь что оба датчика неисправны. 

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Ваш IO Shild не имеет подтяжек.
Какой работы вы отнего требуете при таком раскладе.

При подключении кнопок и датчиков всегда ставьте подтяжки. 

koteishna
Offline
Зарегистрирован: 18.02.2012

дальномер один. я вопрос изначально неверно постаавила, прошу прощения. у меня 1 дальномер и 3 ИК. ИК вроде как я сейчас посмотреела работают нормально. просто я забыла про задерхжку в 2 секунды и место не совсем правильное выбирала. жаль, до вольтметра тока завтра доберусь.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>жаль, до вольтметра тока завтра доберусь.<< 

Доберитесь , хотябы , до резистора 4.7 - 20КОм и паяльника.

Показания с шарпа  можно читать просто функцией analogRead.

Все примеры программ и библиотеки это преобразование в сантиметры , ну и кое какая фильтрация помех.

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

когда показания 0-1 значит объект дальше чем видеть SHARP..
Как понимаю в наши ряды присоединилась девушка?:)
Или это гастарбайтер который еще писать правильно не научился?:)

koteishna
Offline
Зарегистрирован: 18.02.2012

 ))я не гастарбайтер!!)

но тогда почему числа парами?

0-1cm - и если объект дальше, чем видит sharp, как тогда вообще он его определяет?..
107cm
43cm

это что значит?

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Подтяжка установлена ?

Что показывает чтение аналогового порта ? 

>>Как понимаю в наши ряды присоединилась девушка?<<
 

Скорее проездом.

Тех.задание выполнит и забудет это как страшный сон.

Хотя ...

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>и если объект дальше, чем видит sharp, как тогда вообще он его определяет<< 

Он его и не определяет.

Просто дальномер должен же как то показывать что в зоне детекции нет отраженного сигнала.

koteishna
Offline
Зарегистрирован: 18.02.2012

>>Подтяжка установлена ?

Что показывает чтение аналогового порта ? << 

у меня нет ни паяльника ни резистора сейчас) во втором часу ночи я навряд ли их достану где-то( придется на завтра отложить. 

может я слишком самоуверенная, но меня терзают смутные догадки, что подтяжка тут ни при чем. мне кажется, дальномер-неадекваша только из-за кода. попробоввала сейчас еще кое-что поменять - показаниия стали плавно нарастать/убывать)

>>Тех.задание выполнит и забудет это как страшный сон.<<

отличный сон. просыпаться не-хо-чу. 

koteishna
Offline
Зарегистрирован: 18.02.2012

 >>Просто дальномер должен же как то показывать что в зоне детекции нет отраженного сигнала.<<

тогда почему он падает в цикл с этим  отсутствием отраженногго сигнала - ровно через 2 считанных показаниия?

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>у меня нет ни паяльника ни резистора сейчас) во втором часу ночи я навряд ли их достану где-то( придется на завтра отложить. <<

Есть выход.

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

>>но меня терзают смутные сомнения, что подтяжка тут ни при чем<<

Так всех терзают такие сомнения. Валят все на программу , на железо , на китайцев и т.д .

Я стабильно , раз в месяц , обясняю новичкам что такое подтяжка и зачем она нужна.

 

>>отличный сон. просыпаться не-хо-чу<<

Это сарказм ?

 

 

 

koteishna
Offline
Зарегистрирован: 18.02.2012

 >>Это сарказм ?<<

не сарказм.

>>Включить внутреннюю подтяжку.<<

что это такое? и с чем его едят..

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

 >>что это такое? и с чем его едят..<<

arduino.ru/Tutorial/DigitalPins

Там есть про встроеные подтягивающие резисторы.

koteishna
Offline
Зарегистрирован: 18.02.2012

сделала. не меняется результат

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>а если серво вместо светодиода? не вытянет?<< 

Непонял.

Зачем ? 

Вытянет что ?

подтяжки включаются на портах ввода . На портах вывода они безсмыслены.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Покажите получившуюся программу. 

koteishna
Offline
Зарегистрирован: 18.02.2012

 даа-да да всё уже разобралась) вопрос был глуп как и его составительница)

void setup()
{
Serial.begin(9600);
pinMode(8,INPUT);
digitalWrite(8,HIGH);
}

void loop()
{
int volts = analogRead(8); // считываем значение сенсора
Serial.println(volts); // выдаём в порт
delay(100); // ждём
}

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

именно этот SHARP очень глючная вещь... Он показывает из 10 раз 7-8 правильно... А сколько лет нашей новой участницей?
Здесь на форуме традиция такая - о себе писать, фото выкладывать..:)

koteishna
Offline
Зарегистрирован: 18.02.2012

>>Здесь на форуме традиция такая - о себе писать, фото выкладывать..:)<< 

где традиция? куда писать?.. если сюда напишу - забанят еще!

>>именно этот SHARP очень глючная вещь...<<

а какой тогда не глючный? 

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

>>менно этот SHARP очень глючная вещь<< 

Может по тому что разные поверхности имеют разные отражающие свойства ?

Даже одни и теже под разными углами  имеют разны коэффициент отражения.

koteishna
Offline
Зарегистрирован: 18.02.2012

 >>Может по тому что разные поверхности имеют разные отражающие свойства ?<<

и это влияет на показания? так отчего всё-таки он чудит?

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Да кто ж его знает.

Попробуйте завтра поставить реальный резистор к земле.

Экспериментируйте , для начала , с белым листом бумаги. 

koteishna
Offline
Зарегистрирован: 18.02.2012

 хорошо. и вольтметром показания попробую посчитывать...спасибо за Ваши советы!

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

А каое освещение в помещении ?

Энергосберегайки могут давать завсветку.

По крайней мере TSOPы засвечиваются ими. 

koteishna
Offline
Зарегистрирован: 18.02.2012

пробовала при самом разном освещении...и естественное, и искусственное, и раритет на вольфрамовой пружинке (случайно вышло - в настольной лампе старинной такая осталась, а глаза устали от верхнего света) показания были одинаково-неадекватными.

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

koteishna пишет:

>>Здесь на форуме традиция такая - о себе писать, фото выкладывать..:)<< 

где традиция? куда писать?.. если сюда напишу - забанят еще!

>>именно этот SHARP очень глючная вещь...<<

а какой тогда не глючный? 

Традиция на этом форуме! Модератор форума очень приветствует девушек с фотками и рассказом о себе! Не забанят, гарантирую! Ну конечно я даю консультации для начала по e-mail`у.. - romanmastino@gmail.com :)
Что касается самого датчика - не глючный за 85-120$.
Если объект черный, или очень темный - не увидете его.
Изо этого я дополнительно использую PING..
 

 

koteishna
Offline
Зарегистрирован: 18.02.2012

 >>Что касается самого датчика - не глючный за 85-120$. <<

можно ссылку? желательно московский сайт

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

P.S. вот эти датчики очень стабильные: http://www.ebay.com/itm/Arduino-Infrared-Reflectance-Sensor-Sensor-Shiel...

 

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Так вроде это не дальномер а датчик препятствия. 

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

nestandart пишет:

Так вроде это не дальномер а датчик препятствия. 

Ну да.. расстояние можно регулировать с помощью потенциометра... от 10 до 100-150 cm. но за то работает как швейцарские часы :)

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

А не проще ли самому такой собрать ? 

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Когда то я пытался сделать дальномер на основе TSOPа .

Фишка была в том что ИК светодиод постепенно повышает интенсивность свечения 

(циклично увеличивает/уменьшает зону детекции) .

 МК опрашивает TSOP , если препятствие зафиксировано то соотносит показания TSOPа с яркостью светодиода  в момент обнаружения.

Таким образом определялось расстояние.

Но все это справедливо лишь для сферического куба в вакууме.

Реальные обекты (черные/белые) давали , чуть ли не диаметрально - противоположные , показания.

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

nestandart пишет:

А не проще ли самому такой собрать ? 

nestandart - цена от 7 до 10 $...

 

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

А пересылка ? А ждать ?

Цена TSOPа , в любом радиомагазине, 30 -50 р.

Цена четырех светодиодов такая же. 

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Может лучше УЗ дальномер ?

 

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

ждать две недели.. но за то все выглядеть красиво и работает правильно. A не монстр на соплях.. :)

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

nestandart пишет:

Может лучше УЗ дальномер ?

 

Играл и с УЗ и с ИР.

УЗ - не "видит" мягких вещей.

ИР - не "видит" темных вещей.

Я на свой робот и то и другое поставил чтобы видел все.:)

 

koteishna
Offline
Зарегистрирован: 18.02.2012

 А какой код для шарповского дальномера использовали? или не он был?

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

тот же самый, который писал в вирху

andrikll
Offline
Зарегистрирован: 04.08.2013

Зашел почитать, оказалось "зашел отписаться". Датчик действительно глючный, без препятствий показывает 18см (иногда прыгает на 13см 21см разово) при поднесении препятствия начинает показывать настоящие цыфры, но не больше 40 см. Подтяжки ничего не дают (показания меняются, глючность нет).