Технический форум по робототехнике.
Strijar » 30 окт 2007, 10:46
Бамперы - TSOP17 и TSAL6200 (робоклубовский), транзистор первый попавшийся (ph2369)
Энкодер - пара от мышки Genius.
История создания и характеристики
- Вложения
-
- По отдельности
-
- Все в сборе
avr123.nm.ru » 30 окт 2007, 11:18
Красиво !
MegaBIZON » 30 окт 2007, 12:40
Ну прямо вольтрон... собираем робота из кубиков
Это же моно разных взаимоподходящих кусочков нашлёпать, и собирай из них чё хош, по случаю
Strijar » 30 окт 2007, 13:30
MegaBIZON писал(а):собираем робота из кубиков
Угадал! А на самом деле так проще переделывать. Не надо ничего выпаивать
Выдернул модуль, сделал другой и воткнул.
Master » 30 окт 2007, 18:16
Робоклубовский бампер вроде ж на Тиньке 12 был? Или я что то пропустил?
Strijar » 30 окт 2007, 18:31
Ну значит это не совсем робоклубовский
От него только аналоговая часть осталась, контроллер другой, обработка то-же своя.
Digit » 31 окт 2007, 10:25
Strijar писал(а):обработка то-же своя.
В смысле? А что там обрабатывать-то? Или какие-то ноу-хау?
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);
}
Strijar » 01 ноя 2007, 19:43
Прикрутив линзу от головки CDROM-а добился "распознавания" линии толщиной 1мм
Только очень точно все выставлять надо - немного отодвинул лист с линией и не читает. Завтра выложу фотку крепления линзы.
Digit » 01 ноя 2007, 20:17
Т.е. там очень жесткие условия к фокусировке? Эта, как ее... Глубина фокуса маленькая, так? И как робот будет с пола штрихи читать при таком раскладе, если +\-мм все портит?
Myp » 01 ноя 2007, 20:21
Digit писал(а):Т.е. там очень жесткие условия к фокусировке? Эта, как ее... Глубина фокуса маленькая, так? И как робот будет с пола штрихи читать при таком раскладе, если +\-мм все портит?
а нафига ему с пола читать?
Digit » 01 ноя 2007, 20:46
Ну эти придуманные концентрические штрихкоды
Strijar » 02 ноя 2007, 12:07
Digit писал(а):И как робот будет с пола штрихи читать при таком раскладе, если +\-мм все портит?
Да я не собираюсь делать такие мелкие штрихи. Просто было интересно, что можно по максимуму выжать из подручных материалов
Причем разрешение 1мм получалось достаточно далеко от линзы - около тех же 20мм. Линза была где-то около в 5мм от излучателя.
Вот готовый энкодер. Разрешение - 5 градусов.
- Вложения
-
- enc2.jpg (7.83 КиБ) Просмотров: 5915
-
MegaBIZON » 02 ноя 2007, 13:11
Гы
Классно!
Strijar » 09 ноя 2007, 13:30
Энкодер работает не очень хорошо. Импульсы считает исправно, а вот время между ними не очень. Сделал на прерывании по смене фронта. Не смог добиться что-бы время "белого" и "черного" были одинаковы. А если сделать по спаду (или подъему) фронта - тогда разрешение получается 10 градусов, а мне мало