Мой робот LNP
|
|
Doniak | Дата: Вторник, 03.06.2008, 18:32 | Сообщение # 16 |
Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
| схемку поже нарисую. Вобще походу пайки придумывал ну и на ДШ тсопа смарел. Генерацыя сигнала 36 кГц идёт с МК(програмно) 16ти разрядным таймером. Прога сырая ищё буду додумывать
|
|
| |
Space | Дата: Вторник, 03.06.2008, 18:39 | Сообщение # 17 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Но всё равно всё классно работает. Хоть и программа сырая. Если не ошибаюсь, то ты используешь мк ATmega8? И какой компилятор?
|
|
| |
Doniak | Дата: Вторник, 03.06.2008, 19:29 | Сообщение # 18 |
Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
| tiny2313, 8мГц кварц компилятор коде вижен. тсопы неподсаеденены к МК. использывал приёмники 536АА3Р(средина и слева) и TSOP1736(справа). Если приближаю руку тсоп несробативает реагирует если махнуть например рукой. остальные оказались более чуствительные работают отлично. Code // DONIAK // 8mHz кварц #include <tiny2313.h> #include <delay.h>
unsigned char A; //переменая void main(void) {
PORTB.4=0x00; DDRB.4=0xff;
TIMSK=0b01000000; // разрешить прерывание компроматора таймера 1
TCCR1B=0b00001010; // СК=8 и обнулять OCR1Aпри каждом прерывание
OCR1AH=0x00; OCR1AL=0x0C; // значение подобрано для сробативание в 2 раза больше чем 36кГц
while (1) // { if (A==20) { TIMSK=0b00000000;// если счётчик равен 20(тоисть 10 раз моргнул светодиод) выключяем таймер и ждём 1 милисекунду A=0; delay_ms(1); TIMSK=0b01000000; // снова включаем таймер };
}; } interrupt [TIM1_COMPA] void timer1_ovf_isr(void) { if (PINB.4==1) { // если ИК диод горит, погасить ево и увеличить счётчик на 1 PORTB.4=0; A++; } else { // иначе засветить ИК диод PORTB.4=1;};
}
|
|
| |
Space | Дата: Вторник, 03.06.2008, 21:07 | Сообщение # 19 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Обидно только, что на Code vision
|
|
| |
Doniak | Дата: Вторник, 03.06.2008, 22:13 | Сообщение # 20 |
Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
| вот собсно схема, может укавота есть советы как её улутшить? подключял приёмники по ДШ
|
|
| |
Space | Дата: Вторник, 03.06.2008, 22:28 | Сообщение # 21 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Я так понимаю сигнал 36гц подключается к 3 ноге приёмника. Так? И вообще как то не понятно зачем эта часть, которая без тсопов?
|
|
| |
Doniak | Дата: Среда, 04.06.2008, 09:08 | Сообщение # 22 |
Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
| чуть подправил схемку(1 транзистор Ic=1,5 А на 3 ИК светодиода) Quote (Space) Я так понимаю сигнал 36гц подключается к 3 ноге приёмника. Так? И вообще как то не понятно зачем эта часть, которая без тсопов? нет сигнал подаётся на базу транзистора каторый колектором соеденён с ИК светодиодам, тем самим заставляя их мигать с нужной частатой. Приёмники реагируют на сигнал с чястатой 36кГц. Если есть сигнал тогда на третей ноге будит лог 0 (-5) если нету лог 1 (+5). к третей ноге я подключил светодиод так чтоб он начял светится если есть сигнал. Вдальнейшем я третью ногу приёмника подключу к МК для обработки сигнала.
|
|
| |
Space | Дата: Среда, 04.06.2008, 13:05 | Сообщение # 23 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Тогда если не затруднит выложи потом полную схему подключения датчика к мк ATtiny
|
|
| |
Les | Дата: Среда, 04.06.2008, 14:48 | Сообщение # 24 |
| Quote (Doniak) а вот и первый датчик, правду он ищё неготовый. Щяс идётполная засветка всех приёмников. Днём исправлю и если всё норм выложу видео Оценка 5. Молодца. Хороший датчик получился
|
|
| |
Doniak | Дата: Четверг, 05.06.2008, 07:32 | Сообщение # 25 |
Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
| ну вот устоновил датчик на робота. TSOP1736 правий датчик и как можно увидеть по видео оочень плохо реагирует. Думаю ет потомучто сигнал с ИК диодов идёт постоянно а не пачками. Остальные 2 датчика ето 536АА3Р аналог тсопа(поже ево заменю). если поменять полярность подключения движков он будит карабкатся к руке :) вот исходник проги на маём боте Code // DONIAK // 8mHz кварц #include <tiny2313.h> #include <delay.h>
void Ports(void){ //функцыя настройки портов DDRB.4=1; DDRB.0=0;//приёмник 1 DDRB.1=0;//приёмник 2 DDRB.2=0;//приёмник 3 DDRD=0xff;//сервы PORTB.1=1; PORTB.0=1; PORTB.2=1; TIMSK=0b01000000; // разрешить прерывание компроматора таймера 1
TCCR1B=0b00001010; // СК=8 и обнулять OCR1Aпри каждом прерывание
OCR1AH=0x00; OCR1AL=0x0E; // значение подобрано для сробативание в 2 раза больше чем 36кГц
#asm("sei") // разрешить прерывания }
void main(void) { Ports(); //вызов функцыи накстройки портов
while (1) // главний цыкл {
if (PINB.0==1 & PINB.1==1 & PINB.2==1) { PORTD.0=0; PORTD.1=0;
PORTD.2=0; PORTD.3=0; };
if (PINB.0==0 & PINB.1==1 & PINB.2==1) { PORTD.0=0; PORTD.1=1;
PORTD.2=0; PORTD.3=0; }; if (PINB.0==1 & PINB.1==1 & PINB.2==0) { PORTD.0=0; PORTD.1=0;
PORTD.2=0; PORTD.3=1; }; if (PINB.0==1 & PINB.1==0 & PINB.2==1) { PORTD.0=0; PORTD.1=1;
PORTD.2=0; PORTD.3=1; }; };
};
interrupt [TIM1_COMPA] void timer1 (void) { if (PINB.4==1) { // если ИК диод горит, погасить ево и увеличить счётчик на 1 PORTB.4=0; } else // иначе засветить ИК диод { PORTB.4=1;};
}
|
|
| |
FireFly | Дата: Четверг, 05.06.2008, 09:15 | Сообщение # 26 |
Зарегистрирован 04.04.2008
Группа: Модераторы
Сообщений: 196
Город: Kamyshin
Статус: Offline
| Датчики разных производителей реагируют по разному на сигнал (проверялось на шарпах, тсопах и еще как их то неизвестных) Улыбнуло Quote Если есть сигнал тогда на третей ноге будит лог 0 (-5) если нету лог 1 (+5). Ломаю голову откуда у тебя двуполярное питание появляется Кстати уже не первый раз встречаю такую формулировку НИЗКИЙ логический уровень - 0 (в реале от 1 вольта и ниже примерно), он же НОЛЬ ВЫСОКИЙ логический уровень - 1 (в реале где то от 3-х вольт и выше), он же ЕДЕНИЦА Подтягивающие резисторы (подтяжка к питанию, подтяжка к общему) как раз и ставятся, что бы необходимые логические уровни установить на конкретном участке схемы.
Robozone
|
|
| |
Doniak | Дата: Четверг, 05.06.2008, 14:26 | Сообщение # 27 |
Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
| Quote (FireFly) Ломаю голову откуда у тебя двуполярное питание появляется мультиметром померял о.О
|
|
| |
Space | Дата: Четверг, 05.06.2008, 14:35 | Сообщение # 28 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| А в целом всё равно получилось не плохо.
|
|
| |
FireFly | Дата: Четверг, 05.06.2008, 21:44 | Сообщение # 29 |
Зарегистрирован 04.04.2008
Группа: Модераторы
Сообщений: 196
Город: Kamyshin
Статус: Offline
| да неее, все пучком, просто ты написал -5, а это обозначение при двуполярном питании
Robozone
|
|
| |
Space | Дата: Пятница, 20.06.2008, 16:32 | Сообщение # 30 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Doniak, а на тёмных предметах проверял датчик? Как он срабатывает? Добавлено (20.06.2008, 16:32) --------------------------------------------- И ещё, если я буду делать, то подключать буду всё так. Так верно будет? ![](http://robotsspace.ucoz.ru/_fr/1/s4695670.jpg) ![](http://robotsspace.ucoz.ru/_fr/1/s4786634.jpg)
|
|
| |