roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 20:19

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: TSOP не корректно работает
СообщениеДобавлено: 14 апр 2010, 21:21 
Не в сети

Зарегистрирован: 14 апр 2010, 20:57
Сообщения: 26
Здраствуйте.Собрал тележку из двух машинок ( как в теме "они выделяют фенол")
Вложение:
SNC00036.jpg
SNC00036.jpg [ 1.2 МиБ | Просмотров: 1822 ]

Первое что решил сделать это разобраться с TSOP 1736.Собрал на своей монтажке.
Вложение:
SNC00038.jpg
SNC00038.jpg [ 1.15 МиБ | Просмотров: 1833 ]

Как видно из следуещей фотографии при прямой видимости тсоп срабатывает и светится светик
Вложение:
SNC00037.jpg
SNC00037.jpg [ 1.23 МиБ | Просмотров: 1814 ]

Проблема заключается в том что если я делаю импровезированное препятствие тсоп срабатывает только при расстоянии до 3 сантиметров =( хотелось бы больше
Вложение:
SNC00039.jpg
SNC00039.jpg [ 1.11 МиБ | Просмотров: 1852 ]

Вот код программы ( 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 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 14 апр 2010, 21:54 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 14 апр 2010, 22:09 
Не в сети
Аватара пользователя

Зарегистрирован: 12 янв 2007, 00:34
Сообщения: 6285
Откуда: Масква
Какая чудная компановка! :good:
А по теме, извиняюсь, сказать нечего :oops:

_________________
.............солнце светит, птички поют, я - зелёный бамбук меня тянет к солнцуЯ - зелёный бамбук, я - зелёный бамбук , меня тянет к солнцу. Я - не огурчик и не лягушка, я - зелёный бамбук. Меня курят...............


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 14 апр 2010, 22:28 
Не в сети
Аватара пользователя

Зарегистрирован: 23 окт 2007, 22:03
Сообщения: 3037
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец
Возможно мал ток через светодиод, или частота импульсов не совпадает с частотой ТСОП.

Добавлено спустя 8 минут 40 секунд:
...и ещё, судя по коду, ты генерируешь импульсы постоянно, а надо пачки импульсов по 12-15 штук с паузой.
Смотри даташит на ТСОП.
З.Ы. Да, и схему пожалуйста в студию.

_________________
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 14 апр 2010, 23:25 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 14 апр 2010, 23:48 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 14 апр 2010, 23:49 
Не в сети
Аватара пользователя

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

_________________
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 15 апр 2010, 00:03 
Не в сети
Аватара пользователя

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

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

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

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

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

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

А тсопы - они выпускаются много лет и _работают_корректно_,
так что название темы - это лол.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 15 апр 2010, 09:58 
Не в сети

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


Последний раз редактировалось bondik 15 апр 2010, 10:24, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 15 апр 2010, 10:05 
Не в сети
Аватара пользователя

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

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 15 апр 2010, 11:29 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 15 апр 2010, 13:26 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
bondik писал(а):
Michael_K большое спасибо,так и думал что моя вина, тогда подскажие пожалуйста какой делитель использовать.Использую кварц на 8МГц.

Ну, посчитайте-подберите.
Я бы использовал режим таймера, когда ТОР у таймера задается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 15 апр 2010, 14:56 
Не в сети

Зарегистрирован: 13 ноя 2009, 18:12
Сообщения: 27
Откуда: Ярославль
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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 15 апр 2010, 15:51 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
sergy1976 писал(а):
Вот код настройки таймера1 в CV.

А вы уверены, что нужно прерывание "Output Compare" использовать, а не "Overflow"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: TSOP не корректно работает
СообщениеДобавлено: 15 апр 2010, 19:53 
Не в сети

Зарегистрирован: 13 ноя 2009, 18:12
Сообщения: 27
Откуда: Ярославль
Да, уверен, проверено на практике:)

В книге Белова А.В. "Создаем устройства на микроконтроллерах", 2007г., на стр.99 вверху описан режим "сброс при совпадении". На стр.112 скриншот с настройками для CV.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO