| 
  |||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe  | 
  
avr單片機自制的充電器,可以和計算機通訊,大家覺得怎么樣? | 
  
| 作者:fankun 欄目:單片機 | 
最近用avr單片機做了一個智能充電器,用的ATMEGA8全能單片機,測量精度電壓可以達到1mv,內(nèi)阻和電流不是很準。 采用PWM控制充電電流,用1安培左右的脈沖電流充電。 再用VB寫了個程式畫曲線。大家先看看曲線,這是一個1鎳氫電池的曲線。 當然還可以由電腦即時控 制充電電流,以便達到更好的效果。充電算法現(xiàn)在充到1.42V以上后再檢測dv/dt,多次比較現(xiàn)在與30s以前的電池電壓,以不再上升作為充滿的標志。  * - 本貼最后修改時間:2004-10-11 8:56:48 修改者:fankun 
  | 
  
| 2樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/24 11:31:00 發(fā)布:
         再看看vb畫的曲線 以后有不同的電池一定比較一下他們的充電曲線,給大家發(fā)上來!  * - 本貼最后修改時間:2004-10-11 8:49:58 修改者:fankun  | 
  |
| 3樓: | >>參與討論 | 
| 作者: crc 于 2004/9/24 11:53:00 發(fā)布:
         不錯.  | 
  |
| 4樓: | >>參與討論 | 
| 作者: qjy_dali 于 2004/9/24 15:31:00 發(fā)布:
         GOOD!  | 
  |
| 5樓: | >>參與討論 | 
| 作者: ddt 于 2004/9/25 2:39:00 發(fā)布:
         1mv精度行嗎? ?  | 
  |
| 6樓: | >>參與討論 | 
| 作者: cock 于 2004/9/25 2:46:00 發(fā)布:
         原外殼是充4節(jié)電池,現(xiàn)只充兩節(jié)嗎?  | 
  |
| 7樓: | >>參與討論 | 
| 作者: win2kddk 于 2004/9/25 21:05:00 發(fā)布:
         充電時要注意 在快速充電時(I=1C),dT/dV檢測方式,電池在充滿電后電壓下降的幅度很明顯,一般是采用電壓不再明顯上升時即判斷充滿95%,再轉(zhuǎn)為絹流充電(I=1/10-16)一段時間充滿。而電流的采集我是采用在充電電路中串入一個0.25毆的精密電阻,電阻兩段的電壓經(jīng)運放放大后送AD再轉(zhuǎn)換成電流的。希望你將微控制器改為M48,這樣的產(chǎn)品市場競爭為更強一些。  | 
  |
| 8樓: | >>參與討論 | 
| 作者: abc12349 于 2004/9/25 22:24:00 發(fā)布:
         我用PIC12F675做過一個類似的:)  | 
  |
| 9樓: | >>參與討論 | 
| 作者: abc12349 于 2004/9/25 23:18:00 發(fā)布:
         我用PIC12F675做過一個類似的:) 是4路獨立的,脈沖充電,脈沖寬度從小象大調(diào),同時控制電壓上升速率, 使充電速率不小于1小時來適應不同容量電池,電壓超過1.35V后保持固定的脈寬, 充電到電壓不再增加為止。 但總覺得好像充的不夠滿。 歡迎交流:) jack999888@163.com  | 
  |
| 10樓: | >>參與討論 | 
| 作者: qigongwei 于 2004/9/26 16:24:00 發(fā)布:
         我用ST72324 我用ST72324做過兩路的,可以控制充電電流,使其在快充階段做到真正的恒流;也做過四路的,只能固定電流,不能做到整個快充階段都是保持一個電流值,主要是AD不夠用;不同品牌的電池和電池在整個充電過程中內(nèi)阻有變化的,有時固定PWM占空比,實際的電流會相差很大。 我使用了dv/dt、dT/dV、Tmax、Vmax,也將所有的充電數(shù)據(jù),電壓、溫度、電流、時間會傳給計算機,如果要對比的話,這樣是比較方便。你用VB寫,我倒是想用labview做個。 win2kddk 提到溫度的變化,我以1C充鎳氫電池,在充電的后期(80%左右,電壓大概在1。4V,這個時候溫度變化比較大,并且隨著電流的增大,這個現(xiàn)象較明顯),但對鎳鎘好像不太好。如果用快充并且用dT/dV判斷,建議電流不要超過1。5C,要不在充電的中期溫度就會升得很高,對電池壽命不好。我用950mA充700mAh的NiMH,大概充到60%,溫度就上到50C(室溫,無強制散熱),這不好。NiCdH在充滿后吸收過充的能力比NiMH的要好,溫度上升的沒那么快,但dV/dt的變化很明顯,用10bit的AD就過了,不用運放。還有要做產(chǎn)品的話,不要用變壓器,用開關電源,像ST的ViPer會好很多的。 如果用Vmax我認為可在充電到1.4V左右后認為充電80%,這是在降低電流。 fankun好像你的數(shù)據(jù)有個問題,用1安培電流充電,在1.5小時也就是1.5Ah啊,離你的目標還差(2.1Ah-1.5Ah)=0.6Ah啊,而且你還是脈沖方式?? 我用1.3A充2100mAh的松下電池也要兩個多小時。∥乙彩怯妹}沖方式。我對你的VB程序有興趣,可否交流交流?CYPRESS有個方案,使用Delpih寫的代碼,也是顯示這樣的圖形。  | 
  |
| 11樓: | >>參與討論 | 
| 作者: qigongwei 于 2004/9/26 16:26:00 發(fā)布:
         剛剛發(fā)現(xiàn)我用的充電器外殼開來和你的是一個模,我的是白色的  | 
  |
| 12樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/27 11:41:00 發(fā)布:
         謝謝大家的指教,我再把我充電器的詳細原理說一下 檢測電流是通過量測充電時V1,V2的數(shù)值(V1-V2)/R7得到電流值I,這是一種非常節(jié)省成本的做法哦!同樣內(nèi)阻是檢測充電時V2和不充電時的V2’,然后(V2-V2’)/I得到充電的內(nèi)阻R。AVR單片機內(nèi)部參考源是2.56V,在1.2上下范圍內(nèi)精度是很高的,接近0V和接近2.56V的電壓都量的不準,我用萬用表量過。ATMEGA8L只有10bit的ADC,要想精度提高的話,我是采用timer2定時中斷,V1每625us采樣一次,32次的和加起來作為一個值。這樣得到的是15bit的值,而且可以減小50Hz電源的干擾。從單片機發(fā)過來的數(shù)據(jù)來看不充電時的V1,V2前后兩個數(shù)據(jù)基本一致,比如V1 0x456C 0x456F 0x4572 0x4570,V2 0x4579 0x457A 0x457E 0x457E。充電時V1’ 0x5284 0x5285 0x5267 0x524E,V2’ 0x4B1D 0x4B30 0x4B07 0x4AF4,數(shù)據(jù)也相差不大。算下來V1分別是17772/12627=1.4075 1.4077 1.4079 1.4078,相對精度還是挺高的。另外充滿后用萬用表量過,和單片機量出來的電壓一致。 要想測試電池性能,加上放電線路Q7 R13就可以了,不過是小電流放電,要有耐心才行。 目前還沒有測溫的線路,很想加。用手摸摸,感覺充電過程中電池熱,但是不燙。 打算采用更先進的充滿檢測方法:dV/dQ 解釋一下,先說現(xiàn)在常用的是dV/dT,就是定電流充電,檢測單位時間里電壓變化量,對NiMH電池來說,dV/dT小于一個數(shù)值就算充滿了。我打算充電后期降低充電電流,因此dV/dT將不適用。所以用dV/(dT*I),即dV/dQ,檢測充入單位電荷后的電壓變化量,dV/dQ小于一個數(shù)值即認為電池充滿了。先看看定電流時dV/dQ的圖,很明顯的在充電后期dV/dQ上升很快,單位mv/C(毫伏每庫侖)。 
  | 
  |
| 13樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/27 11:45:00 發(fā)布:
         回cock:現(xiàn)在只充兩節(jié) 回qigongwei:你說的很對, fankun好像你的數(shù)據(jù)有個問題,用1安培電流充電,在1.5小時也就是1.5Ah啊,離你的目標還差(2.1Ah-1.5Ah)=0.6Ah啊,而且你還是脈沖方式?? 我用1.3A充2100mAh的松下電池也要兩個多小時! 我現(xiàn)在加入了計算mAH的功能,看來是沒充滿,或者是電池沒用完。  | 
  |
| 14樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/27 12:18:00 發(fā)布:
         GP1300的充電曲線 GP1300的充電曲線 紅色是電壓曲線,綠色是電流曲線,黃色是內(nèi)阻曲線,棕色是dV/dQ 總共充進去了1191mAH,看來大電流充電不怎么充得滿啊 
  | 
  |
| 15樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/27 12:23:00 發(fā)布:
         varta1600 varta1600 1600mAH的充電曲線。看來可以把dV/dQ的開始下降點或者超過某數(shù)值作為電池充滿的依據(jù)啊 
  | 
  |
| 16樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/27 13:00:00 發(fā)布:
         線路圖少畫了二極管,不好意思  | 
  |
| 17樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/27 13:13:00 發(fā)布:
         順便把PCB正面的圖也上傳一下 
  | 
  |
| 18樓: | >>參與討論 | 
| 作者: hotpower 于 2004/9/27 13:31:00 發(fā)布:
         不錯,準備做個4路的玩玩 以前用EMC和PIC的做過2路的,再想用avr的做個4路的. 需要4路PWM和8路ADC. 請教: AVR有10位的PWM和12位的ADC嗎??? 價格在40元左右... 謝謝...  | 
  |
| 19樓: | >>參與討論 | 
| 作者: qigongwei 于 2004/9/27 14:44:00 發(fā)布:
         我的GP1300的和你的數(shù)據(jù)有些不太相同 我也充了GP1300的NiMH電池,我的數(shù)據(jù)是串口返回的數(shù)據(jù),是文本文件沒有你的那個程序,無法直接看到數(shù)據(jù)曲線。但我時間觀察發(fā)現(xiàn)一個現(xiàn)象,和你的曲線有些出入。 1)、我用1300mA充電。充電過程始終根據(jù)電流反饋,調(diào)整電流,也就是不管外界條件如何變化,電流都一直在一個穩(wěn)定值。用這種方法,可以發(fā)現(xiàn)在進入快充后,大概是10~20min左右把,會出現(xiàn)一個電壓的小尖鋒,類似與后面判滿的那個尖鋒,唯一不同的是斜率不同。 2)、我固定PWM輸出,取一個放完電的電池(用電子負載以1C放電,一小時以后,以0.2C放電電壓低于1V)做參考,調(diào)整PWM的輸出控制電流的大小在1300mA。 同樣上述的曲線也出現(xiàn)了。我的測量數(shù)據(jù)有百多份。我不太明白在你給出的曲線中這一段好像沒有。我使用的是脈沖方式,每隔周期的停止時間測量電壓、電流、溫度。同樣,也是每隔幾個uS采樣一次,一共18次再求均值(哦,在運算前,去掉了一個最高的值,去掉了一個最低值)。我的AD是10Bit的。我是用的方法可以充到9成左右(做過放電測試),電池特性好的可以到9.5以上,不知你用的dV/dQ可以充到幾成? “解釋一下,先說現(xiàn)在常用的是dV/dT,就是定電流充電,檢測單位時間里電壓變化量,對NiMH電池來說,dV/dT小于一個數(shù)值就算充滿了。我打算充電后期降低充電電流,因此dV/dT將不適用。所以用dV/(dT*I),即dV/dQ,檢測充入單位電荷后的電壓變化量,dV/dQ小于一個數(shù)值即認為電池充滿了。先看看定電流時dV/dQ的圖,很明顯的在充電后期dV/dQ上升很快,單位mv/C(毫伏每庫侖)。” 我想知道在沒有采用dV/dQ前,當判斷到充滿你是如何處理的?直接轉(zhuǎn)入涓流?我試過兩種方法,一種直接轉(zhuǎn)。另一種是步進降低,好像后面的方法要好些。可以充得跟多些。用時會超過10成,但沒有足夠得時間來測對壽命的影響。 to hotpower,我用的ST72324K4的好像不到1$啊,不知有沒有聽錯。512bytes的RAM,16kflsah,2個16Bit的Timers,可做16bit的PWM,SDIP32的有8個10Bit的AD,TQFP的有10個,呵呵,要是完全四路對立的就是PWM不過用。也可以用C語言,網(wǎng)上有它的編程器制作資料。 ST7LITE10有4個12bit的PWM,7個AD,在0~430mV下是13bit,在430mV~5V是10bit,夠本夠用?4kflash、256bytes的RAM,支持IAP、ICP。自帶ICD,可以省下一個仿真器的錢。價錢肯定不會超過40  | 
  |
| 20樓: | >>參與討論 | 
| 作者: win2kddk 于 2004/9/27 15:08:00 發(fā)布:
         真希望國內(nèi)的充電器廠家都能像我們這樣舍得用好東西 就不會再出現(xiàn)充電器內(nèi)只有幾個阻容和二極管了。我拆過SONY的充電器,內(nèi)有TOSHIBA的MCU或ATMEL的M16。  | 
  |
| 21樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/27 16:15:00 發(fā)布:
         抱歉,現(xiàn)在還沒有用到dV/dQ 只是畫出來看看可行不,等幾天再把程式寫進去。應該是用dV/d2Q,即dV/dQ的變化率來檢測充滿了。  | 
  |
| 22樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/27 16:24:00 發(fā)布:
         qigongwei你的調(diào)整PWM的輸出控制電流的大小在1300mA 我覺得挺難辦到的,我寫了個程式是用D/I來求得一安培的電流I所需的Duty,然后再乘以所要的電流。但是不行,輸出電流老振蕩。也試過讓電流小的時候D++,大了D--,也是不行,請教你是怎么調(diào)整電流的?  | 
  |
| 23樓: | >>參與討論 | 
| 作者: hotpower 于 2004/9/27 22:32:00 發(fā)布:
         謝謝qigongwei!  | 
  |
| 24樓: | >>參與討論 | 
| 作者: qigongwei 于 2004/9/28 9:16:00 發(fā)布:
         我的采樣方法可能和你的不一樣 我在充電回路上串接了一個2W的0。5歐姆的電阻,我是對這個電阻的電壓采樣來計算電流的,因為我還有放電回路,用來做脈沖的充電波形,這個電阻也被當成放電電阻。電流調(diào)整的精度和ADC的采樣精度、PWM的精度、PWM逼近的處理速度、PWM前級的那個boost的那個電容電感的放電速度相關。400mS處理一次,大概做到50MA左右的誤差,用安捷倫的電流探頭掛在邏輯分析儀上測的。因為PWM的影響,在加載在電池兩端的電壓會有些非常有規(guī)律的毛刺,電流采樣的時候避開就可。  | 
  |
| 25樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/28 14:54:00 發(fā)布:
         明白了,看來要久一點處理一次 還要多做幾次平均吧  | 
  |
| 26樓: | >>參與討論 | 
| 作者: 楚天 于 2004/9/28 18:33:00 發(fā)布:
         我也在做。 不過我做的比較大功率一點的。20V5A的。 感覺,一,AD精度低,二,AD速度慢,三,PWM頻率*分辨率不夠。 雖然48價格比較省,但是如果稍微做多點功能,FLASH就顯得很擁擠。我現(xiàn)在用ICC,實現(xiàn)基本功能就用了60%UP的FLASH。要是再加,恐怕只能用88了。 關于AD數(shù)據(jù)處理這里,我采用的算法是剔除最大最小值然后求平均的做法。還湊合。但是不適合用這個去做控制。為什么我也在探索。另外,數(shù)字環(huán)路有幾種策略,一是峰值電流型,這種電流內(nèi)環(huán),電壓外環(huán)的方式做起來,會出現(xiàn)電壓過沖,臨界點震蕩問題。按說數(shù)字閉環(huán)應該不會出現(xiàn)這樣的問題的。原因也在探索分析中。一是電流電壓并聯(lián)控制。這種方式我最早用的。相對來說,效果好于電流型。 另外,反饋補償上面,我現(xiàn)在采用的是UP/DOWN STEP控制。在我的板子上面,實踐證明好于比例或比例積分補償。 數(shù)字環(huán)路的閉環(huán)PWM電源系統(tǒng)和模擬方式的PWM有很大的不同,并且也欠缺理論支持。即使是開發(fā)了幾十年的模擬PWM電路,也沒有哪個統(tǒng)一的數(shù)學模型能夠含蓋其所有特性。 這方面,大家多交流,多探索。  | 
  |
| 27樓: | >>參與討論 | 
| 作者: hotpower 于 2004/9/28 19:58:00 發(fā)布:
         以前用PIC做過2路 現(xiàn)準備做4路的,想用m16. 好像各2路的PWM不太一樣???  | 
  |
| 28樓: | >>參與討論 | 
| 作者: fankun 于 2004/9/28 21:16:00 發(fā)布:
         to楚天:這是值得研究的領域 現(xiàn)在考慮通過電腦即時控制Duty研究一下數(shù)字系統(tǒng)的反饋,應該挺有意思的!  | 
  |
| 29樓: | >>參與討論 | 
| 作者: dadodo 于 2004/9/28 23:15:00 發(fā)布:
         做得不錯,有待改進,繼續(xù)努力  | 
  |
| 30樓: | >>參與討論 | 
| 作者: hotpower 于 2004/9/29 2:27:00 發(fā)布:
         祝AVR各位夜貓子中秋快樂  | 
  |
| 31樓: | >>參與討論 | 
| 作者: 黑野天使 于 2004/9/30 18:32:00 發(fā)布:
         這是一個很好的主題 我也是學這一行的,剛剛看了這個板子,很好。  | 
  |
| 32樓: | >>參與討論 | 
| 作者: tqdyx 于 2004/9/30 21:48:00 發(fā)布:
         你們會不會覺得用MEGA8大柴小用,實驗還可  | 
  |
| 33樓: | >>參與討論 | 
| 作者: rogerllg 于 2004/10/1 1:24:00 發(fā)布:
         強,比我做的好啊! 同上  | 
  |
| 34樓: | >>參與討論 | 
| 作者: highend 于 2004/10/2 8:39:00 發(fā)布:
         1安培左右的脈沖電流充電,在1.5小時之內(nèi)可以充滿2100mA的 拜托有點常識好不好???  | 
  |
| 35樓: | >>參與討論 | 
| 作者: lijunhao 于 2004/10/3 21:30:00 發(fā)布:
         ic  | 
  |
| 36樓: | >>參與討論 | 
| 作者: masashinakayama 于 2004/10/3 22:19:00 發(fā)布:
         好文。。。。。。。。。。。。! 等我找到老婆回頭好好做幾個東西  | 
  |
| 37樓: | >>參與討論 | 
| 作者: win95 于 2004/10/5 21:41:00 發(fā)布:
         re:1安培左右的脈沖電流充電,在1.5小時之內(nèi)可以充滿2100mA的 是啊,有些奇怪,可能是沒表達對吧。  | 
  |
| 38樓: | >>參與討論 | 
| 作者: lawdge 于 2004/10/6 11:11:00 發(fā)布:
         用2C以上的充電速率,最好用什么方法來檢測電池充滿?  | 
  |
| 39樓: | >>參與討論 | 
| 作者: zongtong 于 2004/10/7 22:28:00 發(fā)布:
         ??? 0.5C電流充電?合適嗎?  | 
  |
| 40樓: | >>參與討論 | 
| 作者: dadodo 于 2004/10/7 23:34:00 發(fā)布:
         看什么電池了,1C以上也可以 鬼子的隨身聽都有15分鐘快速充電的  | 
  |
| 41樓: | >>參與討論 | 
| 作者: xkq2001 于 2004/10/9 9:47:00 發(fā)布:
         有必要嗎? 假如聯(lián)手還可以,但實際產(chǎn)品要的可是性價比,你見過誰充電是還要用手動進行上位及操作?既然是智能就將算法改改,讓他自己全程監(jiān)控好了! 至于精度,量化誤差加你的系統(tǒng)誤差,那這1mV實在不敢茍同。精密儀器不過就千分之5,你的只能是理論性的,哪能?沒看見哪兒還討論溫漂這那。。。!  | 
  |
| 42樓: | >>參與討論 | 
| 作者: fankun 于 2004/10/9 17:10:00 發(fā)布:
         不需要上位操作啊 上位機只是保存數(shù)據(jù)分析而已,當然可以單片機全程監(jiān)控的了。調(diào)試用上位監(jiān)控很方便的嘛,所以才用的嘛。至于精度和溫漂,我們當然要追求更高了,達不到也沒太大的關系  | 
  |
| 43樓: | >>參與討論 | 
| 作者: airjordan 于 2004/10/10 8:39:00 發(fā)布:
         不知道樓主對充電電池有沒有了解 鎳氫充電電池標準電壓是1.2v,樓主你1.35v就開始充電了,哪這個電池肯定過充了,所以1個半小時充滿2100mHa也就可以解釋了 建議算法改為當電壓降到1.1v左右時候充,電壓1.35v就停止充電 鎳氫電池抗過充的能力是很差的,過充以后壽命會大減,如果長期按樓主的算法充電的話,那么記憶效應便會非常的明顯,電池容量會大大減小的  * - 本貼最后修改時間:2004-10-10 8:47:01 修改者:airjordan  | 
  |
| 44樓: | >>參與討論 | 
| 作者: fankun 于 2004/10/11 8:38:00 發(fā)布:
         我以前就是這樣的充法 這樣電池充不滿,大電流充電不適合用這樣的方法airjordan看過電池的充電曲線吧?最后的那張圖最清楚了,鎳氫充電電池充到1.45V左右才會滿的。  | 
  |
| 45樓: | >>參與討論 | 
| 作者: 云過客 于 2004/10/12 14:37:00 發(fā)布:
         請問該PCB是用什么軟件畫的? 夠低級的問題,但是我的確想知道。謝謝。  | 
  |
| 46樓: | >>參與討論 | 
| 作者: yuxinzhi 于 2004/10/12 19:06:00 發(fā)布:
         應該可以擴展更多功能! 不是可以擴展更多功能!  | 
  |
| 47樓: | >>參與討論 | 
| 作者: fankun 于 2004/10/13 9:54:00 發(fā)布:
         ALLEGRO畫的 ATMEGA8L還有一些空的腳,程序空間只用了29%,應該還可以擴展液晶,測溫等吧.  | 
  |
| 48樓: | >>參與討論 | 
| 作者: ljc2003 于 2004/10/14 20:17:00 發(fā)布:
         一致阿 一致阿  | 
  |
| 49樓: | >>參與討論 | 
| 作者: huangyilin 于 2004/10/15 21:23:00 發(fā)布:
         還可以 我是新人哦。。 但是覺得還是不錯的哦~0~  | 
  |
| 50樓: | >>參與討論 | 
| 作者: jiejie001 于 2010/5/21 9:10:20 發(fā)布:
         大家都是高手。我在用AVR16做過充電器。電流檢測那塊怎么弄不通啊。PA1口最為電流檢測的ADC端。電流信號轉(zhuǎn)為電壓信號來檢測。當沒有充電。該端口的怎么還會有電壓。怎么解決這個問題啊  | 
  |
  | 
    
 
  | 
  
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號  |