下面是一個(gè)完整的基于51單片機(jī)的稱重傳感器設(shè)計(jì),
電子秤的實(shí)物圖
單片機(jī)電子秤的原理圖
電子秤設(shè)計(jì) 本設(shè)計(jì)采用以stc89C52單片機(jī)為核心的低成本、高精度、微型化數(shù)字顯示壓力的硬件電路和軟件設(shè)計(jì)方法。整個(gè)電路采用模塊化設(shè)計(jì),由主程序、初始化子程序、顯示子程序等模塊組成。壓力傳感器的信號(hào)經(jīng)單片機(jī)綜合分析處理,實(shí)現(xiàn)壓力測(cè)量并顯示。在此基礎(chǔ)上設(shè)計(jì)了系統(tǒng)的總體方案,最后通過(guò)硬件和軟件實(shí)現(xiàn)了各個(gè)功能模塊。相關(guān)部分附有硬件電路圖、程序流程圖。 關(guān)鍵詞:?jiǎn)纹瑱C(jī);重力傳感;顯示 1 內(nèi)容提要···················································· 2設(shè)計(jì)內(nèi)容及總體方··················································· 3單元電路的具體設(shè)計(jì)·············································· 4總體工作電路原理圖·············································· 5系統(tǒng)所需元件列表·············································· 電子秤具有稱重精確度高,簡(jiǎn)單實(shí)用,攜帶方便成成本低,制作簡(jiǎn)單,測(cè)量準(zhǔn)確,分辨率高,不易損壞和價(jià)格便宜等優(yōu)點(diǎn)。是家庭購(gòu)物使用的首選。其電路構(gòu)成主要有測(cè)量電路,差動(dòng)放大電路,A/D轉(zhuǎn)換,數(shù)據(jù)處理,顯示電路。其中測(cè)量電路中最主要的元器件就稱重傳感器。稱重傳感器是傳感中應(yīng)用最多的一種,廣泛應(yīng)用于電子秤以及各種新型結(jié)構(gòu)的測(cè)量裝置。而差動(dòng)放大電路的作用就是把傳感器輸出的微弱的模擬信號(hào)進(jìn)行一定倍數(shù)的放大,以滿足A/D轉(zhuǎn)換器對(duì)輸入信號(hào)電平的要求。A/D轉(zhuǎn)換的作用是把模擬信號(hào)轉(zhuǎn)變成數(shù)字信號(hào),進(jìn)行模數(shù)轉(zhuǎn)換,然后把數(shù)字信號(hào)輸送單片機(jī)處理,再傳輸?shù)斤@示電路中去,最后由顯示電路顯示出測(cè)量結(jié)果。
內(nèi)容是設(shè)計(jì)一個(gè)電子秤 要求: - 電路由單片機(jī)最小系統(tǒng),差動(dòng)放大電路,A/D轉(zhuǎn)換電路,串口程序下載電路,顯示電路以及電源電路等部分組成
首先利用由稱重傳感器組成的測(cè)量電路測(cè)出物質(zhì)的重量信號(hào),以模擬信號(hào)的方式差動(dòng)放大器電路。其次,由差動(dòng)放大器電路把傳感器輸出的微弱信號(hào)進(jìn)行一定倍數(shù)的放大,然后送A/D轉(zhuǎn)換電路中。再由A/D轉(zhuǎn)換電路把接收到的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào),傳送到單片機(jī)中進(jìn)行處理,再有單片機(jī)控制顯示電路,最后由顯示電路顯示數(shù)據(jù)。 具體方案如下:
三、單元電路的具體設(shè)計(jì) 1.測(cè)量電路:重力傳感器就是將被測(cè)物理量的變化電壓的變化 , 再經(jīng)相應(yīng)的測(cè)量電路而最后顯示或記錄被測(cè)量值的變化。在這里,我們用重力傳感器作為測(cè)量電路的核心。并應(yīng)根據(jù)測(cè)量對(duì)象的要求,恰當(dāng)?shù)剡x擇精度和范圍度。 (1)稱重傳感器的組成以及原理: 通過(guò)重物使重力傳感器稱重端受力彎曲,視其受力情況的不同輸出相應(yīng)線性的電壓。通過(guò)重力傳感器上的那個(gè)孔,可以以各種方式及電路的不同聯(lián)接構(gòu)建整個(gè)系統(tǒng),即可測(cè)得重力、變形、扭矩等機(jī)械參數(shù) 1.產(chǎn)品編號(hào): hl-8 2.技術(shù)參數(shù)
引出線為四芯,為確保精度,一般不要調(diào)整線長(zhǎng)。
4.受力方式
一般將傳感器的接線端固定,另一端可懸掛重物也可托起重物。
5.傳感器電路部分
(1)原理:本次設(shè)計(jì)中,要求用一個(gè)放大電路,即差動(dòng)放大電路,主要的元件就是差動(dòng)放大器。在許多需要用A/D轉(zhuǎn)換和數(shù)字采集的單片機(jī)系統(tǒng)中,多數(shù)情況下,傳感器輸出的模擬信號(hào)都很微弱,必須通過(guò)一個(gè)模擬放大器對(duì)其進(jìn)行一定倍數(shù)的放大,才能滿足A/D轉(zhuǎn)換器對(duì)輸入信號(hào)電平的要求,在此情況下,就必須選擇一種符合要求的放大器。儀表儀器放大器的選型很多,這里使用一種用途非常廣泛的儀表放大器,就是典型的差動(dòng)放大器。它只需高精度LM358和幾只電阻器,即可構(gòu)成性能優(yōu)越的儀表用放大器。廣泛應(yīng)用于工業(yè)自動(dòng)控制、儀器儀表、電氣測(cè)量等數(shù)字采集的系統(tǒng)中。本設(shè)計(jì)中差動(dòng)放大電路結(jié)構(gòu)圖如下:
推導(dǎo)過(guò)程:I=
Vo=(R8+R7+R8)I =(1+
)Vi, 則Avf=1+
(2)所用芯片: LM358內(nèi)部包括有兩個(gè)獨(dú)立的、高增益、內(nèi)部頻率補(bǔ)償?shù)碾p運(yùn)算放大器,適合于電源電壓范圍很寬的單電源使用,也適用于雙電源工作模式。它的使用范圍包括傳感放大器、直流增益模塊和其他所有可用單電源供電的使用運(yùn)算放大器的場(chǎng)合。 3.A/D轉(zhuǎn)換:A/D轉(zhuǎn)換的作用是進(jìn)行模數(shù)轉(zhuǎn)換,把接收到的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)輸出,我們這里選用ADC0832, ADC0832 是美國(guó)國(guó)家半導(dǎo)體公司生產(chǎn)的一種8 位分辨率、雙通道A/D轉(zhuǎn)換芯片。由于它體積小,兼容性,性價(jià)比高而深受單片機(jī)愛(ài)好者及企業(yè)歡迎,其目前已經(jīng)有很高的普及率。A/D轉(zhuǎn)換誤的位數(shù)確定與整個(gè)測(cè)量控制系統(tǒng)所需測(cè)量控制的范圍和精度有關(guān),系統(tǒng)精度涉及的環(huán)節(jié)很多,包括傳感器的變換精度,信號(hào)預(yù)處理電路精度A/D轉(zhuǎn)換器以及輸出電路等。 (1)ADC0832的特點(diǎn) · 8位分辨率;
· 雙通道A/D轉(zhuǎn)換;
· 輸入輸出電平與TTL/CMOS相兼
· 5V電源供電時(shí)輸入電壓在0~5V之間;
· 工作頻率為250KHZ,轉(zhuǎn)換時(shí)間為32μS;
· 一般功耗僅為15mW;
· 8P、14P—DIP(雙列直插)、PICC 多種封裝;
· 商用級(jí)芯片溫寬為0°C to +70°C,工業(yè)級(jí)芯片溫寬為−40°C to +85 °C;
(2)ADC0832芯片接口說(shuō)明
· CS_ 片選使能,低電平芯片使能。
· CH0 模擬輸入通道0,或作為IN+/-使用。
· CH1 模擬輸入通道1,或作為IN+/-使用。
· GND 芯片參考0 電位(地)。
· DI 數(shù)據(jù)信號(hào)輸入,選擇通道控制。
· DO 數(shù)據(jù)信號(hào)輸出,轉(zhuǎn)換數(shù)據(jù)輸出。
· CLK 芯片時(shí)鐘輸入。
· Vcc/REF 電源輸入及參考電壓輸入(復(fù)用)。 ADC0832
數(shù)據(jù)處理部分我們采用STC89C52單片機(jī)系統(tǒng)對(duì)ADC0832所采集回來(lái)的數(shù)據(jù)進(jìn)行處理,然后將輸出處理后的數(shù)據(jù)顯示在數(shù)碼管上。 (1)單片機(jī)對(duì)ADC0832 的控制原理 正常情況下ADC0832 與單片機(jī)的接口應(yīng)為4條數(shù)據(jù)線,分別是CS、CLK、DO、DI。但由于DO端與DI端在通信時(shí)并未同時(shí)有效并與單片機(jī)的接口是雙向的,所以電路設(shè)計(jì)時(shí)可以將DO和DI 并聯(lián)在一根數(shù)據(jù)線上使用。當(dāng)ADC0832未工作時(shí)其CS輸入端應(yīng)為高電平,此時(shí)芯片禁用,CLK 和DO/DI 的電平可任意。當(dāng)要進(jìn)行A/D轉(zhuǎn)換時(shí),須先將CS使能端置于低電平并且保持低電平直到轉(zhuǎn)換完全結(jié)束。此時(shí)芯片開(kāi)始轉(zhuǎn)換工作,同時(shí)由處理器向芯片時(shí)鐘輸入端CLK 輸入時(shí)鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數(shù)據(jù)信號(hào)。在第1 個(gè)時(shí)鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號(hào)。在第2、3個(gè)脈沖下沉之前DI端應(yīng)輸入2 位數(shù)據(jù)用于選擇通道功能,其功能項(xiàng)見(jiàn)官方資料。如資料 所示,當(dāng)此2 位數(shù)據(jù)為“1”、“0”時(shí),只對(duì)CH0 進(jìn)行單通道轉(zhuǎn)換。當(dāng)2位數(shù)據(jù)為“1”、“1”時(shí),只對(duì)CH1進(jìn)行單通道轉(zhuǎn)換。當(dāng)2 位數(shù)據(jù)為“0”、“0”時(shí),將CH0作為正輸入端IN+,CH1作為負(fù)輸入端IN-進(jìn)行輸入。當(dāng)2 位數(shù)據(jù)為“0”、“1”時(shí),將CH0作為負(fù)輸入端IN-,CH1 作為正輸入端IN+進(jìn)行輸入。到第3 個(gè)脈沖的下沉之后DI端的輸入電平就失去輸入作用,此后DO/DI端則開(kāi)始利用數(shù)據(jù)輸出DO進(jìn)行轉(zhuǎn)換數(shù)據(jù)的讀取。從第4個(gè)脈沖下沉開(kāi)始由DO端輸出轉(zhuǎn)換數(shù)據(jù)最高位DATA7,隨后每一個(gè)脈沖下沉DO端輸出下一位數(shù)據(jù)。直到第11個(gè)脈沖時(shí)發(fā)出最低位數(shù)據(jù)DATA0,一個(gè)字節(jié)的數(shù)據(jù)輸出完成。也正是從此位開(kāi)始輸出下一個(gè)相反字節(jié)的數(shù)據(jù),即從第11個(gè)字節(jié)的下沉輸出DATD0。隨后輸出8位數(shù)據(jù),到第19 個(gè)脈沖時(shí)數(shù)據(jù)輸出完成,也標(biāo)志著一次A/D轉(zhuǎn)換的結(jié)束。最后將CS置高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行處理就可以了。作為單通道模擬信號(hào)輸入時(shí)ADC0832的輸入電壓是0~5V且8位分辨率時(shí)的電壓精度為19.53mV。如果作為由IN+與IN-輸入的輸入時(shí),可是將電壓值設(shè)定在某一個(gè)較大范圍之內(nèi),從而提高轉(zhuǎn)換的寬度。但值得注意的是,在進(jìn)行IN+與IN-的輸入時(shí),如果IN-的電壓大于IN+的電壓則轉(zhuǎn)換后的數(shù)據(jù)結(jié)果始終為00H。
- 單片機(jī)數(shù)據(jù)處理及數(shù)碼管顯示程序
- #include//包含相應(yīng)的頭文件
- #include
- #include
- sbit CS=P1^6;//定義數(shù)模轉(zhuǎn)換器硬件對(duì)應(yīng)引腳
- sbit CLK=P1^3;
- sbit DO=P1^4;
- sbit DI=P1^5;
- bit ADFlag;
- unsigned char code DIS[]={0xf7,0xfb,0xfd}; //定義數(shù)碼管位碼
- unsigned char code Datatab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//7段數(shù)碼管段碼表
- data unsigned char Display[3];//定義臨時(shí)存放數(shù)碼管數(shù)值
-
- void Init_Timer1(void)
- {
- TMOD |= 0x10;
- TH1=0xff; /* Init value */
- TL1=0x00;
- //PT1=1; /* 優(yōu)先級(jí) */
- EA=1; /* interupt enable */
- ET1=1; /* enable timer1 interrupt */
- TR1=1;
- }
-
- unsigned char ReadADC(unsigned char channel)
- {
- unsigned char i,j;
- unsigned char Temp=0;
- channel <<=3;
- channel |=3;
- CS =0; //按照資料進(jìn)行時(shí)序操作
- for(i=0;i<3;i++) //輸入指令,包含通道選擇
- {
- CLK=0;
- _nop_();
- DI=channel;
- channel>>=1;
- _nop_();
- CLK=1;
- }
- CLK=0;
- _nop_();
- CLK=1;
- for(j=0;j<8;j++) //處理讀入8位數(shù)據(jù)
- {
- CLK=0;
- _nop_();
- Temp=(Temp<<1)|DO;
- _nop_();
- CLK=1;
- }
- CS=1;
- return(Temp); //返回轉(zhuǎn)換值
- }
-
- void Timer1_isr(void) interrupt 3 using 1//定時(shí)器1執(zhí)行數(shù)碼管動(dòng)態(tài)掃描
- {
- static unsigned char count,j;
- TH1=0xfb; /* Init value */
- TL1=0x00;
- j++;
- if(j==200) {j=0;ADFlag=1;}
- P0=Display[count];
- P2=DIS[count];
- count++;
- if(count==3)
- count=0;
- }
-
- main()
- {
- unsigned char ADtemp;//定義中間變量
- // unsigned char temp;
- Init_Timer1();
- while(1)
- {
- if(ADFlag) //定時(shí)采集輸入模擬量
- {
- ADFlag=0;
- ADtemp=ReadADC(1);
- Display[0]=Datatab[((ADtemp)/50)];//處理電壓顯示
- Display[1]=Datatab[((ADtemp)%50)/10];
- Display[2]=Datatab[((ADtemp)%50)%10];
- }
- }
復(fù)制代碼
5.顯示以及電源部分: 關(guān)于顯示部分,我們選用4位共陽(yáng)數(shù)碼管進(jìn)行顯示,電源部分我們采用一般的12V直流電源給重力傳感器和LM358供電,另外單片機(jī),ADC0832, 數(shù)碼管供電我們采用LM7805將12V轉(zhuǎn)成5V直流給它們提供電源。 以下為數(shù)碼管顯示部分電路: 以下為12V 以及5V電源部分: 下圖為MAX232串口下載部分電路: 下圖USB供電的下載部分電路:
數(shù)顯電子秤具有準(zhǔn)確度高,易于制作,成本低廉,體積小巧,實(shí)用等特點(diǎn)。本電路結(jié)構(gòu)簡(jiǎn)單且易于調(diào)試。 五、系統(tǒng)所需元件列表: | | | | | | | | | | 高精度低溫標(biāo)雙運(yùn)算運(yùn)放 | | | | | | | | | | | | | | | | | | | | | | | | | 具體個(gè)數(shù)請(qǐng)參見(jiàn)電路圖 | | | | | | | | | |
| | | |
| 下載程序通過(guò)usb給單片機(jī)以及MAX232供電 | | |
| | | |
| 單片機(jī)復(fù)位開(kāi)關(guān) | | |
| | | | | | | |
| |
|
五、 調(diào)試 調(diào)試分為硬件調(diào)試與軟件調(diào)試兩個(gè)方面。 1 硬件調(diào)試 首先,對(duì)PCB板進(jìn)行打孔和過(guò)孔操作,當(dāng)過(guò)完所有孔后用數(shù)字萬(wàn)用表來(lái)檢測(cè)地線、電源線、信號(hào)線是否全部連通,避免虛焊的存在。 其次,在已經(jīng)過(guò)孔的PCB板中焊接電阻、瓷片電容、母頭和晶振等器件,然后插上所有芯片的IC管座和數(shù)碼管,在這一過(guò)程中,應(yīng)遵循“先小頭,后大頭”的原則。 最后,裝上所有IC芯片,插上stc89C52,接通電源,連接傳感器、跳線等,先下載一個(gè)數(shù)碼管示列程序,如果看到數(shù)碼管點(diǎn)亮,說(shuō)明硬件沒(méi)有問(wèn)題,然后就可以開(kāi)始調(diào)試軟件部分了。 2 軟件調(diào)試 為了檢測(cè)顯示部分的硬件連接情況,我先將數(shù)碼管檢測(cè)程序燒寫(xiě)stc89C52中,然后插進(jìn)管座接通電源運(yùn)行程序,如果看到數(shù)碼管顯示,證明系統(tǒng)顯示部分的電路連接無(wú)誤。 確認(rèn)顯示部分電路和下載部分電路連接無(wú)誤后,接下來(lái)編寫(xiě)AD0832程序。在這一步的設(shè)計(jì)中,我首先大量查閱了關(guān)于AD0832的pdf資料,弄清它的引腳圖和時(shí)序圖,下一步就是編寫(xiě)它的檢測(cè)子程序。這一步的困難較大,在做這一步的過(guò)程中,我向在編程方面有經(jīng)驗(yàn)的同學(xué)和老師請(qǐng)教,經(jīng)過(guò)他們的指點(diǎn),最后取得了成功。 最后的一步就是檢查運(yùn)發(fā)電路,確認(rèn)無(wú)誤后,連上壓力傳感器! 通過(guò)以上幾步調(diào)試,確認(rèn)硬件連接沒(méi)有錯(cuò)誤后,就可以將單片機(jī)端的完整程序燒寫(xiě)進(jìn)單片機(jī)中了。 當(dāng)一切準(zhǔn)備就緒后,接通系統(tǒng)的電源。此時(shí)我們用手按壓力傳感器,傳感器的電壓變化經(jīng)運(yùn)放單元放大的電壓信號(hào)送給AD采集,轉(zhuǎn)化為數(shù)字信號(hào),送給單片機(jī)處理,最后在數(shù)碼管上顯示。 由于時(shí)間較緊,沒(méi)做到高精度,這些看似簡(jiǎn)單的要求,實(shí)現(xiàn)起來(lái)也并不是容易的,這就增加挑戰(zhàn)性和刺激性。
所有資料下載包含電子秤的pcb和原理圖程序,以及課程設(shè)計(jì)論文等等:
基于51單片機(jī)的稱重傳感器設(shè)計(jì).rar
(1.84 MB, 下載次數(shù): 1262)
2016-6-12 21:12 上傳
點(diǎn)擊文件名下載附件
|