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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 14274|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

DIY一個(gè)單片機(jī)+TC4056邏輯充電器 附程序+電路圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
1、設(shè)計(jì)原因

由于我經(jīng)常開發(fā)一些奇奇怪怪的小東西,所以手上有較多鋰電池,長(zhǎng)時(shí)間保存對(duì)我這種懶人帶來的困擾,正常邏輯是每次充電完成后,由人工更換下一個(gè)電池充電,如此往復(fù),如使用多個(gè)充電器同時(shí)進(jìn)行此項(xiàng)工作(并行),成本與效率均較高,于是設(shè)計(jì)了這個(gè)邏輯充電器,其最大支持4塊電池充電,但每次充電一塊,單塊充電完成后,由單片機(jī)讀取充電芯片信號(hào),后關(guān)閉該通道充電,并開啟下一個(gè)充電通道,如此往復(fù),是一種用時(shí)間換效率和成本的雞肋設(shè)計(jì)。
實(shí)物如下圖1所示、散熱片下是TC4056充電芯片(TP4056可替換),主控單片機(jī)為N76E003。


2、運(yùn)行邏輯



其中帶隙電壓(band·gap)讀取相關(guān)文章可以看這里
此外,檢測(cè)充電完成時(shí),首先使用單片機(jī)檢測(cè)充電芯片STDBY引腳電平變化,其原理及電路如下圖3、4、5所示,當(dāng)STDBY引腳拉低后,5V電源通過10k電阻及LED,其管腳電壓變化為3.2V左右,此時(shí)配置為輸入模式(高阻態(tài))的單片機(jī)管腳即可采集到該信號(hào)。






使能及關(guān)斷充電工作,均使用其TC4056的CE管腳,原理如下圖6、7所示,單片機(jī)配置為PP(推挽輸出),串聯(lián)一SS24肖特基二極管到CE管腳上進(jìn)行控制




