Нужна помощь с заданием несущей IR светодиода для ИК пульта

Обсуждаем контроллеры компании Atmel.
Vovik-78
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Нужна помощь с заданием несущей IR светодиода для ИК пульта

Сообщение Vovik-78 »

Всем доброго дня.
Понадобился дублер сигналов с пульта кондиционеров.
Сигналы должен был считывать и воспроизводить без зависимости от протоколов.
Было решено считывать длительности сигналов и пауз между ними и сохранять длительности в массив в микросекундах.
Потом воспроизводить их последовательность обратно.

В протеусе вроде все сохраняется и воспроизводится по длительности норм, но вот что то не могу решить вроде простую задачку – с несущей частотой ИК диода.
Как ее правильнее реализовать, исходя из моего кода?

Код: Выделить всё

#define F_CPU 1000000UL  
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

uint16_t signal[200];			// Массив хранения счетчика
uint8_t n_signal;			// Переменная порядкового номера записи в массив
uint8_t sw;				// Переменная последовательности действий Свитч1

ISR(INT0_vect){					// Обраьотчик внешнего прерывания (читаем импульсы)
	switch (sw){
		case 0:
			TIMSK|=(1<<TOIE1);	// Разрешаем прирывание по переполнению
			TCCR1B|=(1<<CS10);	// настройка таймер-счетчика без делителя, 1 такт=1мкс
			TCNT1=0;			        // Обнуляем счетный регистр	
			sw=1;				// Переход к следующему действию
			PORTD&= ~(1<<PIND7);
		break;
		
		case 1:
			signal [n_signal]=TCNT1; // Сохраняем значение счетчика в массив
			TCNT1=0;
			n_signal++;				// Инкркментируем порядковый номер в массиве
		break;
	}	
}


ISR(TIMER1_OVF_vect){			// Обработчик прерывания по переполнению (отклчаем все, если пауза длинная)
	
	TCCR1B&= ~(1<<CS10);		// Выключаем таймер-счетчик
	TIMSK&= ~(1<<TOIE1);		// Запрещаем прирывание по переполнению
	GICR&= ~(1<<INT0);			// Запрещаем работу внешнего прерывания	
	TCNT1=0;					// Обнуляем счетный регистр	
	print_N_Signals();			//выводим количиство считаных имульсов	
	sw=0;
	n_signal=0;

	
}

ISR(TIMER1_COMPB_vect){				// Обрпботчик прерывания по совпадению
	n_signal++;
	if (signal[n_signal]!=0)
	{
		PORTD^=(1<<PIND5);			// Инвертируем состояние ИК светодиода
		TCNT1=0;					     // Обнуляем счетный регистр
		OCR1B= signal[n_signal];	            // устанавливаем в регистр совпадения Новое сохраненное значение
		
	} 
	else
	{
		TCCR1B&= ~(1<<CS10);		// Выключаем таймер-счетчик
		TIMSK&= ~(1<<OCIE1B);		// Запрешаем прирывание по совпадению
		OCR1B=0;					// Обнуляем регистр сравнения
		TCNT1=0;					// Обнуляем счетный регистр
		PORTD&= ~(1<<PIND5);		// Отключаем ИК светодиод
		print_N1_Signals();			// Выводим количиство Блинков имульсов
		n_signal=0;
	}
		
	
}


int main(void)
{
	lcd_init();
	DDRD &= ~(1<<2);			// Порт пина 3 INT1 на вход
	PORTD|=(1<<PIND2);			// Пин порта 3 - Высокий потенциал
	
	DDRD &= ~(1<<4);			// Порт пина 4 (кнопка) на вход
	PORTD|=(1<<PIND4);			// Пин порта 4 - Высокий потенциал	
	
	DDRD &= ~(1<<1);			// Порт пина 1 (кнопка) на вход
	PORTD|=(1<<PIND1);			// Пин порта 1 - Высокий потенциал
	
	DDRD|=(1<<7);				// Настройка порта Сигнального светодиода
	PORTD&= ~(1<<PIND7);		// Настройка пина Сигнального светодиода
	
	DDRD|=(1<<5);				// Настройка порта ИК светодиода
	PORTD&= ~(1<<PIND5);		// Настройка пина ИК светодиода
	
	
	sei();						 // разрешить глобально прерывания.
	
	print_N_Signals();			//выводим количиство считаных имульсов
	_delay_ms(5);
	
	
	while (1)
	{
		if (~PIND&(1<<PIND4)){			// кнопка старта записи сигнала
			_delay_ms(200);		
			n_signal=0;	
			print_N_Signals();
			MCUCR|=(1<<ISC00);			// Настраиваем прерывание по любому изменению уровня	
			GICR|=(1<<INT0);			// Разрешаем работу внешнего прерывания
			PORTD|=(1<<PIND7);			// Зажигаем светодиод	
			
		}
		
		
		if (~PIND&(1<<PIND1)){				// кнопка старта воспроизведения сигнала
			_delay_ms(200);
			n_signal=0;
			if (signal[n_signal]!=0){
				TCCR1B|=(1<<CS10);			// Включаем таймер-счетчик без делителя
				TIMSK|=(1<<OCIE1B);			// Разрешаем прирывание по совпадению
				PORTD|=(1<<PIND5);			// Зажигаем IR светодиод
				OCR1B|= signal[n_signal];	    // устанавливаем в регистр совпадения первое сохраненное значение
			
			}			
					
		}
		
		
	}
} 


В коде еще подключен знакосинтезирующий дисплей 2004, но он пока что только для контроля постоянства количества считанных сигналов. Выводит их количество. В окончательном варианте его вообще не будет.
Реклама
u37
Сверлит текстолит когтями
Сообщения: 1242
Зарегистрирован: Пн май 01, 2017 20:01:45

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение u37 »

Возьмите аппаратный таймер, с выходом наружу, запустите его на частоту 36 кГц. Теперь, ваш излучающий светодиод нужно подключить к двум выводам процессора (через резистор, конечно) - один на выход таймера, где всегда будет генерироваться 36 кГц, и другим портом, где вы выдаете последовательность вспышек.
Реклама
Vovik-78
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение Vovik-78 »

[uquote="u37",url="/forum/viewtopic.php?p=4487463#p4487463"]Возьмите аппаратный таймер, с выходом наружу, запустите его на частоту 36 кГц. Теперь, ваш излучающий светодиод нужно подключить к двум выводам процессора (через резистор, конечно) - один на выход таймера, где всегда будет генерироваться 36 кГц, и другим портом, где вы выдаете последовательность вспышек.[/uquote]

Читал вроде про такое решение, на таймер с СТС, но вроде пишут, что нагрузка на ИК диод великовата для питания через порты напрямую.
может попробовать так как вы пишите но добавить по транзисторному ключу (на "+" и GND) один npn а другой pnp? Или частота и длительность сильно поплывут?
И еще, а будет иметь значение на каком из пинов будет высокий уровень? Или он на 36кГц должен быть?

Добавлено after 3 hours 45 minutes 40 seconds:

Смоделировал в протеусе с двумя транзисторными ключами - Вроде работает.
Попробую завтра в железе собрать. Нужно только простой диод по мощнее купить, для эксперимента.
u37
Сверлит текстолит когтями
Сообщения: 1242
Зарегистрирован: Пн май 01, 2017 20:01:45

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение u37 »

Тоже вариант - поставьте MOSFET, например дешевые 2n7002.
Как понимаю, питание у вас "сетевое" и особой экономии потребления не требуется. Тогда можно сделать так:
- выходы 36к и on/off подать на затворы двух транзисторов, истоки на землю, а между стоками подключить светодиод
- сток транзистора 36к подключить к Vcc через резистор. Он будет задавать "ток" светодиода. Для питания 5В и тока 100 мА (и одного светодиода) это будет 5-1.7=3.3В; 3.3В 100 мА = 33 Ом.
На этом резисторе будет всегда рассеиваться мощность ~4В ~100 мА, т.е. 0.5 Вт резистор нужен.
Теперь, когда НЕ нужно излучать, оба транзистора стоит выключить, дабы не тратить энергию в нагрев платы. Т.е. таймер / его вывод переводить в генерацию только перед непосредственной передачей и выставлять в состояние 0 после передачи.
Можно использовать и биполярные транзисторы, но у них весьма чувствительный хвост выключения и на 36 кГц это уже чувствительно. Т.е. просто поставить резистор в базу - не получится, он слишком долго будет выключаться. Впрочем, тоже можно, вы же можете скорректировать время выключения изменением скважности. ... но с MOSFET гораздо предсказуемее и настривать не нужно.

