微软公司宣布不再支持你正在使用的 IE浏览器,这会严重影响浏览网页,请使用微软最新的Edge浏览器
您好, 登录| 注册|

自制玩意4——基于PIC12F实现RGB调色+调光、FADE+调速、EEP存储

  • 2014-06-21 17:42
  • daihui713

    LV.0
  • 1.4w

    浏览

  • 56

    回复

  • 0

    获赞

  •     本人电源工程师一枚,一直从事于LED驱动开发的行当,细数也近6年了,对于单片机的学习也是近期工作所需,硬着头皮上,充其量只是入

         门,更谈不上什么高手。

        此款RGB产品早在五年前便已流行于整个市场,路人皆知,在当时此款24KEY的面板遥控器似乎成了通用遥控器,五年之后的现在,市场价值荡然无存,现也难觅它的踪影。为了留住过往,特自制此玩意,以此纪念!

          也是机缘巧合,当时是拜读了乐云兄发的《LED全彩遥控控制器(C语言程序+电路原理图+PCB版图)整套 原创.. 》这个帖子后,就冲动了想弄个出来玩玩,在此得感谢乐云兄。完成这个确实花了不少功夫,特别是在解码这部分,以及配色。光解码程序就做了几种尝试,无论你是外部中断查询,还是主函数查询都只能写大部分的功能,譬如调光、变色、颜色跳变这些都可以用定时器来实现,但是有一个FADE平滑渐变的功能,适合用循环的方式来实现,如果用外部中断或主函数查询法解码你将很难或无法实现,因为太多的PWM需要变换将会拖累定时器。所以最终尝试第三种解码方式定时器查询法便解决这所有的问题。

         品名:24KEY型RGB灯

         遥控器型号:暂且叫1616(24KEY型)

         单片机型号:Microchip PIC12F1822(带EEP),8引脚,8M内置振荡,如果使能PLL功能4倍,最大到32M

    同是电子工程师,请一定不要吝啬你的赞!

    0人已赞

    编辑 举报

    LV.1

    4099081

    1494232

    50

    312503

    说说你的看法

  • LV.

    @

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    取消
    发送
  • 现在还没有回复呢,说说你的想法

    现在还没有回复呢,说说你的想法

    全部回复(56)

  • daihui713

    LV.1

    2014-07-02 11:40

    @daihui713

    玩意简易说明:

    一、此玩意的重点在于遥控器的解码方式的选择——出发点就是既不能打断正在循环渐变或调光的LED,又要

          能准确的接收遥控器的信号.

    二、传统红外解码常用有三种方式:    

       1、外部中段解码,执行级别高,速度快。缺点很明显,在中断的同时不能干别的事情   

       2、主函数循环查询法,适合小型的程序。主函数执行程序不能太多,不然红外信号会偶尔丢失。优点就是可以

           在中断里面干别的事情。

       3、定时器查询法,设定一个时基,定时查询红外的码值,通过时基累积来判断红外码的码值的宽度,从而判断

           是否是引导码,或是连续码,以及用户码高低电平的解码。优势就是不打断主函数中正在进行的循环PWM,

           通俗说就是抽个空进行了解码。这样既不占资源,也可以干别的事情,此方式误码率比较低,所以此方法是

          最适合此玩意。 

    三、此款24健遥控器的灯管渐变模式分三种: 

        1. 不同颜色之间,以一定的时间间隔来实现跳变,也称闪变(FLASH),跳变时间间隔长短可调.

        2. 三基色平滑过度型实现16色的变化,也称渐变(FADE),渐变速度可调.

        3. 不同颜色实现慢慢从亮到暗,从暗到亮的呼吸渐变,渐变速度可调。

     四、对于RGB灯, 除了颜色渐变外,然后就是16色的单色调光与颜色切换,以及开关机。利用内部EEP掉电后保存当前颜色、当前颜色亮度、当前渐变的模式、当前渐变的速度

    还是自己顶自己吧,大家看看就行。

    说到红外遥控,就得先了解红外码的格式,以下图形为实测随机抓取:

    单次按键(不含连续码)——引导码+用户码/用户反码+数据码/数据反码+结束码 

    码长实测时间大概在115mS

    趁睡觉前抓了几个图形(家里的测试环境比较简陋)

    IMG_20140701_235340

     

    引导码和用户码的部分截取:

    引导码码长以9+4.5mS起头,实测在13.2-14mS之间,接下来就是用户码,

    从图形可以看出用户码和用户反码是互补的(0x01和0xFE)

     

    IMG_20140701_235439

     

    IMG_20140701_235713

     

    结束码图形截取:

    从图形上看,结束码需要在数据反码完成之后,大概延时80多mS,以9+2.5mS作为结束码

    实测结束码码长为12mS

    IMG_20140701_235758

     

     

     

    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4099524

    1494232

    50

    312503

    取消
    发送
    22
  • terry2006

    LV.1

    2014-07-02 13:54

    @daihui713

    还是自己顶自己吧,大家看看就行。

    说到红外遥控,就得先了解红外码的格式,以下图形为实测随机抓取:

    单次按键(不含连续码)——引导码+用户码/用户反码+数据码/数据反码+结束码 

    码长实测时间大概在115mS

    趁睡觉前抓了几个图形(家里的测试环境比较简陋)

    IMG_20140701_235340

     

    引导码和用户码的部分截取:

    引导码码长以9+4.5mS起头,实测在13.2-14mS之间,接下来就是用户码,

    从图形可以看出用户码和用户反码是互补的(0x01和0xFE)

     

    IMG_20140701_235439

     

    IMG_20140701_235713

     

    结束码图形截取:

    从图形上看,结束码需要在数据反码完成之后,大概延时80多mS,以9+2.5mS作为结束码

    实测结束码码长为12mS

    IMG_20140701_235758

     

     

     

    顶一个,这种24键RGB控制器我们公司还在每月几万个不断的生产(用于鱼缸水族照明)。我是51入了门(当初买了几种51多功能的学习板),后又想学PIC,买了PICKIT3一年多了我都没去摸它。惨愧啊(这种热情现在是越来越少了,因为需要学习的东西太多了,最后时间还是玩过去了)。
    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4099529

    1494232

    50

    350274

    取消
    发送
    23
  • 贴片机

    LV.1

    2014-07-02 14:27

    @

    不知道这种东西有什么用呀?用在哪里呀?
    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4099533

    1494232

    50

    328404

    取消
    发送
    24
  • daihui713

    LV.1

    2014-07-02 14:36

    @terry2006

    顶一个,这种24键RGB控制器我们公司还在每月几万个不断的生产(用于鱼缸水族照明)。我是51入了门(当初买了几种51多功能的学习板),后又想学PIC,买了PICKIT3一年多了我都没去摸它。惨愧啊(这种热情现在是越来越少了,因为需要学习的东西太多了,最后时间还是玩过去了)。

    嗯,PIC的开发工具都比较贵,我还是在某宝上淘的山寨版——PICKIT3.5   不过现在也被生活磨的没有太多的开发热情了, 一般急功近利的比较多,特别是在深圳这个高节奏的环境中

    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4099534

    1494232

    50

    312503

    取消
    发送
    25
  • daihui713

    LV.1

    2014-07-02 14:56

    @贴片机

    不知道这种东西有什么用呀?用在哪里呀?
    一般多用于景观灯(非照明类),RGB射灯居多
    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4099536

    1494232

    50

    312503

    取消
    发送
    26
  • daihui713

    LV.1

    2014-07-02 16:25

    @daihui713

    还是自己顶自己吧,大家看看就行。

    说到红外遥控,就得先了解红外码的格式,以下图形为实测随机抓取:

    单次按键(不含连续码)——引导码+用户码/用户反码+数据码/数据反码+结束码 

    码长实测时间大概在115mS

    趁睡觉前抓了几个图形(家里的测试环境比较简陋)

    IMG_20140701_235340

     

    引导码和用户码的部分截取:

    引导码码长以9+4.5mS起头,实测在13.2-14mS之间,接下来就是用户码,

    从图形可以看出用户码和用户反码是互补的(0x01和0xFE)

     

    IMG_20140701_235439

     

    IMG_20140701_235713

     

    结束码图形截取:

    从图形上看,结束码需要在数据反码完成之后,大概延时80多mS,以9+2.5mS作为结束码

    实测结束码码长为12mS

    IMG_20140701_235758

     

     

     

    由于东西简单,没有原理图,刚刚简单整理了一下。

     

    888888888888888888888

     

     

    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4099542

    1494232

    50

    312503

    取消
    发送
    27
  • daihui713

    LV.1

    2014-07-08 19:00

    @daihui713

    由于东西简单,没有原理图,刚刚简单整理了一下。

     

    888888888888888888888

     

     

      先上传一个初期的实验性的验证程序,红外解码采用主函数查询的方法,这种解码方式倒是可以,但是执行其他事件的时间不能太长,否则会影响解码程序的运行,导致解码丢失

        以下程序为利用PIC12F1822的验证程序,整篇采用switch case语句贯穿整个程序,由于采用固定延时做判断来解码的方式,所有功能在定时器中来完成PWM的转换。最终导致还有一个FADE平滑过渡型渐变功能没法再继续写下去。

       不过此程序实现调光 混色  颜色跳变的遥控功能足以!  当然最终的量产程序肯定和这个有着本质区别了。

     

      

    A

    B

    C

    D

    E

    F

    G

    H

    I

    J

    K

    L

    M

    N

    O

    P

    Q

    R

     

    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4099883

    1494232

    50

    312503

    取消
    发送
    28
  • daihui713

    LV.1

    2014-07-08 19:25

    @daihui713

      先上传一个初期的实验性的验证程序,红外解码采用主函数查询的方法,这种解码方式倒是可以,但是执行其他事件的时间不能太长,否则会影响解码程序的运行,导致解码丢失

        以下程序为利用PIC12F1822的验证程序,整篇采用switch case语句贯穿整个程序,由于采用固定延时做判断来解码的方式,所有功能在定时器中来完成PWM的转换。最终导致还有一个FADE平滑过渡型渐变功能没法再继续写下去。

       不过此程序实现调光 混色  颜色跳变的遥控功能足以!  当然最终的量产程序肯定和这个有着本质区别了。

     

      

    A

    B

    C

    D

    E

    F

    G

    H

    I

    J

    K

    L

    M

    N

    O

    P

    Q

    R

     

    以下程序为史上红外解码最精简程序示例——摘自阿莫论坛

    ——利用定时器的固定时基来查询红外脉冲的宽度,从而进行解码!

    大家可以自己去分析,至于中间的高电平是多少时间,低电平是多少时间都不用去管,只需计算两个下降沿间隔时间就可以判断0和1,同时也可以判断是否是引导码,或是结束码,或是连续码

    定时器查看时间设置为125us,执行定时器中断程序一次

    void Timer0 interrupt 1()                                                            

    {      

            irTime++;   

            if(irTime==240) // ir解码后码值存放时间, 240*125us = 30ms   

           {

                 irTime--;  

                 codeCnt=0x3f;

           }       

           if(IR_IO)   Irprot_LastState=1; // 记录IO状态   

           else if(Irprot_LastState)       // 有下降沿 

           {      

                  Irprot_LastState = 0;        // 下降沿后IO状态记录为0      

                  if(irTime<24)                // 小于24*125us=3ms的间隔才进行处理      

                 {         

                        codeCnt++;  

                        codeCnt &= 0x1f;         

                        IR_data[codeCnt>>3] <<= 1;       

                        if( irTime>15)   

                        IR_data[codeCnt>>3]++;  // 大于15*125us=1.875ms的间隔为数据1      

                 }    

                 irTime = 0;                  // 下降沿处理完成,将时间清0   

            }

    }

     

    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4099884

    1494232

    50

    312503

    取消
    发送
    29
  • dwx159

    LV.1

    2014-07-09 00:20

    @daihui713

     先上裸机图片,洞洞板的极致拼凑,惨不忍睹!

    IMG_20140609_232153

    IMG_20140621_162433

    IMG_20140621_162352

    这个紧凑....吊炸天!!
    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4099895

    1494232

    50

    602443

    取消
    发送
    30
  • aninstone

    LV.1

    2014-07-11 15:22

    @wangchuangwccc

    没有了,PIC我也有在玩了,不过新建的板块大多都是初学者,所以都是以51为主,不然没多少人回帖
    pic和51差不了多少 我也在用
    0

    设为最佳答案

    置顶

    编辑

    删除

    举报

    #该内容仅管理员可见#

    #回复内容已被删除#

    #该内容正在审核#

    回复:

    4100040

    1494232

    50

    484382

    取消
    发送
    31
  • 现在还没有回复呢,说说你的想法

     1 2 3 4 5 6  
  • 回复

  • 收藏

  • 点赞

  • 举报有害信息

  • 已超出发布时间24小时,无法编辑与删除
    关于我们 联系方法 广告服务 会议服务 电子星球APP 网站地图 不良信息举报 热线:400-003-2006
    © 2002-2023 Netbroad(网博互动)公司版权所有 津ICP备 11006234号-2 联网备案号:12010402000747 增值电信业务经营许可证:津B2-20120058