Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 20.10.2013, 18:49  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Универсальный декодер ДУ, самый лучший алгоритм

Добрый вечер уважаемые!
Требуется разработать декодер для сохранения в буфер команд с любого протокола ДУ. Разработал вариант, основанный на подсчете интервалов импульсов и пауз, все вроде хорошо, но есть недостатки.
- бывает, возникают трудности с обучением команд
- много ресурсов занимает сохранение одной команды (24 байта).

Хочется оптимизировать работу устройства.
Забыл добавить , мой метод работает почти с любыми протоколами ИК ДУ

Проверил на NEC, Sony SIRC, Sanyo.
RC5 , RC6 - из за тоджл бита команда срабатывает через одно нажатие.

Есть идея попробовать делать дискретные замеры состояния ножки , и сохранять в память. Стоит ли пробовать? И может есть лучше метод?
С ув. Артем
Реклама:
artyomugr вне форума  
Непрочитано 20.10.2013, 20:24  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Универсальный декодер ДУ, самый лучший алгоритм

Меряем длительности времени "есть импульсы ИЛИ единица" - по этой длительности определяем единица или ноль, и в паузе ("нет импульсов ИЛИ ноль") сдвигаем 1 бит. Так для rc5 делаем 32 раза и на выходе получаем 4 байта. Этот алгоритм успешно ловит коды как с фотоприемника-декодера, так и напрямую с выхода чипа-передатчика (подключенного к базе управляющего светодиодом транзистора)
niXto вне форума  
Непрочитано 21.10.2013, 01:22  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Универсальный декодер ДУ, самый лучший алгоритм

Я нашел идеальный метод кодирования/декодирования команд. Уже пишу для будущего "мини-умного дома"
Девайсина будет обучаться любым радио брелкам , которые совпадают по несущей частоте. Метод основан на подсчете длительности каждого импульса , длительность которых в виде байтового числа сохраняется в ОЗУ , после я пакую в еепром 24с08. Метод очень прожорливый , 1 команда занимает 100байт памяти, благо что сейчас есть "жирные" контроллеры. Но зато такой метод, теоретически , работает с любым пультом

Код:
Код:
 void decode_ir_data()
 { 

    tim_system_rc=0x04; 
    
  if(start) // если установлен старт бит - начинаем измерять импульсы
  {
    data_ir[a] = timer_ir;
    a++;   
     timer_ir=0;      // обнуляем счетчик    
     
    if(a›99)
    {
      start=0;         // сбрасываем старт бит
      a=0;             // сбрасываем счетчик данных массива
      tim_system_rc=0; // сбрасываем системный таймер
       tim_stop=1;
    }  
  }
  
  
  if(start==0) //  старт бит установлен? нет!
  {
     start=0x01;   // да! 
     timer_ir=0;
  }   
     
  timer_vol=0;

 }


 void timer_stop()
 {
    start=0;
    tim_system_rc=0;
    tim_stop=1; 
    timer_vol=1;
    a=0;
 }

decode_ir_data() - код выполняется в обработчике прерывания ИНТ
timer_stop() - в прерывании по переполнению таймера

Код:
                                for(d=0; d‹100; d++)
                                 {
                                    
                                  
                                  if (data_ir_eep0[d] › 2)
                                  {
                                   if (((data_ir_eep0[d]+2) › data_ir[d]) && ((data_ir_eep0[d]-2) ‹ data_ir[d])) // команда Вкл.Откл. питание 
                                   {}
                                   else  cmd_ok=0; 
                                  } 
                                  
                                    timer_led_shou=0;
                                    data_ir[d]=0; // стираем буффер   
                                 }

Проверка принятой команды

Последний раз редактировалось artyomugr; 21.10.2013 в 01:35.
artyomugr вне форума  
Непрочитано 21.10.2013, 23:09  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Универсальный декодер ДУ, самый лучший алгоритм

Сообщение от artyomugr Посмотреть сообщение
Я нашел идеальный метод кодирования/декодирования команд.
Как насчёт протоколов с кодом повтора?
omercury вне форума  
Непрочитано 21.10.2013, 23:13  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Универсальный декодер ДУ, самый лучший алгоритм

схавает тоже. У меня с предыдущим способом работало замечательно, а с этим должно быть еще лучше.

Уже по крайней мере дружит с таким пультом : http://forum.cxem.net/index.php?show...0#entry1674496

У этого человека , шурует повтор , а посылка состоит из 52бит. Даже мой простой декодер с ним дружит по умолчанию.

Последний раз редактировалось artyomugr; 21.10.2013 в 23:28.
artyomugr вне форума  
Непрочитано 21.10.2013, 23:40  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Универсальный декодер ДУ, самый лучший алгоритм

Поставьте четвертый кортекс, памяти побольше, прямо на 1МГц пишите все, что на ногу прилетит и воспроизводите вместе с шумами. Не все ли равно? Железо нынче дешевое. Такой подход многие считают приемлемым.
Easyrider83 вне форума  
Сказали "Спасибо" Easyrider83
artyomugr (21.10.2013)
Непрочитано 21.10.2013, 23:55  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Универсальный декодер ДУ, самый лучший алгоритм

Я 8-биткой меряю длительность перепадов, и пишу в ОЗУ. А из ОЗУ в еепром 24Схх
открыл бинарник , а там еще и точность высокая : )) погрешность в одно значение.
Можно делать перехватчики таким способом.
У меня в Atmega328 влез декодер на 11 команд статическая индикация , работа с еепром 24С16 8 пунктов меню , в каждом меню от 4 до 10 подменю . на данный момент занято 48% .
artyomugr вне форума  
Непрочитано 21.10.2013, 23:57  
artyomugr
Вид на жительство
 
Аватар для artyomugr
 
Регистрация: 05.04.2008
Адрес: Украина, Ахтырка
Сообщений: 302
Сказал спасибо: 148
Сказали Спасибо 31 раз(а) в 30 сообщении(ях)
artyomugr на пути к лучшему
По умолчанию Re: Универсальный декодер ДУ, самый лучший алгоритм

Сообщение от Easyrider83 Посмотреть сообщение
прямо на 1МГц пишите все, что на ногу прилетит и воспроизводите вместе с шумами.
Улыбнуло : ))))
artyomugr вне форума  
Непрочитано 22.10.2013, 04:57  
zheleznjakov
Прописка
 
Аватар для zheleznjakov
 
Регистрация: 31.03.2010
Сообщений: 200
Сказал спасибо: 3
Сказали Спасибо 48 раз(а) в 41 сообщении(ях)
zheleznjakov на пути к лучшему
По умолчанию Re: Универсальный декодер ДУ, самый лучший алгоритм

Если просто принимать команды без ретрансляции может вот такой метод подойдет:
http://ziblog.ru/2013/05/14/distants...-ik-pulta.html
__________________
ziblog.ru
zheleznjakov вне форума  
Непрочитано 22.10.2013, 07:33  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Универсальный декодер ДУ, самый лучший алгоритм

Сообщение от Easyrider83 Посмотреть сообщение
Поставьте четвертый кортекс, памяти побольше, прямо на 1МГц пишите все, что на ногу прилетит
А они в корпусе сот-23 бывают, как мелкие ПИКи? А то размеры платы обычно очень ограничены, времена советских телевизоров с платой 300х400 уже давно прошли
niXto вне форума  
Сказали "Спасибо" niXto
Highlander (01.11.2013)
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простой копировщик домофонных ключей RECTO Микроконтроллеры, АЦП, память и т.д 7973 04.09.2016 02:46


Часовой пояс GMT +4, время: 20:06.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot