L9110风扇模块是一种常见的电机驱动模块,可以用于控制小型直流风扇的转动,常被用于:
(1)电子设备散热:将L9110风扇模块连接到需要散热的电子设备上,通过控制风扇的转速来提高设备的散热效果,保持设备的正常工作温度。
(2) DIY电子项目:L9110风扇模块是制作各种DIY电子项目的理想选择。通过将其与微控制器板结合使用,可以构建自己的智能风扇、温度控制系统等。这为爱好者提供了灵活性和创造力的发挥空间。
(3)模型制作:L9110风扇模块也可以在模型制作领域中找到应用。通过将风扇模块嵌入模型中,并通过控制模块来改变风扇的速度和转向,可以增加模型的真实感和互动性。
2.本实验用到了CW32F030C8T6小蓝板、L9110风扇模块、LED交通信号灯模块、轻触微动立式按键开关及Keil5开发环境
一、风扇三档转速调节系统说明
(1)L9110风扇模块
L9110风扇模块,可控制正反转,具有安装孔,可以吹灭20cm外的打火机或蜡烛火焰,经常被用于灭火机器人之上。
【连线】:VCC连5V,GND连GND,INA连PA0,INB连PA1
(2)LED交通信号灯模块
【连线】:GND连GND,R连PC13,Y连PC14,G连PC15
(3)轻触微动立式按键开关
【连线】:VCC连+3.3V,GND连GND,OUT接PB9
二、核心代码
L9110.c:
#include "L9110.h"
#include "GTIM.h"
void L9110_GPIO_Init() //INA接PA0,INB接PA1
{
__RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.IT = GPIO_IT_NONE;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //推挽输出模式
GPIO_InitStruct.Pins = GPIO_PIN_0|GPIO_PIN_1;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
GPIO_Init(CW_GPIOA, &GPIO_InitStruct);
PA00_AFx_GTIM2CH1(); //PA0引脚复用为GTIM通道1
PA01_AFx_GTIM2CH2(); //PA1引脚复用为GTIM通道2
}
void Turn_around(int16_t value) //风扇转动函数
{
if(value>0)
{
GTIM_SetCompare1(CW_GTIM2,value); //设置CRR1的值为value
GTIM_SetCompare2(CW_GTIM2,0);
}
else
{
GTIM_SetCompare1(CW_GTIM2,0);
GTIM_SetCompare2(CW_GTIM2,-value);//设置CRR2的为value
}
}
GTIM.c:
#include "GTIM.h"
void GTIM2_Init(void) //输出PWM到INA和INB引脚
{
RCC_APBPeriphClk_Enable1(RCC_APB1_PERIPH_GTIM2,ENABLE); //使能APB外设时钟
GTIM_InitTypeDef GTIM_Initstruct;
GTIM_Initstruct.Mode = GTIM_MODE_TIME; //工作模式-->定时器模式
GTIM_Initstruct.OneShotMode = GTIM_COUNT_CONTINUE;//连续计数模式
GTIM_Initstruct.ToggleOutState = DISABLE; //电平反转失能
GTIM_Initstruct.Prescaler = BTIM_PRS_DIV64; //预分频
GTIM_Initstruct.ReloadValue =1000-1;//计数重载周期,16bit自动重载寄存器ARR,ARR的值最大为65535
GTIM_TimeBaseInit(CW_GTIM2,>IM_Initstruct);
//定时时长=预分频/计数器时钟源频率*(计数重载周期+1),即T=64/64000000*1000s=1ms
GTIM_OCInit(CW_GTIM2,GTIM_CHANNEL1,GTIM_OC_OUTPUT_PWM_LOW);//向GTIMx_CCMR寄存器中的 CCyM 位写入0xF
GTIM_OCInit(CW_GTIM2,GTIM_CHANNEL2,GTIM_OC_OUTPUT_PWM_LOW);
//当 GTIM2_CNT <= GTIM2_CCR1(GTIM2_CCR2)时,CH1(CH2)通道输出高电平,否则输出低电平
GTIM_Cmd(CW_GTIM2,ENABLE); //GTIM2使能
GTIM_SetCompare1(CW_GTIM2,0);
GTIM_SetCompare2(CW_GTIM2,0);
//GTIM2_CCR1(GTIM2_CCR2)中的比较值设为0,CH1(CH2) 通道输出保持为低电平
}
main.c
#include "main.h"
#include "LED.h"
#include "L9110.h"
#include "GTIM.h"
#include "Key.h"
int main()
{
LED_Init(); //三个LED灯用来指示风扇转动状态
L9110_GPIO_Init();//L9110风扇模块引脚初始化配置
Key_GPIO_Init(); //轻触微动立式按键开关用来进行三档转速调节
GTIM2_Init(); //输出PWM到INA,INB引脚
while(1)
{
Key_Scan(); //扫描按键并执行相应功能
LED_Indicator();//指示灯
}
}
三、效果演示+说明
(1)系统上电处于0档,风扇不转,红色LED灯点亮
(2)第一次按下按键开关,系统设置为正向一档,风扇满占空比旋转,风力达到最大,同时红灯熄灭,黄灯点亮,代表风扇顺时针旋转。此后第二次、第三次按下开关,转速依次下降,第四次按下开关,系统回到0档
(3)第五次按下按键开关,系统设置为反向一档,风扇满占空比旋转,风力达到最大,同时红灯熄灭,绿灯点亮,代表风扇逆时针旋转。此后第六次、第七次按下开关,转速依次下降,第八次按下开关,系统回到0档