如何利用稱重傳感器和微控制器建立稱重秤
在這個項目中,使用C8051微控制器開發(fā)套件、稱重傳感器和Simplicity Studio IDE制作一個稱重秤。測量的重量將顯示在LCD屏幕上。
液晶顯示器該項目中使用的液晶顯示器是硅實驗室的一部分CP2400丹麥克朗開發(fā)工具包
LCD設(shè)備本身的制造商零件號(圖2)為VIM-878-DP-RC-S-LV. 如果您包括小數(shù)點和撇號(每個數(shù)字),這個“14段”LCD顯示器將變成16段顯示。當(dāng)把8位數(shù)的16段相加時,我們看到總共128段。這種128段顯示器要求使用128段驅(qū)動程序,硅實驗室決定使用驅(qū)動程序p/nCP2400型(圖3)
我選擇使用的稱重傳感器是由 Uxcell公司,型號# a14071900ux0057 .
這種特殊的稱重傳感器通常稱為直桿式稱重傳感器或平行梁式稱重傳感器。通常情況下,此類負(fù)載為額定負(fù)載;本項目中使用的最大重量為10公斤(或22磅)。其廣告額定輸出為1±0.15mV/V。這意味著,當(dāng)稱重傳感器施加其最大額定重量(本例中為10kg)時,每1V施加在稱重傳感器勵磁上的輸出電壓為1mV(±0.15mV)(見下圖)。當(dāng)我說電壓是“施加在測壓元件上”時,電壓實際上是施加在惠斯通電橋應(yīng)變計的勵磁引線上。同樣的,這就是惠斯通應(yīng)變計產(chǎn)生輸出電壓(見下圖)。
對于這個項目,我將采用5V作為勵磁;因此,當(dāng)向稱重傳感器施加10kg負(fù)載時,其輸出將為5.0mV(±0.75mV)。因為5.0mV是一個很小的電壓,它需要在被發(fā)送到微控制器之前被放大。
旁注:一些微控制器不是在這個項目中使用的有差分ADC輸入;單端輸入被認(rèn)為是大多數(shù)微控制器的標(biāo)準(zhǔn)輸入。當(dāng)使用帶有單端ADC輸入的微控制器時,當(dāng)傳感器提供差分輸出信號時,一個差分放大器必須利用。這種類型的放大器將差分信號轉(zhuǎn)換為單端信號,可使用標(biāo)準(zhǔn)單端ADC進(jìn)行測量。
儀表放大器我選擇使用的差分放大器實際上被稱為儀表放大器,或安培。我用INA126PA公司輸入安培數(shù)德州儀器-我買了這個裝置從Digi Key3.15美元。但是,當(dāng)它不能像廣告中所說的那樣運行時,經(jīng)過大約一個小時的故障排除,我決定轉(zhuǎn)移到B計劃:使用AD627型(來自模擬設(shè)備),我也買了。我買了這個零件鈥數(shù)量一-從Digi Key以一個驚人的價格 $8.45! 我不知道這些安培表要花這么多錢!幸運的是,這個裝置工作正常。因此,我想我將來會使用模擬設(shè)備中的in-amp器件,而不是TI部件,盡管一般來說,我是TI部件和價格的粉絲。設(shè)置這兩個單位的增益很簡單:只需要一個外部電阻。此外,TI和模擬設(shè)備部分都被宣傳為單電源或雙電源設(shè)備,我更喜歡使用單電源。
項目# | 描述/來源 | 成本(每個) | 其他信息 |
1 | C2400DK開發(fā)套件 | $148.75 | 用戶指南 |
2 | 試驗板 | $8.98 | 或同等產(chǎn)品 |
3 | 跨接導(dǎo)線套件 | $6.20 | 或同等產(chǎn)品 |
4 | 10kg稱重傳感器 | $8.14 | 或同等產(chǎn)品 |
5 | 儀表放大器 | $8.45 | 數(shù)據(jù)表 |
6 | 1 kΩ電位計 | $2.41 | 數(shù)據(jù)表 |
7 | 機螺釘(M4-0.7 x 25mm)。 | $0.76 | 或同等產(chǎn)品 |
8 | 機用螺釘(M5-0.8 x 25mm)。 | $0.76 | 或同等產(chǎn)品 |
微控制器使用SPI公司用于與LCD驅(qū)動程序通信的接口(SPI通道1)如下圖7所示,Simplicity Studio的硬件配置GUI顯示了如何配置C8051的SPI。
如前所述,施加在稱重傳感器上的勵磁電壓為5.0VDC,將產(chǎn)生5mV的輸出電壓(滿載22 lbs)。雖然微控制器的ADC的輸入范圍是0到3.3V,但我希望3V對應(yīng)于全負(fù)荷(22磅)。這將為稱重傳感器的過載提供一些凈空,即滿載的120%,或26磅。在這些條件下,我可以計算出所需的放大器增益,然后選擇適當(dāng)?shù)脑鲆骐娮柚担≧G ).
5mV?Gain=3000mV
Gain=3000mV/5mV=600
RG公式(perAN627產(chǎn)品介紹第22頁):
RG=200kΩ Gain?5
RG=336Ω
在給微控制器開發(fā)套件通電之前,在完成所有連接后,請確保按如下方式配置:
跳線:
J11:VBAT到GND
J12:VDD到VIO
J17:VBAT_引腳到VBAT
開關(guān):
SW4:設(shè)為“2單元”
電源開關(guān)(SW5)置于“關(guān)閉”位置
電纜:
將帶狀電纜調(diào)試適配器連接到J9
將USB調(diào)試適配器連接到電腦。
向接頭P2施加5.0 VDC電壓。
令我驚訝的是,測壓元件本身有螺紋孔。這使得在將稱重傳感器連接到底板時非常方便。再一次,令我驚訝的是,一組洞比另一組大。嗯,我不知道制造商為什么這么做,但是,盡管如此,我還是在當(dāng)?shù)氐奈褰鸬暾业搅撕线m的螺絲。
數(shù)量2:機械螺釘,M4-0.7 x 25mm
數(shù)量2:機用螺釘,M5-0.8 x 25mm
注:這四個螺釘(25毫米)的長度取決于墊片和底板本身的厚度。
類似于我的另一個項目(在轉(zhuǎn)速表和速度表上增加LCD和鍵盤),在這個項目中,我充分利用了Silicon Lab的示例LCD項目(CP240x_LCD_example),這使我的固件編寫任務(wù)更加容易。
輸入放大器的輸出連接到端口0.6,這是微控制器ADC的輸入。下面是我在固件中加入的特性/優(yōu)點的列表:
固件在將數(shù)據(jù)發(fā)送到LCD屏幕之前,采集并平均200個測量電壓的樣本。
如果施加的負(fù)載大于或等于23磅,LCD將顯示“過載”
當(dāng)系統(tǒng)首次通電時,固件將顯示皮重(即啟動時的重量變?yōu)榱阒亓浚?/span>
LCD配置為在小數(shù)點后顯示一位數(shù)字。
//---------------------------------- // Main Application Loop //---------------------------------- while (1) { //----------------------------------------------------------------------- // Measure Analog Value //----------------------------------------------------------------------- // // Take ADC conversion. // // Initiate a Conversion AD0INT = 0; // clear ADC0 conv. complete flag AD0WINT = 0; // clear window detector flag AD0BUSY = 1; // initiate conversion // Wait for conversion to complete while(!AD0INT); // Vref (mV) // measurement (mV) = --------------- * result (bits) // (2^10)-1 (bits) mV = ADC0; mV *= VREF; mV /= 1023; lbs = (float) (mV * 22.0 / 300.0); // The multiplying factor is actually 22lbs/3000mV, but 300 // is used for displaying one digit after the decimal point. if(zero_scale == 0) // Used for zeroing the scale during power-up. { zero_offset = lbs; zero_scale = 1; } lbs = (lbs - zero_offset); AverageAccumulator += lbs; // Add the current lbs measurement to the accumulator. AverageMeasurements--; // Decrement the measurement counter. if(AverageMeasurements == 0) { // Calculate the average value: divide the summed AverageAccumulator by the // number of measurements. lbsAverage = (AverageAccumulator / 200.0); AverageAccumulator = 0; // Reset AverageMeasurements = 200; // Reset if(lbsAverage >= 230) // If the measured weight is greater than equal to // 23.0 lbs, then display "OVERLOAD" on the LCD screen. // The load cell is rated at 10kg (or 22 lbs), with // safe overload of 120%, or 12kg (26 lbs). { sprintf(display_string, "OVERLOAD"); } else sprintf(display_string, "d lbs ", (unsigned int) lbsAverage); } //----------------------------------------------------------------------- // Update LCD //----------------------------------------------------------------------- // // Update the LCD Display // LCD_OutString(display_string); }
這個項目的所有代碼都可以從下面的鏈接下載。
生成并加載代碼,并驗證刻度的準(zhǔn)確性稱重稱重秤
在下載、構(gòu)建和加載代碼之后,我使用廚房秤作為測量體重的參考/比較。如視頻(下圖)所示,我放置了各種重量樣本(我大學(xué)時的舊課本?。┦紫仁菑N房秤,然后是稱重傳感器系統(tǒng)。正如你所觀察到的,兩個刻度在顯示的測量值上非常接近。
制造真正產(chǎn)品的下一步如果您或我決定使用定制的PCB設(shè)計基于此項目制作一個實際的重量測量系統(tǒng),請務(wù)必遵循中所述的接地和布局建議數(shù)據(jù)表(第20頁)。此外,用金屬板代替木制底板將增加物理設(shè)計的穩(wěn)定性和穩(wěn)健性。
稱重快樂!
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。