前言3 S% o c$ C' G) i6 t- }
相信很多志同道合的小伙伴们已经找到了学习STM32的好途经(灵光一闪刷到我的博客)了,接下来的时光里,我会讲到一些我对一些模块的使用,同时附上源码还有我的心得。没错,今天我讲的就是继电器的使用。
# Z7 h2 x @. v9 \& `8 F A* F# b: o. A/ [: M
3 Z) @% D: ?* z
# t+ {7 c. F) R! X5 H' S" r
/ q6 ^$ K' b4 k6 H: ^
( |9 z/ |0 w: N6 `: X) b 一、继电器的使用
: c$ [6 l$ n8 J$ p7 m其实继电器简单来说就是一个开关,VCC表示电源正极、GND表示电源负极、IN表示信号输入脚,COM表示公共端,NC(normal close)表示常闭端,NO(normal open)表示常开端7 C* Z' O: {" e4 X% G U7 T8 G R
2 q! u/ M5 u9 |; b# x" f8 x1 D6 y( ]0 O4 p J: v% k
一般情况下是常闭状态# A2 ^3 E4 z0 q2 c' f: r/ n3 [
$ `- D1 t* G1 y$ a. T P. U7 h, V5 u5 ^* m
这里简单地描述一下大部分的继电器模块:
# O9 l/ W4 n7 k2 e' k
& D' @$ Y+ z" L# x' X+ K9 k' ?+ D$ Q" {6 d! ?# c
Vcc接电源正极,Gnd接电源负极,In接STM32上的输出脚(输入高电平公共端连常闭,输入低电平公共端连常开),如下图所示,你就可以明白了,当IN脚输入高电平时,NC与COM相连(左图);当输入低电平时,NO与COM相连(右图)。* B, M+ C1 ` ~. z2 W5 ^% H
4 n9 m: a1 L( X5 d, b) l+ j3 P \
, w9 m) W0 l" ]3 r6 p
) s7 w7 H7 ]1 K) V; G- H- V2 v7 H% b; k/ Z; `
- I% G$ z+ [$ Y5 ]4 A |; ^In脚输入高电平,COM连着NC
. {9 R3 L4 K7 ~1 [$ o- I/ j' K8 K ) a4 v) U# A0 D6 n# |* w* _
' b! [( O+ V. L7 G2 q' h1 y5 R5 q/ M
) f! X' ^" D9 ~) ^
+ S8 y- \, _2 _$ x% Y
In脚输入低电平,COM连着NO- v. p6 a& G$ C; e( j# A
相信这样子你就对继电器有了基本的使用了解,下面我就不讲解其内部的结构原理了,可以到其他文章上学习具体原理,附上链接# P0 W/ f" }. t& Q
( {; o- T. D9 R% S, P5 i: k1 F( u3 v: @, c
: C3 `0 I: s( T$ [6 U1 ?
二、写个代码检验
! W2 C( \4 c% s下面我就简单的实现以下它的开关功能吧
5 @3 i4 `' R5 x* |1 e- #include "jdq.h"4 N, U" k2 \1 |
- % _# B5 j$ M: R) N5 w3 X; u
-
6 G) }6 U6 Z+ w0 \ - void relay_init(void)//对继电器初始化,即对PB7口初始化+ i$ _" v) K" _" ^8 L
- {$ p" L& T' S, D2 `# l0 [2 W
- GPIO_InitTypeDef GPIO_InitStructure;
0 b) \1 J4 d# ] - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
3 n* k6 ~, D/ b1 T: ?( R' F. r) j$ X; e -
- X8 M9 A+ ]9 m: ~ - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;& d3 O# J. A" t
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//0 H; O9 Q. R5 ~, _9 k
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;9 q6 a; T0 g( d' N, n6 U! S
-
: C1 r9 x- _, n8 [: \ - GPIO_Init(GPIOB, &GPIO_InitStructure);0 ^* t; M$ l* {) Y1 q1 h+ ]- D
- + x2 e: K1 A9 ^6 \1 q
- } . w: p6 ~( f/ x( [: F5 N
-
/ w3 X- {" u5 F, O) G0 ] w" ] - void relay_on(void)//PB7置1
3 ~, t) |( m3 R: l7 ~' V, {' c - {: G, j2 f9 m. P& q( Y
- GPIO_SetBits(GPIOB,GPIO_Pin_7);
+ c9 {% A3 [- v0 H% p( A, K - }
3 @- s! y4 C& W- N) w/ ?; l - 8 T+ B# n$ e% d$ N7 ^) E1 i$ l) `
- void relay_off(void)//PB7置0
; ]- Z* ]0 R9 O4 m, `- j - { % |3 J6 ]4 W9 |9 L% r/ J
- GPIO_ResetBits(GPIOB,GPIO_Pin_7);
" A: f$ a1 o4 i9 `) q - }
复制代码
& F/ k6 v1 @& c" e7 H) ~( J0 S! u: c& W
主函数:
, Q* J: x6 Z5 X% a- #include "sys.h"8 N# p9 t" y) x
- #include "delay.h"
2 @. g$ q5 W# `( ~# p - #include "led.h"
( h# w% q& a$ K! B8 } - #include "jdq.h", O' a( \/ U( K5 q" R4 G, B" I. n
-
3 l* J& T9 r8 k - int main(void)
( Y& H1 z0 Z! _. G5 g" g - { % }+ @- r* Z) w6 S
- delay_init(); + q5 b6 ?* ^. C) k
- LED_Init(); , B V: M% g, t9 `$ D% p: g
- relay_init();//继电器初始化$ u O, v8 p9 @3 P( C% c7 x
- while(1)
! G7 V1 \- C, T% p/ d8 L - {# i/ `, a# J' {$ Y9 U3 V) R/ W
- 5 H# `: F$ j5 Z' N2 K
- relay_off();//置0,即开关置NO,连常开0 Y! J( ^) X" A) z, r4 g% z
- LED0=0;4 Z' ?; o9 h* O% y
- delay_ms(2000);//延时4s左右
" E) X1 t% k7 ~5 o - delay_ms(2000);4 V; T. a) {2 G, z1 u; W6 w# ^0 R
- delay_ms(2000);
6 @! u1 Q" {/ L- e: K; Y - delay_ms(5000);3 H6 m. c0 z; }* `
- delay_ms(5000);
( P. S2 @% S7 y- l9 g. h -
' ?* @+ j3 E$ T+ P - relay_on();//置1,即开关置NC,连常闭
3 p- p) g$ x% m5 [7 L- ^8 @ - LED0=1;
; y' e# K2 v: u9 p+ ? - delay_ms(2000);//延时4s左右2 S! D$ p1 O/ v( q; j s
- delay_ms(2000);
6 H7 { ]) E4 K4 H% H5 s - delay_ms(2000);
+ f& o E: C4 Z2 R7 [1 i; K - delay_ms(5000);
% S3 l$ [% c+ y7 o - delay_ms(5000);
' k9 G8 [! }. K( M5 P - }% h1 y! y6 y7 \' Q) P5 Z
- }
复制代码
# @9 Y5 W+ G L, L- I+ o9 g7 E; s$ X: G
效果图如下: \" P0 e$ A2 K# x5 S; ?
2 A+ J2 W% ^9 l# j
8 G2 e* v8 |% m4 M- k. S
, z1 j2 z! |* u3 r3 e! }' T4 g$ r% V5 B' P" H. g
- U( A7 u) K' r# E8 V" {
+ n1 h! R3 b( {( U9 \" j$ w' W+ G4 Z3 M
& ]! `# w: @8 r4 u+ u! p
上面我只用了STM32F1的最小系统板测试了一下,光敏传感器检验了一下,注意我这里用的是一节3.7V的锂电池给光敏传感器供电,所以你在给继电器模块上的Vcc口接电源时记得接3.3V的,不能接5V的,不然没法驱动开关,因为这个的原理就是弱电控制强电,你如果比另外一端电压还大那就无法达到效果。
8 S) \9 Z M( {5 Z* Y9 r* C, ~$ o* f2 l/ t/ ^5 u
1 z6 o2 p/ `( x8 ?
继电器就是小电控制大电电路
$ I& d* m+ [9 d( _% M————————————————- }( }; ?; l( T! J# E- |3 z
版权声明:不说二话的自家人+ W( \' n9 {4 ]! Y
如有侵权请联系删除, B; x K2 g, h$ ?
9 k! Z" [- ^2 q5 X! @
7 u& Q% M% }7 O1 D: C1 R1 G5 |) o |