Remark
Вообще, если ставить "транзисторы", то схему можно упростить до одного транзистора:
-выход on/off через резистор 1к подать на затвор 2n7002, его исток на землю, сток через резистор и светодиод на Vcc.
- выход 36к через диод обратной полярности подключить к затвору того-же транзистора. Диод поставить такой полярности, что-бы когда на выходе 36к будет 0, затвор закорачивался через диод и на затворе было-бы не более ~1В.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15589
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение BOB51 »

Можно аппаратный адаптер приладить...
https://img.radiokot.ru/files/20529/r2u6lo2fd.GIF
:roll:
Реклама
Vovik-78
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение Vovik-78 »

Изображение

Вот такой вариант прокатит?
Или к Q2 нужно резистор между VCC
Реклама
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение Martian »

нужен резистор. кз ведь практически, ток будет максимальным за вычетом падения напряжения на диоде и насыщения переходов, что-то точно сгорит
u37
Сверлит текстолит когтями
Сообщения: 1242
Зарегистрирован: Пн май 01, 2017 20:01:45

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение u37 »

1. поменяйте местами pnp и npn, npn на выход таймера. Дело в том, что npn быстрее, при тех-же параметрах. Транзисторы следует брать с 5-кратным запасом по току. Или, проще говоря: *8050 и *8550.
2. для транзистора с выхода таймера, параллельно его резистору (ваши 1к) поставьте конденсатор 2 нФ (1-10). Это уменьшит время выключения.
3. последовательно с светодиодом поставьте резистор. Ну, как-бы, не прилично. ))
Vovik-78
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение Vovik-78 »

Изображение

Такая схема, я правильно понял?
Справится со скоростью 76 кГц скоростью переключения (если я правильно понимаю, то именно такая частота нужна для получения несущей частоты через Toggle OC2 38 кГц)?

Добавлено after 10 minutes 17 seconds:

Единственное, мне не нужна большая дальность. Может взять светодиодик по слабее, 3мм (L-34F3C - есть в наличии в магазине) 20мА
Одним транзистором сможем тогда обойтись? Или может вообще без него/них?

На контроллера со светодиодом будет висеть 3 прибора. RFM69HW, Ик диод и либо термодатчик либо терморезистор.
Последний раз редактировалось Vovik-78 Ср окт 11, 2023 12:54:34, всего редактировалось 1 раз.
u37
Сверлит текстолит когтями
Сообщения: 1242
Зарегистрирован: Пн май 01, 2017 20:01:45

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение u37 »

Думаю, да. Только там ни фига не видно. ))
Если вы о частоте ИК вспышек, то цифра 38 кГц весьма условна. Если приемник расчитан на 40к, а вы будете передавать на 34к, то он сигнал примет. Просто у него будет сниженная чувствительность на такой сигнал. Конкретных цифр не помню, грубо - раза в 2 по сигналу. Так что, выдерживать частоту строго 38.000 кГц вовсе не обязательно.
Теперь, как это настраивать без осциллографа. Возьмите ИК приемник, запитайте его от другого источника (лучше, от батареек) и повеьте на его выход светодиод (с резистором). Он будет зажигаться при приеме несущей. Подбирая частоту смотрите дальность.
Подчеркну, если не заметили - приемник надо питать от отдельного источника и никак не соединять с (питанием) передатчика. "Приемник" - это сложная микросхема с крайне высокой чувствительностью. Она легко насасывает помехи и дает ложные срабатывания.
Vovik-78
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение Vovik-78 »

