久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 15082|回復: 17
打印 上一主題 下一主題
收起左側

51單片機鋰電池均衡測試儀的制作 附源程序原理圖PCB bms保護板供電

  [復制鏈接]
跳轉到指定樓層
樓主
基于51單片機的鋰電池充電相關制作分享
可以用于16Sbms保護板的均衡測試,及供電。總電壓為52.4V.可以為16節的BMS供電及測試均衡。

Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)



制作出來的實物圖如下:

成品:


單片機源程序如下:
  1. #include <REG52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char           
  4. sbit key1=P1^0;                                          //手動啟動,自動,停止
  5. sbit key2=P1^1;                                          //上一節
  6. sbit key3=P1^2;                                     //下一節
  7. sbit JKpower=P1^4;                                //繼電器供電
  8. sbit beep=P1^5;                                        //蜂鳴器
  9. sbit LED_stop=P3^2;                                //停止狀態燈
  10. sbit LED_manual=P3^3;                        //手動模式狀態燈
  11. sbit LED_auto=P3^4;                                //自動模式狀態燈
  12. uchar mode=0;                                        //停止=0,手動=1,自動=2
  13. uchar current_cell=1,num,ms_20=0,second=0,time_flag=0;                                    
  14. void keyscan();        
  15. void delayms(uint xms)                //延時xms毫秒
  16. {
  17.         uint i,j;
  18.         for(i=xms;i>0;i--)
  19.                 for(j=110;j>0;j--);
  20. }
  21. void init()                                   //初始化
  22. {
  23.         JKpower=1;
  24.         P0=0x00;
  25.         P2=0x00;
  26.         delayms(100);
  27.         JKpower=0;
  28.         EA=1;
  29.         ET0=1;
  30.         TMOD=0x01;
  31.         TH0=(65536-50000)/256;
  32.         TL0=(65536-50000)%256;
  33.         beep=0;
  34.         delayms(500);
  35.         beep=1;                                   
  36. }

  37. void main()                                         
  38. {
  39.         init();
  40.         while(1)
  41.         {        
  42.                 keyscan();                    //調用按鍵掃描子程序
  43.                 if(mode==0)                        //停止狀態
  44.                 {
  45.                         LED_stop=0;LED_manual=1;LED_auto=1;        //狀態燈
  46.                         P0=0x00; P2=0x00;                                        //繼電器都不通電
  47.                 }
  48.                  if(mode==1)                        //手動狀態
  49.                 {
  50.                         LED_stop=1;LED_manual=0;LED_auto=1;        //狀態燈
  51.                         switch(current_cell)
  52.                         {
  53.                                 case 1: P0=0x01; P2=0x00;break;
  54.                                 case 2: P0=0x02; P2=0x00;break;
  55.                                 case 3: P0=0x04; P2=0x00;break;
  56.                                 case 4: P0=0x08; P2=0x00;break;
  57.                                 case 5: P0=0x10; P2=0x00;break;
  58.                                 case 6: P0=0x20; P2=0x00;break;
  59.                                 case 7: P0=0x40; P2=0x00;break;
  60.                                 case 8: P0=0x80; P2=0x00;break;
  61.                                 case 9: P0=0x00; P2=0x01;break;
  62.                                 case 10: P0=0x00; P2=0x02;break;
  63.                                 case 11: P0=0x00; P2=0x04;break;
  64.                                 case 12: P0=0x00; P2=0x08;break;
  65.                                 case 13: P0=0x00; P2=0x10;break;
  66.                                 case 14: P0=0x00; P2=0x20;break;
  67.                                 case 15: P0=0x00; P2=0x40;break;
  68.                                 case 16: P0=0x00; P2=0x80;break;
  69.                         }
  70.                         delayms(200);
  71.                 }
  72.                 if(mode==2)                   //自動狀態
  73.                 {
  74.                         LED_stop=1;LED_manual=1;LED_auto=0;        //狀態燈
  75.                         if(time_flag==1)
  76.                         {
  77.                                 current_cell++;
  78.                                 time_flag=0;
  79.                                 if(current_cell>16)                        //16節自動均衡結束后關定時器,拉低繼電器IO口,響蜂鳴器1秒
  80.                                 {
  81.                                         TR0=0;
  82.                                         mode=0;
  83.                                         current_cell=0;
  84.                                         P0=0x00;P2=0x00;
  85.                                         beep=0;
  86.                                         delayms(1000);
  87.                                         beep=1;
  88.                                 }
  89.                         }
  90.                         switch(current_cell)
  91.                         {
  92.                                 case 1: P0=0x01; P2=0x00;break;
  93.                                 case 2: P0=0x02; P2=0x00;break;
  94.                                 case 3: P0=0x04; P2=0x00;break;
  95.                                 case 4: P0=0x08; P2=0x00;break;
  96.                                 case 5: P0=0x10; P2=0x00;break;
  97.                                 case 6: P0=0x20; P2=0x00;break;
  98.                                 case 7: P0=0x40; P2=0x00;break;
  99.                                 case 8: P0=0x80; P2=0x00;break;
  100.                                 case 9: P0=0x00; P2=0x01;break;
  101.                                 case 10: P0=0x00; P2=0x02;break;
  102.                                 case 11: P0=0x00; P2=0x04;break;
  103.                                 case 12: P0=0x00; P2=0x08;break;
  104.                                 case 13: P0=0x00; P2=0x10;break;
  105.                                 case 14: P0=0x00; P2=0x20;break;
  106.                                 case 15: P0=0x00; P2=0x40;break;
  107.                                 case 16: P0=0x00; P2=0x80;break;
  108.                         }
  109.                 }
  110.         }
  111. }

  112. void keyscan()
  113. {
  114.         if(key1==0&&mode==0)        //停止狀態下按下啟動和停止鍵
  115.         {
  116.                 delayms(5);
  117.                 if(key1==0)
  118.                 {
  119.                         while(!key1);
  120.                         mode=1;
  121.                         current_cell=1;
  122.                         beep=0;
  123.                         delayms(50);
  124.                         beep=1;        
  125.                 }
  126.         }
  127.         if(key1==0&&mode==1)        //手動狀態下按下啟動和停止鍵
  128.         {
  129.                 delayms(5);
  130.                 if(key1==0)
  131.                 {
  132.                         while(!key1);
  133.                         mode=2;
  134.                         current_cell=1;
  135.                         beep=0;
  136.                         delayms(50);
  137.                         beep=1;
  138.                         TR0=1;
  139.                 }
  140.         }
  141.         if(key1==0&&mode==2)        //自動狀態下按下啟動和停止鍵
  142.         {
  143.                 delayms(5);
  144.                 if(key1==0)
  145.                 {
  146.                         while(!key1);
  147.                         mode=0;
  148.                         current_cell=1;
  149.                         TR0=0;
  150.                         beep=0;
  151.                         delayms(50);
  152.                         beep=1;                                
  153.                 }
  154.         }
  155.         if(key3==0&&mode==1)        //手動狀態下按“下一節”鍵
  156.         {
  157.                 delayms(5);
  158.                 if(key3==0)
  159.                 {
  160.                         while(!key3);
  161.                         current_cell++;
  162.                         if(current_cell>16)
  163.                                 current_cell=1;
  164.                         beep=0;
  165.                         delayms(50);
  166.                         beep=1;
  167.                 }
  168.         }
  169.         if(key2==0&&mode==1)        //手動狀態下按“上一節”鍵
  170.         {
  171.                 delayms(5);
  172.                 if(key2==0)
  173.                 {
  174.                         while(!key2);
  175.                         current_cell--;
  176.                         if(current_cell<1)
  177.                                 current_cell=16;
  178. ……………………

  179. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
原理圖及pcb圖紙.rar (9.43 MB, 下載次數: 287)
程序.rar (27.71 KB, 下載次數: 212)

評分

參與人數 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏34 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:503203 發表于 2021-1-27 13:14 | 只看該作者
666,做的可以,還有外殼
回復

使用道具 舉報

板凳
ID:880257 發表于 2021-2-8 09:10 | 只看該作者
牛叉的!
回復

使用道具 舉報

地板
ID:880257 發表于 2021-2-8 09:10 | 只看該作者
很有技術內涵!
回復

使用道具 舉報

5#
ID:147106 發表于 2021-2-20 13:42 | 只看該作者
支持一下,我也是做鋰電池保護板的
回復

使用道具 舉報

6#
ID:466474 發表于 2021-6-19 17:37 | 只看該作者
膜拜大佬,看一下參考
回復

使用道具 舉報

7#
ID:210978 發表于 2021-8-2 15:11 | 只看該作者
請問一下,停止、手動、自動指示燈好像沒有看到相關電路。謝謝
回復

使用道具 舉報

8#
ID:896794 發表于 2021-8-4 16:55 | 只看該作者
有電感試的嗎
回復

使用道具 舉報

9#
ID:292518 發表于 2021-8-7 07:59 | 只看該作者

牛叉的!
666,做得漂亮,還有外殼
回復

使用道具 舉報

10#
ID:317571 發表于 2021-8-9 14:39 | 只看該作者
板子很漂亮
回復

使用道具 舉報

11#
ID:586915 發表于 2022-5-20 09:11 | 只看該作者
瘋了用繼電器 你好歹也用固態繼電器 或者電源管理芯片呀
回復

使用道具 舉報

12#
ID:1049892 發表于 2022-10-31 14:29 | 只看該作者
牛叉,學習一下很有技術內涵!
回復

使用道具 舉報

13#
ID:951974 發表于 2022-12-12 19:25 | 只看該作者
89C52RC帶AD嗎?我手上的好像不帶AD呀
回復

使用道具 舉報

14#
ID:33544 發表于 2023-4-13 15:03 | 只看該作者
我也在找鋰電保護板的資料,正好學習一下
回復

使用道具 舉報

15#
ID:33544 發表于 2023-4-20 11:13 | 只看該作者
改成三極管輸出的板子就小多了
回復

使用道具 舉報

16#
ID:57414 發表于 2023-4-20 17:34 | 只看該作者
怎么檢測每節電池電壓的?
回復

使用道具 舉報

17#
ID:1034262 發表于 2023-9-9 21:24 | 只看該作者
鋰電池均衡我現在用的是電容式的。
回復

使用道具 舉報

18#
ID:1093842 發表于 2024-2-1 17:08 | 只看該作者

板子很漂亮
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区视频| 日韩欧美综合 | 91成人在线视频 | 成人一区二区三区视频 | 久久91精品 | cao在线 | 国产精品99 | 亚洲成人综合社区 | 九九久久在线看 | www.亚洲精品 | av天天操 | 欧美中文在线 | 最新毛片网站 | 国产精品久久久亚洲 | 狠狠艹| 国产精品久久久久久久久久免费看 | 日韩欧美精品在线播放 | 色视频www在线播放国产人成 | 精品国产乱码久久久久久88av | 亚洲欧美综合网 | 亚洲精品一区中文字幕乱码 | 日韩中文字幕一区二区 | 极品电影院 | 欧美视频免费在线观看 | 在线一区| 国产高清视频在线观看 | 欧美综合久久久 | 欧美色视频免费 | 亚洲综合大片69999 | 日日操av | 日本免费小视频 | 久久久久国产一区二区三区 | 久久大 | 一级毛片大全免费播放 | 国产成人精品免高潮在线观看 | 欧美日韩三级视频 | 国产精品精品视频一区二区三区 | 人人插人人| 人人艹人人爽 | 亚洲天堂成人在线视频 | 国产欧美一区二区三区久久人妖 |