реклама на сайте
подробности

 
 
> Приёмник и передатчик на ИК. Проблемы с передачей и приёмом., Схема и плата и софт, но вместе не работает хорошо...
Папа Карло
сообщение Feb 16 2008, 12:16
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 176
Регистрация: 15-02-08
Из: Москва
Пользователь №: 35 074



Всем привет.

Собрал контроллер и передатчик ИК и написал программы.

Идея такая, чтоб через самосборный джойстик передавать команды на контроллер.

Принцип работы ИК передатчика такой:

1) нажимаем кнопку
2) на контроллер приёмника пускается импульс определённой длительности

Вот код который генерирует импульсы по прерыванию:
Код
// Timer 0 output compare A interrupt service routine
interrupt [TIM0_COMPA] void timer0_compa_isr(void)
{
if(empty) PORTB.0++;//генерация несущей 30кГц
        else PORTB.0 = 0;

timen1++;
timen2++;


//Вычисление длинны импульса
if(pulse)
        {
        empty = 1;
        pulse--;
        }
if(!pulse) { empty = 0;}
}


Пакетный режим пока не выходит организовать, т.к. что то сбоит.
Удалось только подавать пакет вида /старт бит/бит данных/стоп бит/.
МК передатчика генерирует прерывание с частотой 60кГц.
И если нужно передать импульс, то на выход поступает сигнал.

Например лог 0 означает, подать импульс длительностью 20 прерываний.
Лог 1, импульс длительностью 90 прерываний.
Пауза между импульсами 100 прерываний.

Если не передавать пакеты, то приёмник довольно хорошо принимает импульсы и загорается нужный светодиод, но таким макаром мне удалось закодировать только 3 команды.

Если передавать пакетом всё накрывается sad.gif

У приёмника похожая логика.
Ножка сигнальная TSOP1730 подключена к выводу МК и генерирует прерывание.
Код
// Pin change 0-7 interrupt service routine
interrupt [PCINT0] void pin_change_isr0(void)
{
if(PINB.1 == 0)
        {empty = 1;}
else
        {empty = 0;}
}


А прерывание по таймеру происходит с частотой 60кГц и меряет длительность импульса:
Код
// Timer 2 output compare interrupt service routine
interrupt [TIM2_COMPA] void timer2_compa_isr(void)
{
timen++;
timeoff++;
timecomand++;

if(empty) timecount++;//отчёт длинны импульсов

if(timecount && !empty)
       {
       if(timecount > 7 && timecount < 40) pulse = 1;//лог 0
       if(timecount > 50 && timecount < 100) pulse = 2;//лог 1
//       if(timecount > 120 && timecount < 230) pulse = 3;//доп. команда
//       if(timecount > 250 && timecount < 550) pulse = 4;//доп. команда
       timecount = 0;
       }
}


А в цикле функции main уже идёт обработка данных, как у приёмника так и у передатчика.

Ниже подшиваю фотки платы, схемы и исходников на СИ в CodeVisionAVR с комментариями.

Очень хотелось бы понять, где закралась ошибочка ?

----------------------------------------------

Есть ещё интересный глюк, если передатчик включить и положить рядом с приёмником, то приёмник ловит иногда команды, но если передатчик выключить, то приёмник ничего не ловит.

Сообщение отредактировал Папа Карло - Feb 16 2008, 12:46
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение

 

