繼電器是控制電路的電子元器件,通過感應輸入電流的變化控制電路的通斷,通常用于自動化控制電路中,在電路中起著自動調節、隔離、安全保護和轉換等作用。直流繼電器通常有5個引腳,其中有兩個引腳是線圈控制引腳,其他3個引腳分別是是常開端、常閉端和公共端。在沒有上電時,線圈沒有通電,常閉端和公共端相連,常開端和公共端斷開;上電后,線圈通電,常開端和公共端相連,常閉端和公共端斷開。所以繼電器就相當于是一個開關,可以使用低壓控制高壓。
一、模塊來源
模塊實物展示:
資料鏈接:http://pan.baidu.com/share/link?shareid=3950641169&uk=2302102993
二、規格參數
工作電壓:5V
可控制的交流電壓范圍:可達250V,10A
可控制的交流電壓范圍:可達30V,10A
控制方式:GPIO
以上信息見廠家資料文件
三、移植過程
我們的目標是將例程移植至CW32F030C8T6開發板上【能夠實現控制繼電器的吸合與釋放的功能】。首先要獲取資料,查看數據手冊應如何實現讀取數據,再移植至我們的工程。
3.1查看資料
如果繼電器在低壓電源導通的狀態下,電磁鐵有了磁力,吸合銜鐵,觸點閉合,高壓電源形成回路處于導通狀態;如果繼電器在低壓電源斷開的狀態下,電磁鐵沒有磁力,因為彈簧的緣故,彈簧將觸點斷開,高壓電源沒有形成回路處于斷開狀態;
知道了控制原理,再來看原理圖。K1為繼電器,其中的4腳和5腳是繼電器的低壓電源控制引腳,當IN1輸出低電平,U1光耦隔離器的1腳2腳導通使得4腳和3腳導通,VCC通過4腳到3腳經過R2給三極管的基極得電,因為三極管的基極得電,使得三極管導通,VCC經過繼電器的4腳到5腳到三極管到地。因此繼電器的線圈得電,繼電器的1腳觸點由2腳吸合到3腳,達到了我們控制開關的目的。其中原理圖中的P1端子的1腳是常閉觸點,2腳是公共觸點,3腳是常開觸點。對應的接線圖見下方右圖。
3.2引腳選擇
該模塊有3個引腳,具體引腳連接見各引腳連接。
模塊接線圖
3.3移植至工程
移植步驟中的導入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_relay.c與bsp_relay.h。這里不再過多講述,移植完成后面修改相關代碼。
在文件bsp_relay.c中,編寫如下代碼。
/* * Change Logs: * Date Author Notes * 2024-06-24 LCKFB-LP first version */ #include "bsp_relay.h" #include "stdio.h" /****************************************************************** * 函 數 名 稱:relay_GPIO_Init * 函 數 說 明:繼電器引腳初始化 * 函 數 形 參:無 * 函 數 返 回:無 * 作 者:LC * 備 注:無 ******************************************************************/ void Relay_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化結構體 RCC_RELAY_IN_ENABLE(); // 使能GPIO時鐘 GPIO_InitStruct.Pins = GPIO_RELAY_IN; // GPIO引腳 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽輸出 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 輸出速度高 GPIO_Init(PORT_RELAY_IN, &GPIO_InitStruct); // 初始化 } /****************************************************************** * 函 數 名 稱:Set_Relay_Switch * 函 數 說 明:設置繼電器狀態 * 函 數 形 參:0繼電器吸合 1繼電器斷開 * 函 數 返 回: * 作 者:LC * 備 注: ******************************************************************/ void Set_Relay_Switch(unsigned char state) { RELAY_OUT(state); }
在文件bsp_relay.h中,編寫如下代碼。
/* * Change Logs: * Date Author Notes * 2024-06-24 LCKFB-LP first version */ #ifndef _BSP_RELAY_H_ #define _BSP_RELAY_H_ #include "board.h" #define RCC_RELAY_IN_ENABLE() __RCC_GPIOA_CLK_ENABLE() #define PORT_RELAY_IN CW_GPIOA #define GPIO_RELAY_IN GPIO_PIN_2 #define RELAY_OUT(x) GPIO_WritePin(PORT_RELAY_IN, GPIO_RELAY_IN, x?GPIO_Pin_SET:GPIO_Pin_RESET) void Relay_GPIO_Init(void);//繼電器引腳初始化 void Set_Relay_Switch(unsigned char state);//設置繼電器狀態 #endif
四、移植驗證
在自己工程中的main主函數中,編寫如下。
/* * Change Logs: * Date Author Notes * 2024-06-24 LCKFB-LP first version */ #include "board.h" #include "stdio.h" #include "bsp_uart.h" #include "bsp_relay.h" int32_t main(void) { board_init(); // 開發板初始化 uart1_init(115200); // 串口1波特率115200 Relay_GPIO_Init(); //繼電器初始化 printf("Demo Start...rn"); while(1) { Set_Relay_Switch(0);//控制繼電器吸合 delay_ms(1000); Set_Relay_Switch(1);//控制繼電器松開 delay_ms(1000); } }
移植現象:一上電就會聽到繼電器吸合的聲音
模塊移植成功案例代碼:
鏈接:https://pan.baidu.com/s/1A3N-aVpZ0V6seaxmHz40Ag?pwd=LCKF
提取碼:LCKF
審核編輯 黃宇
-
繼電器模塊
+關注
關注
1文章
10瀏覽量
12876 -
CW32
+關注
關注
1文章
242瀏覽量
1092
發布評論請先 登錄
【項目展示】基于CW32的遙控循跡小車


評論