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

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

[复制链接]
STMCU小助手 发布时间:2022-5-14 20:38
前言7 y; F- n7 W* @, S: @# V1 A" g/ y/ X% y
4 V4 |& f! R" ]) ]% i& M" ~
相信很多志同道合的小伙伴们已经找到了学习STM32的好途经(灵光一闪刷到我的博客)了,接下来的时光里,我会讲到一些我对一些模块的使用,同时附上源码还有我的心得。没错,今天我讲的就是继电器的使用。
' k5 L5 A: k7 W/ O0 A( o* {; O( a) L) q1 r8 p
O7}]~6HB_35UY3E`TOBAU.png
' r& l& e0 s; D* G; K% B7 c5 G' `4 ]/ `' r
一、继电器的使用(重要!!!), B8 r2 r* e, H) K. I% ~
其实继电器简单来说就是一个开关,VCC表示电源正极、GND表示电源负极、IN表示信号输入脚,COM表示公共端,NC(normal close)表示常闭端,NO(normal open)表示常开端( ?. x8 W4 }- g7 Q6 Z3 h+ Z
* b1 g6 I, ?0 E! L
一般情况下是常闭状态
" q& {2 }  x# r5 f
/ I, S3 s. `) _+ n) E3 R. E1 b/ o这里简单地描述一下大部分的继电器模块:
) c7 z" Y' S$ A; \6 h  Q3 H- f' s% T- S, L8 [; Y, J
Vcc接电源正极,Gnd接电源负极,In接STM32上的输出脚(输入高电平公共端连常闭,输入低电平公共端连常开),如下图所示,你就可以明白了,当IN脚输入高电平时,NC与COM相连(左图);当输入低电平时,NO与COM相连(右图)。: A& w8 r; |; q$ ]. O8 Y/ E  H3 N

  _; ?3 L: Q; n4 p G4$)<]C1YNKLZHCF[3S2V.png
# u$ r. _9 F# M5 q' i! @: I- r& ?; n2 M$ Q: M% n8 z
相信这样子你就对继电器有了基本的使用了解,下面我就不讲解其内部的结构原理了,可以到其他文章上学习具体原理,附上链接( x+ D( g% X! N, o' {* s5 ?

* U+ }: a- D5 h6 x. L. g二、写个代码检验
& v1 C% H) c0 X2 o
下面我就简单的实现以下它的开关功能吧  F$ T+ v! L; W4 J3 f

) w; S0 |" _1 K7 p! C5 Y/ Z3 |. `0 H
  1. #include "jdq.h"
    9 T, _2 r  S* i$ R+ u! o9 @1 K

  2. - M' p! t$ m3 Q5 z) f$ E

  3. 1 C5 F! K9 V# [. H- }
  4. void relay_init(void)//对继电器初始化,即对PB7口初始化
    ! X: K8 }/ F( S: h$ _/ m- O4 A3 j
  5. {! P7 |0 y* g9 T7 A4 A! _
  6.   GPIO_InitTypeDef     GPIO_InitStructure;$ J- t5 a7 F; t# D" M6 ~
  7.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    3 o, V; r" }% f& T. ]! l5 L1 |2 C
  8.         7 _8 G$ N0 ]8 ?7 w
  9.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
    0 `: c0 ]* @9 e
  10.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//
    5 D- o4 p# H% K3 m7 x& d, u
  11.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    , ?" M5 l9 B. V7 v6 g4 i% l4 @
  12.         
    - ?' ]' _% M! O
  13.   GPIO_Init(GPIOB, &GPIO_InitStructure);
    4 P- @0 V8 c! s4 y9 Y
  14.         
    0 S7 e# I# N  V0 G) N3 _5 S8 ~
  15. }          % J' j" K7 G% ^4 U/ _# [/ N; t
  16. / a& E4 a$ B, `+ ]. S! G
  17. void relay_on(void)//PB7置19 p* L  Z# ]8 b, k
  18. {
    $ T: D; L& i7 {" N  ]
  19.   GPIO_SetBits(GPIOB,GPIO_Pin_7);
    7 O9 ^0 x5 c/ G. m% y
  20. }
    2 z( m) ?. i" n2 c$ g4 c' F5 V

  21. 7 b. Q0 d+ `6 u& O
  22. void relay_off(void)//PB7置00 {- p* \3 u' I" h. `: I- w
  23. {
    ; k* E+ k+ g' b4 U
  24.   GPIO_ResetBits(GPIOB,GPIO_Pin_7);7 U* q: O: s8 `* B& o. A
  25. }
复制代码
( W# ]$ p$ w- U  F1 ?2 v" h
主函数:) |7 u: s2 f: D  j# |6 E1 I5 q
% l+ ~7 `. z  F
  1. #include "sys.h"; z0 _  J4 @. `3 L- N8 Y
  2. #include "delay.h"% H) R, x  x, Y/ m$ d: {% l9 _
  3. #include "led.h"
    * b+ C- m( G9 J+ W
  4. #include "jdq.h"+ [4 i5 ^( ^$ Z/ l+ A6 Q; z* x
  5. ! R6 }- j: G9 H
  6. int main(void)
    9 J# C* w+ @- B/ E% S5 |- t" S0 `0 o
  7. {        
    0 r  j3 k. w1 O/ q
  8.         delay_init();                  
    7 z/ }$ I, c$ N# n" i4 s: @
  9.         LED_Init();                  
    9 v3 \) H0 |! @9 r
  10.          relay_init();//继电器初始化
    " Y( U. m/ ^: p5 M
  11.         while(1)
    - ~* q- {6 _" m$ M. r
  12.         {
    ( T' w$ z1 D6 @8 H' ~6 x0 |
  13. 8 Y  s' ^) V8 [8 ^
  14.                 relay_off();//置0,即开关置NO,连常开# V/ [* A  T8 X5 y1 j
  15.                 LED0=0;: H. s) ?5 _! [& B) x/ V3 ~
  16.                 delay_ms(2000);//延时4s左右- Z' l3 x+ b0 i& O* D8 o
  17.                 delay_ms(2000);
    * d, `1 {* Y+ s. Y6 P
  18.                 delay_ms(2000);# T6 @9 r- R- `6 S/ p8 m
  19.                 delay_ms(5000);# j, |+ S% M/ D8 Y/ X
  20.                 delay_ms(5000);% F2 J4 l% E" O( k/ H* }+ q5 ?
  21. + M1 J1 @1 G( N: n
  22.                 relay_on();//置1,即开关置NC,连常闭
    ' y4 f' B; f% C( b0 J$ W$ \( d. _8 ?, G
  23.                 LED0=1;5 K4 q( G( N% `% E8 ~
  24.                 delay_ms(2000);//延时4s左右
    " V9 m9 ?' n2 A4 Z+ s
  25.                 delay_ms(2000);, U6 w( T1 n' y. o& [
  26.                 delay_ms(2000);
    / d0 E* F/ @! ^8 }
  27.                 delay_ms(5000);
    ( a# f2 S  c( X* n6 \4 Q+ V
  28.                 delay_ms(5000);/ L9 x* ?$ d8 z& r
  29.         }
    $ T5 M. L$ Y/ T' f1 v( m
  30. }
复制代码

+ e! y* a2 m: C% X' v5 R7 G 效果图如下:
5 t( n4 N' z2 C1 n# X
, J# N7 U- U  h2 B! f* G( w9 s Y$AM4R22{$M6D[AS]X0}FP9.png
1 L2 z5 B" H; A1 ?0 y9 [0 k2 ] ~PI}8~NHZEH{{%T5S@6D)F4.png 6 m4 {  j( O) ~9 t% e1 T

6 v' w- {! r! E/ A6 @4 H& `
3 ?+ W, g9 E/ B) F0 l& @* Z: f- W 上面我只用了STM32F1的最小系统板测试了一下,光敏传感器检验了一下,注意我这里用的是一节3.7V的锂电池给光敏传感器供电,所以你在给继电器模块上的Vcc口接电源时记得接3.3V的,不能接5V的,不然没法驱动开关,因为这个的原理就是弱电控制强电,你如果比另外一端电压还大那就无法达到效果。4 i2 M3 j. {, @
2 e5 D+ o( A2 T" Q1 J. I
继电器就是小电控制大电电路,切记!
" o; J) ]# U; s
* ?+ y$ @* G& r注意继电器大部分都是高电平下连接常闭,低电平连接常开,有部分产家会是反过来,大家买回来如果不确定,可以像我这样做个小实验证一下。
# ~+ H. E$ L4 u/ T3 o1 w* X% g
/ G' @  ~) L, L' m/ [, G+ ^& p4 [* b/ d' Q8 B) Q/ v

2 n# C6 s" }; v+ ?5 {! ], }9 y, {2 B/ Q. s
$ \( l' T% \0 Z
收藏 评论0 发布时间:2022-5-14 20:38

举报

0个回答

所属标签

相似分享

官网相关资源

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