关于学习型红外遥控器,如何完美解决学习遥控数据的处理?
有个问题一直困扰我目前市面上有很多学习型遥控器,有些问题我也碰到过,比如只能学习有限的几种波形。
我的问题是,目前学习型遥控器,如何实现
1。采样一段时间的红外波形,同时判断什么波形,data,然后存储,用时直接调用波形,数据。
问题:这样必定需要一个很大的程序空间来判断所有种类的波形。
2。直接班波形时间如高低电平时长存储。用时即原班调用数据的高低电平来发送
问题:这样必定需要很大的EEPROM来存储每一个key的高低电平,同时,学习时按的时间长短如何取决,发送时如何循环?难道发送一次就完?
目前一直能难完美解决这个问题,希望做过的朋友能指点下,谢谢
第一次发帖,请多多关照! 有做过的 或者有更好方法的能帮下忙吗谢谢 好久没有碰过这个东西了,凭我的记忆说说吧。
首先,发送一个时间比较长的载波,作为起始的标志,起始码需要单独记录。
然后开始发送数据,数据码也就两种,检测到不同的电平长度,分别标记为0和1即可,例如无载波时间长度相同,有载波的时间长度有两种,把两种分别标记为0和1,然后把数据流和两种码的时间长度分别记录下来。
数据发送完后,有个比较长的无载波信号,这个长度需要单独记录。
然后,接着红外发送重复码,重复码有两种方式,一种是重复发生数据,一种是发送单独的重复码,后者数据长度比较短,只有几个数据而已。重复码发送完成后,又是一个比较长的无载波时间,这个时间可能与发送完数据后的那个时间不同,需要单独记录。然后又再发送重复码,重复码与前面的重复码相同。周而复此,直到松开按键。 我也被这个问题弄得头痛,这个得弄个国际标准 这个没有国际标准,不过市面上多数采用菲利普的那个标准,可以去找找这个看看 roasn 冰封的心
说的情况 应该说是记录时间的吧,如果一直不放手 ,一直学习也有个空间限制,毕竟存储有限,肯定只能给 比如200BYTE最多
问题来了
如果用这200B 来处理,比如处理0 1以及是什么样的波形,然后存放在一个8b的空间就可以了 但是这里需要很大量程序来判断是
RC5 还是 NEC还是TOSHIBA....等等市面上估计有20多种波形存在 那么要判断20多种,包括你说的 连续的还是不连续的。
其次,如果不处理这些数据而是 每个KEY给200b来存储学来的数据(高低电平时间),那么20KEY 就要4K 60K就要12K同时有8种
device的话 则需要12X8=96K EEPROM来存储学习数据,如果这样,显然还是挺大的。而且200B不一定能放下。
而且存200b数据的方法时对于那些 很长时间不发码的波形,这个低电平很长....所以定时器必须要达到130MS左右的 周期。
这样测0 1时精度就不会高了....
很麻烦
有知道目前市场上的是如何处理的吗? 能学习各种空调的遥控波形就NB啦 很多遥控器,按着不松手的波形和点按是不一样的! 最近,也在研究~~楼主用什么芯片?
点击此处下载 ourdev_507074.pdf(文件大小:294K) (原文件名:基于AT89S51的多功能红外遥控器设计.pdf) zbjzxc
你的PDF看过了只是个简单的遥控的设计流程 包括解码的原理
没有学习的
我开发时用的是AVR。 空调的波形不一样,是一个整体信息包 【6楼】 learnning
无论是哪种格式的编码,信号类型都不会很多,只需要存储不同长度的信号就行了,然后记录下这些不同的信号,最终用相当于查表的方式发送学习下来的编码。这样就不需要关心是什么格式的编码了。 【12楼】 roasn 冰封的心
记录这个信号 需要很大空间,比如34BIT的nec upd6122 高低电平记录时间的话 就应该68byte,16位定时器的话是
136byte 空间把一个完整的波形记录下来。发送时去从这136b的空间取出发送的话是不用关心编码的,
你说的应该是这个方式吧,这个方式就是占用空间比较多,60keys的话就是60X136B,当然我们不会是136b,因为有些波形
不止这么多,因而预留200b是最少的。
当然,我觉得好像还有个问题,查表方式发送上面的数据200完成了以后 是循环还是停止呢?毕竟如果用户一直按键的话
我们只发送一次波形?还是循环?循环不按波形规律?按规律就必须有判断什么波形。 额,没有人能帮忙下吗? 同求NEC协议详细PDF 在NEC协议中长按键的编码方式是如何定义的,哪位大侠能指点下 你还是没有看懂我的说法,我的意思不是每个bit都去记录,而只是记录不同的bit。
无论是什么编码格式,里面很多码流波形是一样的(载波时间相同、无载波时间相同),对吧?把这相同的波形分别标记,如标记为0、1,那1byte可以记录8bit数据,再加上为数不多的波形时间,消耗的空间并不大。当然,如起始位、停止位等特殊的时间需要单独记录。如果按键没有松开,当然是继续发送,但是,发送的只是重复码,不是数据码,那个数据量是很少的。也有一些遥控编码是重复发生数据码,那也无所谓,连重复码的记录都省了。
当然,这种方法需要程序做一些判断,但是不需要如你所说的判断属于什么编码。
我用这种方法做过,是可以成功的,我当时用Mega8的EEPROM记录了5个按键,按键不松开可连续发送。 简单地说,就是程序需要把不同的码流波形时间分别记录下来,如果后面遇到与前面波形一样的码流,不需要记录时间,标记成0或者1就行了,这就是数据码。 roasn 冰封的心
谢谢你了,虽然我用的是整套记录,记录完后再处理的方式,存储空间不多,例如下面方法中的编码格式识别法。
某公司学习遥控的2种处理方式:
学习算法:两种。波形复制法:波形复制和分析处理;编码格式识别法:复制波形和分析识别出具体编码格式;(说明:两种算法各有优缺点。)
复制波形位数最小128位,最大300多位;(每种芯片方案都可以)
可学习无载波编码格式,载波学习范围:20K-500KHZ;(大部分芯片方案的载波范围是20-80KHZ)
载波识别误差:+-1KHZ; 记录引导码、有载波、无载波的时间;再把有载波和无载波以0和1来表示这样数据就得到压缩了,发时在还原出来。
另,编码种类很多,只能把常用的找规律做出来 波形的完全复制,这种方法好~~~只要一个红外接收二极管~~~ MARK 记录高低点评的宽度就行。。。据说。。。。正在研究中。。 收藏来,看看 kcfoo1 发表于 2009-11-26 08:52 static/image/common/back.gif
同求NEC协议详细PDF 在NEC协议中长按键的编码方式是如何定义的,哪位大侠能指点下 ...
把十六进制的转化成二进制你就明白了 最近要用,过来学习一下
页:
[1]