如何利用稱重傳感器和微控制器建立稱重秤
在這個(gè)項(xiàng)目中,使用C8051微控制器開發(fā)套件、稱重傳感器和Simplicity Studio IDE制作一個(gè)稱重秤。測(cè)量的重量將顯示在LCD屏幕上。
液晶顯示器該項(xiàng)目中使用的液晶顯示器是硅實(shí)驗(yàn)室的一部分CP2400丹麥克朗開發(fā)工具包
LCD設(shè)備本身的制造商零件號(hào)(圖2)為VIM-878-DP-RC-S-LV. 如果您包括小數(shù)點(diǎn)和撇號(hào)(每個(gè)數(shù)字),這個(gè)“14段”LCD顯示器將變成16段顯示。當(dāng)把8位數(shù)的16段相加時(shí),我們看到總共128段。這種128段顯示器要求使用128段驅(qū)動(dòng)程序,硅實(shí)驗(yàn)室決定使用驅(qū)動(dòng)程序p/nCP2400型(圖3)
我選擇使用的稱重傳感器是由 Uxcell公司,型號(hào)# a14071900ux0057 .
這種特殊的稱重傳感器通常稱為直桿式稱重傳感器或平行梁式稱重傳感器。通常情況下,此類負(fù)載為額定負(fù)載;本項(xiàng)目中使用的最大重量為10公斤(或22磅)。其廣告額定輸出為1±0.15mV/V。這意味著,當(dāng)稱重傳感器施加其最大額定重量(本例中為10kg)時(shí),每1V施加在稱重傳感器勵(lì)磁上的輸出電壓為1mV(±0.15mV)(見下圖)。當(dāng)我說電壓是“施加在測(cè)壓元件上”時(shí),電壓實(shí)際上是施加在惠斯通電橋應(yīng)變計(jì)的勵(lì)磁引線上。同樣的,這就是惠斯通應(yīng)變計(jì)產(chǎn)生輸出電壓(見下圖)。
對(duì)于這個(gè)項(xiàng)目,我將采用5V作為勵(lì)磁;因此,當(dāng)向稱重傳感器施加10kg負(fù)載時(shí),其輸出將為5.0mV(±0.75mV)。因?yàn)?.0mV是一個(gè)很小的電壓,它需要在被發(fā)送到微控制器之前被放大。
旁注:一些微控制器不是在這個(gè)項(xiàng)目中使用的有差分ADC輸入;單端輸入被認(rèn)為是大多數(shù)微控制器的標(biāo)準(zhǔn)輸入。當(dāng)使用帶有單端ADC輸入的微控制器時(shí),當(dāng)傳感器提供差分輸出信號(hào)時(shí),一個(gè)差分放大器必須利用。這種類型的放大器將差分信號(hào)轉(zhuǎn)換為單端信號(hào),可使用標(biāo)準(zhǔn)單端ADC進(jìn)行測(cè)量。
儀表放大器我選擇使用的差分放大器實(shí)際上被稱為儀表放大器,或安培。我用INA126PA公司輸入安培數(shù)德州儀器-我買了這個(gè)裝置從Digi Key3.15美元。但是,當(dāng)它不能像廣告中所說的那樣運(yùn)行時(shí),經(jīng)過大約一個(gè)小時(shí)的故障排除,我決定轉(zhuǎn)移到B計(jì)劃:使用AD627型(來自模擬設(shè)備),我也買了。我買了這個(gè)零件鈥數(shù)量一-從Digi Key以一個(gè)驚人的價(jià)格 $8.45! 我不知道這些安培表要花這么多錢!幸運(yùn)的是,這個(gè)裝置工作正常。因此,我想我將來會(huì)使用模擬設(shè)備中的in-amp器件,而不是TI部件,盡管一般來說,我是TI部件和價(jià)格的粉絲。設(shè)置這兩個(gè)單位的增益很簡單:只需要一個(gè)外部電阻。此外,TI和模擬設(shè)備部分都被宣傳為單電源或雙電源設(shè)備,我更喜歡使用單電源。
項(xiàng)目# | 描述/來源 | 成本(每個(gè)) | 其他信息 |
1 | C2400DK開發(fā)套件 | $148.75 | 用戶指南 |
2 | 試驗(yàn)板 | $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Ω電位計(jì) | $2.41 | 數(shù)據(jù)表 |
7 | 機(jī)螺釘(M4-0.7 x 25mm)。 | $0.76 | 或同等產(chǎn)品 |
8 | 機(jī)用螺釘(M5-0.8 x 25mm)。 | $0.76 | 或同等產(chǎn)品 |
微控制器使用SPI公司用于與LCD驅(qū)動(dòng)程序通信的接口(SPI通道1)如下圖7所示,Simplicity Studio的硬件配置GUI顯示了如何配置C8051的SPI。
如前所述,施加在稱重傳感器上的勵(lì)磁電壓為5.0VDC,將產(chǎn)生5mV的輸出電壓(滿載22 lbs)。雖然微控制器的ADC的輸入范圍是0到3.3V,但我希望3V對(duì)應(yīng)于全負(fù)荷(22磅)。這將為稱重傳感器的過載提供一些凈空,即滿載的120%,或26磅。在這些條件下,我可以計(jì)算出所需的放大器增益,然后選擇適當(dāng)?shù)脑鲆骐娮柚担≧G ).
5mV?Gain=3000mV
Gain=3000mV/5mV=600
RG公式(perAN627產(chǎn)品介紹第22頁):
RG=200kΩ Gain?5
RG=336Ω
在給微控制器開發(fā)套件通電之前,在完成所有連接后,請(qǐng)確保按如下方式配置:
跳線:
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電壓。
令我驚訝的是,測(cè)壓元件本身有螺紋孔。這使得在將稱重傳感器連接到底板時(shí)非常方便。再一次,令我驚訝的是,一組洞比另一組大。嗯,我不知道制造商為什么這么做,但是,盡管如此,我還是在當(dāng)?shù)氐奈褰鸬暾业搅撕线m的螺絲。
數(shù)量2:機(jī)械螺釘,M4-0.7 x 25mm
數(shù)量2:機(jī)用螺釘,M5-0.8 x 25mm
注:這四個(gè)螺釘(25毫米)的長度取決于墊片和底板本身的厚度。
類似于我的另一個(gè)項(xiàng)目(在轉(zhuǎn)速表和速度表上增加LCD和鍵盤),在這個(gè)項(xiàng)目中,我充分利用了Silicon Lab的示例LCD項(xiàng)目(CP240x_LCD_example),這使我的固件編寫任務(wù)更加容易。
輸入放大器的輸出連接到端口0.6,這是微控制器ADC的輸入。下面是我在固件中加入的特性/優(yōu)點(diǎn)的列表:
固件在將數(shù)據(jù)發(fā)送到LCD屏幕之前,采集并平均200個(gè)測(cè)量電壓的樣本。
如果施加的負(fù)載大于或等于23磅,LCD將顯示“過載”
當(dāng)系統(tǒng)首次通電時(shí),固件將顯示皮重(即啟動(dòng)時(shí)的重量變?yōu)榱阒亓浚?/span>
LCD配置為在小數(shù)點(diǎn)后顯示一位數(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); }
這個(gè)項(xiàng)目的所有代碼都可以從下面的鏈接下載。
生成并加載代碼,并驗(yàn)證刻度的準(zhǔn)確性稱重稱重秤
在下載、構(gòu)建和加載代碼之后,我使用廚房秤作為測(cè)量體重的參考/比較。如視頻(下圖)所示,我放置了各種重量樣本(我大學(xué)時(shí)的舊課本!)首先是廚房秤,然后是稱重傳感器系統(tǒng)。正如你所觀察到的,兩個(gè)刻度在顯示的測(cè)量值上非常接近。
制造真正產(chǎn)品的下一步如果您或我決定使用定制的PCB設(shè)計(jì)基于此項(xiàng)目制作一個(gè)實(shí)際的重量測(cè)量系統(tǒng),請(qǐng)務(wù)必遵循中所述的接地和布局建議數(shù)據(jù)表(第20頁)。此外,用金屬板代替木制底板將增加物理設(shè)計(jì)的穩(wěn)定性和穩(wěn)健性。
稱重快樂!
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。