Прикрепленные файлы
Прикрепленный файл  code_C.rar ( 5.33 килобайт ) Кол-во скачиваний: 45
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Папа Карло   Приёмник и передатчик на ИК. Проблемы с передачей и приёмом.   Feb 16 2008, 12:16
- - Dog Pawlowa   Цитата(Папа Карло @ Feb 16 2008, 16:16) Е...   Feb 16 2008, 13:33
|- - Папа Карло   Цитата(Dog Pawlowa @ Feb 16 2008, 16:33) ...   Feb 16 2008, 13:56
- - Serg_Mitin   Приветствую ПАПУ... Я бы начал искать с передатчик...   Feb 16 2008, 19:27
|- - Папа Карло   1) Шунтирующую емкость по питанию уже повесил на T...   Feb 16 2008, 19:57
- - Serg_Mitin   Без осциллографа туго.... питание 3В я хотел сказа...   Feb 16 2008, 20:26
|- - Папа Карло   Я уже бьюсь неделю с этой проблемой и много чего у...   Feb 16 2008, 21:42
|- - Папа Карло   Потестил с пультом от телека контроллер. Тестирова...   Feb 17 2008, 19:22
|- - Alex_Pol   Цитата(Папа Карло @ Feb 17 2008, 21:22) З...   Feb 17 2008, 20:38
|- - Папа Карло   Так и делал, вначале сменил резистор со 100 Ом на ...   Feb 18 2008, 07:34
|- - Alex_Pol   Цитата(Папа Карло @ Feb 18 2008, 09:34) Т...   Feb 18 2008, 11:27
|- - Папа Карло   Цитата(Alex_Pol @ Feb 18 2008, 14:27) Ещё...   Feb 18 2008, 12:01
||- - Alex_Pol   Цитата(Папа Карло @ Feb 18 2008, 14:01) Р...   Feb 18 2008, 12:39
||- - Папа Карло   Цитата(Alex_Pol @ Feb 18 2008, 15:39) Мож...   Feb 18 2008, 13:33
||- - Dog Pawlowa   Цитата(Папа Карло @ Feb 18 2008, 17:33) С...   Feb 18 2008, 13:44
||- - Alex_Pol   Цитата(Папа Карло @ Feb 18 2008, 15:33) С...   Feb 18 2008, 13:58
||- - Папа Карло   В ДШ сказано до 4Мгц, а у меня МК на 4.8МГц работа...   Feb 18 2008, 15:45
||- - Alex_Pol   Цитата(Папа Карло @ Feb 18 2008, 17:45) В...   Feb 18 2008, 18:03
||- - Папа Карло   Потестил на макетной плате ИК диод с разными подкл...   Feb 18 2008, 21:02
||- - Alex_Pol   Цитата(Папа Карло @ Feb 18 2008, 23:02) И...   Feb 19 2008, 00:33
||- - Папа Карло   Проверил диод на плате джойстика, он оказался нера...   Feb 19 2008, 06:43
||- - Папа Карло   Странно, что на такой простой вопрос не могут отве...   Feb 19 2008, 08:02
|||- - tyro   Цитата(Папа Карло @ Feb 19 2008, 11:02) И...   Feb 19 2008, 09:22
||- - Alex_Pol   Цитата(Папа Карло @ Feb 19 2008, 08:43) З...   Feb 19 2008, 08:48
|||- - Папа Карло   Цитата(Alex_Pol @ Feb 19 2008, 11:48) Это...   Feb 19 2008, 10:52
|||- - tyro   Цитата(Папа Карло @ Feb 19 2008, 13:52) ...   Feb 19 2008, 11:06
|||- - Папа Карло   Цитата(tyro @ Feb 19 2008, 14:06) Так у В...   Feb 19 2008, 11:18
||- - =GM=   Цитата(Папа Карло @ Feb 19 2008, 06:43) Т...   Feb 19 2008, 11:54
||- - Папа Карло   Цитата(=GM= @ Feb 19 2008, 14:54) нет так...   Feb 19 2008, 12:40
||- - =GM=   Цитата(Папа Карло @ Feb 19 2008, 12:40) Ж...   Feb 19 2008, 13:33
||- - =GM=   Цитата(Папа Карло @ Feb 19 2008, 12:40) Ж...   Feb 19 2008, 14:14
||- - Папа Карло   Цитата(=GM= @ Feb 19 2008, 17:14) У вас н...   Feb 19 2008, 20:24
||- - =GM=   Цитата(Папа Карло @ Feb 19 2008, 20:24) Ф...   Feb 19 2008, 22:45
||- - Папа Карло   Цитата(=GM= @ Feb 20 2008, 01:45) у вас б...   Feb 20 2008, 06:50
||- - =GM=   Цитата(Папа Карло @ Feb 20 2008, 06:50) Н...   Feb 20 2008, 12:39
||- - Папа Карло   Цитата(=GM= @ Feb 20 2008, 15:39) одну ош...   Feb 20 2008, 13:00
||- - Папа Карло   Написал программу для передатчика. Отправляет пак...   Feb 20 2008, 21:01
|- - Жорик_у   Цитата(Alex_Pol @ Feb 18 2008, 14:27) Для...   Feb 27 2008, 13:29
|- - =GM=   Цитата(Жорик_у @ Feb 27 2008, 13:29) пове...   Feb 27 2008, 15:49
||- - Vlad219i   Цитата(=GM= @ Feb 27 2008, 18:49) Вы случ...   Feb 27 2008, 15:56
|- - AntonS   Цитата(Жорик_у @ Feb 27 2008, 15:29) У ме...   Mar 1 2008, 13:31
- - bbill   В передатчике уберите диод по питанию, на микрохем...   Feb 18 2008, 11:35
- - bbill   Из реальной старой работы: Было написано для tn12,...   Feb 19 2008, 13:45
- - GDI   ЦитатаДШ на attiny13: http://www.chip-dip.ru/libra...   Feb 19 2008, 14:42
- - AntonS   TSOP-ы хорошо принимают только короткие пачки импу...   Feb 22 2008, 15:04
|- - Папа Карло   Протестировал в VMLAB передатчик с таким кодом: Ко...   Feb 23 2008, 12:02
- - vet   Папа Карло, я так понимаю, вы формируете меандр де...   Feb 23 2008, 17:45
|- - Папа Карло   Цитата(vet @ Feb 23 2008, 20:45) Просто...   Feb 23 2008, 19:00
|- - vet   Цитата(Папа Карло @ Feb 23 2008, 22:00) П...   Feb 23 2008, 19:46
|- - Папа Карло   Цитата(vet @ Feb 23 2008, 22:46) другим с...   Feb 23 2008, 21:02
- - vet   Папа Карло, да, ознакомившись с первыми постами те...   Feb 24 2008, 10:38


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01496 секунд с 7
ELECTRONIX ©2004-2016