【学基2】电路中的反馈到底是什么?结合单片机报警仿真讲清楚

7 0
EDGE 发表于 2026-8-26 00:30:24 | 查看全部 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
很多人第一次接触“反馈”时,会觉得它是自动控制课程里的抽象术语。实际上,只要系统能够检测当前状态,再根据检测结果决定下一步动作,就已经用到了反馈思想。以危险气体检测仿真为例,传感器模拟气体浓度变化,单片机读取模拟量,与程序设定的报警阈值比较,再控制蜂鸣器、LED和继电器。
一、什么是电路反馈( {0 d' u- K, t+ T! [) p
电路反馈可以简单理解为:把系统输出结果的一部分重新送回输入端,用来影响后续工作状态。普通开环控制只执行固定动作,而反馈控制会继续检测结果并自动调整。温度控制器、自动照明和气体报警器都属于这种思路。
二、危险气体检测仿真中的反馈过程* Z. @$ g' ^" J4 J" H1 d
Proteus 中可以用可调电阻或模拟电压源代替气体传感器。调节输入电压,相当于改变气体浓度。系统包含单片机最小系统、传感器模拟输入、LCD1602、LED、蜂鸣器、继电器和三极管驱动级。输入较低时显示安全状态;输入升高并超过阈值后,系统启动报警。.
  1. #define GAS_LIMIT 650( _: p# y. G9 }* W8 _

  2. # |/ e; A+ Y* z* V5 b' d0 A: o) ~
  3. void gas_check(unsigned int value)
    % Q- o( ~" B+ J
  4. {
    5 r; l  G% H& |  W% z; ^  q2 V5 a
  5.     if(value >= GAS_LIMIT)  [* O& R3 r  Q! N
  6.     {7 K2 A8 p2 T  l' n3 O
  7.         alarm_on();: a  K) t+ ~  E" u& d
  8.         relay_on();
    ) o1 H! l) R9 g3 q) h# M
  9.         lcd_show_string(1, 1, "DANGER!");7 b2 h* }) i. o) H) H, y
  10.     }9 |3 }0 `8 u% W# m& p) q2 ^
  11.     else" D" r# E" G2 X+ n# Z
  12.     {
    & F8 P& G6 _1 {4 m/ r
  13.         alarm_off();
    % y" M  b3 m! x1 }/ a  _) k1 V
  14.         relay_off();
    - j1 |) Y: ~9 ^8 M  c
  15.         lcd_show_string(1, 1, "SAFE   ");0 _2 R/ z* ^6 s+ Z4 Z# x; l
  16.     }" x2 v" _/ l& B0 _
  17. }
复制代码
0 Z) G( C8 y0 u& `& c' L8 D
三、为什么报警输出需要驱动级2 c( L- z# [) u5 J% u. J6 }
蜂鸣器和继电器工作时需要一定电流,单片机 I/O 口通常不能直接驱动较大负载,因此电路中加入三极管。单片机输出控制信号后,三极管导通,负载获得工作电流。继电器线圈两端还应并联续流二极管,用于吸收断电时产生的反向感应电压。
四、设置回差可以减少误动作6 o2 V" q, \5 z, P9 r( n+ n
如果只设置一个阈值,传感器读数在临界值附近波动时,继电器可能反复吸合。可以设置两个阈值:检测值达到 650 时启动报警,降低到 600 以下才解除报警。
  1. #define ALARM_ON_LIMIT   650
    # G5 m5 R6 L) }* V0 w; e3 J; X: @
  2. #define ALARM_OFF_LIMIT  600
    ( f  m+ O/ \. e" y9 {  D
  3. bit alarm_state = 0;: s6 M' f, J& Y# c6 J4 g

  4. 9 q$ b2 h! z( Y
  5. void alarm_control(unsigned int gas_value)1 Z7 V1 A3 {( @, L2 N# v% W
  6. {+ V/ ]( }+ o" P2 K$ F$ y+ ]1 J
  7.     if(alarm_state == 0 && gas_value >= ALARM_ON_LIMIT)
    ! o3 ^/ s( z9 I+ H5 [/ X" V7 C
  8.     {4 W# U" p- v' F6 U1 q0 ~2 C7 o
  9.         alarm_state = 1;
    ! r- u: y# m# U2 {0 |
  10.         alarm_on();
    6 O' Z7 o8 B: w) w  K
  11.     }
    ! j' g' R/ C' g) o
  12.     else if(alarm_state == 1 && gas_value <= ALARM_OFF_LIMIT)7 R4 U9 F* x* X' I1 n' E6 Q: m
  13.     {
    : m/ h9 _* c  _. ]
  14.         alarm_state = 0;- P8 s$ h" v; J. G. f' \+ r# M
  15.         alarm_off();
    " Z' c8 e: O7 Z  L3 j4 ]- |3 D) x
  16.     }
    ) i1 h# |7 V  f  \
  17. }
复制代码

$ ?1 x6 U$ }  }% d  O  d+ i
五、Proteus 仿真时重点观察的现象
9 ]8 R4 {3 X! J- M& x0 N' ^9 W
仿真时主要观察六点:调节模拟输入后 LCD 数值是否变化;检测值达到阈值时蜂鸣器是否启动;LED 是否与报警状态一致;继电器触点是否切换;输入恢复后能否解除报警;临界值附近是否出现频繁抖动。若 LCD 变化而蜂鸣器不响,应先检查阈值判断和端口定义;若 LED 正常而继电器不动作,则检查三极管、继电器电源和续流二极管。
六、总结# \$ b1 d4 v, N+ C$ ^! K" H8 U
“传感器采集—单片机判断—执行器动作—再次采集”就是典型的反馈控制过程。通过 Proteus 可以直观看到输入变化如何引起输出变化,设置回差后还可以减少临界值附近的误动作。理解反馈的关键,不只是记住定义,更要看清数据如何进入系统、程序如何判断以及输出如何影响现场状态。
发布前检查:请删除本地路径、个人姓名、学号等信息,并补充与正文对应的真实仿真截图或运行结果。

; s/ O4 |& s- r
回复 转播

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

学研领航向全体高校师生打造的一站式综合交流与资源服务平台,集知识学习、经验分享、资源下载、互动问答、职场成长、兼职实践于一体,覆盖校园生活、专业学习、求职就业、兴趣发展等全场景需求。

快捷导航

小黑屋
Copyright © 2026 学研领航 版权所有 陕ICP备2025077879号-1
关灯 在本版发帖 返回顶部
快速回复 返回顶部 返回列表