產(chǎn)品實物:
一、產(chǎn)品概述
數(shù)字電壓電流表,又稱為數(shù)顯電流電壓表,是以數(shù)字形式顯示,能夠同時檢測電流和電壓兩種電參量的儀表。隨著數(shù)字技術(shù)和微電腦技術(shù)的不斷發(fā)展,這類儀表以芯片為核心,廣泛應用于工業(yè)自動化和工控領(lǐng)域。
數(shù)字電壓電流表通常與各種傳感器、變送器配合使用,用于測量電量、壓力、物位、液位、流量、溫度等參數(shù),并直接以數(shù)字形式顯示測量結(jié)果。例如,它可以用于測量各種電路元件的電壓,如電源電壓、電容電壓、電感電壓等。此外,在電子設備的維修與調(diào)試中,數(shù)字電壓電流表也發(fā)揮著重要作用,通過測量電路中的電壓,技術(shù)人員可以判斷電子元件、電路板的工作狀態(tài),快速定位故障點,提高維修效率。
與指針式儀表相比,數(shù)字電壓電流表具有很高的輸入阻抗,使得其自身損耗很小,無需對其損耗誤差進行修正。然而,數(shù)字儀表也存在一些不足之處,如在某些特定應用場景下可能不如指針式儀表直觀。
總的來說,數(shù)字電壓電流表以其高準確度、直觀性、自動化和多功能性等特點,在電力、電子、通信、自動化控制等領(lǐng)域得到了廣泛的應用,并為相關(guān)行業(yè)的技術(shù)人員提供了強大的工具,幫助他們更高效地進行設備的測量、調(diào)試和維修工作。
二、主控MCU選擇
本方案采用CW32F003E4P7芯片片作為核心控制單元,負責整個系統(tǒng)的數(shù)據(jù)處理和控制。
CW32003E4P7的產(chǎn)品特性如下:
? 內(nèi)核:ARM? Cortex?-M0+
- 最高主頻 48MHz
? 工作溫度:-40℃至 105℃;工作電壓:1.65V 至 5.5V
? 存儲容量
- 最大 20K 字節(jié) FLASH,數(shù)據(jù)保持 25 年 @85℃
- 最大 3K 字節(jié) RAM,支持奇偶校驗
-22 字節(jié) OTP 存儲器
? CRC 硬件計算單元
l 復位和電源管理
- 低功耗模式(Sleep,DeepSleep)
- 上電和掉電復位(POR/BOR)
- 可編程低電壓檢測器(LVD)
? 時鐘管理
- 內(nèi)置 48MHz RC 振蕩器
- 內(nèi)置 32kHz RC 振蕩器
- 內(nèi)置 10kHz RC 振蕩器
- 內(nèi)置 150kHz RC 振蕩器
- 外部引腳輸入時鐘
- 允許獨立關(guān)斷各外設時鐘
? 支持最多 21 路 I/O 接口
- 所有 I/O 口支持中斷功能
- 所有 I/O 支持中斷輸入濾波功能
- 12 位精度,±1 LSB
- 最高 1M SPS 轉(zhuǎn)換速度
- 內(nèi)置電壓參考
- 內(nèi)置溫度傳感器
? 雙路電壓比較器
? 定時器
- 16 位高級控制定時器,支持 6 路捕獲 / 比較通道和 3 對互補 PWM 輸出,死區(qū)時間和靈活的同步功能
- 一組 16 位通用定時器
- 三組 16 位基本定時器
- 窗口看門狗定時器
- 獨立看門狗定時器
? 通信接口
- 兩路低功耗 UART,支持小數(shù)波特率
- 一路 SPI 接口 12Mbit/s
- 一路 I2C 接口 1Mbit/s
- IR 調(diào)制器
? 串行調(diào)試接口 (SWD)
三、方案組成框圖設計
四、參數(shù)功能列表
(1) 電壓測量范圍:0-33V。(2) 電流測量范圍:0-3A。(3) 顯示分辨率:電壓0.01V,電流0.01A。 (4) 測量精度:電壓±0.02V,電流±0.02A。(5) 工作溫度:-20℃~100℃。(6) 顯示方式:雙排3位數(shù)碼管顯示,實時顯示當前電壓和電流。(響應時間≤0.2秒)(7) 顯示分辨率:3位數(shù)字顯示。根據(jù)輸入量程,自動換檔,以盡量兼顧顯示分辨率及測量精度。(8) 有儀表的標定和校準功能。(利用按鍵或藍牙)五
方案主要硬件設計
1.電壓檢測:
通過適當?shù)姆謮弘娐罚瑢⒋郎y電壓降低到CW32芯片可接受的范圍內(nèi),然后接入CW32的ADC(模數(shù)轉(zhuǎn)換器)進行數(shù)字化處理。數(shù)字電壓電流表的采樣電路原理圖如下圖所示,
分壓電阻為220K+10K,因此分壓比例為22:1。
如果使用1.5V作為參考電壓,根據(jù)R8和R7的阻值配比可以得到最高采樣電壓為:
1.5 / 10 * (220 + 10)= 34.5V因此可以滿足33V的輸入范圍要求。如果在實際使用中,需要測量的電壓或高于模塊33V的設計電壓,可以選擇更換分壓電阻或通過修改基準電壓來實現(xiàn)更大量程的電壓測量范圍??紤]到被測電源可能存在波動,在電路設計時,在低側(cè)分壓電阻上并聯(lián)了0.1uF的濾波電容提高測量穩(wěn)定性。另外,在產(chǎn)品設計中,考慮精度問題,電阻選擇千分之一精度。
2. 電流檢測:
采用低側(cè)電流采樣電路進行電流檢測,采樣電路的低側(cè)與表頭供地。
本項目設計的采樣電流為3A,選擇的采樣電阻為100mΩ。
采樣選型主要需要參考以下幾個方面:
設計測量電流的最大值,本項目中為3A;
(1) 檢流電阻帶來的壓差,一般不建議超過0.5V;
(2) 檢流電阻的功耗,應當根據(jù)該參數(shù)選擇合適的封裝,本項目考慮到PCB尺寸,選擇了2512封裝;
(3) 檢流電阻上電壓的放大倍數(shù):本項目中沒有使用放大電路,因此倍率為1。
隨后便可以通過以上參數(shù)計算出檢流的阻值選擇:
(1) 由于本項目沒有使用放大電路,因此需要選擇更大的采樣電阻獲得更高的被測電壓以便于進行測量;
(2) 考慮到更大的電阻會帶來更大的壓差、更高的功耗,因此也不能無限制的選擇更大的電阻;
(3) 本項目選用了2512封裝的電阻,對應的溫升功率為1W。
綜合以上數(shù)據(jù),本項目選擇了100mΩ的檢流電阻,根據(jù)公式可以計算出3A*100mΩ=300mV,900mW。表頭在設計時考慮到了貼片采樣電阻不能夠應對不同的使用環(huán)境,尤其是電流較大的場景,因此預留了10mm間距的康銅絲直插焊盤,可以更具實際使用場景,使用康銅絲替換貼片采樣電阻。下圖中紅色方框框選出的即是康銅絲焊接焊盤。
3. 藍牙通訊電路:
使用KT6368A作為藍牙主控芯片。
只需要通過藍牙進行數(shù)據(jù)透傳,也就是通過藍牙把數(shù)據(jù)發(fā)送出去,便于用戶通過手機或電腦對被測電壓電流進行無線監(jiān)控,不需要其他復雜功能,因此本項目中選擇了外圍電路極其簡單的KT6368A,只需要使用單芯片+晶振便可實現(xiàn)BLE通信,同時該芯片為雙模芯片,還可以支持SPP通信。
為了降低項目成本,模塊采用了PCB板載天線替代外接天線或陶瓷天線,在室內(nèi)環(huán)境依舊可以保持良好的通信效果,若實際使用場景對通信距離有要求,可根據(jù)實際情況改為不同的天線類型。
4. 另外還有數(shù)碼管顯示電路、電源設計電路、按鍵電路、最小系統(tǒng)電路等。這里不再一一描述。
六、軟件重點編輯思想
1. 數(shù)碼管動態(tài)掃描:
數(shù)碼管顯示的動態(tài)掃描原理如下:顯示器中所有數(shù)碼管在系統(tǒng)控制下有序逐位點亮,每位數(shù)碼管的點亮時間為1到2微秒。利用人體視覺暫留現(xiàn)象及發(fā)光二極管余輝效應,各位數(shù)碼管并非同時點亮,但掃描速度足夠快,從而一組穩(wěn)定不閃爍顯示數(shù)據(jù)。
在程序中,使用定時器定時掃描每位數(shù)碼管。
定時時中斷定時執(zhí)行如下代碼,以實現(xiàn)數(shù)碼管的動態(tài)掃描。注意定時器定時時間要足夠短,比如1MS.
Close_Com(); //先關(guān)閉公共端,防止重影 Seg_Dis(num,Seg_Reg[num]); //開斷碼,然后開位碼。 num++; //切換數(shù)碼管位數(shù) if(num > 6) { num = 0; }
2. 數(shù)據(jù)采集處理 :
CW32F003 內(nèi)部集成一個 12 位精度、最高 1M SPS 轉(zhuǎn)換速度的逐次逼近型模數(shù)轉(zhuǎn)換器 (SAR ADC),最多可將 16 路模擬信號轉(zhuǎn)換為數(shù)字信號?,F(xiàn)實世界中的絕大多數(shù)信號都是模擬量,如光、電、聲、圖像信號等,都要由 ADC 轉(zhuǎn)換成數(shù)字信號,才能由 MCU 進行數(shù)字化處理。
在本系統(tǒng)中,需要采信2路AD,電壓及電流。因此,選用ADC的序列采樣連續(xù)轉(zhuǎn)換模式。序列連續(xù)轉(zhuǎn)換模式可對最多四個序列的通道進行輪流轉(zhuǎn)換。更多轉(zhuǎn)換原理,可參考芯片用戶手冊。
ADC初始化代碼如下 :
void ADC_init(void) { ADC_InitTypeDef ADC_InitStructure; //ADC配置結(jié)構(gòu)體 ADC_SerialChTypeDef ADC_SerialChStructure; //ADC序列通道結(jié)構(gòu)體 GPIO_InitTypeDef GPIO_Init_Struct; __RCC_GPIOB_CLK_ENABLE(); //打開ADC對應引腳時鐘 __RCC_ADC_CLK_ENABLE(); // 打開ADC時鐘 GPIO_Init_Struct.IT = GPIO_IT_NONE; GPIO_Init_Struct.Mode = GPIO_MODE_ANALOG;//將GPIO的模式配置成模擬功能 GPIO_Init_Struct.Pins = GPIO_PIN_1; // PB01是電壓采集引腳 GPIO_Init(CW_GPIOB, &GPIO_Init_Struct); PB01_ANALOG_ENABLE(); //使能模擬引腳 PB05_ANALOG_ENABLE(); ADC_StructInit(&ADC_InitStructure); // ADC默認值初始化 ADC_InitStructure.ADC_ClkDiv = ADC_Clk_Div128; //ADC工作時鐘配置 PCLK/4 = 6/4 = 1.5Mhz /*信號電壓較低時,可以降低參考電壓來提高分辨率。改變參考電壓后,同樣二進制表示的電壓值就會不一樣, 最大的二進制(全1)表示的就是你的參考電壓,在計算實際電壓時,就需要將參考電壓考慮進去。*/ ADC_InitStructure.ADC_VrefSel = ADC_Vref_BGR1p5; //參考電壓設置為1.5V ADC_InitStructure.ADC_SampleTime = ADC_SampTime10Clk; //由于電壓信號為慢速信號,ADC采樣時間為十個ADC采樣周期以確保準確 ADC_SerialChStructure.ADC_Sqr0Chmux = ADC_SqrCh9; //配置ADC序列,PB01是ADC的第9通道 ADC_SerialChStructure.ADC_Sqr1Chmux = ADC_SqrCh11; ADC_SerialChStructure.ADC_SqrEns = ADC_SqrEns01; ADC_SerialChStructure.ADC_InitStruct = ADC_InitStructure; //ADC初始化 ADC_SerialChContinuousModeCfg(&ADC_SerialChStructure); //ADC序列連續(xù)轉(zhuǎn)換模式配置 ADC_ClearITPendingAll(); //清除ADC所有中斷狀態(tài) ADC_Enable(); // ADC使能 ADC_SoftwareStartConvCmd(ENABLE); //ADC轉(zhuǎn)換軟件啟動命令 }
3. 數(shù)據(jù)濾波處理:由于采集到的原始數(shù)據(jù)有一定的波動,因此在顯示更新速度較快時,數(shù)字有跳動現(xiàn)象。
在數(shù)據(jù)處理前,可以增加常見的均值濾波算法。
均值濾波也稱為線性濾波,其采用的主要方法為鄰域平均法。線性濾波的基本原理是用均值代替原圖像中的各個像素值,即對待處理的當前像素點(x,y),選擇一個模板,該模板由其近鄰的若干像素組成,求模板中所有像素的均值,再把該均值賦予當前像素點(x,y),作為處理后圖像在該點上的灰度g(x,y),即g(x,y)=∑f(x,y)/m,m為該模板中包含當前像素在內(nèi)的像素總個數(shù)。
這本是數(shù)字圖像處理的一種方法,但也可以用在我們數(shù)字電壓電流表的ADC采樣數(shù)據(jù)上。我們選取一定次數(shù)的ADC采樣值存儲在數(shù)組 Volt_Buffer 中,然后去除掉數(shù)組中的最大值和最小值后再取平均,得到的值作為結(jié)果顯示在數(shù)碼管上,這樣可以較大程度獲得準確的、不易波動的數(shù)據(jù)。
均值濾波代碼如下:
uint32_t Mean_Value_Filter(uint16_t *value, uint32_t size) //均值濾波 { uint32_t sum = 0; //ADC采樣數(shù)據(jù)和 uint16_t max = 0; uint16_t min = 0xffff; //min初值取最大是為了將第一個數(shù)據(jù)記錄 int i; for(i = 0; i < size; i++) { sum += value[i]; if(value[i] > max) { max = value[i]; } if(value[i] < min) { min = value[i]; } } sum -= max + min; //去除最大最小值 sum = sum / (size - 2); return sum; }
4. 數(shù)據(jù)標定:
標定是通過測量標準器的偏差來補償儀器系統(tǒng)誤差,從而改善儀器或系統(tǒng)準確度、精度的操作。為了提高電壓電流表在測量時的測量精度和準確度,需要對電壓電流進行標定校準。
常見的標定原理如下:
假設一個采樣系統(tǒng),AD部分可以得到數(shù)字量,對應的物理量為電壓(或電流);
① 若在“零點”標定一個AD值點Xmin,在“最大處”標定一個AD值點Xmax,根據(jù)“兩點成一條直線”的原理,可以得到一條由零點和最大點連起來的一條直線,這條直線的斜率k很容易求得,然后套如直線方程求解每一個點X(AD采樣值),可以得到該AD值對應的物理量(電壓值):
上圖中的斜率k:
k =(Ymax-Ymin)/(Xmax-Xmin)
(因為第一點為“零點”,故上面的Ymin = 0)所以,上圖中任一點的AD值對應的物理量:
y = k×(Xad- Xmin)+0
② 上面的算法只是在“零點”和“最大點”之間做了標定,如果使用中間的AD采樣值會帶來很大的對應物理量的誤差,解決的辦法是多插入一些標定點。
如下圖,分別插入了標定點(x1,y1)、(x2,y2)、(x3,y3)、(x4,y4) 四個點:
這樣將獲得不再是一條直線,而是一條“折現(xiàn)”(相當于分段處理),若欲求解落在x1和x2之間一點Xad值對應的電壓值:y = k×(Xad– X1)+ y1由上看出,中間插入的“標定點”越多,得到物理值“精度”越高。在電壓電流表測量可以使用“電壓電流標定板”“萬用表”等配合適合,對采集的電壓電流進行標定處理。標定點越多,測量越精確。參考例程中,使用了3點標定。其中,電壓標定點為0V、5V、15V。電流標定點為0A、0.5A、1.5A。
標定代碼如下:
void Volt_Cal(void) { float t,KT1; V_Buffer = Mean_Value_Filter(Volt_Buffer,ADC_SAMPLE_SIZE);//使用均值濾波 I_Buffer = Mean_Value_Filter(Curr_Buffer,ADC_SAMPLE_SIZE); //使用均值濾波 if(V_Buffer>=X05) // { t=V_Buffer-X05; V_Buffer=(K*t+Y05)*1000;} else { KT1=5000; KT1=KT1/X05; V_Buffer=KT1*V_Buffer; } // 四舍五入 if(V_Buffer % 10 >= 5) { V_Buffer = V_Buffer / 10 + 1; } else { V_Buffer = V_Buffer / 10; } if(I_Buffer>=IX05) { t=I_Buffer-IX05; I_Buffer=(KI*t+IY05)*10; } else { KT1=500; KT1=KT1/IX05; I_Buffer=KT1*I_Buffer; } if(I_Buffer % 10 >= 5) { I_Buffer = I_Buffer / 10 + 1; } else { I_Buffer = I_Buffer / 10; } // I_Buffer=I_Buffer * ADC_REF_VALUE >> 12; /** mv =I_Buffer * ADC_REF_VALUE >> 12, R = 100mr, 10ma = mv/R/10=mv/0.1/10 = mv */ }
5. 標定操作實現(xiàn):
具體操作方法如下:
定義5個工作模式,點按按鍵切換工作模式,長按3S設置對應模式下的參數(shù)值,并保存到FLASH:
模式0:顯示正常的電壓電流值(上一排數(shù)碼管顯示電壓值*.**V或**.*V自動切換,下一排顯示電流值,*.**A)
模式1:電壓5V標定值設置。上一排數(shù)碼管顯示S.05. 。下一排顯示當前電壓值*.**V或**.*V。當長按3S 按鍵時,將當前值標定為5V電壓值。
模式2:電壓15V標定值設置。上一排數(shù)碼管顯示S.15. 。下一排顯示當前電壓值*.**V或**.*V。當長按3S 按鍵時,將當前值標定為15V電壓值。
模式3:電流0.5A標定值設置。上一排數(shù)碼管顯示A.0.5。下一排顯示當前電流值*.**A。當長按3S 按鍵時,將當前值標定為0.5A電流值。
模式4:電流1.5A標定值設置。上一排數(shù)碼管顯示A.1.5。下一排顯示當前電流值*.**A。當長按3S 按鍵時,將當前值標定為1.5A電流值
七、優(yōu)化與調(diào)試
1. 精度優(yōu)化:可選擇合適的電阻、電容等元件,以及優(yōu)化ADC的采樣率和分辨率,來提高電壓和電流的測量精度。
2. 穩(wěn)定性優(yōu)化:可對電源管理電路和防反接電路進行優(yōu)化設計,確保系統(tǒng)在各種工作環(huán)境下都能穩(wěn)定運行。
3. 軟件調(diào)試:通過調(diào)試工具對軟件進行調(diào)試和優(yōu)化,確保數(shù)據(jù)采集、處理和顯示等功能的正確性和穩(wěn)定性。
4. 數(shù)據(jù)分析:在特殊應用場合,可根據(jù)實際信號的干擾情況進行算法的改過或選擇。
審核編輯 黃宇
-
電流表
+關(guān)注
關(guān)注
2文章
231瀏覽量
26214 -
數(shù)字電壓
+關(guān)注
關(guān)注
0文章
9瀏覽量
9815 -
ADC
+關(guān)注
關(guān)注
0文章
110瀏覽量
16845 -
CW32
+關(guān)注
關(guān)注
1文章
203瀏覽量
626
發(fā)布評論請先 登錄
相關(guān)推薦
評論