[uquote="u37",url="/forum/viewtopic.php?p=4487729#p4487729"]Подчеркну, если не заметили - приемник надо питать от отдельного источника и никак не соединять с (питанием) передатчика. "Приемник" - это сложная микросхема с крайне высокой чувствительностью. Она легко насасывает помехи и дает ложные срабатывания.[/uquote]
Приемник и передатчики будут разными устройствами.
вообще задумка такая:
Мне нужно устройство типа блока ротации кондиционеров. оно состоит из одного главного/управляющего устройства и нескольких ведомых (типа БУУР / БИС), связываются по радиоканалу. Но функционал нужен чуть другой.
Если БУУР / БИС рассчитан на поддержание температуры в серверной и ротации кондиционеров, то мне нужно устройство, которое будет включать некоторое количество мощных кондиционеров последовательно с небольшой задержкой для исключения перегрузок по сети.
Пусковые токи у сплитов большие, и при одновременном их включении все вырубает.
Вот я и хочу их включать последовательно с задержкой 5-15 секунд с контролем запуска компрессора.
ИК диод, в таких системах, обычно возле приемника крепится почти вплотную, Иногда через полупрозрачный корпус пластика.
С пульта, по очереди, их включать не получается, расположены высоко и близко друг к другу. По этому при нажатие на кнопку пульта - реагирут почти все сразу.
u37
Сверлит текстолит когтями
Сообщения: 1242
Зарегистрирован: Пн май 01, 2017 20:01:45

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение u37 »

Если расстояние будет в пару см., то ставить транзсторы нет нужды. Т.к. вам нет необходимости включать все 3 светодиода сразу, то "генератор" (таймер) можно сделать общим, а резистор+LED повесить на 3 порта и работать каждый раз с одним из них.
Дабы не перегружать выход, поставьте резистор(ы) 330-680 Ом.
В программе придется учесть и одинаковые команды (выключения, например) выдавать индивидуально на каждый LED, а не скопом. Вообще, это даже хорошо, меньше ударов по сети. Вроде, за этим всё и затевалось.
Vovik-78
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение Vovik-78 »

А откуда / или зачем 3 светодиода?
У меня предусмотрен был один. как указано на скрине с Протеуса.
один передатчик на одном контроллере на один кондиционер.
Главное устройство работает по очереди с одним из нескольких ведомых.
u37
Сверлит текстолит когтями
Сообщения: 1242
Зарегистрирован: Пн май 01, 2017 20:01:45

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение u37 »

Зачем вам три коробки? Это носенс, делайте одну (с 3 LED). Всё равно у вас источник команд (пульт) в одном экземпляре.
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение roman.com »

а я сделал как писали выше...
u37 писал(а):Возьмите аппаратный таймер, с выходом наружу, запустите его на частоту 36 кГц. Теперь, ваш излучающий светодиод нужно подключить к двум выводам процессора (через резистор, конечно) - один на выход таймера, где всегда будет генерироваться 36 кГц, и другим портом, где вы выдаете последовательность вспышек.
правда дальность маленькая... максимум пару метров)) но для управления теликом по интернету мне хватает))
ИК_пульт по Интернету.jpg
(144.98 КБ) 62 скачивания
МК любой...
у меня мега328 читает и воспроизводит сигналы всех пультов в доме))
NEC.jpg
(89.09 КБ) 57 скачиваний
SAMSUNG_1.jpg
(64.23 КБ) 50 скачиваний
SAMSUNG_0.jpg
(79.5 КБ) 51 скачивание
и т.д.
:tea:

Добавлено after 47 minutes 37 seconds:
Re: Нужна помощь с заданием несущей IR светодиода для ИК пульта
а потом я выкинул все таймеры... и подключил ИК светодиод на свободный пин МК...
:tea:
и фотоприёмник TSOP подключил на свободный пин МК... и завёл в прерывание по изменению уровня...
:tea:
Screenshot_1.jpg
(82.78 КБ) 49 скачиваний
при передаче тупо дергаю пин МК с частотой 36 кгц... с помощью простого delay ))

Код: Выделить всё

//////////////////////////////////////////////////////////////////////////TX_TV:
unsigned char TX_TV_st;    // счёт байт
unsigned char TX_TV_Mask;  // маска
///////////////////////////////////////////////
void TX_TV(void)
{
  /////////////////////////////////////////////// TX: NEC    
  // Преамбула 9000 us / 27 us = 324 
  //for (y=0; y<324; y++) { 
  //   PORTC.0=1;      
  //   delay_us(13);           
  //   PORTC.0=0;      
  //   delay_us(9);           
  //};
  /////////////////////////////////////////////// TX:  TV SAMSUNG   
  //TV SAMSUNG 
  //22h - длительность преамбулы. -4,5 mc
  //22h - длительность преамбулы. -4,5 mc
  //07h - адрес устройства (SAMSUNG).
  //07h - адрес устройства (SAMSUNG).
  //68h - адрес команды (номер кнопки).
  //97h - инверсия адрес команды (номер кнопки).
  TX_int[0] = 0x07;     
  TX_int[1] = 0x07;     
  //TX_int[2] = 0x68;
  TX_int[3] =~ TX_int[2];
  /////////////////////////////////////////////// TX:  TV SAMSUNG   
  // Преамбула 4500 us / 27 us = 162
  for (y=0; y<162; y++) { 
     PORTC.0=1;      
     delay_us(13);           
     PORTC.0=0;      
     delay_us(9);           
  };
  /////////////////////////////////////////////// TX: TV SAMSUNG    
  // Преамбула 4500 us
  delay_us(4500);
  /////////////////////////////////////////////// TX: байт SAMSUNG
  //for (TX_Modem_st=0;  TX_Modem_st<48;  TX_Modem_st++) { // 48     
  for (TX_TV_st=0;  TX_TV_st<4;  TX_TV_st++) {   // 4
  /////////////////////////////////////////////// TX: Data: TV SAMSUNG
  TX_TV_Mask=0b00000001;
  do  {
    ///////////////////////////////////////////// TX: Data: TV SAMSUNG  
    // Маркер 560 us / 27 us = 23 
    for (xTX=0; xTX<23; xTX++) { 
      PORTC.0=1;      
      delay_us(13);           
      PORTC.0=0;      
      delay_us(9);           
    };
    ///////////////////////////////////////////// TX: 1 <> 0 SAMSUNG  
    delay_us(560);  
    if (TX_int[TX_TV_st] & TX_TV_Mask) {delay_us(1125);};
    TX_TV_Mask=(TX_TV_Mask<<1);    
  }
  while (TX_TV_Mask);
  /////////////////////////////////////////////// TX: байт END TV SAMSUNG
  };
  /////////////////////////////////////////////// TX: стоп TV SAMSUNG   
  // Маркер 560 us / 27 us = 23 
  for (xTX=0; xTX<23; xTX++) { 
    PORTC.0=1;      
    delay_us(13);           
    PORTC.0=0;      
     delay_us(9);           
  };
  /////////////////////////////////////////////// TX:     
  //PORTC.0=0;     // сброс TX 
 }
да, импульсы не такие идеальные как с таймером... и кварцевым генератором))
но как показывает практика... и так всё нормально работает... от обычного встроенного RC-генератора))

и всё это работает по интернету... по витухе... с PoE...

этот ИК путь ещё и температуру передаёт... по тому же интернету))

я надеюсь в серверной есть интернет ? ))
:tea:
Vovik-78
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение Vovik-78 »

[uquote="roman.com",url="/forum/viewtopic.php?p=4487761#p4487761"]при передаче тупо дергаю пин МК с частотой 36 кгц... с помощью простого delay ))
:tea:[/uquote]

Ну так у вас, как я понимаю, тут уже все сигналы дешифрованы.
Зачем тогда приемник?

Мне же нужно что бы зашить можно было 2 команды с любого пульта управления и потом их воспроизвести. По этому схема с приемником через внешнее прерывание и сохранение длительностей однозначно должны остаться.

И тогда к Вам, как уже изрядно поюзавшему эту тему такой вопрос:
Столкнулся с проблемой такой.
Макетка сигналы всех пультов читает нормально, кроме сигнала с пульта кондиционера. При этом еще и зависает после приема, не хочет принимать новый сигнал.
Хотя когда я подобрал на телефоне с ИК программу с пультом от того же кондиционера, то сигналы с телефонного ИК он читает нормально и не виснет. Пульт проверил, кондером управляет. С телефона тоже управляется, но родной пульт моя программка не читает правильно. Может посмотрите код вверху, может я где то накосячил?
roman.com
Друг Кота
Сообщения: 9175
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение roman.com »

Vovik-78 писал(а):Ну так у вас, как я понимаю, тут уже все сигналы дешифрованы.
Зачем тогда приемник?
приемник нужен для считывания кнопок пультов... т.к. изначально я не знаю номера кнопок пультов))

берём TSOP... подключаем к нашему интернет пульту... считываем номера кнопок... выводим данные на комп...
ИК_1.jpg
(173.98 КБ) 59 скачиваний
ИК_2.jpg
(168.26 КБ) 55 скачиваний
ИК_3.jpg
(166.87 КБ) 52 скачивания
...
и т.д.

потом приводим данные к нормальному виду... согласно стандарту...
SAMSUNG.jpg
(48.69 КБ) 60 скачиваний
TV приставка.jpg
(34.9 КБ) 51 скачивание
...
и т.д.

потом забиваем полученные данные в программу МК... или в программу компа... или в программу телефона...
и затем управляем чем хотим))
:tea:

Добавлено after 4 minutes 7 seconds:
Re: Нужна помощь с заданием несущей IR светодиода для ИК пульта
получился аналог заводского анализатора пультов...
анализатор ИК пультов.jpg
(107.35 КБ) 60 скачиваний
данные можно записать на комп... в журнал...
журнал.jpg
(134.91 КБ) 51 скачивание
к слову...
вместо анализатора и осциллографа можно использовать звуковую карту компа... с записью на комп и последующего анализа...
Screenshot_1 (1).jpg
(166.29 КБ) 52 скачивания
...
и т.д.
:tea:

Добавлено after 10 minutes 59 seconds:
Re: Нужна помощь с заданием несущей IR светодиода для ИК пульта
программа приёмника (анализатора) работает просто))

подключаем TSOP к любому выводу МК... настраиваем прерывание по изменению уровня... считаем время в микросекундах между прерываниями...
NEC.jpg
(81.75 КБ) 53 скачивания
подробнее...
я использую два таймера:
- таймер 0 - 8 бит - для определения окончания пакета.
- таймер 1 - 16 бит - для подсчёта времени между прерываниями.

1.
прилетает пакет... срабатывает прерывание... МК просыпается... выходит из режима SLEEP... запускается таймер 0 и таймер 1...
время пробуждения.jpg
(147.76 КБ) 44 скачивания
2.
при каждом изменении уровня срабатывает прерывание по уровню... сбрасывается таймер 0... записывается значение таймера 1 в массив... сбрасывается таймер 1... ждём следующего прерывания...
3.
по окончанию пакета переполняется таймер 0... срабатывает прерывание таймера 0... программа сбрасывается...
обработка пакета.jpg
(156.94 КБ) 46 скачиваний
4.
устанавливается флаг окончания пакета... данные передаётся на комп... МК засыпает... МК переходит в режим SLEEP...

всё просто))
:tea:

можно сделать чтоб МК читал сигнал ИК пульта...
потом записывал данные в EEPROM... (перед этим приводил данные к стандартному значению - это опция)
потом МК воспроизводил данные по нажатию кнопки...))
:roll:
но у меня такой задачи не стояло))
:tea:
у меня была задача - управление всем с телефона... по интернету и Wi-Fi.

Добавлено after 6 minutes 23 seconds:
Re: Нужна помощь с заданием несущей IR светодиода для ИК пульта
эту задачу я решил))
кнопочки)).jpg
(50.85 КБ) 45 скачиваний
:tea:
Vovik-78
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение Vovik-78 »

В общем дела такие.
Дублирование пульта телека работает в железе.
А вот от родного пульта кондера не получается. Что то считывает, но Дублирование не срабатывает.
Записываю сигнал эмулятора пульта с телефона - все дублируется с контроллера. Не могу пока понять в чем проблема.
Может есть у кого то идеи?
codenamehawk
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение codenamehawk »

Разные хитрые кодировки сигнала, нп. следующая посылка некоторые биты инвертированные.
https://winlirc.sourceforge.net/

Делал когда-то пульт
IR pult.rar
(141.85 КБ) 66 скачиваний
Делал и захват https://sites.google.com/site/mariankmh/home/ir-to-com
(гоггле файлы срятал)
Vovik-78
Встал на лапы
Сообщения: 95
Зарегистрирован: Чт дек 16, 2021 18:20:02

Re: Нужна помощь с заданием несущей IR светодиода для ИК пул

Сообщение Vovik-78 »

Спасибо. Гляну.
Но ведь я считываю и сигналы и паузы по продолжительности. И потом не деколирую а выдаю копии.
По идее не должно это влиять.
Ответить

Вернуться в «AVR»