前言# y* ^" f) g/ ?$ _8 M
相信很多志同道合的小伙伴们已经找到了学习STM32的好途经(灵光一闪刷到我的博客)了,接下来的时光里,我会讲到一些我对一些模块的使用,同时附上源码还有我的心得。没错,今天我讲的就是继电器的使用。4 o4 R# _0 h8 }5 @& s" B
4 N4 `6 }# M H1 [3 Q5 I% l" d7 J% @$ B, F* N" Q4 l }* U
; O: } K: H2 y
+ X3 Z' Q* p/ ^" h, r* V/ ?) H% ]. F# O# N% F* B% h
一、继电器的使用3 O! [# h# D6 M _
其实继电器简单来说就是一个开关,VCC表示电源正极、GND表示电源负极、IN表示信号输入脚,COM表示公共端,NC(normal close)表示常闭端,NO(normal open)表示常开端
7 ^+ G# N% m: y _) P/ h) r0 s/ u1 v
j3 r9 X* h" f; f5 ^5 I
一般情况下是常闭状态
; o( ]9 A* P# p5 z
$ c# h1 ?: b8 B' b2 @3 e5 _
% T! i" Y+ r; F: r/ k这里简单地描述一下大部分的继电器模块:
6 r, C6 j3 {* b' ^* L/ g% C( p7 ?) ~
" H% C3 L& _- X" e, v
Vcc接电源正极,Gnd接电源负极,In接STM32上的输出脚(输入高电平公共端连常闭,输入低电平公共端连常开),如下图所示,你就可以明白了,当IN脚输入高电平时,NC与COM相连(左图);当输入低电平时,NO与COM相连(右图)。" ?1 e/ e- l9 A* Z1 G5 S
7 X3 q$ d" f# m5 x, ^" |9 f1 `
. m. h& _2 m$ _
( A# D5 n3 _) x5 w, v$ |9 n
( }; i! L3 x$ b% G3 Y) l, N/ G
' y/ Y# ^5 [# O3 E# q
In脚输入高电平,COM连着NC( ~! D3 a5 M' ?& }) T" _
5 A+ H" A5 ]9 g
3 y1 Y$ B8 X, J$ b# C7 t3 h9 `% S( d2 Y
8 d- O. {3 \) D7 q
In脚输入低电平,COM连着NO
! f: l; l) [' ^. Z6 r1 l7 [相信这样子你就对继电器有了基本的使用了解,下面我就不讲解其内部的结构原理了,可以到其他文章上学习具体原理,附上链接) w' E b* O3 |8 C4 z
$ W) h8 N% {( _' f
. i& T$ v; y3 E) _, D: `" @" C/ S
p9 u% u, k0 `- l1 m2 p二、写个代码检验; }( {) r, j6 D: i8 M
下面我就简单的实现以下它的开关功能吧) i( @! N+ t4 Q) z# y f7 b s; H
- #include "jdq.h"
: M q2 n/ k, ~% @( O7 W7 e! R -
, K8 D+ l5 T' I2 N8 f -
( X- x* g' y9 G# ~ - void relay_init(void)//对继电器初始化,即对PB7口初始化# t ]; d* n; l3 r4 E
- {, {: b8 b$ R+ q0 |% u4 R7 }, h7 l
- GPIO_InitTypeDef GPIO_InitStructure;$ `/ v# C4 V- W" Y
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
) i* V+ K; ^. n% Y4 r, | - " w; y' o1 w) J% P) V& Z4 V( J
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
* ]* H( [2 v' s7 ~ u8 n) x4 c - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//
) A' U3 R9 G9 I. e% K! p* [% Z - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
. s, `4 W& B& N. t4 F' h: _ - 0 w1 X- R/ h0 @- O8 n6 ~7 K
- GPIO_Init(GPIOB, &GPIO_InitStructure);% o8 X {8 V/ P" R( {
- 2 b1 n4 }0 K: s
- } " ~9 I0 H6 X9 g) ]
- , k7 s( ?7 D5 p* L; ]$ n1 K& U5 X; E
- void relay_on(void)//PB7置1' Z, e9 T# v" I8 u1 s% G4 B9 }0 [
- {0 b! ?9 u1 c: u1 R
- GPIO_SetBits(GPIOB,GPIO_Pin_7);
! v# m4 I8 D( F: |" y - }
8 }7 T) ?+ @5 N+ D -
: s% s- X( L9 s% ^ g - void relay_off(void)//PB7置07 Z' J. x6 W. }! ~1 o1 s
- {
! p1 @- ~% K& e- `& w8 d! U! E. y - GPIO_ResetBits(GPIOB,GPIO_Pin_7);
3 K' f% a7 }1 U0 _5 ?% H, V - }
复制代码
0 V; q2 |7 C' w# U! Y, W! R( p" {5 K/ A4 k" ?: g
主函数:7 z9 K) N4 V) x% n7 v( r2 P2 t
- #include "sys.h"5 k9 s7 f: k# x% h6 e, p9 z- V% t
- #include "delay.h"2 n* W }1 m- Y' E) w
- #include "led.h"
}! V5 j6 S3 z; t7 o) Y8 _5 M4 F6 N - #include "jdq.h"# N9 q4 n" ]) r8 ]1 G7 `1 b* d/ G
-
" e1 Z% h3 x5 u$ q' ?8 P - int main(void)
: _- ^6 J+ n3 x5 [# |0 H - {
8 D2 c8 d" F, s) j+ U" r5 ? - delay_init(); 1 p' r- I% D9 t' k
- LED_Init(); * ?+ d& w1 e+ l% V5 M
- relay_init();//继电器初始化2 s) i& H4 s- q1 r: v) T6 D
- while(1)5 \& r) ~, ]/ U f) Q
- {' _! U1 C j% U( }
- 6 u8 m; G. G1 U
- relay_off();//置0,即开关置NO,连常开+ B: u% P9 I ~8 v1 U9 M4 Z. L; u
- LED0=0;
! O# { q% i' l) K - delay_ms(2000);//延时4s左右
: w* x9 F; @" v! W9 I - delay_ms(2000);
& H$ H+ [1 J$ y) ^4 ]7 m - delay_ms(2000);
3 U Z. b" Z/ [+ g @; d - delay_ms(5000);7 v: D# ?9 l, D7 \) p
- delay_ms(5000);
/ S$ e4 J% o8 m; |+ F' _) k -
7 W, p7 U8 ~( n, \" ` - relay_on();//置1,即开关置NC,连常闭
4 c$ K# K' a" M' y x9 O# n - LED0=1;
( {; y' }% y" v: S - delay_ms(2000);//延时4s左右
. u; a) q/ \8 _4 l1 C2 z - delay_ms(2000);# y6 ~+ \0 J: b4 r
- delay_ms(2000);
U8 y/ Q' i7 G7 ^0 f - delay_ms(5000);# s* G' H8 r+ ?* ?
- delay_ms(5000);' h5 R2 u7 q2 A2 e8 U9 k
- }
2 R. x) Z8 Y) ]# _ - }
复制代码
! N( G: R4 `6 x) K! v# g3 t; o! N! V7 W. j
效果图如下:" H5 ~$ i' @8 p3 E7 X, X
5 z5 P0 L+ Y1 r+ o4 n3 K3 K6 F
. _( n$ w# }, C) T3 x
, y, j5 k* W1 _ [" y5 N: ?8 n/ O" F7 O7 m
0 ^1 ?! N% I+ n3 V; f/ Q* O
& E5 }, C6 |9 x3 e0 w9 `, }
6 P+ j1 _2 d8 G: L8 `3 v
' S+ ~/ e& D! r9 d4 E' n
上面我只用了STM32F1的最小系统板测试了一下,光敏传感器检验了一下,注意我这里用的是一节3.7V的锂电池给光敏传感器供电,所以你在给继电器模块上的Vcc口接电源时记得接3.3V的,不能接5V的,不然没法驱动开关,因为这个的原理就是弱电控制强电,你如果比另外一端电压还大那就无法达到效果。7 q, {2 e; Y4 C: x" q, D
' D ^, l) O* l$ ]7 {
- c6 F+ i, M8 J0 a继电器就是小电控制大电电路
" ^' N7 E$ m n' a————————————————
/ v& A. F/ n! C$ f4 M1 B, v Q8 T版权声明:不说二话的自家人2 b3 H, k' z% Q' z
如有侵权请联系删除
9 k4 L% @$ O7 q' u, ^! j
7 x! N* }7 T q/ \& d7 e6 L' h: c
5 }4 r" Y9 p2 v |