前言
7 L) b5 o" A. r# B' M相信很多志同道合的小伙伴们已经找到了学习STM32的好途经(灵光一闪刷到我的博客)了,接下来的时光里,我会讲到一些我对一些模块的使用,同时附上源码还有我的心得。没错,今天我讲的就是继电器的使用。/ i& y, q: S2 f
* G4 }0 {1 Y) `( q$ S- l) Y
$ v& B' i7 ~# W' Z0 W1 C
+ Q$ ` @# [+ w4 q( J& s9 E. D! l. B( _' D
7 ~2 R$ K: [ J6 n
一、继电器的使用
# E* T$ D6 F6 b& S* s* A$ W5 C) @0 }其实继电器简单来说就是一个开关,VCC表示电源正极、GND表示电源负极、IN表示信号输入脚,COM表示公共端,NC(normal close)表示常闭端,NO(normal open)表示常开端" F5 e, c" O% @2 _
! q: H2 S2 h+ h' K" U# r' p
s: i' ^0 T# {- S4 X一般情况下是常闭状态4 P' _+ h, f- f- z& G4 ]) H
% T4 ?) {1 l7 M, K+ s' ~
8 t: W- `7 q) j- q7 Y
这里简单地描述一下大部分的继电器模块:
- L) ]1 `* C& {1 U# z% r8 p
. o% Z$ t% X+ u7 u; F
8 M x& L/ l: ?* }" T6 LVcc接电源正极,Gnd接电源负极,In接STM32上的输出脚(输入高电平公共端连常闭,输入低电平公共端连常开),如下图所示,你就可以明白了,当IN脚输入高电平时,NC与COM相连(左图);当输入低电平时,NO与COM相连(右图)。3 D( y/ t+ Z( t. ~% e/ F2 c) C
6 e4 B- J e4 g1 c
; C9 W1 j7 X3 M3 y: T
7 n2 t( c8 q o" Q1 n4 }
9 h7 F7 |2 w& b7 U) X& L9 R# G
! j* Z- J6 S- V7 p0 WIn脚输入高电平,COM连着NC3 |( Q) Z4 L8 W5 ]2 ^! ?7 B
" F, P' g% J( V! ^% h+ k# M; |
+ O' f+ Q# C* ^
+ `) Y% ~1 |! |
9 `* u4 z8 v2 O% W- GIn脚输入低电平,COM连着NO
+ u' m Z1 r1 v7 A* @2 j相信这样子你就对继电器有了基本的使用了解,下面我就不讲解其内部的结构原理了,可以到其他文章上学习具体原理,附上链接* P& q- b* }' I ^& L, _
* B F0 h- J' T! u) Z% R7 z+ d/ }, z' h! P1 a- h
' h) I8 g l- O1 X$ u0 Z
二、写个代码检验, x/ ]* a! w& l: U
下面我就简单的实现以下它的开关功能吧, K/ v6 G/ S! H4 y( V* k
- #include "jdq.h"+ J( ], P/ Y2 K8 W
- + X% _, |. G! N* d8 b6 Q
- 8 E! D! u0 T* `5 K4 Z/ n1 H
- void relay_init(void)//对继电器初始化,即对PB7口初始化* H: q# m/ Z6 t
- {2 n. N+ M1 E3 h s" [7 Y6 k! r
- GPIO_InitTypeDef GPIO_InitStructure;2 {9 G9 D* s5 {! ]
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);7 y+ E/ q# d& o6 k
-
$ e0 [9 a: Q: K& q* t% E - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
{- _; v5 E% D$ V+ X3 V% | - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;/// M+ m! A9 _, |
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;- b/ \/ m8 z4 B
-
; H' \! Z* g' K4 u - GPIO_Init(GPIOB, &GPIO_InitStructure);
5 ~) K; E& a& \ - % U7 [/ g+ _3 ~0 d6 G
- }
% _4 [. H# j4 J9 M -
" b* y/ X" Y" l6 B - void relay_on(void)//PB7置17 g1 [: t% P& f7 t: {% E. ]
- {3 x& R# h3 O* T- d2 a* y6 K
- GPIO_SetBits(GPIOB,GPIO_Pin_7);
5 G# N; h( W1 V3 C x" F! ^4 C - }
( S+ V/ P R8 g" u1 b. g& x% J1 N - 5 T' g( Q" T5 V/ u- B
- void relay_off(void)//PB7置0
7 K9 B/ x) h# u c8 i6 N' d - { 4 W* V& T# R9 z- b. F3 ]6 y) h
- GPIO_ResetBits(GPIOB,GPIO_Pin_7);
8 }5 |9 \& I% T" |# Y: m - }
复制代码
5 p3 R: J4 }$ E& ?4 `8 v- A
0 K+ @; f" l; F* [6 l+ o; l 主函数:
7 e+ E X- E# S- #include "sys.h"# ]- D; D4 S( w. Q! Z) }, J
- #include "delay.h"
: P/ o9 T% K9 e, x) a - #include "led.h"; }6 u8 Q$ r. i
- #include "jdq.h"4 } R( E$ a" S. r6 a
- # g! a) v- w( n
- int main(void), d' L6 ]6 l: F* |3 t6 m& a7 [5 G
- {
$ o2 ^+ H# v. e8 e2 u2 I - delay_init();
, i e4 L% f1 J+ Z" h6 \ t. A - LED_Init(); 1 l. }1 U1 l" D+ [. N+ l8 v
- relay_init();//继电器初始化6 w% [. U7 W; ?3 a8 a1 g p. @
- while(1)
$ F* L4 a$ A6 s5 K3 @1 ]% k% ~ - { p/ l) [$ e ~. h) v1 U
- 4 n! l* l' h1 r
- relay_off();//置0,即开关置NO,连常开) H+ {- t9 A1 s5 E: p0 R+ [8 C
- LED0=0;
3 U0 {+ W/ a! g8 g: Q- x/ _ m - delay_ms(2000);//延时4s左右
. y' U) a0 }7 n6 T p - delay_ms(2000);
) r1 W, p o, j6 s: y) E6 m: G - delay_ms(2000);
$ T5 {2 w6 o8 I2 y - delay_ms(5000);
' [' H3 `: N+ J& \$ j3 u - delay_ms(5000);
7 [5 n/ c/ E+ B9 k/ \; t5 S -
- m- t8 C( Y7 C% Y - relay_on();//置1,即开关置NC,连常闭
, N/ x- R% D/ O0 Z5 e& t+ S! D$ E* o - LED0=1;
" E( }1 G! a3 J+ J" Z - delay_ms(2000);//延时4s左右
5 Q4 I: ?8 P) d& E( ` - delay_ms(2000);* D$ [& a7 o7 J& f
- delay_ms(2000);, e/ O: ?9 q: e
- delay_ms(5000); _4 J) U- E& i* |5 j' I4 y$ `" M
- delay_ms(5000);; M6 u/ s8 e. R1 l! k0 _
- }
8 t4 V# N; G7 v - }
复制代码 : W$ e0 {1 { T4 l9 T. K
, T+ o A5 r/ u3 F2 o8 k 效果图如下:6 X, w! L- K* a& U3 p$ E& |4 I
/ d' y* v7 K1 c* Q3 d# V* c: X6 E* N4 R$ O8 F2 L- T
5 r& B9 w3 J% H, f# a/ Y, n y7 l- ~7 u' L2 Q3 E( s$ W+ e8 ^; P, u
% N( _5 Z9 G1 @8 E" q4 t) a
) X+ @* l8 g; ~" u8 V. m4 n U, B
" y' { H; I: P) d- B
( n) \/ p% R* \3 U) D: b 上面我只用了STM32F1的最小系统板测试了一下,光敏传感器检验了一下,注意我这里用的是一节3.7V的锂电池给光敏传感器供电,所以你在给继电器模块上的Vcc口接电源时记得接3.3V的,不能接5V的,不然没法驱动开关,因为这个的原理就是弱电控制强电,你如果比另外一端电压还大那就无法达到效果。7 E2 \" c( v1 I" V D5 X( h. c% m9 p- T
% x3 T- G( b$ Z. a6 I
! |! J! g- L: {0 R- O9 [! Q继电器就是小电控制大电电路
" k- U) ]& ^5 }+ q1 Z" s, X( h————————————————
! R2 o! n8 Z+ ?6 j9 _4 V版权声明:不说二话的自家人
! ~! `; ]+ K) K. @如有侵权请联系删除, b* j7 i4 m/ f1 Z9 K7 U- k
, i9 p* L/ U/ V* L S. x8 ]
5 B3 r% o) k9 K |