下面是一個完整的基于51單片機的稱重傳感器設計,
0.png (526.47 KB, 下載次數: 313)
下載附件
2016-6-12 21:21 上傳
電子秤的實物圖
0.png (103.93 KB, 下載次數: 288)
下載附件
2016-6-12 21:21 上傳
單片機電子秤的原理圖
電子秤設計 本設計采用以stc89C52單片機為核心的低成本、高精度、微型化數字顯示壓力的硬件電路和軟件設計方法。整個電路采用模塊化設計,由主程序、初始化子程序、顯示子程序等模塊組成。壓力傳感器的信號經單片機綜合分析處理,實現壓力測量并顯示。在此基礎上設計了系統的總體方案,最后通過硬件和軟件實現了各個功能模塊。相關部分附有硬件電路圖、程序流程圖。 關鍵詞:單片機;重力傳感;顯示 1 內容提要···················································· 2設計內容及總體方··················································· 3單元電路的具體設計·············································· 4總體工作電路原理圖·············································· 5系統所需元件列表·············································· 電子秤具有稱重精確度高,簡單實用,攜帶方便成成本低,制作簡單,測量準確,分辨率高,不易損壞和價格便宜等優點。是家庭購物使用的首選。其電路構成主要有測量電路,差動放大電路,A/D轉換,數據處理,顯示電路。其中測量電路中最主要的元器件就稱重傳感器。稱重傳感器是傳感中應用最多的一種,廣泛應用于電子秤以及各種新型結構的測量裝置。而差動放大電路的作用就是把傳感器輸出的微弱的模擬信號進行一定倍數的放大,以滿足A/D轉換器對輸入信號電平的要求。A/D轉換的作用是把模擬信號轉變成數字信號,進行模數轉換,然后把數字信號輸送單片機處理,再傳輸到顯示電路中去,最后由顯示電路顯示出測量結果。
內容是設計一個電子秤 要求: - 電路由單片機最小系統,差動放大電路,A/D轉換電路,串口程序下載電路,顯示電路以及電源電路等部分組成
首先利用由稱重傳感器組成的測量電路測出物質的重量信號,以模擬信號的方式差動放大器電路。其次,由差動放大器電路把傳感器輸出的微弱信號進行一定倍數的放大,然后送A/D轉換電路中。再由A/D轉換電路把接收到的模擬信號轉換成數字信號,傳送到單片機中進行處理,再有單片機控制顯示電路,最后由顯示電路顯示數據。 具體方案如下:
0.png (6.4 KB, 下載次數: 250)
下載附件
2016-6-12 21:35 上傳
三、單元電路的具體設計 1.測量電路:重力傳感器就是將被測物理量的變化電壓的變化 , 再經相應的測量電路而最后顯示或記錄被測量值的變化。在這里,我們用重力傳感器作為測量電路的核心。并應根據測量對象的要求,恰當地選擇精度和范圍度。 (1)稱重傳感器的組成以及原理: 通過重物使重力傳感器稱重端受力彎曲,視其受力情況的不同輸出相應線性的電壓。通過重力傳感器上的那個孔,可以以各種方式及電路的不同聯接構建整個系統,即可測得重力、變形、扭矩等機械參數 1.產品編號: hl-8 2.技術參數
1.010.jpg (54.19 KB, 下載次數: 216)
下載附件
2016-6-12 21:36 上傳
引出線為四芯,為確保精度,一般不要調整線長。
4.受力方式
1.011.jpg (4.86 KB, 下載次數: 222)
下載附件
2016-6-12 21:36 上傳
一般將傳感器的接線端固定,另一端可懸掛重物也可托起重物。
1.012.jpg (755 Bytes, 下載次數: 238)
下載附件
2016-6-12 21:36 上傳
5.傳感器電路部分
1.013.jpg (26.18 KB, 下載次數: 207)
下載附件
2016-6-12 21:36 上傳
(1)原理:本次設計中,要求用一個放大電路,即差動放大電路,主要的元件就是差動放大器。在許多需要用A/D轉換和數字采集的單片機系統中,多數情況下,傳感器輸出的模擬信號都很微弱,必須通過一個模擬放大器對其進行一定倍數的放大,才能滿足A/D轉換器對輸入信號電平的要求,在此情況下,就必須選擇一種符合要求的放大器。儀表儀器放大器的選型很多,這里使用一種用途非常廣泛的儀表放大器,就是典型的差動放大器。它只需高精度LM358和幾只電阻器,即可構成性能優越的儀表用放大器。廣泛應用于工業自動控制、儀器儀表、電氣測量等數字采集的系統中。本設計中差動放大電路結構圖如下:
1.014.jpg (28.09 KB, 下載次數: 241)
下載附件
2016-6-12 21:36 上傳
推導過程:I=
1.015.jpg (1.62 KB, 下載次數: 217)
下載附件
2016-6-12 21:36 上傳
Vo=(R8+R7+R8)I =(1+
1.016.jpg (1.35 KB, 下載次數: 221)
下載附件
2016-6-12 21:36 上傳
)Vi, 則Avf=1+
1.017.jpg (1.35 KB, 下載次數: 230)
下載附件
2016-6-12 21:36 上傳
1.018.jpg (908 Bytes, 下載次數: 195)
下載附件
2016-6-12 21:36 上傳
1.019.jpg (635 Bytes, 下載次數: 232)
下載附件
2016-6-12 21:36 上傳
1.020.jpg (10.63 KB, 下載次數: 219)
下載附件
2016-6-12 21:36 上傳
(2)所用芯片: LM358內部包括有兩個獨立的、高增益、內部頻率補償的雙運算放大器,適合于電源電壓范圍很寬的單電源使用,也適用于雙電源工作模式。它的使用范圍包括傳感放大器、直流增益模塊和其他所有可用單電源供電的使用運算放大器的場合。 3.A/D轉換:A/D轉換的作用是進行模數轉換,把接收到的模擬信號轉換成數字信號輸出,我們這里選用ADC0832, ADC0832 是美國國家半導體公司生產的一種8 位分辨率、雙通道A/D轉換芯片。由于它體積小,兼容性,性價比高而深受單片機愛好者及企業歡迎,其目前已經有很高的普及率。A/D轉換誤的位數確定與整個測量控制系統所需測量控制的范圍和精度有關,系統精度涉及的環節很多,包括傳感器的變換精度,信號預處理電路精度A/D轉換器以及輸出電路等。 (1)ADC0832的特點 · 8位分辨率;
· 雙通道A/D轉換;
· 輸入輸出電平與TTL/CMOS相兼
· 5V電源供電時輸入電壓在0~5V之間;
· 工作頻率為250KHZ,轉換時間為32μS;
· 一般功耗僅為15mW;
· 8P、14P—DIP(雙列直插)、PICC 多種封裝;
· 商用級芯片溫寬為0°C to +70°C,工業級芯片溫寬為−40°C to +85 °C;
(2)ADC0832芯片接口說明
· CS_ 片選使能,低電平芯片使能。
· CH0 模擬輸入通道0,或作為IN+/-使用。
· CH1 模擬輸入通道1,或作為IN+/-使用。
· GND 芯片參考0 電位(地)。
· DI 數據信號輸入,選擇通道控制。
· DO 數據信號輸出,轉換數據輸出。
· CLK 芯片時鐘輸入。
· Vcc/REF 電源輸入及參考電壓輸入(復用)。
1.021.jpg (7.04 KB, 下載次數: 220)
下載附件
2016-6-12 21:36 上傳
ADC0832
1.022.jpg (13.13 KB, 下載次數: 218)
下載附件
2016-6-12 21:36 上傳
數據處理部分我們采用STC89C52單片機系統對ADC0832所采集回來的數據進行處理,然后將輸出處理后的數據顯示在數碼管上。 (1)單片機對ADC0832 的控制原理 正常情況下ADC0832 與單片機的接口應為4條數據線,分別是CS、CLK、DO、DI。但由于DO端與DI端在通信時并未同時有效并與單片機的接口是雙向的,所以電路設計時可以將DO和DI 并聯在一根數據線上使用。當ADC0832未工作時其CS輸入端應為高電平,此時芯片禁用,CLK 和DO/DI 的電平可任意。當要進行A/D轉換時,須先將CS使能端置于低電平并且保持低電平直到轉換完全結束。此時芯片開始轉換工作,同時由處理器向芯片時鐘輸入端CLK 輸入時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數據信號。在第1 個時鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號。在第2、3個脈沖下沉之前DI端應輸入2 位數據用于選擇通道功能,其功能項見官方資料。如資料 所示,當此2 位數據為“1”、“0”時,只對CH0 進行單通道轉換。當2位數據為“1”、“1”時,只對CH1進行單通道轉換。當2 位數據為“0”、“0”時,將CH0作為正輸入端IN+,CH1作為負輸入端IN-進行輸入。當2 位數據為“0”、“1”時,將CH0作為負輸入端IN-,CH1 作為正輸入端IN+進行輸入。到第3 個脈沖的下沉之后DI端的輸入電平就失去輸入作用,此后DO/DI端則開始利用數據輸出DO進行轉換數據的讀取。從第4個脈沖下沉開始由DO端輸出轉換數據最高位DATA7,隨后每一個脈沖下沉DO端輸出下一位數據。直到第11個脈沖時發出最低位數據DATA0,一個字節的數據輸出完成。也正是從此位開始輸出下一個相反字節的數據,即從第11個字節的下沉輸出DATD0。隨后輸出8位數據,到第19 個脈沖時數據輸出完成,也標志著一次A/D轉換的結束。最后將CS置高電平禁用芯片,直接將轉換后的數據進行處理就可以了。作為單通道模擬信號輸入時ADC0832的輸入電壓是0~5V且8位分辨率時的電壓精度為19.53mV。如果作為由IN+與IN-輸入的輸入時,可是將電壓值設定在某一個較大范圍之內,從而提高轉換的寬度。但值得注意的是,在進行IN+與IN-的輸入時,如果IN-的電壓大于IN+的電壓則轉換后的數據結果始終為00H。
- #include//包含相應的頭文件
- #include
- #include
- sbit CS=P1^6;//定義數模轉換器硬件對應引腳
- sbit CLK=P1^3;
- sbit DO=P1^4;
- sbit DI=P1^5;
- bit ADFlag;
- unsigned char code DIS[]={0xf7,0xfb,0xfd}; //定義數碼管位碼
- unsigned char code Datatab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//7段數碼管段碼表
- data unsigned char Display[3];//定義臨時存放數碼管數值
-
- void Init_Timer1(void)
- {
- TMOD |= 0x10;
- TH1=0xff; /* Init value */
- TL1=0x00;
- //PT1=1; /* 優先級 */
- 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; //按照資料進行時序操作
- 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位數據
- {
- CLK=0;
- _nop_();
- Temp=(Temp<<1)|DO;
- _nop_();
- CLK=1;
- }
- CS=1;
- return(Temp); //返回轉換值
- }
-
- void Timer1_isr(void) interrupt 3 using 1//定時器1執行數碼管動態掃描
- {
- 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) //定時采集輸入模擬量
- {
- ADFlag=0;
- ADtemp=ReadADC(1);
- Display[0]=Datatab[((ADtemp)/50)];//處理電壓顯示
- Display[1]=Datatab[((ADtemp)%50)/10];
- Display[2]=Datatab[((ADtemp)%50)%10];
- }
- }
復制代碼
1.023.jpg (58.12 KB, 下載次數: 215)
下載附件
2016-6-12 21:36 上傳
5.顯示以及電源部分: 關于顯示部分,我們選用4位共陽數碼管進行顯示,電源部分我們采用一般的12V直流電源給重力傳感器和LM358供電,另外單片機,ADC0832, 數碼管供電我們采用LM7805將12V轉成5V直流給它們提供電源。 以下為數碼管顯示部分電路:
1.024.jpg (37.63 KB, 下載次數: 202)
下載附件
2016-6-12 21:36 上傳
以下為12V 以及5V電源部分:
1.025.jpg (27.02 KB, 下載次數: 245)
下載附件
2016-6-12 21:36 上傳
下圖為MAX232串口下載部分電路:
1.026.jpg (44.94 KB, 下載次數: 221)
下載附件
2016-6-12 21:36 上傳
下圖USB供電的下載部分電路:
1.027.jpg (30.5 KB, 下載次數: 229)
下載附件
2016-6-12 21:36 上傳
1.028.jpg (37.73 KB, 下載次數: 256)
下載附件
2016-6-12 21:36 上傳
數顯電子秤具有準確度高,易于制作,成本低廉,體積小巧,實用等特點。本電路結構簡單且易于調試。 五、系統所需元件列表:
0.png (11.39 KB, 下載次數: 239)
下載附件
2016-6-12 21:34 上傳
0.png (8.7 KB, 下載次數: 218)
下載附件
2016-6-12 21:34 上傳
五、 調試 調試分為硬件調試與軟件調試兩個方面。 1 硬件調試 首先,對PCB板進行打孔和過孔操作,當過完所有孔后用數字萬用表來檢測地線、電源線、信號線是否全部連通,避免虛焊的存在。 其次,在已經過孔的PCB板中焊接電阻、瓷片電容、母頭和晶振等器件,然后插上所有芯片的IC管座和數碼管,在這一過程中,應遵循“先小頭,后大頭”的原則。 最后,裝上所有IC芯片,插上stc89C52,接通電源,連接傳感器、跳線等,先下載一個數碼管示列程序,如果看到數碼管點亮,說明硬件沒有問題,然后就可以開始調試軟件部分了。 2 軟件調試 為了檢測顯示部分的硬件連接情況,我先將數碼管檢測程序燒寫stc89C52中,然后插進管座接通電源運行程序,如果看到數碼管顯示,證明系統顯示部分的電路連接無誤。 確認顯示部分電路和下載部分電路連接無誤后,接下來編寫AD0832程序。在這一步的設計中,我首先大量查閱了關于AD0832的pdf資料,弄清它的引腳圖和時序圖,下一步就是編寫它的檢測子程序。這一步的困難較大,在做這一步的過程中,我向在編程方面有經驗的同學和老師請教,經過他們的指點,最后取得了成功。 最后的一步就是檢查運發電路,確認無誤后,連上壓力傳感器。 通過以上幾步調試,確認硬件連接沒有錯誤后,就可以將單片機端的完整程序燒寫進單片機中了。 當一切準備就緒后,接通系統的電源。此時我們用手按壓力傳感器,傳感器的電壓變化經運放單元放大的電壓信號送給AD采集,轉化為數字信號,送給單片機處理,最后在數碼管上顯示。 由于時間較緊,沒做到高精度,這些看似簡單的要求,實現起來也并不是容易的,這就增加挑戰性和刺激性。
0.png (100.45 KB, 下載次數: 232)
下載附件
2016-6-12 21:22 上傳
所有資料下載包含電子秤的pcb和原理圖程序,以及課程設計論文等等:
基于51單片機的稱重傳感器設計.rar
(1.84 MB, 下載次數: 1262)
2016-6-12 21:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|