roboforum.ru

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


TSOP не корректно работает

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

TSOP не корректно работает

Сообщение bondik » 14 апр 2010, 21:21

Здраствуйте.Собрал тележку из двух машинок ( как в теме "они выделяют фенол")
SNC00036.jpg

Первое что решил сделать это разобраться с TSOP 1736.Собрал на своей монтажке.
SNC00038.jpg

Как видно из следуещей фотографии при прямой видимости тсоп срабатывает и светится светик
SNC00037.jpg

Проблема заключается в том что если я делаю импровезированное препятствие тсоп срабатывает только при расстоянии до 3 сантиметров =( хотелось бы больше
SNC00039.jpg

Вот код программы ( codevisionavr 2,Atmega8,кварц на 8)
Код: Выделить всёРазвернуть
#include <mega8.h>

char TimerCount = 0;


//-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
void SetIRLed()
{   PORTC.0 = ~PORTC.0; }

//-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
void SetLightLed(unsigned char flag)
{   PORTC.5 = flag; }
   

//-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    // Reinitialize Timer 0 value
//    TCNT0=0x14;
   
    if(TimerCount<28)
        SetIRLed();
    else
        PORTC.0 = 0;
    TimerCount++;
    if(TimerCount==56)
        TimerCount = 0;
}


//-_-_-_-_ главная функция -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
void main(void)
{
    PORTB=0x00;
    DDRB=0x00;
    PORTC=0x00;
    DDRC=0x7F;
    PORTD=0x00;
    DDRD=0x00;
    TCCR0=0x01;
    TCNT0=0x6F;
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    MCUCR=0x00;
    TIMSK=0x01;
    ACSR=0x80;
    SFIOR=0x00;

    // Global enable interrupts
    #asm("sei")

    while (1)
    {
        if(PIND.1)
            SetLightLed(0);
        else
            SetLightLed(1);   
    };
}



Подскажите пожалуйста в чём проблема,хотелось бы большее расстояние.
Проект кодвизиан присоединен в архиве к топику
Вложения
123.rar
Проект
(17.06 КиБ) Скачиваний: 0
Последний раз редактировалось bondik 15 апр 2010, 10:09, всего редактировалось 1 раз.
bondik
 
Сообщения: 26
Зарегистрирован: 14 апр 2010, 20:57

Re: TSOP не корректно работает

Сообщение кулер 23 » 14 апр 2010, 21:54

Во Точно вот как эти машинки соединить надо во я балбес. Спасибо за идею.
По теме: а ты не пробывал собрать ИК бампер к примеру?
Аватара пользователя
кулер 23
 
Сообщения: 798
Зарегистрирован: 17 апр 2009, 19:44
Откуда: Югорск
Skype: rizhykot
ФИО: Аксютин Юрий

Re: TSOP не корректно работает

Сообщение MegaBIZON » 14 апр 2010, 22:09

Какая чудная компановка! :good:
А по теме, извиняюсь, сказать нечего :oops:
.............солнце светит, птички поют, я - зелёный бамбук меня тянет к солнцуЯ - зелёный бамбук, я - зелёный бамбук , меня тянет к солнцу. Я - не огурчик и не лягушка, я - зелёный бамбук. Меня курят...............
Аватара пользователя
MegaBIZON
 
Сообщения: 6285
Зарегистрирован: 12 янв 2007, 00:34
Откуда: Масква

Re: TSOP не корректно работает

Сообщение yak-40 » 14 апр 2010, 22:28

Возможно мал ток через светодиод, или частота импульсов не совпадает с частотой ТСОП.

Добавлено спустя 8 минут 40 секунд:
...и ещё, судя по коду, ты генерируешь импульсы постоянно, а надо пачки импульсов по 12-15 штук с паузой.
Смотри даташит на ТСОП.
З.Ы. Да, и схему пожалуйста в студию.
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

Re: TSOP не корректно работает

Сообщение EdGull » 14 апр 2010, 23:25

срочно перезалить фотки на робофорум!!!
иначе предупреждение и бан
Аватара пользователя
EdGull
 
Сообщения: 10211
Зарегистрирован: 28 дек 2004, 20:33
Откуда: Тольятти
Skype: Ed_Gull
прог. языки: Bascom AVR Basic
ФИО: Гуль Эдуард Викторович

Re: TSOP не корректно работает

Сообщение Michael_K » 14 апр 2010, 23:48

В частоту скорее всего не попали - пересчитайте таймер.
а лучше проверьте хотя бы осциллом.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: TSOP не корректно работает

Сообщение vadinator » 14 апр 2010, 23:49

Можно попробовать ввести транзисторный ключ и подключить несколько светодиодов, для увеличения мощности...а так-же использовать оптические системы (линзы) для увеличения чувствительности приёмника...
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: TSOP не корректно работает

Сообщение Michael_K » 15 апр 2010, 00:03

Посчитайте такты в АВР-студии и посмотрте, какую частоту вы генерируете.

