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

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

QQ登錄

只需一步,快速開(kāi)始

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

鉛酸電池太陽(yáng)能充電模塊STM8程序資料 12V/24V自動(dòng)識(shí)別

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
文檔說(shuō)明
資料中提供的是一份針對(duì)鉛酸電池的 太陽(yáng)能12V/24V自動(dòng)識(shí)別充電控制器的技術(shù)資料,包括硬件圖紙、源程序、工藝說(shuō)明和使用說(shuō)明,技術(shù)資料。
1、    硬件圖紙包括一份原理圖和對(duì)應(yīng)的PCB圖,使用PROTEL99SE或者其他兼容軟件打開(kāi),沒(méi)有該軟件或者兼容軟件的,請(qǐng)自己想辦法下載軟件。
2、    開(kāi)發(fā)環(huán)境,源程序使用C語(yǔ)言編寫(xiě),開(kāi)發(fā)環(huán)境使用STVD+COSMIC。STVD是ST公司官方提供的免費(fèi)單片機(jī)開(kāi)發(fā)平臺(tái),只能編譯匯編,但允許使用第三方C語(yǔ)言編譯器COSMIC,在STVD的平臺(tái)上運(yùn)行源程序,除了去ST公司下載STVD以外,還要去COSMIC官網(wǎng)下載針對(duì)STM8單片機(jī)的第三方軟件。COSMIC提供32K免費(fèi)一年的版本,用戶可以下載注冊(cè)獲取許可證,有了STVD和COSMIC就可以建立起軟件開(kāi)發(fā)平臺(tái)了。需要注意的是,由于COSMIC的免費(fèi)版本不斷升級(jí),安裝時(shí)的路徑可能與源工程文件中設(shè)置的目錄有差別,用戶可以在STVD的工程設(shè)置中修改成正確的編譯器連接目錄。如下圖:

在Toolset中選擇 STM8 Cosmic,在Root path中選擇COSMIC STM8的正確路徑。
源文件中使用iostm8s003.h頭文件,可以使用COSMIC提供的iostm8s103.h替代。
3、    關(guān)于單片機(jī)STM8S003K3的開(kāi)發(fā)環(huán)境,提供了三份文檔,三份文檔均來(lái)自ST公司官方資料。
A、    基于STM8S單片機(jī)如何進(jìn)行項(xiàng)目開(kāi)發(fā),開(kāi)頭講到了開(kāi)發(fā)需要的文檔信息。
B、    STM8S003K3的數(shù)據(jù)手冊(cè),注意這份文件只是針對(duì)該型號(hào)的一些特異性和電氣屬性,不涉及寄存器與具體的編程操作。
C、    STM8S系列單片機(jī)的中文編程手冊(cè),英文好的最好到官網(wǎng)下載英文的手冊(cè),英文有時(shí)候比中文版本的更新信息更準(zhǔn)確。該文檔介紹了STM8S整個(gè)系列的寄存器以及操作方法,不特指STM8S003K3。
4、    關(guān)于工藝說(shuō)明書(shū)以及實(shí)物
本套資料是經(jīng)過(guò)市場(chǎng)檢驗(yàn)的,確定可以使用的產(chǎn)品資料,工藝說(shuō)明書(shū)以及使用說(shuō)明書(shū)中給出了比較詳細(xì)的加工,使用注意事項(xiàng)。
5、本程序是其他程序中移植而來(lái),所以源程序C語(yǔ)言的變量、宏定義和一些語(yǔ)句可能與本模塊無(wú)關(guān),但是并不影響功能,閱讀或移植時(shí),請(qǐng)留意辨別。

