Модуль OR-LINESENS-KTIRx10: Датчик линии

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

Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение =DeaD= » 02 май 2009, 21:29

В этой теме будет обеспечена поддержка пользователей модуля.

Подробная информация по модулю на странице: [[Модули OpenRobotics и документация к ним]]

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

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение PritMick » 09 янв 2011, 21:55

В вики в примере для arduino используется некий ORBWSens.h
Можно его опубликовать?
PritMick
 
Сообщения: 12
Зарегистрирован: 22 дек 2010, 12:06
Откуда: Москва
Skype: pritmix
прог. языки: C, C++(из-за наличия STL :) ), Java
ФИО: Михаил Притула

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение Dmitri Vladimirovich » 10 янв 2011, 12:23

Всем привет!
У меня вопрос - на вики в разделе поддрежки модуля есть код для Ардуино. Он использует некую библиотеку ORBWSens.h.

Где её взять?)))

Дима
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение Vooon » 10 янв 2011, 18:48

Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение Dmitri Vladimirovich » 10 янв 2011, 20:01

Спасибо большое!)))
#define TRUE FALSE
Dmitri Vladimirovich
 
Сообщения: 283
Зарегистрирован: 05 янв 2010, 23:07
Откуда: Красноармейск
Skype: dmitry.vladimirivich
ФИО: Дима.В.

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение MaPTbIH » 28 сен 2011, 18:08

Проблема с данным датчиком, читаю его значения через UART и получаю, что он не видит черной полосы (расстояние между датчиком и поверхностьтю около 5мм):
0000000000
Когда поднимаю датчик, т.е. увеличиваю расстояние между датчиком и поверхностью, тополучаю:
1111111111
Т.е. датчик то вроде работает, светодиод C5 горит, т.е. на ножку LED-on идет логическая единица.
И еще, поднимаю робота вместе с датчиком над поверхностью так, чтобы датчик видел белый лист под собой (и показывал 0000000000), подношу вырезанную черную полоску и получаю 0000010000 или 0010000000, или подношу черный маркер (не важно, чтот маркер, важно что он черный и цилиндрический) и получаю примерно такую же картину. Как только ставлю на землю и полоску и робота сразу вс нули, как-будто ему главно, чтобы полоску распологалась не перпендикулярно датчику...

Не понимаю в чем дело. :-o

Исходный код проверки датчика через ваш UART модуль (USB-UART)
Код: Выделить всё
#include "defines.h"

#include <ctype.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>

#include <avr/interrupt.h>

#include <util/delay.h>

#include "uart.c"


FILE uart_str = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW);

int main(void)
{
  uart_init();
  stdout = stdin = &uart_str;
  printf("Linetracer ready 1!\n");

  DDRC=0x20;
  DDRD=0x30;

  _delay_ms(5000);

  //PWM, Phase and frequency correct, TOP=ICR1
  TCCR1A=0xA0; //clear on up-counting, set on down-counting
  TCCR1B=0x12; //Clock prescaler 1/8
  ICR1=9216;  //Set 50Hz frequency   
  uint16_t baseA=(153*2+1)*23/10;
  uint16_t baseB=(156*2+1)*23/10;
  OCR1A=0;
  OCR1B=0;
  while(1==1){
    DDRA=0xFF;
   PORTA=0xFF;
   DDRC|=0xC0;
   PORTC|=0xC0;
   _delay_us(1000);
   DDRA=0x00;
   PORTA=0x00;
   DDRC&=~0xC0;
   PORTC&=~0xC0;
   PORTC|=0x20;
   _delay_us(4000);
   int x=PINA;
   int y=PINC>>6;
   if(y==1){ y=2; }else if (y==2){y=1;};
   x=x+(y<<8);
   int pos1=-1;
   int pos2=10;

   for(int i=0; i<10; i++){
      int j=x&0x01;
      if(j==1 && pos1==-1){ pos1=i; };
      if(j==1){ pos2=i; };
      printf("%d",j);
      x=x>>1;
   };
   printf("\n");
   
   
   int pos=(pos2+pos1)/2;
   printf("pos=%d\n\n",pos);
   
   

     _delay_ms(1000);

  };
}



Добавлено спустя 37 минут 31 секунду:
Уже не так трагично. Датчик не реагирует на поверхность - лист A4 с нарисованной маркером черной линии шириной 2 см, зато видит черную линию если поднести черную клеищую бумагу (она является более глянцевой), кто экспериментировал с этим датчиком и разными поверхностями отзовитесь!
Аватара пользователя
MaPTbIH
 
Сообщения: 34
Зарегистрирован: 20 фев 2011, 14:56
Откуда: Самара
прог. языки: C++ PHP ActionScript LabVIEW

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение =DeaD= » 28 сен 2011, 18:14

А чего это у вас _delay_us(4000) перед
int x = PINA;
int y = PINC>>6;


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

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение MaPTbIH » 28 сен 2011, 19:07

Потому что тут в исходных кодах так было

Добавлено спустя 2 минуты:
А в иходниках для тестирования датчика действительно
_delay_us(500);


Добавлено спустя 22 секунды:
Сейчас попробую

Добавлено спустя 5 минут 32 секунды:
Проблема была именно в этом! Спасибо, проблема решена, необходимо делать "_delay_us(500);" тогда датчик будет работать нормально.

Добавлено спустя 1 минуту 12 секунд:
Тогда и исходники в вики нужно поправить.
Аватара пользователя
MaPTbIH
 
Сообщения: 34
Зарегистрирован: 20 фев 2011, 14:56
Откуда: Самара
прог. языки: C++ PHP ActionScript LabVIEW

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение =DeaD= » 28 сен 2011, 19:23

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

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение MaPTbIH » 29 сен 2011, 23:12

Поставил на ПИД-регулятор движение по линии. Коэффициенты подобраны наспех. Вообщем, вот что получилось:
Аватара пользователя
MaPTbIH
 
Сообщения: 34
Зарегистрирован: 20 фев 2011, 14:56
Откуда: Самара
прог. языки: C++ PHP ActionScript LabVIEW

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение =DeaD= » 30 сен 2011, 07:52

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

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение MaPTbIH » 30 сен 2011, 17:20

Такие же как и у OR-LT-v2 - HXT900 модифицированные по твоему способу :)
А где посмотреть как твой OR-LT-v2 ездил? Я не нашел.
Аватара пользователя
MaPTbIH
 
Сообщения: 34
Зарегистрирован: 20 фев 2011, 14:56
Откуда: Самара
прог. языки: C++ PHP ActionScript LabVIEW

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение =DeaD= » 30 сен 2011, 17:41

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

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение MaPTbIH » 30 сен 2011, 19:06

Круто! А алгоритм такой же на видео как и на вики? Я про исходники на этой странице имею в виду.

Добавлено спустя 2 минуты 13 секунд:
Я завтра коэффициенты подберу к ПИД-регулятору, вечером выложу видео. Потом и сам алгоритм. Ты пробывал хотя бы П-регулятор использовать для движения по линии для этой машинки?
Аватара пользователя
MaPTbIH
 
Сообщения: 34
Зарегистрирован: 20 фев 2011, 14:56
Откуда: Самара
прог. языки: C++ PHP ActionScript LabVIEW

Re: Модуль OR-LINESENS-KTIRx10: Датчик линии

Сообщение =DeaD= » 30 сен 2011, 19:45

Вот уже не возьмусь вспоминать, чего я там наворотил :) вроде просто прописал IF'ы и всё... но мне стыдно :D

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

След.

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

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

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