А вообще смысл я не уловил...
Если я правильно понял, таймер переполняется с частотой
8М/256 = порядка 31 килогерц. И переключает светодиод.
Частота на светодиоде получается 15 с чем-то... Ну и где искомое 36?

Даже если раскоментить ваше
// TCNT0=0x14;
То частота переполнения будет
8M/236 = порядка 34 килогерца...
Частота на светодиоде получается около 17... Аналогично?

В этом случае еще нужно учесть, что к тому времени, как прерывание дойдет до команды
TCNT0=0x14;
таймер уже что-то насчитает, и реальная частота будет меньше (и чуточку плавать).

Импульсы не обязательно - можно и постоянно эту частоту гнать.

Добавлено спустя 2 минуты 35 секунд:
Сто пудофф не попали в частоту,
мощность повышать не надо.
Когда он заработает нормально, вам мощность снижать придется,
потому что он будет ловить сигналы десять раз отраженные от потолков...

А тсопы - они выпускаются много лет и _работают_корректно_,
так что название темы - это лол.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: TSOP не корректно работает

Сообщение bondik » 15 апр 2010, 09:58

Уважаемый EdGull ,извините не знал про фотографии,переделал.
Michael_K большое спасибо,так и думал что моя вина, тогда подскажие пожалуйста какой делитель использовать.Использую кварц на 8МГц.
Последний раз редактировалось bondik 15 апр 2010, 10:24, всего редактировалось 1 раз.
bondik
 
Сообщения: 26
Зарегистрирован: 14 апр 2010, 20:57

Re: TSOP не корректно работает

Сообщение =DeaD= » 15 апр 2010, 10:05

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

Re: TSOP не корректно работает

Сообщение Radist » 15 апр 2010, 11:29

Предлагаю системный подход (предполагается, что на тсоп есть описание). Может глючить как железо, так и программа (например часто путают выводы питания). Тсоп имеет три ноги, две это питание, третья выход открытый коллектор. Туда через резюк вешаем светодиод. Светим тсопу в глаз пультом от телевизора метров с 5 - светодиод на выходе тсопа мигает - железо приемное в порядке. Теперь как проверить передатчик. ИК - то не видимо. НО ИК отлично видно цифровым фотоаппаратом/камерой/телефонным фотоаппаратом. Ну это так, к сведению, у вас то светит. Железо в порядке - значит дело в программе. В некоторых контроллерах есть фуз делителя частоты, также нужно проверить что тактирование ведется от нужного источника тактирования. Если есть осциллограф - то смотрим сигнал на ноге контролера. Но мало у кого он есть. Берем временную диаграмму из даташита, пытаемся ее запрограммировать. Рисуем ее на бумажке в виде графика с временами, а прогу запускаем в симуляторе. Ошибке больше негде прятаться - она в коде. Но и симулятор не дает 100 % гарантии. Осциллограф - вот что бы помогло точно. Надеюсь, мои рассуждения вам помогут.
Аватара пользователя
Radist
 
Сообщения: 2253
Зарегистрирован: 01 июл 2009, 08:59
Откуда: Екатеринбург
прог. языки: асемблер AVR

Re: TSOP не корректно работает

Сообщение Michael_K » 15 апр 2010, 13:26

bondik писал(а):Michael_K большое спасибо,так и думал что моя вина, тогда подскажие пожалуйста какой делитель использовать.Использую кварц на 8МГц.

Ну, посчитайте-подберите.
Я бы использовал режим таймера, когда ТОР у таймера задается.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: TSOP не корректно работает

Сообщение sergy1976 » 15 апр 2010, 14:56

bondik писал(а): подскажие пожалуйста какой делитель использовать.Использую кварц на 8МГц.


Вот код настройки таймера1 в CV. Для TSOP 36, значение в регистре сравнения не 0х69, а другое. В прерывании по совпадению инвертируйте бит порта, к которому подключен ТСОП.
Код: Выделить всёРазвернуть
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 8000,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x69;
OCR1BH=0x00;
OCR1BL=0x00;


Для 36кГц: 8000/36=222. Чтобы получить меандр, прерывание должно возникать в два раза чаще. 222/2=111
111 = 0х6F = OCR1
sergy1976
 
Сообщения: 27
Зарегистрирован: 13 ноя 2009, 18:12
Откуда: Ярославль

Re: TSOP не корректно работает

Сообщение Michael_K » 15 апр 2010, 15:51

sergy1976 писал(а):Вот код настройки таймера1 в CV.

А вы уверены, что нужно прерывание "Output Compare" использовать, а не "Overflow"?
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: TSOP не корректно работает

Сообщение sergy1976 » 15 апр 2010, 19:53

Да, уверен, проверено на практике:)

В книге Белова А.В. "Создаем устройства на микроконтроллерах", 2007г., на стр.99 вверху описан режим "сброс при совпадении". На стр.112 скриншот с настройками для CV.
sergy1976
 
Сообщения: 27
Зарегистрирован: 13 ноя 2009, 18:12
Откуда: Ярославль


Вернуться в Новичкам или основы основ роботостроения.

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

Сейчас этот форум просматривают: Bing [Bot] и гости: 35