微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > 连一个小小的红外管都搞不定!

连一个小小的红外管都搞不定!

时间:10-02 整理:3721RD 点击:

1,制作了红外解码,将红外信号串行给电脑,用家用遥控器测试,得到的信号与NEC标准是相符的。成功。
2.制作了红外编码器,用之前的解码器测试新的编码器,开始使用PNP三极管,拉低亮起,如图,得不到预想效果,后来单独接限流和发光管,仍然得不到,电脑串行得到的是一堆乱码,而且得到的单次信号数量完全不是预想的,不就是只有3、4个高低位,不就是50多个60多个。
3。在ISIS模拟,得到的波形十分正确,电位相反因为PNP反向输出。
4。怀疑是P0脚输出能力有限,就换到了P3.7,仍然不行。
5、百度问了,没有答案,好像别人都没有为这个问题烦恼过。
请问谁做过红外线遥控器,我怎么都搞不定了,只有来这里寻求高手帮助。
我的请求是:为啥我的程序出来的博形式正确的,可是得不到正确的真实信号呢?
ps:数码管是用来调试,运行的时候显示运行到哪个位置了,一般会停留在5,后来为了避免数码管消耗的电流将它也关闭了。我搞这个好心急啊,高手一定不怕麻烦帮帮我。
还有,利用红外发射三极管拉低测试按钮时,如果按键接触不良会瞬间产生大量的噪声编码。







虽然没用,但是附带编码器的代码:
#include <reg51.h>
// _1|P1.0             VCC  | 40
// _2|P1.1             P0.0 | 39
// _3|P1.2             P0.1 | 38
// _4|P1.3             P0.2 | 37
// _5|P1.4             P0.3 | 36
// _6|P1.5             P0.4 | 35
// _7|P1.6             P0.5 | 34
// _8|P1.7             P0.6 | 33
// _9|RST              P0.7 | 32
// 10|P3.0/RXD         EA   | 31
// 11|P3.1/TXD         ALE  | 30
// 12|P3.2/INT0        PSEN | 29
// 13|P3.3/INT1        P2.7 | 28
// 14P3.4/T0           P2.6 | 27
// 15|P3.5/T1          P2.5 | 26
// 16|P3.6/WR          P2.4 | 25
// 17|P3.7/RD          P2.3 | 24
// 18|XTAL2            P2.2 | 23
// 19|XTAL1            P2.1 | 22
// 20|GND              P2.0 | 21
//FOR PRESS 定义按键
#define POWERJIDING 0xFE
#define PREVIOUS 0xFD
#define NEXT 0xFB
#define POWERHS 0xF7
#define VOLUP 0xEF
#define VOLDOWN 0xDF
#define KEY P2 定义输出数码管 现实执行位置
unsigned char keynow,keyprevious;
void KeyCheck()
{
        unsigned int nk;
        while(KEY==255){;}
        keyprevious=KEY;
        for(nk=1000;nk;nk--);
        keynow=KEY;
        if(keynow!=keyprevious)
        {
                keynow=255;
        }
}
//FOR IO
sbit OutSbit=P0^0; 输出口 后来是P3……7

