Пятница, 03.05.2024, 22:03
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Архив - только для чтения
Форум » Мастерская » Наши достижения » Мой робот LNP
Мой робот 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 cray
 
DoniakДата: Вторник, 03.06.2008, 22:13 | Сообщение # 20








Язык программированя: CodeVisionAVR Си
Зарегистрирован 19.03.2008
Группа: Модераторы
Сообщений: 584
Город: Кривой Рог (Днепропетровск)
Статус: Offline
вот собсно схема, может укавота есть советы как её улутшить? smile3
подключял приёмники по ДШ
Прикрепления: 9344102.gif (12.6 Kb)
 
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. Молодца. Хороший датчик получился good
 
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).
Ломаю голову откуда у тебя двуполярное питание появляется lol

Кстати уже не первый раз встречаю такую формулировку smile3

НИЗКИЙ логический уровень - 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
А в целом всё равно получилось не плохо. ok
 
FireFlyДата: Четверг, 05.06.2008, 21:44 | Сообщение # 29








Зарегистрирован 04.04.2008
Группа: Модераторы
Сообщений: 196
Город: Kamyshin
Статус: Offline
да неее, все пучком, просто ты написал -5, а это обозначение при двуполярном питании wink

Robozone
 
SpaceДата: Пятница, 20.06.2008, 16:32 | Сообщение # 30








Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
Doniak, а на тёмных предметах проверял датчик? Как он срабатывает?

Добавлено (20.06.2008, 16:32)
---------------------------------------------
И ещё, если я буду делать, то подключать буду всё так. Так верно будет?

Прикрепления: 4695670.jpg (37.0 Kb) · 4786634.gif (18.9 Kb)
 
Форум » Мастерская » Наши достижения » Мой робот LNP
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: