你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32f1之简单控制继电器模块

[复制链接]
STMCU小助手 发布时间:2022-5-14 20:38
前言
, E( n4 ]. ^, a9 s
6 f- P7 b0 m6 d% ~" c相信很多志同道合的小伙伴们已经找到了学习STM32的好途经(灵光一闪刷到我的博客)了,接下来的时光里,我会讲到一些我对一些模块的使用,同时附上源码还有我的心得。没错,今天我讲的就是继电器的使用。
& ]7 X9 `) j! X4 N8 E& m) W4 e( A0 j% D8 x' D
O7}]~6HB_35UY3E`TOBAU.png
+ W5 q# J+ v$ A6 G' D5 T" c
& \( |( r  x: B" V9 ^ 一、继电器的使用(重要!!!)! o. C" G" m) P( a
其实继电器简单来说就是一个开关,VCC表示电源正极、GND表示电源负极、IN表示信号输入脚,COM表示公共端,NC(normal close)表示常闭端,NO(normal open)表示常开端( ~4 {+ m. t' T7 t% ?4 q( I! e5 O+ X

/ L, W& V. z6 h- N, {2 v8 _一般情况下是常闭状态
: M0 [7 ]# ^3 d/ h2 k* L
5 A2 ]6 I: P, X3 U这里简单地描述一下大部分的继电器模块:
- S: i8 E' I7 S' ~& S! i: V9 z0 x9 Q" f- ~
Vcc接电源正极,Gnd接电源负极,In接STM32上的输出脚(输入高电平公共端连常闭,输入低电平公共端连常开),如下图所示,你就可以明白了,当IN脚输入高电平时,NC与COM相连(左图);当输入低电平时,NO与COM相连(右图)。
( S& S9 r" \+ H8 H# Z! d- j- P7 I( F2 x( v
G4$)<]C1YNKLZHCF[3S2V.png ' g! O% U" {6 W. D' O( W( S' O

+ ]$ ^: ^' I( l0 s: M9 e2 y/ q相信这样子你就对继电器有了基本的使用了解,下面我就不讲解其内部的结构原理了,可以到其他文章上学习具体原理,附上链接
/ z: b/ j9 s  }$ H
/ I  [4 s, G7 D二、写个代码检验

/ ?! @' }6 E; O* D* Z6 A下面我就简单的实现以下它的开关功能吧9 R( B! l" w+ |/ M

6 ]5 E6 K( m1 X1 Z2 h$ s4 Y. c
  1. #include "jdq.h"! Z5 B" m1 w- t2 _8 t
  2. 3 n* Q$ s( Q# {- D0 V1 p
  3. 5 [- o" A: W- E$ R$ ^7 ^' s) |' J
  4. void relay_init(void)//对继电器初始化,即对PB7口初始化
    9 S* ?( G( |- v3 H% L1 u  |
  5. {: G& W5 d! k) f' m
  6.   GPIO_InitTypeDef     GPIO_InitStructure;7 y4 b& J7 _4 C
  7.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);# m) h+ r1 @' Y. W# [5 Y  J
  8.         
    $ J1 ^/ f( n' P0 ]* r( _7 D; G, u
  9.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
    2 `% W, p, H# E
  10.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//
    * h+ M0 w9 y3 q% J; S1 c
  11.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;# t9 K# `9 D. v1 B
  12.         
    * Z; n9 J  n" V6 V6 `: ?- @! z3 l
  13.   GPIO_Init(GPIOB, &GPIO_InitStructure);6 j. r7 n! Z. W; L
  14.         ' m) m0 G% e! @  c* n3 l
  15. }          5 M! X' q; i. q1 B
  16. 0 i- [% c1 E) ~& q' F
  17. void relay_on(void)//PB7置1
    " U( @) [: [0 ^. j
  18. {7 Z4 q9 y; V! Y2 X4 J7 N' W9 o
  19.   GPIO_SetBits(GPIOB,GPIO_Pin_7);
    ( `; t, v! w" a6 \3 d5 |- \
  20. }
    1 O3 k, g) {$ D" e) b

  21. + z9 o2 H# e$ I% _
  22. void relay_off(void)//PB7置0& z3 o- b, R* M, v) F
  23. {
    " @! O- @7 @0 ^( l* W0 x+ J
  24.   GPIO_ResetBits(GPIOB,GPIO_Pin_7);
    8 l. R2 l) E$ s1 r4 b* Y1 }
  25. }
复制代码
3 T4 ]! }# A; [7 a
主函数:
4 O" O2 q. I9 t/ I& M1 k5 d7 b* @3 y: p
  1. #include "sys.h"* j2 {3 h: ?0 ~( l
  2. #include "delay.h"/ B7 z0 d9 s- z8 g! q
  3. #include "led.h"
    / m+ ~$ m# Q% t- A0 T4 t3 Y
  4. #include "jdq.h"
    ) q$ |8 g: I9 ~; D: X' u. \! g
  5. 1 Z! Z( {7 f& r- C3 O
  6. int main(void)
      m( O5 v/ j8 ~  C* v" |, y
  7. {        
    $ h5 S! h# D+ e( c
  8.         delay_init();                  
    7 Q/ j5 y6 j) y- Q7 h
  9.         LED_Init();                  6 G( C$ {! n3 N7 E0 w6 L3 T6 W
  10.          relay_init();//继电器初始化
    ( `2 T/ S6 [' Q+ l/ ~% v
  11.         while(1)9 }; C' b" E2 H
  12.         {- s, b" ~) `" U) R
  13. $ Y/ M' I% b. a7 V
  14.                 relay_off();//置0,即开关置NO,连常开5 S+ b; q3 S8 U* ]3 i1 w) \3 P
  15.                 LED0=0;' o- h6 Y/ c& W$ h$ {2 H
  16.                 delay_ms(2000);//延时4s左右1 Z$ t6 ?! B# {9 J
  17.                 delay_ms(2000);" b! t* U7 @8 H( ?: d3 O) r0 a
  18.                 delay_ms(2000);0 L4 ?* |, Y8 u: f# ^" @" P* ~
  19.                 delay_ms(5000);
    : d; u; a, k3 `: Z7 A9 z
  20.                 delay_ms(5000);
    & ?  k% {4 x  ^1 z6 P) c8 H) o& T

  21.   }* R9 x$ u# ~0 I+ r( d4 ]
  22.                 relay_on();//置1,即开关置NC,连常闭
    3 M0 ~8 i. H+ I) c0 D3 k
  23.                 LED0=1;
    ' r2 I1 u3 m9 d, n. b& F# t
  24.                 delay_ms(2000);//延时4s左右
    ( i$ `+ _8 J/ U1 \$ l
  25.                 delay_ms(2000);
    ! Y4 Y& |8 k* U/ x" P# N  s
  26.                 delay_ms(2000);
    2 t7 k$ {4 F& s! L% V* N
  27.                 delay_ms(5000);1 l! B$ t) `8 h0 }+ k8 S
  28.                 delay_ms(5000);6 @8 d" n/ x7 Q& @
  29.         }. P4 T' [( n8 f3 P
  30. }
复制代码

9 W3 Q0 a3 q% I+ f" \7 p7 k 效果图如下:9 v% ]" F# {' C* L, e4 ]. h
. a- A  i. b' _5 z5 u
Y$AM4R22{$M6D[AS]X0}FP9.png
% `* ~* }+ I* u9 b2 p! @) K ~PI}8~NHZEH{{%T5S@6D)F4.png $ Y( Z8 E7 t6 q2 D
6 w! W8 ~: q' a' B

- U" B% T# i7 d+ C" R5 V% A 上面我只用了STM32F1的最小系统板测试了一下,光敏传感器检验了一下,注意我这里用的是一节3.7V的锂电池给光敏传感器供电,所以你在给继电器模块上的Vcc口接电源时记得接3.3V的,不能接5V的,不然没法驱动开关,因为这个的原理就是弱电控制强电,你如果比另外一端电压还大那就无法达到效果。
8 a1 }6 J  {1 h  A5 K$ l5 K" d% g/ K7 d: |, U* t( r7 C9 r
继电器就是小电控制大电电路,切记!& s; L' b( G. O# a3 x

1 g& t& {: d1 p! Q  o注意继电器大部分都是高电平下连接常闭,低电平连接常开,有部分产家会是反过来,大家买回来如果不确定,可以像我这样做个小实验证一下。6 v1 H$ Y3 e# s8 F% b! Y  \

2 v  R" k6 A8 a* v2 \
. Y/ i) |. n  ?
. j1 u. E6 Q2 {6 H9 S
% {6 m+ B; ]  a7 ^' z% p: W$ D! o0 l- r4 Z  D8 c3 H; G2 |
收藏 评论0 发布时间:2022-5-14 20:38

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版