導航:首頁 > 操作系統 > 基於單片機的恆溫箱

基於單片機的恆溫箱

發布時間:2023-06-30 01:39:37

Ⅰ 基於單片機的恆溫控制系統

我剛幫別人做了一個,是按這個要求做的,你可以提出任意修改要求。
程序是匯編的,已經調試通過。

ProteUS模擬文件下載地址:
推薦:70電加熱PRE.rar( http://ishare.iask.sina.com.cn/f/7033603.html )

; 設計基於單片計算機的溫度控制器。用於控制電加熱爐的溫度。具體要求如下:
; 1. 溫度連續可調,范圍為30℃~150℃
; 2. 超調量σ%≤20%
; 3. 溫度誤差≤±0.5℃
; 4. 人-機對話方便
; 5. 控制演算法採用PID或改進的PID或其他演算法.

; (我用的是AT89C52的單片機:
; A.電加熱爐經由溫度感測器測量後,
; 通過V/F變換器的模數轉換,
; 將電壓或電流量轉換為數字信號進入單片機內,
; 然後通過移位寄存器和解碼器的信息轉換,
; 通過顯示驅動器來進行LED數碼管的溫度顯示;
; B.單片機也通過雙向可控硅來控制爐內的溫度;
; C.用戶通過按鍵來設置溫度上限、下限值)

Ⅱ 怎樣用PID演算法對恆溫箱的溫度進行控制,求相關的51單片機匯編程

本設計要求:本溫度控制系統為以單片機為核心,實現了對溫度實時監測和控制,實現了控制的智能化。設計恆溫箱溫度控制系統,配有溫度感測器,採用DS18B20數字溫度感測器,無需數模擬∕數字轉換,可直接與單片機進行數字傳輸,採用了PID控制技術,可以使溫度保持在要求的一個恆定范圍內,配有鍵盤,用於輸入設定溫度;配有數碼管LED用來顯示溫度。
技術參數和設計任務:
1、利用單片機AT89C2051實現對溫度的控制,實現保持恆溫箱在最高溫度為110℃。
2、可預置恆溫箱溫度,烘乾過程恆溫控制,溫度控制誤差小於±2℃。
3、預置時顯示設定溫度,恆溫時顯示實時溫度,採用PID控制演算法顯示精確到0.1℃。
4、溫度超出預置溫度±5℃時發出聲音報警。
5、對升、降溫過程沒有線性要求。
6、溫度檢測部分採用DS18B20數字溫度感測器,無需數模擬∕數字轉換,可直接與單片機進行數字傳輸
7、人機對話部分由鍵盤、顯示和報警三部分組成,實現對溫度的顯示、報警。
需要的話聯系用戶名扣扣

Ⅲ 基於單片機的恆溫箱設計可能遇到什麼難點

關鍵在於PID恆溫。
第一步要先做好PID子程序
第二部需要摸索參數調整的規律。

Ⅳ 基於單片機恆溫箱控制系統

只有圖,沒有程序。從圖來看,埠配置不好,單一功能要充分利用埠,原則上P0口作為段嗎,這里,如果作為位碼的話可以節省一級驅動,應為P0口的驅動能力較強,極力推鑒1051-4051(埠驅動20mA),降低硬體成本,減少軟體編程量。這里有一個模擬器帶的溫度顯示程序。你參考一下,如果加上控制,在程序合適位置加入判斷語句如if(****,P1.x=?),再配置一個輸出埠,就行了。程序如下,附模擬圖。

#include<reg52.h>

#include<intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitDATA=P1^0;//DS18B20接入口

ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

char,shi,ge;//定義變數

/*延時子函數*/

voiddelay(uintnum)

{

while(num--);

}

/*************DS18b20溫度感測器函數*********************/

voidInit_DS18B20(void) //感測器初始化

{

ucharx=0;

DATA=1; //DQ復位

delay(10); //稍做延時

DATA=0; //單片機將DQ拉低

delay(80); //精確延時大於480us//450

DATA=1; //拉高匯流排

delay(20);

x=DATA; //稍做延時後如果x=0則初始化成功x=1則初始化失敗

delay(30);

}

//讀一個位元組

ReadOneChar(void)

{

uchari=0;

uchardat=0;

for(i=8;i>0;i--)

{

DATA=0;//給脈沖信號

dat>>=1;

DATA=1;//給脈沖信號

if(DATA)

dat|=0x80;

delay(8);

}

return(dat);

}

//寫一個位元組

voidWriteOneChar(unsignedchardat)

{

uchari=0;

for(i=8;i>0;i--)

{

DATA=0;

DATA=dat&0x01;

delay(10);

DATA=1;

dat>>=1;

}

delay(8);

}

//讀取溫度

intReadTemperature(void)

{

uchara=0;

ucharb=0;

intt=0;

floattt=0;

Init_DS18B20();

WriteOneChar(0xCC);//跳過讀序號列號的操作

WriteOneChar(0x44);//啟動溫度轉換

Init_DS18B20();

WriteOneChar(0xCC);//跳過讀序號列號的操作

WriteOneChar(0xBE);//讀取溫度寄存器等(共可讀9個寄存器)前兩個就是溫度

a=ReadOneChar(); //低位

b=ReadOneChar(); //高位

t=b;

t<<=8;

t=t|a; //得到溫度值的各個位的值

t=t*0.0625; //得到實際的溫度值

return(t);

}

/*顯示子函數*/

voiddisplay(int,intshi,intge)

{

P0=0xff; //對數碼管清零,防止串擾

P2=0xfb;

P0=table[]; //顯示百位

delay(50); //一小段延時動態顯示

P0=0xff; //對數碼管清零,防止串擾

P2=0xf7;

P0=table[shi]; //顯示十位

delay(50);

P0=0xff;

P2=0xef;

P0=table[ge]&0x7f; //顯示個位

delay(100);

P0=0xff;

P2=0xdf;

P0=table[0]; //顯示小數位,這里沒有處理小數位,默認的為0

delay(50);

}

voidmain()

{

inttemp;

while(1)

{

temp=ReadTemperature(); //讀溫度

=temp/100; //獲取百位

shi=temp%100/10; //獲取十位

ge=temp%10; //獲取個位

display(,shi,ge); //顯示函數

}

}

閱讀全文

與基於單片機的恆溫箱相關的資料

熱點內容
雲伺服器創建私有鏡像的時候一定要關機嗎 瀏覽:110
php開發學習門戶 瀏覽:383
傳奇游戲伺服器怎麼設置 瀏覽:823
敲擊東西解壓完整版 瀏覽:401
刺絡學pdf 瀏覽:868
怎麼給手機文件夾設置封面 瀏覽:931
汽車保養app怎麼用 瀏覽:62
線程javalock 瀏覽:896
c語言編譯運行結果查看器 瀏覽:112
androidpx轉dip 瀏覽:841
西藏編譯局是什麼級別 瀏覽:1001
php提交代碼 瀏覽:597
如何用命令查找並刪除代碼塊 瀏覽:582
python初學路線圖 瀏覽:534
matlab遺傳演算法旅行商問題 瀏覽:304
將辦公軟體加入加密軟體的進程 瀏覽:724
聯想小新pro14編譯器 瀏覽:462
為什麼伺服器要關掉icmp協議 瀏覽:855
源碼編輯器如何設置難度 瀏覽:357
給pdf加目錄 瀏覽:476