roboforum.ru

Технический форум по робототехнике.

Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая)

Разработка стандартизированных модулей для домашнего робостроения.
Правила форума
Правила раздела OpenRobotics

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение Мартин » 23 фев 2012, 02:24

Библиотеку выложи и цеплять научился, синтексис ошибки исправил. Ночью результат напишу. Может найду решения. Тут ларчек просто открывался, вот только это "просто" надо найти и понять),!

Добавлено спустя 1 час 53 минуты 59 секунд:
Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая)
Доброй ночи, есть разница сколько подключено датчиков. Ну в моих кодах с пололула,(библиотеку для зацепа откуда брал) там 6 и 8. Там прописывается аналоговые и цифровые орты... В этом коде(с форума мне проще ориентироваться)Сейчас пробую разные комбинации.

Добавлено спустя 32 минуты 6 секунд:
Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая)
Диод загорается, через некоторое время тухнет... С чем связано не знаю... Реакции на цвет белой или чёрной поверхности нет, даже при смене один на другой.Датчик сам калибруется или его надо в ручную? Как калибровать датчик, если надо в ручную?

Добавлено спустя 4 минуты 7 секунд:
Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая)
УРА ГРАВИЦОПА ЗАРАБОТАЛА!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :P :Yahoo!: :Yahoo!: :Yahoo!: :Yahoo!: :Yahoo!: :Yahoo!: Сменя отчёт для новичков, которых коснулась такая же проблема..)!

Добавлено спустя 1 час 40 минут 10 секунд:
Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая)
Обещанный ОТЧЁТ

Вносим в Ордуино код #include <QTRSensors.h>

#define LED 13 // LED на pin 13 (я рекомендую увести пин 12 или другой при не удаче может сгореть диод встроенный в плату
// и тогда будет не корректная работа)


// создаем объект, датчик подключен на pin 10
QTRSensorsRC qtr((unsigned char[]) {10}, 1);


void setup()
{
pinMode(LED, OUTPUT); //установка LED pin как выход
digitalWrite(LED, HIGH); // LED on
// калибровка датчика
int i;
for (i = 0; i < 250; i++)
{
qtr.calibrate();
delay(20);
}
digitalWrite(LED, LOW); // LED off
Serial.begin(9600);
}

void loop()
{
digitalWrite(LED, LOW); // LED Off
unsigned int sensors[1]; // результаты измерений сенсора
int position = qtr.readLine(sensors);
Serial.println(sensors[0], DEC); //результат измерений 0(самый белый) .. 1000(самый черный)
if (sensors[0] > 500) // скорее черный чем белый
{
digitalWrite(LED, HIGH); // turns the LED on
}
delay(10); // waits for a 10 uSec
}

Далее подключаем датчик, и тут главное после загрузки и подключения датчика(не важно в каком порядке)На датчик посветить Инфракрасным светом(красный диод из мышки или лазера)Причём мощность и цвет имеет значения для пуска датчика. Потому что он видимо(предполагаю) состоит из фототранзистора и фоторезистора, вообщем комбинация. Замена такого датчика обычный транзистор сделанный в СССР со с пиленой башней. Вот и всё, как я писал ларчик просто открывался, главное найти и понять "просто" На счёт калибровки и добавления диодов и датчиков напишу, если попросят поделится опытом...
Мартин
 
Сообщения: 17
Зарегистрирован: 30 янв 2012, 01:09

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение Perdimonocle » 30 мар 2012, 10:44

А этот проверочный код датчиков с ATMega16 работает? А то у меня датчики ни на что не реагируют на любом растоянии и на любой цвет...
Код: Выделить всёРазвернуть
#include "defines.h"
#include <avr/interrupt.h>
#include <util/delay.h>

int main(void)
{
  DDRC=0x20;
  while(1==1){
    DDRA=0xFF;
   PORTA=0xFF;
   _delay_us(2500);
   DDRA=0x00;
   PORTA=0x00;
   _delay_us(2500);
   int x=PINA;
   if(x & 0x01 == 0x01){
      PORTC=0x20;
   }else{
      PORTC=0x00;
   };
   _delay_us(1000);
  };
}


Код пишу и компилирую в WinAVR-20100110, при компиляции получаю предупреждение: c:46: warning: suggest parentheses around comparison in operand of &
Аватара пользователя
Perdimonocle
 
Сообщения: 72
Зарегистрирован: 05 июл 2010, 05:36

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение =DeaD= » 30 мар 2012, 11:06

А у вас именно v1 или нет?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение Perdimonocle » 30 мар 2012, 11:24

