電壓電流采樣測量是常常見到的mcu應用,電壓的測量相對容易。電流測量則要麻煩一些。尤其是考慮到微小電流(ua級)和較寬的測量范圍,往往需要對電流采樣電阻上的電壓差進行高倍率的放大,或者需要改變取樣電阻以獲得不同的測量范圍。電路的復雜性和成本就會較高。模擬前端則需要專門設計的電流放大器,通常就是儀表放大器,適用的共模電壓范圍也不是很寬。
如果是低端要求不高的測量那就可以使用通用運放,一級或者兩級放大,在低端采樣不需要考慮共模電壓,實現起來比較簡單。這樣的低成本電壓電流測量,用國民技術的N32G435系列微控制器就很合適了。國民技術的N32G435有著較高的集成度,帶有高性能的ADC和集成OPA,很適合電流放大測量,價格又不高。可以節省運放成本和減少PCB占用。能夠實現低成本,電路簡潔的電壓電流測量。
下面讓我們來探索一下如何實現:
設計的目標是低成本,簡潔實現~~
那么電壓測量使用電阻分壓到ADC的輸入范圍就行了。電流測量其實也就是測量電流采樣電阻上的微小電壓差,所以需要有放大。G435芯片里面有2個OPA,可以配置成PGA,程序就可以控制放大倍數了,這就非常靈活方便了。
讓我們從官方例程開始,N32G435庫里面的例程,有個OpaAdByTim,看起來非常合適。
keil里面安裝好支持包,打開此例程,編譯通過,下載運行,一切順利……嗯……應該是吧,結果在哪兒看呢?串口也沒有回傳~~還是得去讀讀代碼啦。
主程序里前面就是各部分配置函數,主循環只有更改PGA增益,其他就沒了。
所以應該在中斷里~ADC中斷函數里有這樣的:
ADC_ConvertedValue[0][0] = ADC_GetInjectedConversionDat(ADC, ADC_INJ_CH_1) & MASK_AD_BITS;
ADC_ConvertedValue[0][1] = ADC_GetInjectedConversionDat(ADC, ADC_INJ_CH_2) & MASK_AD_BITS;
別處就沒有對ADC_ConvertedValue的處理了。所以就只能進入調試狀態,斷點到此,看看數據啦~沒錯,官方例程就是這樣簡潔!
這樣不夠直觀,要看數據變化也繁瑣了點,所以還是需要稍微更改一下。
為了簡單起見,加個串口傳送的部分,就可以用各種串口軟件查看了。
可以參考另外一個例程,USART下面的Printf例程。把里面的頭文件包上,配置代碼也復制過來,RCC配置,GPIO配置都復制過來,別忘記fputc函數,這是重定義到串口輸出的關鍵。一番復制粘貼然后編譯……哦……出錯了,什么什么USARTx未定義!好吧,查找了一番發現這些是在串口例程那邊的main.h里,復制過來到這邊(OpaAdByTim)的main.h里.編譯成功!
接著就可以用printf回傳到PC了。至于涉及到變量引用、轉換的需要又多搞了幾個全局變量來,然后在主程序循環中又對ADC結果做了多點平均,這些大家都會的操作就不必多說了。
回傳時順便做了個數值轉換,測得開發板VCC電壓是3.25V,所以 數據*3250/4096 就可以得到測量數據的電壓值(mv)。
代碼中可以看到OPA1的正輸入端連在PA4上,OPA2的正輸入端連在PA7上。
默認的OPA模式是跟隨模式,沒有放大。改成PGA模式,下面的增益設置才能起作用:
OPAMP_Initial.Mod = OPAMP_CS_PGA_EN; //OPAMP_CS_FOLLOW;//OPAMP_CS_PGA_EN;
OPAMP_Initial.Gain = OPAMP_CS_PGA_GAIN_32;
PC端使用了一個叫serial port plotter的軟件,不但可以看到數據,還能繪制圖形。
只是上傳的數據要符合其格式要求,也就是這樣的:
printf("$%d %d;",datasum_i,datasum_j);
前面$,中間空格,結尾;。
數據一旦可視化就直觀多了。nice!
這次就用電阻分壓出一個小電壓信號,用PGA放大來測量(以此實現電流測量):
以上是鋰電池輸出經過100k歐可調電阻/100歐 電阻分壓出的低電壓,PGA倍數32(最大),測得210/32=6.56mv,萬用表測量6.8mv。
可以看到穩定性稍差,這是因為用了20厘米以上的杜邦線連接,自然會有些干擾了。
經過256數據平滑處理就會穩定多了。
再把PGA設為8倍,無平滑處理。測得52/8=6.5mv.說明PGA倍數準確。
接下來設定為2倍,調整一下電阻比例,測得380/2=190mv.萬用表測量190mv。
以上是OPA1的測量結果,那么OPA2如何呢?
32倍時測得72/32=2.25mv,萬用表測量1.9mv。
OPA1測量結果偏小,OPA2偏大。那么輸入接地,可測得OPA1為0,OPA2為16/32=0.5mv。
這也就是offset了。OPA1的offset為負值,ADC采樣不到。
如果要搭建其他方式的運放電路,可以選擇通用模式,運放端子引出到引腳,內部無連接(除了ADC)。或者只是緩沖一下選擇跟隨器模式就好。不過PGA模式最簡潔低成本方便可調,要求不太高的話真是再合適不過了。看手冊里的參數指標比起358還是要好一些的。
另外,手冊里輸出范圍的說明,輸入是軌到軌,輸出并不是,而是縮減0.15V。
但實際測量不會這樣,還是可以實現軌到軌輸出,所以是哪樣呢?!
總之,經過以上測試,驗證了N32G435內部OPA和ADC的性能,官方的庫和例程也工作穩定,非常不錯。完全適合做低成本的電壓電流測量應用。非常值得推薦!
審核編輯 黃昊宇
-
電流
+關注
關注
40文章
6757瀏覽量
131880 -
電壓
+關注
關注
45文章
5565瀏覽量
115591 -
采樣測量
+關注
關注
0文章
2瀏覽量
6090
發布評論請先 登錄
相關推薦
評論