最近的中文字幕免费完整版-越猛烈欧美xx00动态图-少妇激情偷人三级-国产色播av在线观看-国产国产人免费视频成69-无码专区人妻丝袜-亚洲女同精品一区二区-午夜久久久-欧美黄色大全-久久人人爽人人爽人人片av不-www色com-日韩综合在线视频-亚洲电影天堂av2017-久久亚洲网-欧美性色视频-久久亚洲激情-av无码免费岛国动作片不卡-一区二区三区高清视频3-欧美一级无毛-午夜黄色大片

技術干貨:基于武漢芯源CW32的L9110風扇模塊的應用設計

來源:武漢芯源| 發布日期:2023-11-09 17:37

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檔