马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
很多人第一次接触“反馈”时,会觉得它是自动控制课程里的抽象术语。实际上,只要系统能够检测当前状态,再根据检测结果决定下一步动作,就已经用到了反馈思想。以危险气体检测仿真为例,传感器模拟气体浓度变化,单片机读取模拟量,与程序设定的报警阈值比较,再控制蜂鸣器、LED和继电器。 一、什么是电路反馈( {0 d' u- K, t+ T! [) p
电路反馈可以简单理解为:把系统输出结果的一部分重新送回输入端,用来影响后续工作状态。普通开环控制只执行固定动作,而反馈控制会继续检测结果并自动调整。温度控制器、自动照明和气体报警器都属于这种思路。 二、危险气体检测仿真中的反馈过程* Z. @$ g' ^" J4 J" H1 d
Proteus 中可以用可调电阻或模拟电压源代替气体传感器。调节输入电压,相当于改变气体浓度。系统包含单片机最小系统、传感器模拟输入、LCD1602、LED、蜂鸣器、继电器和三极管驱动级。输入较低时显示安全状态;输入升高并超过阈值后,系统启动报警。. - #define GAS_LIMIT 650( _: p# y. G9 }* W8 _
# |/ e; A+ Y* z* V5 b' d0 A: o) ~- void gas_check(unsigned int value)
% Q- o( ~" B+ J - {
5 r; l G% H& | W% z; ^ q2 V5 a - if(value >= GAS_LIMIT) [* O& R3 r Q! N
- {7 K2 A8 p2 T l' n3 O
- alarm_on();: a K) t+ ~ E" u& d
- relay_on();
) o1 H! l) R9 g3 q) h# M - lcd_show_string(1, 1, "DANGER!");7 b2 h* }) i. o) H) H, y
- }9 |3 }0 `8 u% W# m& p) q2 ^
- else" D" r# E" G2 X+ n# Z
- {
& F8 P& G6 _1 {4 m/ r - alarm_off();
% y" M b3 m! x1 }/ a _) k1 V - relay_off();
- j1 |) Y: ~9 ^8 M c - lcd_show_string(1, 1, "SAFE ");0 _2 R/ z* ^6 s+ Z4 Z# x; l
- }" x2 v" _/ l& B0 _
- }
复制代码 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 以下才解除报警。 - #define ALARM_ON_LIMIT 650
# G5 m5 R6 L) }* V0 w; e3 J; X: @ - #define ALARM_OFF_LIMIT 600
( f m+ O/ \. e" y9 { D - bit alarm_state = 0;: s6 M' f, J& Y# c6 J4 g
9 q$ b2 h! z( Y- void alarm_control(unsigned int gas_value)1 Z7 V1 A3 {( @, L2 N# v% W
- {+ V/ ]( }+ o" P2 K$ F$ y+ ]1 J
- if(alarm_state == 0 && gas_value >= ALARM_ON_LIMIT)
! o3 ^/ s( z9 I+ H5 [/ X" V7 C - {4 W# U" p- v' F6 U1 q0 ~2 C7 o
- alarm_state = 1;
! r- u: y# m# U2 {0 | - alarm_on();
6 O' Z7 o8 B: w) w K - }
! j' g' R/ C' g) o - else if(alarm_state == 1 && gas_value <= ALARM_OFF_LIMIT)7 R4 U9 F* x* X' I1 n' E6 Q: m
- {
: m/ h9 _* c _. ] - alarm_state = 0;- P8 s$ h" v; J. G. f' \+ r# M
- alarm_off();
" Z' c8 e: O7 Z L3 j4 ]- |3 D) x - }
) i1 h# |7 V f \ - }
复制代码
$ ?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 |