最近DIY了一個風扇調速器給功放機箱散熱用,支持接入4個風扇,功能較簡單,目前有兩種工作模式。
自動控制模式:當溫度高于30度,風扇開始旋轉,而且隨著溫度升高,轉速越來越快。
手動控制模式:通過EC11機械編碼器去調節PWM占空比,最大99%
制作出來的實物圖如下:
untitled.99.jpg (636.47 KB, 下載次數: 92)
下載附件
2019-12-17 20:38 上傳
IMG_20191204_202902.jpg (3.96 MB, 下載次數: 99)
下載附件
2019-12-17 20:38 上傳
IMG_20191204_203248.jpg (4 MB, 下載次數: 77)
下載附件
2019-12-17 20:38 上傳
IMG_20191210_135031.jpg (4.7 MB, 下載次數: 94)
下載附件
2019-12-17 20:38 上傳
IMG_20191204_203148.jpg (4.13 MB, 下載次數: 84)
下載附件
2019-12-17 20:38 上傳
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png (21.82 KB, 下載次數: 90)
下載附件
2019-12-17 21:17 上傳
51hei.png (67.32 KB, 下載次數: 104)
下載附件
2019-12-17 21:18 上傳
51hei.png (3.11 KB, 下載次數: 92)
下載附件
2019-12-17 21:18 上傳
STM32單片機源程序如下:
- #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(); //定時器3初始化
- delay_init(); //延時函數初始化
- led_init(); //LED初始化
- TM1640_Init(); //TM1640初始化
- ENCODER_Init(); //旋轉編碼器初始化
- 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(); //讀出旋轉編碼器值
- if(b==3)manual_mode(); //切換為手動模式
- 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); //占空比設置
- break;
-
- case 1:
- TIM_SetCompare2(TIM2, 0); //占空比設置
- break;
-
- case 2:
- TIM_SetCompare2(TIM2, 0); //占空比設置
- break;
-
- case 3:
- TIM_SetCompare2(TIM2, 480*30); //占空比設置
- break;
-
- case 4:
- TIM_SetCompare2(TIM2, 480*40); //占空比設置
- break;
-
- case 5:
- TIM_SetCompare2(TIM2, 480*60); //占空比設置
- break;
-
- case 6:
- TIM_SetCompare2(TIM2, 480*80); //占空比設置
- break;
-
- case 7:
- TIM_SetCompare2(TIM2, 480*100); //占空比設置
- break;
-
- default:
- TIM_SetCompare2(TIM2, 480*100); //占空比設置
- 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); //占空比設置
- while (1)
- {
- b=ENCODER_READ(); //讀出旋轉編碼器值
- if(b==1){a++;if(a>100)a=0;} //分析按鍵值,并加減計數器值。
- if(b==2){if(a==0)a=101;a--;}
- if(b==3)auto_mode(); //切換為自動模式
- if(b!=0) //如果有旋轉器的操作
- {
- if(a/100==0)
- TM1640_display(0,20);
- else
- TM1640_display(0,a/100);
- TM1640_display(1,a%100/10); //顯示數值
- TM1640_display(2,a%10);
- TM1640_display(3,22);
- TIM_SetCompare2(TIM2, a*480); //占空比設置
- }
- }
- }
復制代碼
所有資料51hei提供下載:
調試器2程序.7z
(147.49 KB, 下載次數: 233)
2019-12-17 21:17 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
原理圖 PCB.rar
(11.03 MB, 下載次數: 206)
2019-12-17 20:41 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|