|
最近DIY了一個(gè)風(fēng)扇調(diào)速器給功放機(jī)箱散熱用,支持接入4個(gè)風(fēng)扇,功能較簡(jiǎn)單,目前有兩種工作模式。
自動(dòng)控制模式:當(dāng)溫度高于30度,風(fēng)扇開(kāi)始旋轉(zhuǎn),而且隨著溫度升高,轉(zhuǎn)速越來(lái)越快。
手動(dòng)控制模式:通過(guò)EC11機(jī)械編碼器去調(diào)節(jié)PWM占空比,最大99%
制作出來(lái)的實(shí)物圖如下:
Altium Designer畫(huà)的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
STM32單片機(jī)源程序如下:
- #include "stm32f0xx.h"
- #include "time.h"
- #include "led.h"
- #include "TM1640.h"
- #include "ds18b20.h"
- #include "delay.h"
- #include "encoder.h"
- __IO uint16_t temp1;
- __IO uint16_t temp2;
- int ten,one,zero;
- float temp;
- u16 i,pwm;
- u8 a=0,b=0,mode;
- void manual_mode();
- void auto_mode();
- int main(void)
- {
- TIM_Config();
- TIM_PWM_Config();
- TIM3_Config(); //定時(shí)器3初始化
- delay_init(); //延時(shí)函數(shù)初始化
- led_init(); //LED初始化
- TM1640_Init(); //TM1640初始化
- ENCODER_Init(); //旋轉(zhuǎn)編碼器初始化
- while(1)
- {
- auto_mode();
- }
- }
- void auto_mode()
- {
- mode=1;
- TM1640_display(0,20); //清屏
- TM1640_display(1,20);
- TM1640_display(2,20);
- TM1640_display(3,20);
- while(1)
- {
-
- temp=TemperatuerResult();
- zero=(int)(temp*10)%10;
- ten=(int)temp/10;
- one=(int)temp%10;
- b=ENCODER_READ(); //讀出旋轉(zhuǎn)編碼器值
- if(b==3)manual_mode(); //切換為手動(dòng)模式
- if(temp2>300 && temp2<500)
- {
- TM1640_display(0,23);
- TM1640_display(1,24);
- TM1640_display(2,25);
- TM1640_display(3,26);
-
- }
- if(temp2>600)
- {
- temp2=0;
- TM1640_display(0,ten);
- TM1640_display(1,one+10);
- TM1640_display(2,zero);
- TM1640_display(3,21);
- }
- switch(ten)
- {
- case 0:
- TIM_SetCompare2(TIM2, 0); //占空比設(shè)置
- break;
-
- case 1:
- TIM_SetCompare2(TIM2, 0); //占空比設(shè)置
- break;
-
- case 2:
- TIM_SetCompare2(TIM2, 0); //占空比設(shè)置
- break;
-
- case 3:
- TIM_SetCompare2(TIM2, 480*30); //占空比設(shè)置
- break;
-
- case 4:
- TIM_SetCompare2(TIM2, 480*40); //占空比設(shè)置
- break;
-
- case 5:
- TIM_SetCompare2(TIM2, 480*60); //占空比設(shè)置
- break;
-
- case 6:
- TIM_SetCompare2(TIM2, 480*80); //占空比設(shè)置
- break;
-
- case 7:
- TIM_SetCompare2(TIM2, 480*100); //占空比設(shè)置
- break;
-
- default:
- TIM_SetCompare2(TIM2, 480*100); //占空比設(shè)置
- break;
- }
-
- }
- }
- void manual_mode()
- {
- mode=2;
- TM1640_display(0,27); //清屏
- TM1640_display(1,27);
- TM1640_display(2,27);
- TM1640_display(3,27);
- TIM_SetCompare2(TIM2, 0); //占空比設(shè)置
- while (1)
- {
- b=ENCODER_READ(); //讀出旋轉(zhuǎn)編碼器值
- if(b==1){a++;if(a>100)a=0;} //分析按鍵值,并加減計(jì)數(shù)器值。
- if(b==2){if(a==0)a=101;a--;}
- if(b==3)auto_mode(); //切換為自動(dòng)模式
- if(b!=0) //如果有旋轉(zhuǎn)器的操作
- {
- if(a/100==0)
- TM1640_display(0,20);
- else
- TM1640_display(0,a/100);
- TM1640_display(1,a%100/10); //顯示數(shù)值
- TM1640_display(2,a%10);
- TM1640_display(3,22);
- TIM_SetCompare2(TIM2, a*480); //占空比設(shè)置
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
調(diào)試器2程序.7z
(147.49 KB, 下載次數(shù): 233)
2019-12-17 21:17 上傳
點(diǎn)擊文件名下載附件
原理圖 PCB.rar
(11.03 MB, 下載次數(shù): 206)
2019-12-17 20:41 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|