Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Эмулятор ИК пультов
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
AlexTech
Вот возникла необходимость замутить такой девайс: управление несколькими бытовыми приборами с помощью ИК. Микроконтроллер управляется с помощью кнопок(6) и командами с компа через usb или com, и соответственно должен выдавать ИК команды предварительно записанные с "родных" пультов.
Схемотехника понятна и примитивна, а вот как генерировать пачки ИК импульсов с несущей 38-40кгц я чего-то никак не могу придумать. Может есть у кого идеи или готовые наработки, помогите пожалуйста разобраться...

Целевой девайс будет на AT90S2313, 12мгц
Тестовая платформа - Mega16, 8мгц

ЗЫ. Для любыпытствующих: это будет работать в автомобиле - кнопки те которые на руле стоят, компутер - CarPC, а управлять будет магнитолой и монитором.
jekler
думаю ЭТО то что нужно
Ramil
Тоже мысль возникала сделать универсальный пульт для себя.
Из идей - это использовать какой нибудь готовый пульт в который встраивается своя платка,
которая понимала бы сигналы излучаемые этим пультом и выдавала нужный.
Плюс в том что есть готовый корпус с кнопками, нужно только подключить выход
на свою схему а из нее на излучатель.

У атмела есть апноты
AVR410: Приемник RC5 инфракрасного дистанционного управления
описание
исходники
AVR415: Передатчик RC5 инфракрасного дистанционного управления
описание
исходники
AlexTech
Цитата(jekler @ Apr 1 2007, 15:02) *
думаю ЭТО то что нужно


Очень похоже ))) осталось с делителями частоты разобраться. Спасибо.
bodja74
Занимался я подобным года 2-3 назад,даже наваял тяжеловесную прогу для компа, столкнулся
с большим разнообразием протоколов ,с префиксами и суфиксами сигналов,так и не смог привести все это в какой то общий вид.
Поэтому если есть мысля типа универсального пульта - ориентируйтесь на какой то один протокол ,наиболее распостраненный RC-5 ,все однопроцессорные телики на нем и большинство DVD.
Наиболее распостраненная модуляция 38кГц и 455кГц.

Насчет использования в готовом корпусе пульта из атмела годится Тини28 c аппараным модулятором -она "затачивалась" под это.Памяти под универсалку маловато ,но шить под конкретный аппарат можно
(типа как пульты BQS)
rezident
Фирма SONY начала производить универсальные обучаемые пульты ДУ еще лет 15 назад. Сейчас если это и актуально, то лишь для целей самообразования ИМХО.
P.S. Когда-то на форуме rc5.ru был опенсорсный проект по считыванию кодов от различных ТВ-пультов ДУ на компьютере и была база этих кодов. Сейчас видимо этот проект аннулировали.
AndryG
Цитата
а вот как генерировать пачки ИК импульсов с несущей 38-40кгц я чего-то никак не могу придумать. Может есть у кого идеи или готовые наработки, помогите пожалуйста разобраться...


http://www.remexpert.com/forum/viewtopic.php?t=1000
http://www.remexpert.com/forum/viewtopic.php?t=1003
Kolia
может пригодиться

http://www.petesworld.demon.co.uk/homebrew...picprojects.htm
Pyku_He_oTTyda
Цитата
Схемотехника понятна и примитивна, а вот как генерировать пачки ИК импульсов с несущей 38-40кгц я чего-то никак не могу придумать. Может есть у кого идеи или готовые наработки, помогите пожалуйста разобраться...

я на АВР делал, соневский. Очень просто: запускаем ШИМ, настроенный на 38 кгц, по окончании посылки останавливаем.
VAHOO
Цитата(Pyku_He_oTTyda @ Apr 2 2007, 18:01) *
я на АВР делал, соневский. Очень просто: запускаем ШИМ, настроенный на 38 кгц, по окончании посылки останавливаем.


а можно примерчик?
Pyku_He_oTTyda
правда он корявый, сделано на ТИНИ26, 8Мгц выход с PВ1

//Timer/Counter 1 установки таймера
PLLCSR=0b00000110;
TCCR1A=0b11000010;
TCCR1B=0b00000100;
TCNT1=0x00;
OCR1A=100;
OCR1B=0x00;

void waitPLL(void)
{
//ждем синхронизации PLL при запуске МК (ШИМ тактируется от //встроенного PLL на 64 МГц
while((PLLCSR&0x01)==0);
}


// генерация старт-бита для посылки сони
void start(void)
{
TCCR1B|=0x80;
OCR1C=199; //запуск таймера
delay_2.4(); //задержка 2,4 мс (формируется TIMER0) в принципе //можно использовать и задержки из <delay.h>, тогда будет
// delay_us(2400); - проверял - работает, но так писать проги //несколько неправильно
OCR1C=0; //стоп таймера
delay_0.6(); // пауза до посылки следующего импульса (определено протоколом SIRC) (аналогично работает delay_us(600); )
}

насчет програмных задержек, просто, но не всегда надежно - компилятор может и дурить, выход отсчитывать временные интервалы с помощью другого таймера (душевное спокойствие гарантировано) или контролировать то, что получилось осцилографом
aesok
Цитата(Pyku_He_oTTyda @ Apr 3 2007, 06:57) *
....
// delay_us(2400); - проверял - работает, но так писать проги //несколько неправильно
....
// ..... delay_us(600); )
}


Не правильно, правильно так:
delay_ms(2.4);
delay_ms(0.6);

И оптимизация как минимум -O1.

Анатолий.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.