歡迎交流
分享一個51單片機做的自動控制系統.
ds18b210溫度大于等于45℃時加速正轉/小于等于10℃時加速反轉.
75℃時達到全速正轉/0℃時達到全速反轉.
溫度回到10℃至45℃之間時電機逐漸停止.
觀察轉速時以數字為準,而不以直觀速度為準.
因為在高轉速下反而會覺得其轉速很低.
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (22.12 KB, 下載次數: 33)
下載附件
2018-6-3 17:50 上傳
0.png (16.91 KB, 下載次數: 40)
下載附件
2018-6-3 17:50 上傳
單片機源程序如下:
- //-----------------------------------------------------------------
- // 名稱: 溫度控制直流電機轉速
- //-----------------------------------------------------------------
- // 說明: 大于等于45℃時加速正轉/小于等于10℃時加速反轉
- // 75℃時達到全速正轉/0℃時達到全速反轉
- // 溫度回到10℃至45℃之間時電機逐漸停止轉動
- //
- //-----------------------------------------------------------------
- #include <reg51.h>
- #include <intrins.h>
- #include <stdio.h>
- #define INT8U unsigned char
- #define INT16U unsigned int
- extern INT8U Temp_Value[]; //傳感器返回的兩字節溫度原始數據
- extern INT8U Read_Temperature(); //讀傳感器溫度函數
- extern void delay_ms(INT16U x);
- extern void LCD_Initialise();
- extern void LCD_ShowString(INT8U, INT8U,INT8U *) reentrant;
- sbit MA = P1^0; //電機方向控制端(MA,MB)
- sbit MB = P1^1;
- sbit PWM1 = P1^2; //PWM調整控制端
- INT8U Back_Temp_Value[] = {0xFF,0xFF}; //溫度數據備份
- char Temp_Disp_Buff[17]; //顯示緩沖
- float f_Temp = 35.0; //浮點溫度值
- //-----------------------------------------------------------------
- // T0定時器溢出中斷函數控制電機正/反轉,并輸出PWM信號控制轉速
- //-----------------------------------------------------------------
- void T0_INT() interrupt 1
- {
- }
- //-----------------------------------------------------------------
- // 主函數
- //-----------------------------------------------------------------
- void main()
- {
- }
復制代碼
0.png (47.91 KB, 下載次數: 31)
下載附件
2018-6-3 17:51 上傳
所有資料51hei提供下載(源碼還未完成):
12 溫度控制直流電機轉速.zip
(30.33 KB, 下載次數: 29)
2018-6-3 17:10 上傳
點擊文件名下載附件
|