壓力傳感器資料
本傳感器所附帶的hx711程序,僅供參考。
純屬贈送,不提供指導!
0.jpg (19.98 KB, 下載次數: 126)
下載附件
2018-3-29 01:06 上傳
用途與特點:適合學生實驗,DIY電子設計,廣泛用于小型電子計價秤、計重秤等。
傳感器量程:10kg,20kg,40kg可選擇,其外觀、尺寸、參數都一樣,只是量程不一樣。
參考接線方法: 紅線(傳感器電源輸入) 接E+ 白線(傳感器電源地) 接E- 綠線(差分信號輸出-) 接A- 黑線(差分信號輸出+) 接A+ 特別注意:傳感器屬于精密部件,劇烈振動、自由落體、碰撞、過載、過壓等等,都非常容易造成傳感器永久損壞或者影響精度和線性,您如果對該部件沒有一定的了解,請慎重購買。畢竟該部件比起電阻 電容 三極管等其它電子部件要脆弱的多。
0.jpg (28.53 KB, 下載次數: 110)
下載附件
2018-3-29 01:07 上傳
參數說明:
參數表中,靈敏度:2.0mv/v 的含義是:假如供電電壓是5.0v,當傳感器滿量程的時候,綠色、黑色線之間有2.0mv/v * 5.0v=10mv的差分電壓輸出。例如:傳感器的量程是10kg,供電電壓是5v,那么這個傳感器在受力10kg的時候,綠色、黑色之間輸出有2.0mv/v * 5.0v=10mv的壓差。
工作原理:
電阻應變式壓力傳感器主要由彈性體、電阻應變片電纜線等組成,內部線路采用惠更斯電橋,當彈性體承受載荷產生變形時,電阻應變片(轉換元件)受到拉伸或壓縮應變片變形后,它的阻值將發生變化(增大或減小),從而使電橋失去平衡,產生相應的差動信號,供后續電路測量和處理。
當垂直正壓力P作用于梁上時,梁產生形變,電阻應變片R1、R3受壓彎拉伸,阻值增加。R2、R4受壓縮,阻值減小。電橋失去平衡,產生不平衡電壓U,電壓U與作用在傳感器上的正壓力P成正比,從而將非電量轉化為電量輸出。
示意圖如下:
0.jpg (9.92 KB, 下載次數: 110)
下載附件
2018-3-29 01:08 上傳
hx711壓力傳感器的電路原理圖:
0.jpg (34.16 KB, 下載次數: 121)
下載附件
2018-3-29 01:08 上傳
0.jpg (28.96 KB, 下載次數: 102)
下載附件
2018-3-29 01:08 上傳
單片機源程序如下:
- /**************************************************************
-
- 實現功能:電子稱稱重測試程序
- **************************************************************/
- #include <reg52.h>
- #include <intrins.h>
- #include <string.h>
- #include "lcd.h"
- #include "hx711.h"
- //定義量程系數
- #define RATIO 1349/1000 //1574/1000 //2114/1623
- //定義標識
- volatile bit FlagTest = 0; //定時測試標志,每0.25秒置位,測完清0
- //管腳定義
- sbit LedA = P2^2;
- sbit beep = P1^0;
- sbit alert = P1^1;
- //顯示用變量
- int Counter;
- uchar idata str1[6] = "000000";
- int i, iTemp;
- //稱重用變量
- unsigned long idata FullScale; //滿量程AD值/1000
- unsigned long AdVal; //AD采樣值
- unsigned long weight; //重量值,單位g
- uchar DotPos; //小數點標志及位置
- int bak_num=1;
- char code tb3[]="重量: kg";
- //整型轉字符串的函數,轉換范圍0--65536
- void int2str(int x, char* str)
- {
- int i=1;
- int tmp=10;
- while(x/tmp!=0)
- {
- i++;
- tmp*=10;
- }
- tmp=x;
- str[i]='\0';
- while(i>1)
- {
- str[--i]='0'+(tmp%10);
- tmp/=10;
- }
- str[0]=tmp+'0';
- }
- //重新找回零點,每次測量前調用
- void To_Zero()
- {
- FullScale=ReadCount()/1000;
- }
- //顯示重量,單位kg,兩位整數,三位小數
- void Display_Weight()
- {
- unsigned int i,j;
-
- display_GB2312_string(3,60," ");
- //weight單位是g
- i = weight/1000; //得到整數部分
- j = weight - i*1000;//得到小數部分
- int2str(i,str1);
- if (i>=10)
- {
- display_GB2312_string(3,60,str1);
- }
- else
- {
- display_GB2312_string(3,68,str1);
- }
- display_GB2312_string(3,76,".");
- int2str(j,str1);
- if (j<10)
- {
- display_GB2312_string(3,84,"00");
- display_GB2312_string(3,100,str1);
- }
- else if (j<100)
- {
- display_GB2312_string(3,84,"0");
- display_GB2312_string(3,92,str1);
- }
- else
- {
- display_GB2312_string(3,84,str1);
- }
- }
- //數據初始化
- void Data_Init()
- {
- DotPos = 0;
- beep = 1;
- alert = 1;
- }
- //定時器0初始化
- void Timer0_Init()
- {
- ET0 = 1; //允許定時器0中斷
- TMOD = 1; //定時器工作方式選擇
- TL0 = 0x06;
- TH0 = 0xf8; //定時器賦予初值
- TR0 = 1; //啟動定時器
- }
- //定時器0中斷
- void Timer0_ISR (void) interrupt 1 using 0
- {
- TL0 = 0x06;
- TH0 = 0xf8; //定時器賦予初值
- //每0.25秒鐘刷新重量
- Counter ++;
- if (Counter >=100)
- {
- FlagTest = 1;
- Counter = 0;
- }
- }
- //===============main program===================//
- void main(void)
- {
- Rom_CS=1;
- initial_lcd();
- EA = 0;
- Data_Init();
-
- Timer0_Init();
- //初始化完成,開中斷
- EA = 1;
- //背光
- LedA = 1;
- clear_screen(); //clear all dots
- To_Zero();
- To_Zero();
- display_GB2312_string(3,1,tb3);
- while(1)
- {
- //每0.5秒稱重一次
-
- //稱重,得到重量值weight,單位為g
- AdVal=ReadCount();
- weight=FullScale-AdVal/1000;
- if (weight>0x8000) weight=0;
- weight=15000*weight/FullScale;//校準值
- weight=weight*RATIO;
- Display_Weight();
- //如果超量程,則報警
- if (weight >= 10000)
- {
- beep = 0;
- alert = 0;
- }
- //如果不超量程
- else
- {
- beep = 1;
- alert = 1;
- //顯示重量值
- Display_Weight();
- FlagTest = 0;
- }
- delay(80);// 重量的亮度
-
- }
- }
復制代碼
0.png (49.93 KB, 下載次數: 126)
下載附件
2018-3-29 01:06 上傳
所有資料51hei提供下載:
壓力傳感器資料.zip
(413.81 KB, 下載次數: 429)
2018-3-28 23:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|