数码之家

标题: 用FT60E211单片机替换头灯的驱动芯片 [打印本页]

作者: wjxhone    时间: 2023-7-13 10:16
标题: 用FT60E211单片机替换头灯的驱动芯片
前段时间因电池装反,烧了头灯内部的驱动芯片,上网查了下芯片型号是YX8254,本身价格只有几毛钱,但算上运费就要好几块了,其实我只要单键开关功能就行了,想到以前买了些FT60E211单片机还在吃灰,就尝试用它代替。用厂家提供的例程略改了一下,凑和能用了,量了下待机时的电流为0.1uA左右。至于用到的编译器和编程器的资料,可以搜索本坛 2元成本玩2毛单片机这个帖子。
[attach]1871059[/attach]

  1. #include "SYSCFG.h"

  2. bit start=0;

  3. void interrupt ISR(void)        
  4. {
  5.         //PA2外部中断处理
  6.         if(INTE && INTF)               
  7.         {
  8.                 INTF = 0;                          //清PA2 INT 标志位
  9.                 INTE = 0;                          //暂先禁止PA2中断
  10.             start=~start;
  11.         }
  12. }

  13. /*-------------------------------------------------
  14. * 函数名:POWER_INITIAL
  15. * 功能:  上电系统初始化
  16. * 输入:  无
  17. * 输出:  无
  18. --------------------------------------------------*/        
  19. void POWER_INITIAL (void)
  20. {
  21.         OSCCON = 0B01110001;        //IRCF=111=16MHz/4T=4MHz,0.25us
  22.         INTCON = 0;                          //暂禁止所有中断
  23.         PORTA = 0B00000100;               
  24.         TRISA = 0B00000100;                //PA输入输出 0-输出 1-输入
  25.                                                                                                                
  26.         WPUA = 0B00000100;            //PA端口上拉控制 1-开上拉 0-关上拉                                                        
  27.                            
  28.         OPTION = 0B00001000;        //Bit3=1,WDT MODE,PS=000=WDT RATE 1:1                             
  29.     PSRCA = 0B11111111;            //源电流设置最大

  30.     PSINKA = 0B11111111;    //灌电流设置最大
  31.                     
  32.     MSCON = 0B00110000;                           
  33.         //Bit5:        PSRCAH4和PSRCA[4]共同决定源电流。00:4mA; 11: 33mA; 01、10:8mA
  34.         //Bit4:        PSRCAH3和PSRCA[3]共同决定源电流。00:4mA; 11: 33mA; 01、10:8mA
  35.         //Bit3:        UCFG1<1:0>为01时此位有意义。0:禁止LVR;         1:打开LVR
  36.         //Bit2:        快时钟测量慢周期的平均模式。0:关闭平均模式;1:打开平均模式
  37.         //Bit1:        0:关闭快时钟测量慢周期;1:打开快时钟测量慢周期
  38.         //Bit0:        0:睡眠时停止工作:1: 睡眠时保持工作。
  39.     //                当T2时钟不是选择指令时钟的时
  40.         }
  41.       
  42. /*-------------------------------------------------
  43. *  函数名:DelayUs
  44. *  功能:  短延时函数
  45. *  输入:  Time延时时间长度 延时时长Time us
  46. *         输出:  无
  47. -------------------------------------------------*/
  48. void DelayUs(unsigned char Time)
  49. {
  50.         unsigned char a;
  51.         for(a=0;a<Time;a++)
  52.         {
  53.                 NOP();
  54.         }
  55. }                  
  56. /*-------------------------------------------------
  57. *         函数名:DelayMs
  58. *         功能:  短延时函数--16M-4T--大概快1%左右.
  59. *         输入:  Time延时时间长度 延时时长Time ms
  60. *         输出:  无
  61. -------------------------------------------------*/
  62. void DelayMs(unsigned char Time)
  63. {
  64.         unsigned char a,b;
  65.         for(a=0;a<Time;a++)
  66.         {
  67.                 for(b=0;b<5;b++)
  68.                 {
  69.                          DelayUs(98);
  70.            
  71.                 }
  72.         }
  73. }

  74. /*-------------------------------------------------
  75. * 函数名: INT_INITIAL
  76. * 功能:  中断初始化函数
  77. * 输入:  无
  78. * 输出:  无
  79. --------------------------------------------------*/
  80. void INT_INITIAL(void)
  81. {
  82.         TRISA2 =1;                                                                //SET PA2 INPUT
  83.         IOCA2 =0;                                                                //禁止PA2电平变化中断
  84.         INTEDG =0;                                                                //OPTION,INTEDG=0;PA2 INT 为下降沿触发
  85.         INTF =0;                                                                //清PA2 INT中断标志位
  86.         INTE =1;                                                                //使能PA2 INT中断
  87. }

  88. /*-------------------------------------------------
  89. *  函数名:  main
  90. *        功能:  主函数
  91. *  输入:  无
  92. *  输出:  无
  93. --------------------------------------------------*/
  94. void main()
  95. {   
  96.    
  97.         POWER_INITIAL();
  98.     PA3=1;
  99.         while(1)
  100.         {         
  101.             if(start==1)            
  102.                 {
  103.                        PA3=0;
  104.                        DelayMs(250);                                         
  105.                 }
  106.             else
  107.                 {
  108.                        PA3=1;
  109.                        DelayMs(250);                                    
  110.                 }      
  111.                                           
  112.                 INT_INITIAL();                                                //初始化外部中断
  113.                 GIE = 1;                                                        //开总中断
  114.                 SLEEP();
  115.         }
  116. }