該說(shuō)明書(shū)對(duì)應(yīng)的硬件版本:12V/24V   V1.0
一、    模塊參數(shù)
1、    系統(tǒng)電壓:    12V/24V自動(dòng)識(shí)別
2、    額定充電電流:20A
3、    提升充電電壓:14.6V / 29.2V
4、    直充充電電壓:14.4V / 28.8V
5、    浮充充電電壓:13.6V / 27.2V
6、    超壓保護(hù):    17V  / 34V
7、    欠壓:        12V  / 24V
8、    過(guò)放:        11.1V / 22.2V
9、    溫度補(bǔ)償:    -4mV /℃/2V
二、    系統(tǒng)連線
請(qǐng)按下圖連接,最好在蓄電池的正極出線口使用一個(gè)保險(xiǎn)絲,防止蓄電池外線短路。


圖1 連接圖
三、    LED指示燈說(shuō)明12V/24V
1、    太陽(yáng)能電池板指示燈:常亮表示有光照;黑夜指示燈熄滅;快速閃爍表示系統(tǒng)超壓。
2、    浮充指示燈:進(jìn)入充電狀態(tài),該燈閃爍;不充電,該燈滅。
3、    蓄電池指示燈:該燈常亮表示電壓高于12.5V/25V,電壓正常;蓄電池電壓大于11.1V/22.2V,但是小于12.5V/25V,該燈閃爍表示欠壓。
4、    蓄電池缺電:該燈亮,表示電壓低于11.1V / 22.2V;電壓回復(fù)到12.5V以上,則熄滅。
四、    注意事項(xiàng)
1、    電路板固定時(shí),要特別留意如果固定器件是金屬,千萬(wàn)不可導(dǎo)致電路板上電路短路。
2、    連接蓄電池和太陽(yáng)能板的導(dǎo)線一定要牢靠,焊接導(dǎo)線的時(shí)候可以在走大電流的路徑上再加焊錫,以增大導(dǎo)通能力。
3、    電路板不防水,要在恰當(dāng)?shù)沫h(huán)境下使用。
4、    盡量通風(fēng),可以有效降低發(fā)熱。

加工工藝參考書(shū)
本指導(dǎo)書(shū)針對(duì)電路板:12V/24V 20A V1.0
加工工藝僅作參考,可根據(jù)實(shí)際情況和經(jīng)驗(yàn)做調(diào)整。
一、    工具類(lèi)
1、    電烙鐵:焊接插件和涂錫選用40W或者50W電烙鐵,功率太低的電烙鐵可能拉錫的時(shí)候功率不夠,過(guò)大功率的電烙鐵可能會(huì)導(dǎo)致銅皮脫落。但是焊接貼片元器件時(shí),建議使用外熱20W/30W電烙鐵。
2、    專(zhuān)用工裝:工裝是用來(lái)焊接保持產(chǎn)品一致性,提高生產(chǎn)效率的特定裝備,需要根據(jù)用戶自身需求自行設(shè)計(jì),比如焊接4個(gè)LED燈的高度控制等,可以考慮自行設(shè)計(jì)工裝。
二、    MOS管的組裝
1、    電路板上共使用2顆MOS管,充電電流會(huì)流經(jīng)這兩顆MOS管,所以當(dāng)以20A充電時(shí)MOS管會(huì)發(fā)熱,MOS管上必須安裝散熱片以解決發(fā)熱問(wèn)題,否則MOS管會(huì)因?yàn)榘l(fā)熱嚴(yán)重而燒毀。因此MOS管跟散熱片的安裝非常重要。
2、    散熱片是雙管腳固定的,實(shí)際電路板上只有一個(gè)管腳用到,所以另外一個(gè)管腳可以剪掉或者壓彎。
3、    在MOS管的扇熱面涂抹導(dǎo)熱硅脂,將MOS管和散熱片用螺釘擰緊。注意必須保證MOS管跟散熱片接觸緊密,這樣有利導(dǎo)熱,另外還要保證MOS管的固定位置處于散熱片的中間,否則散熱片的管腳和MOS管管腳焊接時(shí)錯(cuò)位。
三、    焊接流程
貼片元器件使用貼片機(jī)自動(dòng)焊接,以下僅針對(duì)插件以及大電流走線的涂錫部分。
1、    插件焊接原則是先焊接矮的,再焊接高的。
2、    焊接電容時(shí),請(qǐng)注意插件電容均有極性,請(qǐng)按電路板上的標(biāo)識(shí)進(jìn)行焊接,請(qǐng)勿極性焊反。電容焊接時(shí),電容管腳不能懸空,要將電容安裝到位后焊接。
3、    焊接40A保險(xiǎn)絲時(shí),為了保持整潔美觀,保險(xiǎn)絲最好不要懸空焊接。因?yàn)楸kU(xiǎn)絲上要走大電流,所以焊接保險(xiǎn)絲必須要有足夠的焊錫。
4、    焊接4個(gè)LED指示燈。LED指示燈是有方向的,切勿焊反。實(shí)際LED指示燈長(zhǎng)腳對(duì)應(yīng)二極管的正極,短腳對(duì)應(yīng)二極管的負(fù)極。焊接高度的控制 可以根據(jù)實(shí)際要求利用工裝解決。另外要注意由于LED的安裝高度較高,兩個(gè)管腳之間要避免短路。
5、    大電流部分的拉錫焊。模塊以20A充電時(shí),電路板部分線路上會(huì)流過(guò)大電流,為了增加電路板走線的導(dǎo)通能力,需要在部分走線上拉錫。電路板上所有開(kāi)窗的走線正面和反面均需要做拉錫處理。拉錫均勻且足量。除了走線拉錫以外,MOS管與走線相連的部分也要涂上足夠的錫,總之在整個(gè)20A電流的回路中不管走線粗還是細(xì)都盡量多涂焊錫,以確保導(dǎo)電能力。
   
四、    充電測(cè)試
1、    焊接完成以后,進(jìn)入測(cè)試以前,先要目測(cè)一下電路板上器件狀態(tài),電容極性有無(wú)搞錯(cuò),二極管方向是否正確等等。
2、    連接導(dǎo)線測(cè)試。導(dǎo)線連接示意圖見(jiàn)使用說(shuō)明書(shū)

單片機(jī)源程序如下:
  1. /*
  2. 程序:太陽(yáng)能控制器充電模塊
  3.       
  4. 硬件:本程序適用12V/24V  20A V1.0
  5. 作者:
  6. 日期:
  7. 基本功能表述:
  8. 1、只有充電功能
  9. 2、額定電壓:    12V/24V鉛酸電池自動(dòng)識(shí)別?

  10. 3、提升充電電壓:14.6V/29.2V
  11. 4、直充充電電壓:14.4V/28.8V
  12. 5、浮充充電電壓: 13.6V/27.2V
  13. 7、超壓電壓:    17V/34V
  14. 8、欠壓:        12V/24V
  15. 9、過(guò)放:         11.1V/22.2V
  16. 10、溫度補(bǔ)償范圍 -5 --- 55 °,僅對(duì) 充電返回,提升充電,直充 ,  浮充進(jìn)行補(bǔ)償
  17. 11、使用內(nèi)部 16M RC振蕩器,2分頻,8Mhz運(yùn)行,對(duì)于時(shí)間要求不嚴(yán) ,可使用內(nèi)部RC,如果對(duì)時(shí)間要求很高,則使用外部8M晶振
  18. 12、額定電流 20A

  19. 修改記錄:
  20. 修改LED的指示功能
  21. 1.   1號(hào)燈,綠燈,不接太陽(yáng)能板或者黑夜時(shí) 不亮, 接上太陽(yáng)能電池板,有光照時(shí) 常亮。
  22. 2.   2號(hào)燈   綠燈,開(kāi)始充電后,閃爍;不充電 不亮。
  23. 3.   3號(hào)燈   綠燈,電壓達(dá)到正常電壓后,常亮, 低于標(biāo)準(zhǔn)電壓后閃爍。
  24. 4.   4號(hào)燈   紅燈,電池降低到最低電壓后紅燈常亮, 高于最低電壓熄滅。

  25. 修改PWM_BAT初始化時(shí)的狀態(tài),有原來(lái)的初始=0,改為初始化=1, 以關(guān)閉對(duì)應(yīng)MOS管

  26. */



  27. #include <iostm8s003.h>
  28. #define GLOBAL
  29. #include "data.h"

  30. #include "ad.h"
  31. #include "display.h"
  32. #include "manage.h"


  33. //-------------------------------------------------
  34. //--------------------------------------------------

  35. //---------------------------------------------------------------------------------
  36. //----------------------------------------------------------------------------------
  37. //----------------------------------------------------------------------------------
  38. void sys_initialize(void);
  39. void wtd_manage(unsigned char wtd_data);

  40. int main( void )
  41. {  
  42.     //--------------clock--io,ad,time,eeprom,ram  initialize-------------
  43.     sys_initialize();  
  44.     while(1)
  45.     {
  46.         analyze_manage();      //根據(jù)ad值 綜合處理
  47.         wtd_manage(IWTD_FEED);    //喂狗
  48.     }
  49. }
  50. void wtd_manage(unsigned char wtd_data) //獨(dú)立看門(mén)狗一旦開(kāi)啟 ,將無(wú)法關(guān)閉
  51. {
  52.     if (1 == wtd_data)          //啟動(dòng)看門(mén)狗
  53.     {
  54.         IWDG_KR = 0XCC;
  55.         IWDG_KR =  0X55; //解鎖
  56.         IWDG_RLR = 0XFF;
  57.         IWDG_PR =  0x06; //256分頻
  58.         IWDG_KR = 0XAA;        
  59.     }
  60.     else if (2 == wtd_data) //喂狗
  61.     {
  62.         IWDG_KR = 0XAA;
  63.     }
  64. }

  65. void sys_initialize(void)
  66. {
  67.    unsigned char temp1 = 0;
  68.    unsigned char temp2 = 0;
  69.    unsigned char temp3 = 0;
  70.    unsigned long temp4 = 0;
  71.   //---------------如果需要對(duì)時(shí)鐘進(jìn)行管理先進(jìn)行時(shí)鐘管理---------------   
  72.         for(temp4 = 0; temp4 < 255; temp4++)
  73.         {
  74.                 ;
  75.         }
  76.         //---------------使用內(nèi)部RC---------------
  77.     CLK_ICKCR |= 0X01;//開(kāi)HSI
  78.     while (!(CLK_ICKCR & 0x02));
  79.     CLK_CKDIVR = 0X08;  //HSI 2分頻后 8M,保持與外部晶振一致,CPU的頻率 = 8M
  80.     CLK_HSITRIMR = 0x00; //不進(jìn)行校正
  81.     TEST:
  82.     CLK_PCKENR1 = 0X80;  //TIME 1 時(shí)鐘使能
  83.     CLK_PCKENR2 = 0X08; //AD
  84.         
  85.     //-----------------io 口設(shè)置--------------------------
  86.         CFG_GCR |= 0x01;//PD1做io口,不做SWIM仿真口
  87.     PA_DDR = 0X08; //PA3 輸出,PA1,PA2設(shè)置成輸入
  88.     PA_CR1 = 0XFE; //PA3 推挽輸出,PA1 PA2上拉輸入
  89.     PA_CR2 = 0X00; //
  90.     PA_ODR = 0X00; //輸出為0
  91.    
  92.     PB_DDR = 0XC0; //PB6,PB7輸出,PB5 PB4 PB0未用,PB3--PB1 ,AD?
  93.     PB_CR1 = 0Xf1;
  94.     PB_CR2 = 0X00;
  95.     PB_ODR = 0X00; //
  96.    
  97.     PC_DDR = 0X00; //PC全部沒(méi)有使用
  98.     PC_CR1 = 0XFF; //
  99.     PC_CR2 = 0X00; //
  100.     PC_ODR = 0X00; //
  101.    
  102.     PD_DDR = 0XC0; //PD6、PD7作為PWM控制輸出 推挽,其他PD口 均做上拉輸入
  103.     PD_CR1 = 0XFF;
  104.     PD_CR2 = 0X00;
  105.     PD_ODR = 0x80;
  106.         
  107.         PE_DDR = 0X00; //PE5 上啦輸入
  108.         PE_CR1 = 0XFF;
  109.         PE_CR2 = 0X00;
  110.         PE_ODR = 0X00;
  111.         
  112.         PF_DDR = 0X10; //PF4 推挽輸出
  113.         PF_CR1 = 0XFF;
  114.         PF_CR2 = 0X00;
  115.         PF_ODR = 0X00;
  116.    
  117.     //-----------------ram 初始--------------------------------------

  118.     ad_ch.pv_mosoff = 0XFF; //設(shè)置成黑夜
  119.         flag.charge_enable = DISABLE; //
  120.    
  121.     //-----------------ADC 采集設(shè)置----------------------------------
  122.     ADC_TDRL = 0XFF;
  123.     ADC_TDRH = 0XFF;
  124.     ADC_CSR  = 0X02; //通道2,禁止轉(zhuǎn)換中斷,禁止模擬看門(mén)狗中斷,轉(zhuǎn)換未結(jié)束
  125.     ADC_CR1  = 0X20; //8MHZ 4分頻,頻率2M,單次轉(zhuǎn)換,禁止ADC
  126.     ADC_CR2  = 0X08; //數(shù)據(jù)右對(duì)齊,禁止外部觸發(fā),禁止掃描
  127.     ADC_CR3  = 0X00; //
  128.    
  129.     //-----------------定時(shí)器TIME1設(shè)置,0.5ms中斷一次------------------------------------
  130.     TIM1_PSCRH = 0X00;
  131.     TIM1_PSCRL = 0X07; //8分頻 后 1MHZ
  132.     TIM1_ARRH =  0X01; //定時(shí) 0.5ms
  133.     TIM1_ARRL =  0Xf4;
  134.     TIM1_CNTRH = 0X00;
  135.     TIM1_CNTRL = 0X00;
  136.     TIM1_CR1   = 0X01; //啟動(dòng)計(jì)數(shù)器工作,允許更新事件發(fā)生?揮屑拇嫫鞲虜挪率錄?
  137.                      //禁止自動(dòng)預(yù)裝載,計(jì)數(shù)器向上計(jì)數(shù),邊緣 對(duì)齊
  138.     TIM1_IER = 0X01; //允許更新中斷
  139.         
  140.         
  141.     display_open();
  142.     _asm("rim");
  143.         wtd_manage(IWTD_ON);
  144. }

  145. //----------------------------------------定時(shí)器中斷 0.5ms-------------------------
  146. @far @interrupt void tim1_over_int (void)
  147. {
  148.         
  149.     static unsigned char time_30MS = 0;
  150.     static unsigned char ad_times = 0; //ad采集的次數(shù)
  151.    
  152.     static unsigned int  time_2000MS = 0;
  153.     static unsigned char time_pulse = 0;
  154.         
  155.         static unsigned char time_load_pwm = 0;
  156.         
  157.         static unsigned long time_bat_full = 0; //電池充滿時(shí)間
  158.         
  159.     unsigned char i;
  160.     unsigned int temp_ad;
  161.     static unsigned char count=0;
  162.    
  163.    
  164.     static unsigned int  led_pv_time = 0;
  165.         static unsigned int  led_float_time = 0;
  166.     static unsigned int  led_bat_time = 0;
  167.     static unsigned int  led_load_time = 0;
  168.    
  169.     TIM1_SR1 &= ~0X01;
  170.    
  171.     //--------------各種延時(shí),延時(shí)可能存在交差,所以使用各自延時(shí),不共用-------------------
  172.    
  173.     if (flag.start_delay_10M_open == 1)    //延時(shí)10分鐘 對(duì)應(yīng)黑夜判斷
  174.     {
  175.         if(++time_delay_10M_open >= TIME_DELAY_10M)  
  176.         {
  177.             flag.over_delay_10M_open = 1;
  178.         }
  179.     }
  180.    
  181.     if (flag.start_delay_10M_close == 1)   //十分鐘 對(duì)應(yīng)白天判斷
  182.     {
  183.         if(++time_delay_10M_close >= TIME_DELAY_10M)
  184.         {
  185.             flag.over_delay_10M_close = 1;
  186.         }
  187.     }
  188.    
  189.    
  190.     if (flag.start_delay_2S_day == 1)  // 此處的時(shí)間2S
  191.     {
  192.         if(++time_delay_2S_day >= TIME_DELAY_2S)
  193.         {
  194.             flag.over_delay_2S_day = 1;
  195.         }
  196.     }
  197.    
  198.    
  199.     if (flag.start_delay_30M_directcharge == 1)//延時(shí)30分鐘
  200.     {
  201.         if(++time_delay_30M_directcharge >= TIME_DELAY_30M)
  202.         {
  203.             flag.over_delay_30M_directcharge = 1;
  204.         }
  205.     }
  206.    
  207.     //----------------充電MOS控制----------------------------------------------------
  208.     //MOS控制是一直進(jìn)行的。分負(fù)載和充電
  209.     //充電,每個(gè)周期30ms,33HZ  //2S插入 5ms的低電平,和5ms 高 電平
  210.     if (flag.charge_enable == ENABLE)
  211.     {
  212.         ad_times = 0;
  213.         time_2000MS++;
  214.         time_30MS++;
  215.         if ((time_2000MS >= 4000) && (time_30MS >= PWM_H_NUM))
  216.         {
  217.             if (++time_pulse > 10)
  218.             {
  219.                 time_2000MS = 0;
  220.                 time_pulse = 0;
  221.             }
  222.             else
  223.             {
  224.                 if (time_pulse == 9)
  225.                 {
  226.                     ad_ch.bat_mosoff_buf = 0;
  227.                     ad_ch.pv_mosoff_buf = 0;
  228.                     for (i = 0; i<2;i++)
  229.                     {
  230.                         ad_ch.bat_mosoff_buf  += ad_collect(AD_BAT) ;//
  231.                         ad_ch.pv_mosoff_buf  += ad_collect(AD_PV);
  232.                     }
  233.                     ad_ch.bat_mosoff = ad_ch.bat_mosoff_buf >> 1;
  234.                     ad_ch.pv_mosoff  = ad_ch.pv_mosoff_buf  >> 1;   
  235.                 }
  236.                 if (time_pulse <= 10)
  237.                 {
  238.                     PV_PWM_L;
  239.                     BAT_PWM_L;
  240.                 }
  241.             }
  242.         }
  243.         else
  244.         {
  245.             ad_ch.bat_mosoff_buf = 0;
  246.             ad_ch.pv_mosoff_buf = 0;
  247.             temp_ad = 0;
  248.             for (i = 0;i<2;i++)
  249.             {
  250.                 temp_ad += ad_collect(AD_BAT) ;
  251.             }
  252.             ad_ch.bat_moson_average_buf += (temp_ad >> 1);
  253.             count++;
  254.             if (time_30MS >= PWM_H_NUM)
  255.             {
  256.                 time_30MS = 0;
  257.                 ad_ch.bat_moson_average = ad_ch.bat_moson_average_buf / count  ;
  258.                 if ((ad_ch.bat_moson_average_buf % count) != 0)
  259.                 {
  260.                     ad_ch.bat_moson_average += 1;
  261.                 }
  262.                 ad_ch.bat_moson_average_buf = 0;
  263.                 count = 0;
  264.                 pwm_h_num = pwm_h_num_buf;
  265.                                 flag.calculate_pwm_enable = 1;
  266.                
  267.                 if (pwm_h_num == 0)
  268.                 {
  269.                     PV_PWM_L;
  270.                     BAT_PWM_L;
  271.                 }
  272.                 else
  273.                 {
  274.                     PV_PWM_H;
  275.                     BAT_PWM_H;
  276.                 }   
  277.             }
  278.             else
  279.             {
  280.                 if (time_30MS >= pwm_h_num)
  281.                 {
  282.                     PV_PWM_L;
  283.                     BAT_PWM_L;
  284.                 }
  285.                 else
  286.                 {
  287.                     PV_PWM_H;
  288.                     BAT_PWM_H;
  289.                 }
  290.             }
  291.         }
  292.     }
  293.     else
  294.     {
  295.                 PV_PWM_L;
  296.         BAT_PWM_L;
  297.         time_2000MS = 0;
  298.         time_30MS = 0;
  299.         time_pulse = 0;
  300.         ad_ch.bat_moson_average_buf = 0;
  301.         ad_ch.bat_mosoff_buf  += ad_collect(AD_BAT) ;//
  302.         ad_ch.pv_mosoff_buf  += ad_collect(AD_PV);
  303.         if (++ad_times >= 16)
  304.         {
  305.             ad_ch.bat_mosoff = ad_ch.bat_mosoff_buf / 16;
  306.             if (ad_ch.bat_mosoff_buf % 16 )
  307.             {
  308.                 ad_ch.bat_mosoff += 1;
  309.             }
  310.             ad_ch.pv_mosoff  = ad_ch.pv_mosoff_buf  /16;
  311.             if (ad_ch.pv_mosoff_buf % 16 )
  312.             {
  313.                 ad_ch.pv_mosoff += 1;
  314.             }
  315.             ad_ch.bat_mosoff_buf = 0;
  316.             ad_ch.pv_mosoff_buf = 0;
  317.             ad_times = 0;
  318.         }   
  319.     }
  320.     //------------------------------------------------------------------
  321.     //------------------------------------------------------------------
  322.      
  323.     //----------------------------LED燈閃爍管理---------------------------------
  324.     //PB6
  325.     //pv指示燈:正常充電       常亮
  326.     //          超壓           快速閃爍  12V系統(tǒng)大于17V  24V系統(tǒng)大于34V
  327.     //          白天但未充電   慢閃
  328.     //--------------------pv_led----------------------------
  329.     if (flag.alarm_over_voltage_bat  == 1)//電池超壓,快閃,超壓
  330.     {
  331.         if (++led_pv_time > TIME_DELAY_100MS)
  332.         {
  333.             led_pv_time = 0;
  334.             PB_ODR ^= 0X40; //PB6
  335.         }
  336.     }
  337.                 else if (flag.pv_close_load == ENABLE)//  2014-9-3 增加
  338.                 {
  339.                         LED_PV_H;
  340.                 }
  341.     else
  342.     {
  343.         LED_PV_L;  //晚上長(zhǎng)滅
  344.     }
  345.     //-------------------bat_led----------------------------
  346.           //GRENN LED---PF4
  347.           //RED   LED---PB7
  348.     //電壓正常---------綠色燈常亮
  349.     //欠壓    ---------綠色燈慢閃
  350.     //過(guò)放    ---------紅色燈亮
  351.         
  352.         if (flag.alarm_lower_voltage  == 1 && flag.return_lower_voltage == 1) //發(fā)生了過(guò)放并且當(dāng)前的低壓低于過(guò)放返回電壓
  353.         {
  354.                 //紅燈亮,綠燈滅
  355.                 LED_BAT_G_L;
  356.                 LED_BAT_R_H;
  357.                
  358.         }
  359.         else if (flag.alarm_low_voltage == 1) //欠壓,
  360.         {
  361.                 LED_BAT_R_L;
  362.                 if (++led_bat_time > TIME_DELAY_1S)
  363.                 {
  364.                         led_bat_time = 0;
  365.                         PF_ODR ^= 0X10;
  366.                 }        
  367.                
  368.         }
  369.         else   //電壓正常
  370.         {
  371.                 LED_BAT_G_H;
  372.                 LED_BAT_R_L;
  373.                
  374.         }
  375. //-----------------------------FLOAT CHARGE----------------
  376. //浮充 正在充電 該燈閃爍,如果不充電 則不亮
  377.     if ( (flag.charge_enable == 1) ) //充電中 進(jìn)入浮充狀態(tài)90分鐘算充滿 ,綠色閃爍&& (flag.charge_mode == 3)
  378.         {
  379.                 if (++led_float_time > TIME_DELAY_1S)
  380.         {
  381.             led_float_time = 0;
  382.             PB_ODR ^= 0X80;
  383.         }
  384.                
  385.         }
  386.         else
  387.         {
  388.                 LED_FLOAT_L;
  389.         }
  390.    
  391. }
復(fù)制代碼

所有資料51hei提供下載(這個(gè)電路板可在某寶搜索獲得,廣告一下):
太陽(yáng)能充電模塊資料.7z (3.68 MB, 下載次數(shù): 194)

評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:142383 發(fā)表于 2020-4-16 16:11 | 只看該作者
資料比較詳細(xì),學(xué)習(xí)學(xué)習(xí)!
回復(fù)

使用道具 舉報(bào)

板凳
ID:349717 發(fā)表于 2020-4-19 09:46 | 只看該作者
大神啊,我過(guò)來(lái)學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

地板
ID:292518 發(fā)表于 2020-4-19 09:49 | 只看該作者
大神請(qǐng)教一下,
3、提升充電電壓:14.6V/29.2V
4、直充充電電壓:14.4V/28.8V
5、浮充充電電壓: 13.6V/27.2V
7、超壓電壓:    17V/34V

這幾個(gè)參數(shù) 怎么改?
回復(fù)

使用道具 舉報(bào)

5#
ID:281113 發(fā)表于 2020-4-29 16:36 | 只看該作者
這個(gè)可以!
回復(fù)

使用道具 舉報(bào)

6#
ID:196702 發(fā)表于 2020-4-29 19:08 | 只看該作者
下載學(xué)習(xí),感謝分享
回復(fù)

使用道具 舉報(bào)

7#
ID:71233 發(fā)表于 2020-6-16 10:21 | 只看該作者
請(qǐng)教大神,如何檢測(cè)電池電已充滿?電池電壓還是充電電流?
12V的電池充滿電的電壓是多少伏?充電電流又是多少才算電已充滿?
回復(fù)

使用道具 舉報(bào)

8#
ID:526148 發(fā)表于 2020-7-23 00:13 來(lái)自手機(jī) | 只看該作者
可以貼出來(lái)電路圖嗎?想學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

9#
ID:47634 發(fā)表于 2020-7-23 06:38 | 只看該作者
這個(gè)很好,感謝樓主的無(wú)私奉獻(xiàn),下載學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

10#
ID:507641 發(fā)表于 2022-9-17 10:29 | 只看該作者
移植 stc 要注意什么?對(duì) stm8不了解用 stm8也麻煩!謝謝!
回復(fù)

使用道具 舉報(bào)

11#
ID:169891 發(fā)表于 2023-2-6 16:40 | 只看該作者
沒(méi)看到12V/24V自動(dòng)識(shí)別部分
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 少妇性l交大片免费一 | 在线观看成年人视频 | 国产成人久久精品一区二区三区 | 国产亚洲精品综合一区 | 激情五月综合 | 久久久久久亚洲精品 | 中文字幕亚洲欧美日韩在线不卡 | 一二三四在线视频观看社区 | 精品自拍视频在线观看 | 日日操夜夜操天天操 | 一级黄a视频 | 国产精品视频在线观看 | 国产精品一区二区在线播放 | 91精品国产91久久综合桃花 | 日本中文字幕一区 | 日韩福利| 东方伊人免费在线观看 | 亚洲精品 在线播放 | 国产日韩欧美 | 亚洲福利 | 国产日屁 | 久久久99精品免费观看 | 欧美区在线 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 日韩欧美精品 | 欧美日韩福利视频 | 成人精品 | 91精品一区二区三区久久久久 | 激情av| 中文字幕一区二区三区乱码在线 | 色桃网 | 国产亚洲欧美另类一区二区三区 | 欧洲av在线 | 欧美精品一二三区 | heyzo在线| 国内精品免费久久久久软件老师 | 亚洲喷水 | 日韩高清中文字幕 | 毛片在线免费 | 视频一二区 | 91av亚洲|