單片機(jī)源程序如下:
  1. #include "N76E003.h"
  2. #include "SFR_Macro.h"
  3. #include "Function_define.h"
  4. #include "Common.h"
  5. #include "Delay.h"
  6. #include <intrins.h>
  7. #include "ADCBG.h"

  8. #define uchar unsigned char
  9. #define uint  unsigned int

  10. //控制TP4056啟停,高電平驅(qū)動(dòng)
  11. sbit  TC0=P0^0;
  12. sbit        TC1=P0^4;
  13. sbit        TC2=P0^5;
  14. sbit        TC3=P0^1;

  15. //檢測(cè)充電是否完成,高阻輸入模式,低電平完成/高電平正在
  16. sbit  Flash0=P1^0;
  17. sbit        Flash1=P0^3;
  18. sbit        Flash2=P0^2;
  19. sbit        Flash3=P1^5;


  20. uint ADC_BAT[4];
  21. uchar TP_TC[4];
  22. char ZTJJ=-1;

  23. /***************************************
  24. 功能:檢測(cè)4個(gè)端口的電池電壓,送入數(shù)組中,分配
  25.                         充電任務(wù)。
  26. 參數(shù):無
  27. 說明:無
  28. ***************************************/
  29. void ADC_Sampling()
  30. {

  31.        
  32.         //---------ADC_Bat----------------------       
  33.         Enable_ADC_AIN0;
  34.         ADC_Single();//0通道
  35.         ADC_BAT[0]=ADC_VC*2;
  36.         Timer1_Delay10ms(10);
  37.                
  38.         Enable_ADC_AIN1;
  39.         ADC_Single();//1通道
  40.         ADC_BAT[1]=ADC_VC*2;
  41.         Timer1_Delay10ms(10);
  42.                
  43.         Enable_ADC_AIN2;
  44.         ADC_Single();//2通道
  45.         ADC_BAT[2]=ADC_VC*2;
  46.         Timer1_Delay10ms(10);
  47.        
  48.         Enable_ADC_AIN3;
  49.         ADC_Single();//3通道
  50.         ADC_BAT[3]=ADC_VC*2;
  51.         Timer1_Delay10ms(10);

  52. }

  53. /***************************************
  54. 功能:分配充電順序
  55. 參數(shù):無
  56. 說明:無
  57. ***************************************/
  58. void BAT_Logic()
  59. {
  60.        
  61.                 uchar i;
  62.         for(i=0;i<4;i++)
  63.         {
  64.                 //需要充電,開啟
  65.                 if(ADC_BAT[i]>1000&&ADC_BAT[i]<4100)
  66.                 {
  67.                         TP_TC[i]=1;//無實(shí)際作用,僅調(diào)試用
  68.                         ZTJJ=i;
  69.                 }
  70.                
  71.                 if(ADC_BAT[i]>=4100)TP_TC[i]=2;//充電完成的,開啟(置2,可不遵守順序充電)
  72.                 if(ADC_BAT[i]<=1000)TP_TC[i]=0;//不存在電池,關(guān)閉
  73.         }

  74.                 //充電完成的,不計(jì)入邏輯順序
  75.                 if(TP_TC[0]==2)
  76.                 {
  77.                         TC0=1;
  78.                 }
  79.                 if(TP_TC[1]==2)
  80.                 {
  81.                         TC1=1;
  82.                 }
  83.                 if(TP_TC[2]==2)
  84.                 {
  85.                         TC2=1;
  86.                 }
  87.                 if(TP_TC[3]==2)
  88.                 {
  89.                         TC3=1;
  90.                 }
  91.        
  92.        
  93.         switch(ZTJJ)
  94.         {
  95.                
  96.                 case 0:
  97.                         TC0=1;
  98.                         break;
  99.                                
  100.                 case 1:
  101.                         TC1=1;
  102.                         break;
  103.                
  104.                 case 2:
  105.                         TC2=1;
  106.                         break;
  107.                
  108.                 case 3:
  109.                         TC3=1;
  110.                         break;
  111.                
  112.                 default:
  113.                         break;
  114.         }
  115. }


  116. /*
  117. 操作流程
  118. 1、TC0-3全關(guān),使用AIN0-AIN3進(jìn)行檢測(cè)找到低于閾值(1000-4000)
  119. 2、當(dāng)發(fā)現(xiàn)高于閾值時(shí),開啟對(duì)應(yīng)充電,使其指示燈亮。
  120. 2、按照0-3順序分配充電任務(wù),開啟對(duì)應(yīng)4056。
  121. 3、等待對(duì)應(yīng)充電芯片F(xiàn)lash信號(hào)發(fā)出,確認(rèn)完成(保持開啟,指示燈亮)。
  122. 5、檢測(cè)到對(duì)應(yīng)ZTJJ充電完成后,再使用一次ADC_Sampling、BAT_Logic
  123. */
  124. int main()
  125. {
  126.        
  127.         Set_All_GPIO_Quasi_Mode;               
  128.         P10_Input_Mode;
  129.         P03_Input_Mode;
  130.         P02_Input_Mode;
  131.         P15_Input_Mode;
  132.        
  133.          P00_PushPull_Mode;
  134.          P04_PushPull_Mode;
  135.          P05_PushPull_Mode;
  136.          P01_PushPull_Mode;
  137.        
  138.         TC0=0;
  139.         TC1=0;
  140.         TC2=0;
  141.         TC3=0;
  142.        
  143.        
  144.         Timer3_Delay100ms(20);

  145.        
  146.         READ_BANDGAP();//讀取內(nèi)部基準(zhǔn)電壓,獲得修正Coe
  147.         ADC_Sampling();
  148.         ADC_Sampling();
  149.         ADC_Sampling();
  150.         ADC_Sampling();
  151.         ADC_Sampling();
  152.         BAT_Logic();
  153.         while(1)
  154.         {       
  155.                 switch(ZTJJ)
  156.                 {
  157.                        
  158.                         case 0:
  159.                                 if(!Flash0)
  160.                                 {
  161.                                         ADC_Sampling();
  162.                                         BAT_Logic();
  163.                                 }
  164.                                 break;
  165.                                        
  166.                         case 1:
  167.                                 if(!Flash1)
  168.                                 {
  169.                                         ADC_Sampling();
  170.                                         BAT_Logic();
  171.                                 }
  172. ……………………

  173. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
邏輯充電器(電路、程序、手冊(cè)).rar (619.7 KB, 下載次數(shù): 105)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:142891 發(fā)表于 2019-9-22 22:17 | 只看該作者
支持一下,看一下。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美第一视频 | 狠狠干综合视频 | 久在线 | 99国产精品久久久 | www.久草.com | 色婷婷一区 | 九九热精品在线 | 在线播放国产一区二区三区 | 欧美精品欧美精品系列 | 精品国产鲁一鲁一区二区张丽 | www.玖玖玖| 日韩在线小视频 | 久久精品一级 | 精品在线一区 | 欧美视频中文字幕 | 九七午夜剧场福利写真 | 欧美视频第三页 | 久草免费在线视频 | 欧美日韩免费视频 | 国产一区二区三区在线 | 一级女毛片 | 亚洲精品丝袜日韩 | 欧美黄色免费网站 | 日韩区| 欧美激情视频一区二区三区在线播放 | 欧美成人a∨高清免费观看 91伊人 | 国产精品二区三区 | 国产在线观看av | 一级片免费在线观看 | 欧美精品一区二区三区在线 | 精品国产91久久久久久 | 国产露脸国语对白在线 | 国产一级特黄aaa大片评分 | 97人人干| 中文字幕乱码视频32 | 在线精品一区二区 | 亚洲视频一区在线观看 | 欧美综合一区二区三区 | 黄网免费| 国产精品久久久 | 亚洲图片一区二区三区 |