roboforum.ru

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

КрасноГлазые модули

КрасноГлазые модули

Strijar » 30 окт 2007, 10:46

Бамперы - TSOP17 и TSAL6200 (робоклубовский), транзистор первый попавшийся (ph2369)
Энкодер - пара от мышки Genius. История создания и характеристики
Вложения
3.jpg
По отдельности
all.jpg
Все в сборе

Re: КрасноГлазые модули

avr123.nm.ru » 30 окт 2007, 11:18

Красиво !

Re: КрасноГлазые модули

MegaBIZON » 30 окт 2007, 12:40

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

Re: КрасноГлазые модули

Strijar » 30 окт 2007, 13:30

MegaBIZON писал(а):собираем робота из кубиков :shock:


Угадал! А на самом деле так проще переделывать. Не надо ничего выпаивать ;) Выдернул модуль, сделал другой и воткнул.

Re: КрасноГлазые модули

Master » 30 окт 2007, 18:16

Робоклубовский бампер вроде ж на Тиньке 12 был? Или я что то пропустил?

Re: КрасноГлазые модули

Strijar » 30 окт 2007, 18:31

Ну значит это не совсем робоклубовский ;) От него только аналоговая часть осталась, контроллер другой, обработка то-же своя.

Re: КрасноГлазые модули

Digit » 31 окт 2007, 10:25

Strijar писал(а):обработка то-же своя.


В смысле? А что там обрабатывать-то? Или какие-то ноу-хау? :)

Re: КрасноГлазые модули

Strijar » 31 окт 2007, 12:30

Digit писал(а):В смысле? А что там обрабатывать-то? Или какие-то ноу-хау? :)

Да ничего особенного, просто сам писал на Си.

Код: Выделить всёРазвернуть
#include <avr/interrupt.h>
#include <avr/io.h>

#define L_TSOP  (1<< PINA6)
#define R_TSOP  (1<< PINA7)

#define L_LED   (1<< PINA4)
#define R_LED   (1<< PINA5)

unsigned char   radarR = 0, radarL = 0;

register unsigned char  count   asm("r3");
register unsigned char  r       asm("r4");
register unsigned char  l       asm("r5");

ISR(SIG_OUTPUT_COMPARE0) {
    if (count++ > 150) {
        radarR = r;
        radarL = l;
        r = l = count = 0;
    }

    if (count < 140) {
        PORTA ^= R_LED | L_LED;
    }

    if ((PINA & R_TSOP) == 0) r++;
    if ((PINA & L_TSOP) == 0) l++;
}

void RadarInit() {
    r = l = count = 0;

    /* Ports */

    DDRA |= (L_LED | R_LED);
    PORTA |= (R_LED | L_LED);

    DDRA &= ~(L_TSOP | R_TSOP);
    PORTA |= (L_TSOP | R_TSOP);

    /* Timer = 8MHz / (38kHz * 2) */

    TCCR0 = (1 << WGM21) | (0 << CS22) | (0 << CS21) | (1 << CS20);
    OCR0 = 105;
    TIMSK |= (1<< OCIE0);
}

Re: КрасноГлазые модули

Strijar » 01 ноя 2007, 19:43

Прикрутив линзу от головки CDROM-а добился "распознавания" линии толщиной 1мм ;) Только очень точно все выставлять надо - немного отодвинул лист с линией и не читает. Завтра выложу фотку крепления линзы.

Re: КрасноГлазые модули

Digit » 01 ноя 2007, 20:17

Т.е. там очень жесткие условия к фокусировке? Эта, как ее... Глубина фокуса маленькая, так? И как робот будет с пола штрихи читать при таком раскладе, если +\-мм все портит? :roll:

Re: КрасноГлазые модули

Myp » 01 ноя 2007, 20:21

Digit писал(а):Т.е. там очень жесткие условия к фокусировке? Эта, как ее... Глубина фокуса маленькая, так? И как робот будет с пола штрихи читать при таком раскладе, если +\-мм все портит? :roll:

а нафига ему с пола читать? :shock:

Re: КрасноГлазые модули

Digit » 01 ноя 2007, 20:46

Ну эти придуманные концентрические штрихкоды

Re: КрасноГлазые модули

Strijar » 02 ноя 2007, 12:07

Digit писал(а):И как робот будет с пола штрихи читать при таком раскладе, если +\-мм все портит? :roll:


Да я не собираюсь делать такие мелкие штрихи. Просто было интересно, что можно по максимуму выжать из подручных материалов ;) Причем разрешение 1мм получалось достаточно далеко от линзы - около тех же 20мм. Линза была где-то около в 5мм от излучателя.

Вот готовый энкодер. Разрешение - 5 градусов.
Вложения
enc2.jpg
enc2.jpg (7.83 КиБ) Просмотров: 5915
enc1.jpg

Re: КрасноГлазые модули

MegaBIZON » 02 ноя 2007, 13:11

Гы
Классно!

Re: КрасноГлазые модули

Strijar » 09 ноя 2007, 13:30

Энкодер работает не очень хорошо. Импульсы считает исправно, а вот время между ними не очень. Сделал на прерывании по смене фронта. Не смог добиться что-бы время "белого" и "черного" были одинаковы. А если сделать по спаду (или подъему) фронта - тогда разрешение получается 10 градусов, а мне мало ;)


Rambler\'s Top100 Mail.ru counter