博客專欄

        EEPW首頁 > 博客 > 如何利用稱重傳感器和微控制器建立稱重秤

        如何利用稱重傳感器和微控制器建立稱重秤

        發布人:電子資料庫 時間:2022-09-07 來源:工程師 發布文章

        在這個項目中,使用C8051微控制器開發套件、稱重傳感器和Simplicity Studio IDE制作一個稱重秤。測量的重量將顯示在LCD屏幕上。

        液晶顯示器

        該項目中使用的液晶顯示器是硅實驗室的一部分CP2400丹麥克朗開發工具包

        image.png

        圖1Silicon Labs CP2400DK開發套件(C8051微控制器和LCD控制器)。圖片由數字鍵.

        LCD設備本身的制造商零件號(圖2)為VIM-878-DP-RC-S-LV. 如果您包括小數點和撇號(每個數字),這個“14段”LCD顯示器將變成16段顯示。當把8位數的16段相加時,我們看到總共128段。這種128段顯示器要求使用128段驅動程序,硅實驗室決定使用驅動程序p/nCP2400型(圖3)

        image.png

        圖2液晶屏,8位數字各有16段(共128段)。圖片由數字鍵.

        image.png

        圖3128段LCD驅動程序。圖片由硅實驗室(第1頁和第22頁)。

        稱重傳感器

        我選擇使用的稱重傳感器是由 Uxcell公司,型號# a14071900ux0057 .

        image.png

        圖4稱重傳感器。圖片由亞馬遜.

        這種特殊的稱重傳感器通常稱為直桿式稱重傳感器或平行梁式稱重傳感器。通常情況下,此類負載為額定負載;本項目中使用的最大重量為10公斤(或22磅)。其廣告額定輸出為1±0.15mV/V。這意味著,當稱重傳感器施加其最大額定重量(本例中為10kg)時,每1V施加在稱重傳感器勵磁上的輸出電壓為1mV(±0.15mV)(見下圖)。當我說電壓是“施加在測壓元件上”時,電壓實際上是施加在惠斯通電橋應變計的勵磁引線上。同樣的,這就是惠斯通應變計產生輸出電壓(見下圖)。

        image.png

        圖5稱重傳感器的惠斯通電橋應變計示意圖。

        對于這個項目,我將采用5V作為勵磁;因此,當向稱重傳感器施加10kg負載時,其輸出將為5.0mV(±0.75mV)。因為5.0mV是一個很小的電壓,它需要在被發送到微控制器之前被放大。

        旁注:一些微控制器不是在這個項目中使用的有差分ADC輸入;單端輸入被認為是大多數微控制器的標準輸入。當使用帶有單端ADC輸入的微控制器時,當傳感器提供差分輸出信號時,一個差分放大器必須利用。這種類型的放大器將差分信號轉換為單端信號,可使用標準單端ADC進行測量。

        儀表放大器

        我選擇使用的差分放大器實際上被稱為儀表放大器,或安培。我用INA126PA公司輸入安培數德州儀器-我買了這個裝置從Digi Key3.15美元。但是,當它不能像廣告中所說的那樣運行時,經過大約一個小時的故障排除,我決定轉移到B計劃:使用AD627型(來自模擬設備),我也買了。我買了這個零件鈥數量一-從Digi Key以一個驚人的價格 $8.45! 我不知道這些安培表要花這么多錢!幸運的是,這個裝置工作正常。因此,我想我將來會使用模擬設備中的in-amp器件,而不是TI部件,盡管一般來說,我是TI部件和價格的粉絲。設置這兩個單位的增益很簡單:只需要一個外部電阻。此外,TI和模擬設備部分都被宣傳為單電源或雙電源設備,我更喜歡使用單電源。

        image.png


        圖6模擬設備儀表放大器(AD627)簡化示意圖。圖片由模擬設備(第14頁).

        項目#

        描述/來源

        成本(每個)

        其他信息

        1

        C2400DK開發套件

        $148.75

        用戶指南
        快速入門指南
        C8051F930產品介紹
        注:示意圖見
        用戶指南

        2

        試驗板

        $8.98

        或同等產品

        3

        跨接導線套件

        $6.20

        或同等產品

        4

        10kg稱重傳感器

        $8.14

        或同等產品

        5

        儀表放大器

        $8.45

        數據表

        6

        1 kΩ電位計

        $2.41

        數據表

        7

        機螺釘(M4-0.7 x 25mm)。
        數量2

        $0.76

        或同等產品

        8

        機用螺釘(M5-0.8 x 25mm)。
        數量2

        $0.76

        或同等產品

        連接/示意圖

        微控制器使用SPI公司用于與LCD驅動程序通信的接口(SPI通道1)如下圖7所示,Simplicity Studio的硬件配置GUI顯示了如何配置C8051的SPI。

        image.png

        圖7SPI接口配置

        選擇儀表放大器的增益

        如前所述,施加在稱重傳感器上的勵磁電壓為5.0VDC,將產生5mV的輸出電壓(滿載22 lbs)。雖然微控制器的ADC的輸入范圍是0到3.3V,但我希望3V對應于全負荷(22磅)。這將為稱重傳感器的過載提供一些凈空,即滿載的120%,或26磅。在這些條件下,我可以計算出所需的放大器增益,然后選擇適當的增益電阻值(RG ).

        5mV?Gain=3000mV

        Gain=3000mV/5mV=600

        RG公式(perAN627產品介紹第22頁):

        RG=200kΩ Gain?5

        RG=336Ω

        image.png

        圖8連接圖。重要的是去耦電容器(Cone)盡可能靠近AD627的電源插腳

        配置微控制器開發工具包

        在給微控制器開發套件通電之前,在完成所有連接后,請確保按如下方式配置:

        跳線:

        • J11:VBAT到GND

        • J12:VDD到VIO

        • J17:VBAT_引腳到VBAT

        開關:

        • SW4:設為“2單元”

        • 電源開關(SW5)置于“關閉”位置

        電纜:

        • 將帶狀電纜調試適配器連接到J9

        • 將USB調試適配器連接到電腦。

        • 向接頭P2施加5.0 VDC電壓。

        連接稱重傳感器底板

        令我驚訝的是,測壓元件本身有螺紋孔。這使得在將稱重傳感器連接到底板時非常方便。再一次,令我驚訝的是,一組洞比另一組大。嗯,我不知道制造商為什么這么做,但是,盡管如此,我還是在當地的五金店找到了合適的螺絲。

        • 數量2:機械螺釘,M4-0.7 x 25mm

        • 數量2:機用螺釘,M5-0.8 x 25mm

        • 注:這四個螺釘(25毫米)的長度取決于墊片和底板本身的厚度。

        image.png

        圖9稱重傳感器安裝在底板上。

        圖10完整的稱重傳感器系統(sans 5VDC電源)。點擊放大.固件

        類似于我的另一個項目(在轉速表和速度表上增加LCD和鍵盤),在這個項目中,我充分利用了Silicon Lab的示例LCD項目(CP240x_LCD_example),這使我的固件編寫任務更加容易。

        輸入放大器的輸出連接到端口0.6,這是微控制器ADC的輸入。下面是我在固件中加入的特性/優點的列表:

        • 固件在將數據發送到LCD屏幕之前,采集并平均200個測量電壓的樣本。

        • 如果施加的負載大于或等于23磅,LCD將顯示“過載”

        • 當系統首次通電時,固件將顯示皮重(即啟動時的重量變為零重量)。

        • LCD配置為在小數點后顯示一位數字。

           //----------------------------------
           // 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);
           }

        這個項目的所有代碼都可以從下面的鏈接下載。

        生成并加載代碼,并驗證刻度的準確性

        稱重稱重秤

        在下載、構建和加載代碼之后,我使用廚房秤作為測量體重的參考/比較。如視頻(下圖)所示,我放置了各種重量樣本(我大學時的舊課本!)首先是廚房秤,然后是稱重傳感器系統。正如你所觀察到的,兩個刻度在顯示的測量值上非常接近。

        制造真正產品的下一步

        如果您或我決定使用定制的PCB設計基于此項目制作一個實際的重量測量系統,請務必遵循中所述的接地和布局建議數據表(第20頁)。此外,用金屬板代替木制底板將增加物理設計的穩定性和穩健性。

        稱重快樂!


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: 稱重 傳感器

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 凤冈县| 双桥区| 红安县| 东源县| 永新县| 射阳县| 安陆市| 板桥市| 洞口县| 嵩明县| 金秀| 蒲城县| 精河县| 稷山县| 霍邱县| 翁源县| 安阳县| 广汉市| 教育| 吐鲁番市| 文水县| 霍州市| 化隆| 江西省| 嘉兴市| SHOW| 岚皋县| 沁阳市| 吴堡县| 长垣县| 平凉市| 新乡县| 塔城市| 曲阜市| 广平县| 临湘市| 宜章县| 若尔盖县| 楚雄市| 达日县| 肥乡县|