На датчике v2 написано...

Добавлено спустя 1 минуту 46 секунд:
Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая)
Но я задержку в 500 выставлял - результат тот же, точнее его нет.

Добавлено спустя 8 минут 19 секунд:
Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая)
Может я не правильно проверял?
Я просто прикладывал к датчику белый (или чёрный) лист...
Аватара пользователя
Perdimonocle
 
Сообщения: 72
Зарегистрирован: 05 июл 2010, 05:36

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение =DeaD= » 30 мар 2012, 11:29

Если прикладываете - конечно всегда будет "ой", надо держать на расстоянии примерно 5мм.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение Perdimonocle » 30 мар 2012, 12:00

Расскажите, пожалуйста, как именно: можно ли заранее "приставить" лист к датчику и как долго держать? Я, конечно же, понимаю, что нарываюсь на ответ: пока светодиод не загорится... но всё же сколько?

Добавлено спустя 24 минуты 38 секунд:
Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая)
И как он (датчик) реагирует на освещение или его отсутствие?
Аватара пользователя
Perdimonocle
 
Сообщения: 72
Зарегистрирован: 05 июл 2010, 05:36

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение =DeaD= » 30 мар 2012, 12:44

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

Засветка конечно может мешать датчику. Еще черная поверхность бывает разной, бывает и такая, которая отражает в ИК-спектре не сильно хуже белого. И посмотрите через камеру сотика - у вас светодиод в датчике светится вообще в ИК-диапазоне?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение Perdimonocle » 31 мар 2012, 15:05

Сегодня проверил: через камеру мобильника светодиод в датчике светится.
Аватара пользователя
Perdimonocle
 
Сообщения: 72
Зарегистрирован: 05 июл 2010, 05:36

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение =DeaD= » 31 мар 2012, 15:45

Какое напряжение питания датчика и МК? У меня на 3.3В всё было.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение Perdimonocle » 01 апр 2012, 02:37

Напряжение питания МК и датчика 4,5В.

Может всё-таки проблема в условии if(x & 0x01 == 0x01) - так как при компиляции получаю предупреждение: c:46: warning: suggest parentheses around comparison in operand of &, а?
Аватара пользователя
Perdimonocle
 
Сообщения: 72
Зарегистрирован: 05 июл 2010, 05:36

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение =DeaD= » 01 апр 2012, 10:12

Ну поставьте на всякий случай: ((x & 0x01) == 0x01)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение Perdimonocle » 02 апр 2012, 03:56

=DeaD= писал(а):Ну поставьте на всякий случай: ((x & 0x01) == 0x01)

:good: Спасибо, условие изменил, теперь при компиляции предупреждения нет.
"Перецепил" датчик на D0 и всё заработало (не знаю почему) - датчик очень чувствительный: на чёрную клавиатуру реагирует с высоты ~12 сантиметров, на корпус Меги - с высоты ~3 см, но на напечатанный оптический диск "откликается" с 2 миллиметров (наверное, зависит от режима экономии чернил).
Аватара пользователя
Perdimonocle
 
Сообщения: 72
Зарегистрирован: 05 июл 2010, 05:36

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение legion » 25 сен 2012, 20:42

Вики говорит:
Принцип работы датчика:

Замыкаем на 500мкс (для версии 1 датчика - на 2500мкс) сигнальную линию датчика на землю, разряжая конденсатор;
Делаем сигнальную линию входом для МК (т.е. перестаём её подтягивать к земле или к питанию) и ждём сколько-то времени, пока через открытый, в зависимости от отражающей способности поверхности в спектре ИК-излучения и расстояния до поверхности, оптодатчик зарядится конденсатор;
Замеряем что на выходе с датчика - 0 или 1.

А схема говорит, что сажая выход на землю мы кондер зарядим, а не разрядим. Вывихнул весь мозг и изобрел два принципиально новых вида конденсатора, пока не догадался посмотреть в код. А там... :shock:
while(1==1){
DDRA=0xFF;
PORTA=0xFF;
_delay_us(500); //2500 for OR-BWSENS-v1
DDRA=0x00;
PORTA=0x00;
_delay_us(500); //2500 for OR-BWSENS-v1
int x=PINA;

Исправьте, пожалуйста, а то могут быть жертвы. =)
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение =DeaD= » 25 сен 2012, 21:14

Поправил вики, теперь норм?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Модуль OR-BWSENS: Датчик цвета поверхности (черная/белая

Сообщение legion » 25 сен 2012, 22:17

Да, теперь ок.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Пред.След.

Вернуться в Open Robotics

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron