聯盛德W806和INA226等於功率計

發布於 2022-04-15 17:27:25

@TOC

本文使用環境
電腦:windows10
主控:W806(240MHZ)
外設采集:INA226(IIC)
外設顯示:0.91 OLED(IIC)
編譯環境:平頭哥的CDK
原理圖PCB:立創EDA,(當然完全開源,鏈接就在下面,可以自己拿去改)

立創EDA中的硬件設計

程序代碼

github地址

CSDN文章

一、 項目概述

    這個是我自己抽空做的一個小設計,感興趣的可以試一試,就當練手,可惜的是當時下單的時候搞錯了,沒有下單基佬紫,原諒色有點醜,只能將就。
上圖:
在這裡插入圖片描述
    就是一個功率計、也叫庫侖計、還叫什麼什麼計,那不重要,作用都是用來采集外部電壓、電流、功耗的。本計以W806單片機作為主控,INA226作為外部電壓電流采集IC來做的設計。這裡不討論成本什麼的,只考慮能不能行,感不感興趣。當時這款開發板給我的最深刻的印象就是240Mhz,還有價格8.9,芯片是5.9RMB。所以毫不猶豫買回來試一試,畢竟任何一個電子愛好者都是搜集開發板,然後吃灰。

USB3.0接口。
輸入電壓:4.5-36。
測量電流:0-5A。PS -- 我並沒有實際測過,只做過2A一小時的實際測試,5A沒那條件,幹不了。

主控:W806
顯示:0.91OLED(IIC)
電壓電流:INA226(IIC)
這兩個外設其實可以使用一路IIC的,但我是分開設計的。

二、硬件設計

    關於硬件設計鏈接我放在了開頭,有需要的可以直接拿過去修改,當然我畫的板子還是存在各種的小問題,有問題的可以指出來,大家一起修改。

1、硬件方案確定

    在設計之前肯定是首先選擇方案,詳情見下圖,當然這裡的方案選擇前面也說了,是我的一廂情願,並未實際考慮成本是否最優等。完全是我自己的興趣愛好,僅此而已,所以不再贅述。
在這裡插入圖片描述

說明一下:
1、下載問題
    板子設計有CH340N,所以不需要外接USB轉TTL了,同時複位鍵我也直接接到了單片機上,應該可以實現不用按複位鍵就可以實現程序的下載和執行 當然這是我後面加的功能,並沒有在我第一版上實現,這個功能並未實際驗證,但是問題不大,因為我看到群裡有老哥這樣做了,正常使用,所以可以參考這個設計
2、實際焊接中的問題:
    焊接的時候,遇到過電源不接負載輸出電壓不正常的情況,接上負載一切正常,所以如果有參考設計的請注意一下這個問題。

三、軟件設計

1、程序設計

考慮到實際的需求,軟件設計分為如下幾個方面:
在這裡插入圖片描述

1、數據保存
    這裡主要用於保存充電的時間,當有功耗產生時,才進行計時,斷開後數據會保存在flash中,直到手動清零,否則不會自動清理。
2、定時器計時
    每一秒鐘中斷一次,使用一個變量進行計時,沒一秒鐘加一次。我實際測過,24小時之內是沒有問題的,時間不會有肉眼可見的偏差,當然因為我只做了24小時,所以並不是說最長只有24小時。
3、電壓電流采集
    程序我都是參考網上的教程,所以不做過多的說明,在最後我也會把源程序附上,可以直接下載。只說我遇到的問題。INA226初始化問題:
在這裡插入圖片描述
        前兩個函數沒問題,主要是第三個函數的CAL值,存在爭議。
在這裡插入圖片描述

    CAL是在.h文件定義的,我參考的其他設計,所以在INA226的采樣電阻第一版使用R100即0.1歐姆,實際應用的時候發現最多只能測量600多mA的電流,最後采用四個0.1並聯的方式,將電阻降到了0.0245才正常使用。當然0.025的采樣電阻我也最多只測試過2A的電流,因為手裡最多就只有2A的負載,並未低其他數值進行測試,有條件的可以試一試。講一講這個值是怎麼算的。
首先查看ina226的datasheet:(手冊15頁)
在這裡插入圖片描述
    CAL就是寫入寄存器的值,RSHUNT是采樣電阻的值這裡為:0.025。進一步也就是說需要算出Current_LSB的值。這就涉及到其他的公式了,我在這裡也是一頭霧水,現在大概看懂了一些。有興趣的可以看一看原版英文手冊。

    INA226_VAL_LSB,是電壓寄存器的LSB,也就是說一個bit代表多少電壓的意思,采用默認值2.5uV,寄存器的最大值位0X7FFF = 32767,所以最大的電壓為 = 2.5/1000X32767 = 81.9175mV。采樣電阻為0.025,最大電流為 = 81.9175/0.025 = 3276.7mA。這就是Maximum Expected Current。
Current_LSB = Maximum Expected Current / 32767 = 0.1。
CAL = 0.00512 X 1000 / (0.025 X 0.1) = 2048
注意:以上公式中有的是/1000有的是*1000這裡是單位的換算。

4、OLED顯示
    就是單純的使用OLED顯示。看程序就能看懂。
5、外部中斷按鍵
    主要是預留的按鍵,其中一個按鍵並未使用到,另外一個按鍵用於時間的清零。

2、程序流程

    比較簡單直接看圖。
在這裡插入圖片描述
    程序不再展開了,可以直接參考源代碼。

四、結束語

    本工程只能說參考,設計中還是有很多的不合理的,大家可以在下面留言評論,後續有時間再改版。

    有人可能會問精度,emmm。猶豫沒有專業的設備,所以無法給出具體的值,我有一個買的電流計,用起來兩個數值差不多的,所以感興趣只能自己去慢慢調教。

最後再上一張圖。
在這裡插入圖片描述

2 條評論

發布
問題