复制代码


作者: martinku    时间: 2023-7-13 10:32
这个替换不错,对于非常懂编程的可以实现各种玩法。
作者: xilige2020    时间: 2023-7-13 11:52
简单实用,但好像不是恒流驱动LED。
作者: sweetrong    时间: 2023-7-13 12:19
这个替换不错
作者: 创意工坊    时间: 2023-7-13 13:03
双稳态开关嘛,用两个BJT可以实现,两个MOS也可以。
也可以用触发器。记忆一个bit的数据,就是触发器的本职工作。用一个D触发器,静态10uA的样子,攒成这样。

[attach]1871208[/attach]
D触发器clk上升沿,Q把Q#输出到mos打开输出。每一个按键上升沿,Q反转一次。电容去抖,长按不响应。
推荐一个ti的d触发器,可以找找其他厂家,d触发器很常用的一个件,国产可能几毛钱吧。
[attach]1871209[/attach]


作者: wjxhone    时间: 2023-7-13 13:11
魂の殇 发表于 2023-7-13 13:03
双稳态开关嘛,用两个BJT可以实现,两个MOS也可以。
也可以用触发器。记忆一个bit的数据,就是触发器的本职 ...

因为头灯的LED和按键是共地的,用了根三芯弹簧线,要是用分立件替换的话,还要另外加条电线。
作者: ねね    时间: 2023-7-13 14:22
都是高手。。。
作者: hujj    时间: 2023-7-13 14:37
单片机在此处有点大才小用了。
作者: kindzhon    时间: 2023-7-13 15:18
魂の殇 发表于 2023-7-13 13:03
双稳态开关嘛,用两个BJT可以实现,两个MOS也可以。
也可以用触发器。记忆一个bit的数据,就是触发器的本职 ...

会编程,单片机比你这电路要简单很多,而且根本不用改硬件电路,有需要还可以加更多的功能,另外也便宜。
作者: ccbw    时间: 2023-7-13 15:43

这个思路不错,可以借鉴
作者: 玛德陛下    时间: 2023-7-13 20:55
这个真利用的好
作者: wqwq212    时间: 2023-7-13 23:47
看起来是简单了些,需要编程。
作者: hdshgch    时间: 2023-7-14 07:54
这个思路不错,可以借鉴
作者: tian71    时间: 2023-7-14 10:05
会编程就是好
作者: kkstun    时间: 2023-7-14 10:41
0.1ua的待机电流真的是非常的合适。
作者: 603599910    时间: 2023-7-14 12:54
单片机基础入门真的挺简单,精通就难,不过搞技术的要有兴趣有时间还要悟性加上一个契机或者说机会这样就会玩的很愉快.我是之前模电专业出身的一直从事电子制造工程行业,后来在2010年后开发案子用模电实现的功能实在是事倍功半,开始学习单片机,最开始用STC的89C52学习板入门,现在基本用CH32V系列做产品开发.
作者: 603599910    时间: 2023-7-14 13:02
辉芒微FT60E211 系列我也了解着一阵,是价格真香系列,也想搞个来玩玩,后来看到下载器价格着实不低又加上我做产品不至于极致压缩成本,只玩玩就没必要再花心思搞.现在开发小方案都是用CH32V003,中型方案用CH32V203,大型方案用CH32V307,增加CH340,貌似现在越来越倾近于沁恒的全家桶了.
作者: wei2860315    时间: 2023-7-15 13:14
603599910 发表于 2023-7-14 12:54
单片机基础入门真的挺简单,精通就难,不过搞技术的要有兴趣有时间还要悟性加上一个契机或者说机会这样就会玩 ...

自己瞎几把搞搞,坏了也没事,做产品就得保证可靠性了,不能生产几十万了发现有缺陷就麻烦了
作者: IlovePLC    时间: 2023-7-16 01:02
可惜不是STC系列的51单片机
作者: dzztom    时间: 2023-7-17 07:43
会编程就是好
作者: jxcnj    时间: 2023-7-17 09:34
单片机可以实现闪烁等多种功能,这个方法好
作者: zj1147938409    时间: 2023-7-17 21:30
来学习单片机编程
作者: ccbw    时间: 2023-7-18 15:48
2毛钱的大材小用
作者: cdma20001    时间: 2023-7-18 15:49
这年头如果会编程确实可以搞出许多新东西
作者: 触景情伤    时间: 2023-7-19 12:17
总算是有实用级别的DIY了…顶一个
作者: mindlw    时间: 2023-7-19 12:44
wei2860315 发表于 2023-7-15 13:14
自己瞎几把搞搞,坏了也没事,做产品就得保证可靠性了,不能生产几十万了发现有缺陷就麻烦了 ...

这都是爱好者自己的改装。
没有想到会批量吧
作者: 3dg6    时间: 2023-8-10 15:33
请教一下:
MSCON = 0B00000000;         //            
        //Bit5:        PSRCAH4和PSRCA[4]共同决定源电流。00:4mA; 11: 33mA; 01、10:8mA
        //Bit4:        PSRCAH3和PSRCA[3]共同决定源电流。00:4mA; 11: 33mA; 01、10:8mA

FT60F211规格书PDF里没有  MSCON :PSRCAH4没有说明。
作者: wjxhone    时间: 2023-8-10 19:24
3dg6 发表于 2023-8-10 15:33
请教一下:
MSCON = 0B00000000;         //            
        //Bit5:        PSRCAH4和PSRCA[4]共同 ...

官方没有ft60e211的例程,我是拿ft60f12x的例程改的,没注意到这些细节。
作者: 3dg6    时间: 2023-8-10 20:35
wjxhone 发表于 2023-8-10 19:24
官方没有ft60e211的例程,我是拿ft60f12x的例程改的,没注意到这些细节。


[attach]1893101[/attach]
想用规格书里介绍的源电流3mA直接驱动led,结果不行,启动一次把mcu烧了,连烧2个,加了如图红色电阻1K就正常了。
附上FT60F21X_DEMO供大家,淘宝店客服提供的。
[attach]1893097[/attach]
[attach]1893098[/attach]



作者: tigerhifi    时间: 2024-10-22 14:35
wjxhone 发表于 2023-8-10 19:24
官方没有ft60e211的例程,我是拿ft60f12x的例程改的,没注意到这些细节。

请问楼主使用FT60E211这颗单片机,烧录是用“ 2元成本玩2毛单片机” 这个帖子里面作者自制的CH552G下载板进行的吗?帖子里使用的是FT60F011A,我不确定这个下载器是不是支持这两种单片机?麻烦确认一下啊

作者: wjxhone    时间: 2024-10-28 18:59
tigerhifi 发表于 2024-10-22 14:35
请问楼主使用FT60E211这颗单片机,烧录是用“ 2元成本玩2毛单片机” 这个帖子里面作者自制的CH552G下载板 ...

1.6.1版的烧录软件支持60F01X/E01X,60F21X/E21X这些单片机。
作者: tigerhifi    时间: 2024-11-1 09:51
wjxhone 发表于 2024-10-28 18:59
1.6.1版的烧录软件支持60F01X/E01X,60F21X/E21X这些单片机。

谢谢!已经把烧录器做好了
[attach]2238963[/attach]
[attach]2238962[/attach]
作者: 飘浮的云中海    时间: 2024-11-1 21:37

看起来是简单了些,需要编程,编程俺不会呀
作者: tigerhifi    时间: 2024-11-12 12:49
感谢楼主发布的帖子给我的启示,已经 成功用FT60E211替代净水机控制板MCU ,实现编程自由。
用2毛单片机FT60E211代替净水机控制板MCU优化制水程序
https://www.mydigit.cn/thread-481342-1-1.html




欢迎光临 数码之家 (https://www.mydigit.cn/) Powered by Discuz! X3.4