37款傳感器與執(zhí)行器的提法白筹,在網(wǎng)絡(luò)上廣泛流傳蛮原,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止這37種的双妨。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊现拒,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟睿詫W(xué)習(xí)和交流為目的灌砖,這里準(zhǔn)備逐一動(dòng)手嘗試系列實(shí)驗(yàn)璧函,不管成功(程序走通)與否,都會(huì)記錄下來---小小的進(jìn)步或是搞不掂的問題基显,希望能夠拋磚引玉蘸吓。
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+圖形編程+仿真編程)
實(shí)驗(yàn)七十二:人體秤50kg稱重傳感器模塊(電阻應(yīng)變半橋式)
應(yīng)變片
是由敏感柵等構(gòu)成用于測(cè)量應(yīng)變的元件。電阻應(yīng)變片的工作原理是基于應(yīng)變效應(yīng)制作的撩幽,即導(dǎo)體或半導(dǎo)體材料在外界力的作用下產(chǎn)生機(jī)械變形時(shí)库继,其電阻值相應(yīng)的發(fā)生變化,這種現(xiàn)象稱為“應(yīng)變效應(yīng)”摸航。
為了系列實(shí)驗(yàn)和了解應(yīng)變片制跟,我特意去網(wǎng)上買了一片,就是其體積挺驚人酱虎,在包裝盒里面好不容易才找到
應(yīng)變效應(yīng)
金屬導(dǎo)體的電阻值雨膨,隨著它受力所產(chǎn)生機(jī)械變形(拉伸或壓縮)的大小而發(fā)生變化的現(xiàn)象,稱之為金屬的電阻應(yīng)變效應(yīng)读串。電阻值將發(fā)生變化這種現(xiàn)象稱為“應(yīng)變效應(yīng)”聊记。根據(jù)應(yīng)變效應(yīng)將應(yīng)變片粘貼于被測(cè)材料上被測(cè)材料受到外界作用產(chǎn)生的應(yīng)變就會(huì)傳送到應(yīng)變片上使應(yīng)變片的電阻值發(fā)生變化通過測(cè)量應(yīng)變片電阻值的變化就可得知被測(cè)機(jī)械量的大小。
應(yīng)變效應(yīng)應(yīng)用范圍十分廣泛恢暖,可測(cè)量應(yīng)變排监、應(yīng)力、力矩杰捂、位移舆床、加速度、扭矩等物理參量。電阻式應(yīng)變片應(yīng)用模式有兩種挨队,一是將應(yīng)變片粘貼于彈性剛體上組成平衡電橋谷暮,然后接到轉(zhuǎn)換電路,構(gòu)成專用應(yīng)變傳感器盛垦;二是將應(yīng)變片粘貼于被測(cè)物體上湿弦,然后接到專用應(yīng)變儀直接讀取應(yīng)變量。
電阻應(yīng)變片
電阻應(yīng)變片的工作原理是基于應(yīng)變效應(yīng)制作的腾夯,即導(dǎo)體或半導(dǎo)體材料在外界力的作用下產(chǎn)生機(jī)械變形時(shí)颊埃,其電阻值相應(yīng)的發(fā)生變化,這種現(xiàn)象稱為“應(yīng)變效應(yīng)”蝶俱。半導(dǎo)體應(yīng)變片是用半導(dǎo)體材料制成的班利,其工作原理是基于半導(dǎo)體材料的壓阻效應(yīng)。壓阻效應(yīng)是指當(dāng)半導(dǎo)體材料某一軸向受外力作用時(shí)跷乐,其電阻率發(fā)生變化的現(xiàn)象肥败。應(yīng)變片是由敏感柵等構(gòu)成用于測(cè)量應(yīng)變的元件,使用時(shí)將其牢固地粘貼在構(gòu)件的測(cè)點(diǎn)上愕提,構(gòu)件受力后由于測(cè)點(diǎn)發(fā)生應(yīng)變,敏感柵也隨之變形而使其電阻發(fā)生變化皿哨,再由專用儀器測(cè)得其電阻變化大小浅侨,并轉(zhuǎn)換為測(cè)點(diǎn)的應(yīng)變值。金屬電阻應(yīng)變片品種繁多证膨,形式多樣,常見的有絲式電阻應(yīng)變片和箔式電阻 應(yīng)變片。箔式電阻應(yīng)變片是一種基于應(yīng)變——電阻效應(yīng)制成的盖彭,用金屬箔作為敏感柵的葱跋,能把被測(cè)試件的應(yīng)變量轉(zhuǎn)換成電阻變化量的敏感元件。
稱重傳感器工作原理
稱重傳感器是用來將重量信號(hào)或壓力信號(hào)轉(zhuǎn)換成電量信號(hào)的轉(zhuǎn)換裝置崔步。稱重傳感器采用金屬電阻應(yīng)變片組成測(cè)量橋路稳吮,利用金屬電阻絲在張力作用下伸長(zhǎng)變細(xì),電阻增加的原理井濒,即金屬電阻隨所受應(yīng)變而變化的效應(yīng)而制成的灶似。金屬電阻具有阻礙電流流動(dòng)的性質(zhì),同一種金屬絲瑞你,一般來講酪惭,越是細(xì)長(zhǎng),其電阻值就越大者甲。當(dāng)金屬電阻絲受外力作用而伸縮時(shí)春感,其電阻值就會(huì)在某一范圍內(nèi)增減。因此,將金屬絲(或膜)緊貼在被測(cè)物體上鲫懒,當(dāng)被測(cè)物體受外力而伸縮時(shí)纺铭,金屬電阻絲(膜)也會(huì)按比例伸縮,其阻值也會(huì)相應(yīng)變化刀疙。稱重傳感器就是將金屬電阻應(yīng)變片粘貼在金屬稱重梁上進(jìn)行測(cè)量重量信號(hào)的舶赔。
橋式測(cè)量電路
電阻應(yīng)變式稱重傳感器包括兩個(gè)主要部分,一個(gè)是彈性敏感元件:利用它將被測(cè)的重量轉(zhuǎn)換為彈性體的應(yīng)變值谦秧;另一個(gè)是電阻應(yīng)變計(jì):它作為傳感元件將彈性體電阻應(yīng)變式稱重傳感器竟纳。 當(dāng)傳感器不受載荷時(shí),彈性敏感元件不產(chǎn)生應(yīng)變疚鲤,粘貼在其上的應(yīng)變片不發(fā)生變形锥累,阻值不變,電橋平衡集歇,輸出電壓為零桶略;當(dāng)傳感器受力時(shí),即彈性敏感元件受載荷P時(shí)诲宇,應(yīng)變片就會(huì)發(fā)生形變际歼,阻值發(fā)生變化,電橋失去平衡姑蓝,有輸出電壓鹅心。
內(nèi)部為1000歐半橋應(yīng)變片,量程為50kg稱重傳感器纺荧,半橋結(jié)構(gòu)旭愧。
測(cè)量時(shí),外側(cè)邊正確施加外力宙暇,E字形傳感器的應(yīng)變梁部分(即中間貼應(yīng)變片的输枯,有白色覆膠的梁臂)和外側(cè)邊要形成一個(gè)方向相反的剪切力,即中間的應(yīng)變梁在受力下必需可以發(fā)生彎曲變化占贫,應(yīng)變梁受力面另一側(cè)不可有阻擋物桃熄。
傳感器內(nèi)部是一組半橋應(yīng)變片,使用方法可以有以下三種:
1靶剑、使用一只傳感器配合外接電阻組成全橋測(cè)量,量程為一個(gè)傳感器的量程:50kg蜻拨。對(duì)外接電阻要求較高。
2桩引、使用二只傳感器組成全橋測(cè)量,量程為兩只傳感器的量程之和:50kgx2=100kg缎讼。
3、使用四只傳感器組成全橋測(cè)量,量程為四只傳感器的量程之和:50kgx4=200k坑匠。
HX711 24位精度AD稱重模塊
HX711
是一款專為高精度電子秤而設(shè)計(jì)的24位A/D轉(zhuǎn)換器芯片血崭。與同類型其它芯片相比,該芯片集成了包括穩(wěn)壓電源、片內(nèi)時(shí)鐘振蕩器等其它同類型芯片所需要的外圍電路夹纫,具有集成度高咽瓷、響應(yīng)速度快、抗干擾性強(qiáng)等優(yōu)點(diǎn)舰讹。降低了電子秤的整機(jī)成本茅姜,提高了整機(jī)的性能和可靠性。該芯片與后端MCU 芯片的接口和編程非常簡(jiǎn)單月匣,所有控制信號(hào)由管腳驅(qū)動(dòng)钻洒,無需對(duì)芯片內(nèi)部的寄存器編程。輸入選擇開關(guān)可任意選取通道A 或通道B锄开,與其內(nèi)部的低噪聲可編程放大器相連素标。通道A 的可編程增益為128 或64,對(duì)應(yīng)的滿額度差分輸入信號(hào)幅值分別為±20mV或±40mV萍悴。通道B 則為固定的32 增益头遭,用于系統(tǒng)參數(shù)檢測(cè)。芯片內(nèi)提供的穩(wěn)壓電源可以直接向外部傳感器和芯片內(nèi)的A/D 轉(zhuǎn)換器提供電源癣诱,系統(tǒng)板上無需另外的模擬電源计维。芯片內(nèi)的時(shí)鐘振蕩器不需要任何外接器件。上電自動(dòng)復(fù)位功能簡(jiǎn)化了開機(jī)的初始化過程狡刘。
主要參數(shù)
滿額度差分輸入范圍 V(inp)-V(inn) ±0.5(AVDD/GAIN) V
輸入共模電壓范圍 AGND+0.6 AVDD-0.6 V
使用片內(nèi)振蕩器享潜,RATE = 0 10
使用片內(nèi)振蕩器,RATE = DVDD 80
外部時(shí)鐘或晶振嗅蔬,RATE = 0 fclk/1,105,920
輸出數(shù)據(jù)速率
外部時(shí)鐘或晶振,RATE = DVDD fclk/138,240 Hz
輸出數(shù)據(jù)編碼 二進(jìn)制補(bǔ)碼 800000 7FFFFF(HEX) RATE = 0 400
輸出參考電壓(VBG) 1.25 V
外部時(shí)鐘或晶振頻率 1 11.0592 30 MHz
模擬電源電流(含穩(wěn)壓電路) 1600μA 斷電 0.3 μA
模塊采用24位高精度的A/D轉(zhuǎn)換器芯片hx711,是一款專為高精度電子稱而設(shè)計(jì)的疾就, 具有兩路模擬通道輸入澜术, 內(nèi)部集成128倍增益可編程放大器。輸入電路可配置為 提供橋壓的電橋式(如壓力猬腰、稱重)傳感器模式 是一款理想的高精度低成本采樣前端模塊鸟废。采樣hx711 24位ad芯片,雙通道 差分輸入姑荷。全貼片 機(jī)器焊接盒延,帶金屬屏蔽,配送直鼠冕、彎兩種插針添寺,滿足各種安裝焊接方式,板上使用了2個(gè)47uF的膽電容懈费,用料很足计露,內(nèi)置上拉電阻,且預(yù)留CPU焊接位置,很適合自己二次開發(fā)各種各樣的傳感器相關(guān)應(yīng)用票罐。
模塊電原理圖
模塊主要特點(diǎn)
● 帶金屬屏蔽叉趣,強(qiáng)抗干擾,預(yù)留cpu(STC15F104)位置该押,可自行升級(jí)二次開發(fā)疗杉。
● 兩路可選擇差分輸入
● 片內(nèi)低噪聲可編程放大器,可選增益為32蚕礼、64 和128
● 片內(nèi)穩(wěn)壓電路可直接向外部傳感器和芯片內(nèi)A/D 轉(zhuǎn)換器提供電源
● 片內(nèi)時(shí)鐘振蕩器無需任何外接器件烟具,必要時(shí)也可使用外接晶振或時(shí)鐘
● 上電自動(dòng)復(fù)位電路
● 簡(jiǎn)單的數(shù)字控制和串口通訊:所有控制由管腳輸入,芯片內(nèi)寄存器無需編程
● 可選擇10Hz 或80Hz 的輸出數(shù)據(jù)速率
● 同步抑制50Hz 和60Hz 的電源干擾
● 耗電量(含穩(wěn)壓電源電路):
典型工作電流:< 1.7mA, 斷電電流:< 1μA
● 工作電壓范圍:2.6 ~ 5.5V
● 工作溫度范圍:-20 ~ +85℃
模塊檢測(cè)方法
1闻牡,初步快速判斷:斷開模塊所有連線净赴,僅僅給模塊供電5v(就是vcc接+5v,gnd接地)罩润,然后把模塊的ck端口對(duì)地短接玖翅,然后再去測(cè) out+對(duì)地電壓,應(yīng)該4.5v左右割以,接著測(cè)DO/RX端口對(duì)地電壓金度,應(yīng)該0v左右,如果電壓都符合严沥,說明模塊99%正常猜极。
2,完整測(cè)試判斷:使用測(cè)試電路圖搭個(gè)電路消玄,給單片機(jī)燒入測(cè)試程序跟伏,然后用串口線連接電腦,在電腦上運(yùn)行串口助手翩瓜,就可以接收到測(cè)試電路發(fā)出來的讀數(shù)報(bào)告受扳,讀數(shù)正常,表明模塊正常兔跌。
實(shí)驗(yàn)準(zhǔn)備接線時(shí)勘高,才發(fā)現(xiàn)收來的四個(gè)稱重傳感器中,有一個(gè)只有二根線(其它3個(gè)都是3根接線)坟桅,看來要搞不定了
HX711.h頭文件
#ifndef HX711_h
#define HX711_h
#include "Arduino.h"
class Hx711
{
private:
????int DOUT;//定義數(shù)據(jù)引腳
????int SCK;//定義時(shí)鐘引腳
????float scale;//定義比例系數(shù)
????long offset;//定義補(bǔ)償值
public:
????Hx711(int IO_DOUT,int IO_SCK);//構(gòu)造函數(shù)
????void setScale(float IO_scale);//設(shè)置比例系數(shù)
????void setOffset(long IO_offset);//設(shè)置補(bǔ)償值
????long getValue();//采集一次ADC值
????long getAverageValue(char IO_times);//采集ADC平均值
????float getWeight(char IO_times);//得出重量值
};
#endif
HX711.cpp 文件
#include "HX711.h"
#include "Arduino.h"
//int DOUT;//定義數(shù)據(jù)引腳
//int SCK;//定義時(shí)鐘引腳
//float scale;//定義比例系數(shù)
//long offset;//定義補(bǔ)償值
//int times;//定義采集次數(shù)
Hx711::Hx711(int IO_DOUT,int IO_SCK)//構(gòu)造函數(shù)
{
????DOUT = IO_DOUT;
????SCK = IO_SCK;
????pinMode(SCK, OUTPUT);//設(shè)置IO口工作方式
????pinMode(DOUT, INPUT);
}
void Hx711::setScale(float IO_scale)//設(shè)置比例系數(shù)
{
????scale = IO_scale;
}
void Hx711::setOffset(long IO_offset)//設(shè)置補(bǔ)償值
{
????offset = IO_offset;
}
long Hx711::getValue()//采集一次ADC值
{
????unsigned long Count;
????unsigned char i;
????digitalWrite(SCK,LOW);
????Count = 0;
????while(digitalRead(DOUT) == 1);//低電平時(shí)數(shù)據(jù)可以輸出
????for(i=0;i<24;i++)//循環(huán)讀取數(shù)據(jù)
????{
????????digitalWrite(SCK,HIGH);
????????Count = Count<<1;
????????digitalWrite(SCK,LOW);
????????if(digitalRead(DOUT) == 1) Count++;//最低位置1
????}
????digitalWrite(SCK,HIGH);
????Count = Count^0x800000;//最高位置0
????digitalWrite(SCK,LOW);//128增益
????return Count;
}
long Hx711::getAverageValue(char IO_times)//采集ADC平均值
{
????long sum=0;
????char i;
????for(i=0;i<IO_times;i++)
????{
????????sum += getValue();
????}
????return sum/IO_times;
}
float Hx711::getWeight(char IO_times)//得出重量值
{
????long temp;
????temp = getAverageValue(IO_times) - offset;
????return (float)temp/scale;
}
實(shí)驗(yàn)沒有通過华望,一直卡在HX711庫上,編譯無法通過.......
/*
【Arduino】66種傳感器模塊系列實(shí)驗(yàn)(73)
實(shí)驗(yàn)七十三:人體秤50kg稱重傳感器模塊(電阻應(yīng)變半橋式)
*/
#include <HX711.h>
HX711 hx(9, 10);
void setup() {
Serial.begin(9600);
}
void loop()
{
double sum = 0;
for (int i = 0; i < 10; i++)
sum += hx.read();
Serial.println(sum/10);
delay(3000);
}
實(shí)驗(yàn)開源圖形編程(Mind+仅乓、編玩邊學(xué))
實(shí)驗(yàn)開源仿真編程(linkboy V4.1)