#define HIGH 0
#define LOW 1
//FOR T0 T1设置定时器
unsigned char WaitT0,WaitT1,Stop;
void T0T1Setup();
void T0T1Setup()
{
        TMOD=0x11;
        EA=1;
        ET0=1;ET1=1;
        TR0=0;TR1=0;
}
//使用两个定时器轮流执行,T0 永远用来定时高位低电压,T1相反
void T0Int() interrupt 1
{//the high msg low electrolevel
        OutSbit=LOW;
        TR1=1;
        TR0=0;
        TF0=0;
        WaitT0=0;
}
void T1Int() interrupt 3
{//the low msg high electrolevel
        OutSbit=HIGH;
        TR0=1;
        TR1=0;
        TF1=0;
        WaitT1=0;
}
//FOR SDATA 这里是我需要的遥控信号
unsigned char code msgjdhonoff[4]={0x2,0x34,0xA2,0x5D};
unsigned char code msgjdhnext[4]={0x2,0x34,0xC0,0x3F};
unsigned char code msgjdhprevious[4]={0x2,0x34,0x40,0xBF};
unsigned char code msghsonoff[4]={0x0,0xFD,0xB0,0x4F};
unsigned char code msghsvolup[4]={0x0,0xFD,0x22,0xDD};
unsigned char code msghsvoldown[4]={0x0,0xFD,0xC2,0x3D};
unsigned char code bottom[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char* msghead;
unsigned char msg[32];
unsigned char mode[11]= {18,190,35,38,142,70,66,30,2,6};
//FOR SEGMENT
void SendMsg()//发送编入MSG的信息
{
        unsigned char ns=0;Stop=0;
P0=255;
        TH0=0xDF;
        TL0=0x99;
        TH1=0xEF;
        TL1=0xCC;
        OutSbit=HIGH;
        TR0=1;//T0 is running
        WaitT0=1;//T0 is running T1setup ok
        for(ns=0;ns<32;ns++)
        {
                while(WaitT0){;}
                TH0=0xFD;
                TL0=0xF9;
                WaitT1=1;
                while(WaitT1){;}
                TH1=0xFD;
                TL1=0xF9;
                if(msg[ns]==1)
                {
                        TH1=0xF9;
                        TL1=0xEC;
                }
                WaitT0=1;
        }
        while(WaitT0);
        TH0=0xFD;
        TL0=0xF9;
        WaitT1=1;
        while(WaitT1);
                        TH1=0x00;
                        TL1=0x00;
        WaitT0=1;
        Stop=1;
        //Test=HIGH;
        while(WaitT0);
        //Test=LOW;
        //Test=LOW;
}
//FOR PROGRAMESTATES
void main()
{
        unsigned char nt,nm,mm;//for calc msg
        T0T1Setup();
        while(1)
        {
                P0=mode[5];
                KeyCheck();
                if(keynow)
                {
                        P0=mode[4];
                        switch(keynow)
                          {
                                case POWERJIDING :
                                        msghead=msgjdhonoff;
                                break;
                                case PREVIOUS :
                                        msghead=msgjdhprevious;
                                break;
                                case NEXT :
                                        msghead=msgjdhnext;
                                break;
                                case POWERHS :
                                        msghead=msghsonoff;
                                break;
                                case VOLUP :
                                        msghead=msghsvolup;
                                break;
                                case VOLDOWN :
                                        msghead=msghsvoldown;
                                break;
                                default:
                                        msghead=msgjdhnext;
                                break;
                        }//根据按键写入该高还是低
                        nm=0;
                        for(mm=0;mm<4;mm++)
                        {
                                for(nt=0;nt<8;nt++)
                                {
                                        if(msghead[mm]&bottom[nt])
                                        {
                                                msg[nm]=1;
                                        }
                                        else
                                        {
                                                msg[nm]=0;
                                        }
                                        nm++;
                                }
                        }
                        ET1=1;ET0=1;
                        SendMsg();
                        ET0=0;ET1=0;
                        TR0=0;TR1=0;
                        OutSbit=LOW;
//发送完了准备下一次
                }
        }
}

红外不是控制脚要输出38K的方波吗 。

仔细检查下软件部分

重新做了实验,将要输出波形的单片机的输出脚直接连解码器接收脚,因为红外传感器也是信号低电压,发射单片机也是低电压输出,所以一次性在串口得到正确的数据,完全没错,也就是说,软件完全没问题,自己对自己的C 还是挺有自信的。
目前怀疑以下:
1、是不是红外二极管有不稳定热性,发光过程中会有较大的电流变化,导致了信号噪音。我拆了家里的几种遥控器,他们也是通过好像是8050三极管控制发射的。拆了家里的红外转发装置,这个装置是靠USB供电的,里面比我想象中的更加复杂,我原以为只是接收管直接控制三极管的,但是里头还有小的电路片,3??5厘米的样子,好像还有一个什么芯片,真的需要再编码吗?看我后面的测试
2、可能我买的红外管子不对,所以就做了红外信号存在指示器,当使用遥控器测试的时候,指示灯不停闪动,当我使用自己信号发射器的时候,就爱答不理,但是我仍然不能确定到底是管子的问题还是电路问题。


3、购物链接,这个管子是在淘宝上麦的,电子爱好者店,他们店里标的是850,虽然接收头说的是940和850兼容,但是为了防止出错,我就采用了我一年前买的那种950的管子,


4、为了防止电路不通,我又串联了一个管子,这样不可见光被可见光表示。


对着捕捉器,虽然绿光不断闪,但是接收器仍然爱答不理的,一是响应不够,二是亮度不够,说明我发射的信号仍然较小。
5、百度说,红外发光二极管和普通二极管是有区别的,压降更高,工作电流更大,出资之外就没说别的了。
我想各位 哪位成功发射过红外信号,能分享一下你的作品吗?我觉得在这个上面浪费太多时间了,但是搞不出来仍然不甘心啊。求大神帮帮忙。

发在硬件区,就是觉得是硬件的问题,还是请各位硬件高手(在下的确刚刚入门)指教。

不错


我用纯粹的感光(红外)管只做了感应器,它对对850和940纳米的红外都有感觉的,制作了直接感应器,如下图:


当我用遥控器测试的时候,狂闪。
当我用自己的发射器测试的时候,慢条斯理的。
于是我减小了发光管的限流电阻。
得到与遥控器同等强度的回应。

可是天杀的
去机顶盒那里测试,人家完全没反应。拿自己的解码器做测试,我都要骂人了,还是老样子,完全没有正确的倾向。
我快要黔驴技穷了,谁来救救我?

寻找答案,据说红外管的电流与电压跟普通都不同,所以就使用了更大的电流设定,压降设置为2伏,重新做了NPN管的实验,结果仍然乱七八糟。

哪位过来看一眼,帮帮我

我的代码是错的,我知道错在哪里了。大概知道答案了。

使用计时器无果后,终于采取了NOP的方法,将波形十分完美的制作出来。
T0和T1虽然定时精确,但是由于单片机单线程的缘故,TH- TL-的设置是需要时间的,各种FOR的布置,占用了指令时间,使你的循环和T所占用的时间各种不精确。
我用了最笨的方法,希望能奏效。
制版后会再来展示,代码太丑了,就不发了。



触摸感应调光开关台灯等方案
电容式触摸感应、触摸开关、触摸调光、单键触摸、多键触摸、触摸按键、触摸屏芯片、电容式触摸、触摸LED调光、金属壳台灯触摸调光、无极调光触摸、无段调光触摸、4段调光触摸、3段调光触摸、AC单切调光开关、AC三键调光开关等IC方案

看了你以上的描述,与你分享一下我的经历,供一起学习参考!
你这个电路没有几个人做过,能共同探讨的人更是不多,还好这个我做过。    我不知道你打算做什么电路,我所了解的是,你要将各种遥控器的编码信号进行接收——存储——再转发出去,是不是这样的呢?如果是可以参考一下我做的电路。
我也爱好无线电从小就喜欢瞎鼓捣....,学生时代的我,以前做过一个遥控器接收转发电路,我所在的城市位于大连,06年时大连变更为数字电视机顶盒,与模拟信号不同,数字机顶盒一个设备只能带一台电视机,可我家2间卧室,我打算共享一个机顶盒,于是我将机顶盒的视频输出分成2条支路,供2台电视机共享,可是问题来了,机顶盒只有一个,如果在没有机顶盒的卧室该如何遥控呢?       那时期还是模拟信号的天下,数字时代才刚刚到来,人们还都没有普及,我也只是知道单片机和数字电路,还不怎么会单片机,我就用模拟信号电路做了一个红外接收转发机,在一个屋子发射红外信号,然后传送到另一间屋子里的机顶盒中去。
       遥控器里的红外信号,其实工作原理与发光管并没有什么差异,只不过红外光属于不可见光,人眼看不见而已,我使用普通的光敏管来接收遥控器的红外信号,当然也可以使用红外接到头,好处就是只接收红外光谱,是可以避免不必要的干扰,但运用不好也会导致信号失真。我只用了一个极其简单的元器件LM386,我将光电管接在小功率音频信号放大器LM386输入端上,此时,如果用遥控器对准光电管发射,扬声器中就能听见响亮的嗒嗒声(数字信号编码),如果此时将扬声器更换成发光管(白发红发光管),或者红外发光管; 均可使红外接收设备产生反映。原理也极为简单,将红外信号通过光电管接收后放大成音频电信号,再将音频信号直接推动红外管还原成红外信号,此电路属于模拟信号电路,不知道能否给予你参考。

像这样的红外遥控器对拷电路,不必非得使用单片机,调试起来非常麻烦,而且可能达不到预期的效果,我将遥控器接收到的信号转换成音频信号后存储为MP3格式,使用时直接调出该音频,即可还原为红外编码。

666666666666666666666666666666666666666666666666666666666666666

66666

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top