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

QQ登錄

只需一步,快速開始

搜索
查看: 2035|回復(fù): 6
收起左側(cè)

如何用單片機(jī)來(lái)做充電指示燈(4顆燈)

[復(fù)制鏈接]
ID:959051 發(fā)表于 2022-7-20 09:02 | 顯示全部樓層 |閱讀模式
我用單片機(jī)ADC檢測(cè)出來(lái)了電池電壓,想通過(guò)插充電器時(shí)檢測(cè)電池電量并且通過(guò)指示燈指示,同時(shí)最后一顆燈閃爍,表示正在充電,充滿后指示燈不閃爍。放電也會(huì)顯示指示燈,電量從高到低,通過(guò)指示燈來(lái)顯示。請(qǐng)問(wèn)這個(gè)判斷代碼該如何寫呢?
回復(fù)

使用道具 舉報(bào)

ID:584814 發(fā)表于 2022-7-20 17:07 | 顯示全部樓層
1、將電池正常電壓區(qū)間從低到高分段,再設(shè)一個(gè)低和滿;
2、用單片機(jī)ADC檢測(cè)出來(lái)了電池電壓,與上面的比較;
3、滿足某條件就觸發(fā)對(duì)應(yīng)的LED,以你想要的方式點(diǎn)亮。
已知你用單片機(jī)ADC檢測(cè)出來(lái)了電池電壓,那就用多個(gè) IF 好了
回復(fù)

使用道具 舉報(bào)

ID:959051 發(fā)表于 2022-7-23 09:09 | 顯示全部樓層
man1234567 發(fā)表于 2022-7-20 17:07
1、將電池正常電壓區(qū)間從低到高分段,再設(shè)一個(gè)低和滿;
2、用單片機(jī)ADC檢測(cè)出來(lái)了電池電壓,與上面的比較 ...

你好,現(xiàn)在有個(gè)問(wèn)題就是在充電時(shí)電壓處于臨界值指示燈不清晰,一會(huì)兩個(gè)燈閃 一會(huì)一個(gè)燈閃。差不多持續(xù)30秒到一分鐘的樣子。請(qǐng)問(wèn)有什么好辦法嗎?
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-7-23 11:34 | 顯示全部樓層
還不行?
你在另外一個(gè)帖子說(shuō)明白了,我以為搞定了呢可以把你自己的完整代碼和硬件電路上傳上來(lái)看一下,不要截圖
我覺得你這是個(gè)DIY的東西,可以上傳的
回復(fù)

使用道具 舉報(bào)

ID:496636 發(fā)表于 2022-7-23 14:24 | 顯示全部樓層
guoqiang881245 發(fā)表于 2022-7-23 09:09
你好,現(xiàn)在有個(gè)問(wèn)題就是在充電時(shí)電壓處于臨界值指示燈不清晰,一會(huì)兩個(gè)燈閃 一會(huì)一個(gè)燈閃。差不多持續(xù)30 ...

你可以用個(gè)延時(shí)程序,電壓判斷過(guò)程中,得持續(xù)一定時(shí)間,狀態(tài)才轉(zhuǎn)變,這樣可以突略掉突然地電壓上升和下降引起的狀態(tài)改變。
各個(gè)電壓區(qū)間對(duì)應(yīng)各個(gè)狀態(tài)。
回復(fù)

使用道具 舉報(bào)

ID:959051 發(fā)表于 2022-7-23 22:52 | 顯示全部樓層
Y_G_G 發(fā)表于 2022-7-23 11:34
還不行?
你在另外一個(gè)帖子說(shuō)明白了,我以為搞定了呢可以把你自己的完整代碼和硬件電路上傳上來(lái)看一下,不要 ...

我已經(jīng)上傳了代碼,想了好幾天,我覺得這個(gè)是最終的,可以實(shí)現(xiàn)我的要求。謝謝你們,感謝有你們。
回復(fù)

使用道具 舉報(bào)

ID:959051 發(fā)表于 2022-7-23 22:55 | 顯示全部樓層
  1. /*充電檢測(cè)****************************************************************************************************/
  2. /**充電
  3. 小于3.5V第一顆燈閃,1.21V
  4. 大于3.5V到3.7V第一顆亮,第二顆閃  1.21-1.28
  5. 3.7V到3.9V第一,二顆燈亮,第三顆閃 1.28-1.35
  6. 3.9V到4.15V第一二三燈亮,第4顆閃 1.35-1.43
  7. 大于4.15V就全亮表示充滿*******P03充電 低插入充電器**************************************************************************************/
  8. void Charge_lamp()
  9. {
  10.         if (P03 == 0)
  11.         {       
  12.                 if (Flag3000ms)
  13.                 {
  14.                         Flag3000ms = 0;
  15.                         if (Adc_celiang() >= 1.470)
  16.                         {       
  17.                                 chongdian4 = 0;chongdian3 = 0;chongdian2 = 0;chongdian1 = 0;P10 = 1;P11 = 1;P12 = 1;P13 = 1;
  18.                         }
  19.                         else if (Adc_celiang() >= 1.425 && Adc_celiang() <= 1.465) //閃第四顆燈
  20.                         {
  21.                                 chongdian4 = 1;chongdian3 = 0;chongdian2 = 0;chongdian1 = 0;;P10 = 1;P11 = 1;P12 = 1;                       
  22.                         }
  23.                         else if (Adc_celiang()>=1.365 && Adc_celiang()<=1.420)  //閃第三顆燈
  24.                         {
  25.                                 chongdian4 = 0;chongdian3 = 1;chongdian2 = 0;chongdian1 = 0;P10 = 1;P11 = 1;P13 = 0;
  26.                         }
  27.                         else if (Adc_celiang()>=1.285 && Adc_celiang()<=1.360)         //閃第二顆燈
  28.                         {
  29.                                 chongdian4 = 0;chongdian3 = 0;chongdian2 = 1;chongdian1 = 0;P10 = 1;P12 = 0;P13 = 0;
  30.                         }
  31.                         else if (Adc_celiang() <= 1.280)  //閃第一顆燈
  32.                         {
  33.                                 chongdian4 = 0;chongdian3 = 0;chongdian2 = 0;chongdian1 = 1;P11 = 0;P12 = 0;P13 = 0;
  34.                         }
  35.                 }       
  36.         }                       
  37.                
  38. }
  39. //充電閃燈判斷
  40. void ChongDSD()
  41. {
  42.         if (P03 == 0)
  43.         {
  44.                        
  45.                 if (chongdian4)  //閃第四顆燈
  46.                 {       
  47.                 //        chongdian4 = 0;
  48.                         if (Flag100ms){Flag100ms = 0;P13 = !P13;}
  49.                 //        P13 = !P13;
  50.                 }
  51.                 else if (chongdian3)  //閃第三顆燈
  52.                 {
  53.                 //        chongdian3 = 0;
  54.                         if (Flag100ms){Flag100ms = 0;P12 = !P12;}
  55.                 //        P12 = !P12;
  56.                 }
  57.                 else if (chongdian2)        //閃第二顆燈
  58.                 {
  59.                 //        chongdian2 = 0;
  60.                         if (Flag100ms){Flag100ms = 0;P11 = !P11;}
  61.                 //        P11 = !P11;
  62.                 }
  63.                 else if (chongdian1)        //閃第一顆燈
  64.                 {
  65.                 //        chongdian1 = 0;
  66.                         if (Flag100ms){Flag100ms = 0;P10 = !P10;}
  67.                 //        P10 = !P10;
  68.                 }
  69.         }
  70. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表