亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

自动铁路道口控制器:Arduino电路与源代码实现

基于Arduino与超声波传感器的高速自动铁路道口控制器电路

本教程讲解如何设计简单高效的自动高速铁路道口控制系统。这是相对基础的实现思路,可作为基础模块进一步扩展(如检测列车通过速度等)。开始前先理解自动化概念及预期效果。

自动化旨在减少或消除人工干预。本教程将解释如何用Arduino配合舵机、Proteus软件实现铁路道口自动化。

自动化复杂度从简单“开/关”控制到复杂多变量算法。控制系统分开环/闭环:单输入参数或以输出反馈为输入。铁路行业自动化是进阶必需,因人为错误导致事故风险高,亟需智能设备接管。

自动化利弊并存:

优点

  1. 生产率提升
  2. 质量可预测(质量改善)
  3. 鲁棒性增强
  4. 输出一致性高
  5. 降低人力成本
  6. 高精度
  7. 减少单调工作人力

缺点

  1. 易受安全威胁
  2. 开发成本可能超预期
  3. 部署成本高
  4. 导致多行业失业

优点远大于缺点,故全球迈入自动化时代。

本教程自动化铁路道口:检测列车到达自动开关栏杆,并用蜂鸣器报警超速列车。采用Arduino和舵机,传感器用超声波模块(也可选红外模块,视手头资源而定)。

铁路道口控制器所需元件

  1. Arduino UNO
  2. 蜂鸣器
  3. 超声波传感器 (HC-SR04)
  4. 舵机

所需软件:

  1. Arduino IDE
  2. Proteus

铁路道口控制器电路图

自动铁路道口控制器:Arduino电路与源代码实现

元件说明

Arduino UNO

Arduino是开源开发板,核心为Microchip ATmega328P单片机,Arduino.cc出品。板载数/模拟I/O引脚可扩展外设电路。

14数字引脚+6模拟引脚,配合IDE(集成开发环境)编程,USB Type-B烧录。供电:USB或9V直流,接受7-20V。设计工作原理与Nano、Leonardo相近。

STK500仍为Uno通信协议。主要区别:不使用FTDI USB转串口芯片,改用ATmega16U2(R2前用Atmega8U2)编程为USB转串口转换器。

自动铁路道口控制器:Arduino电路与源代码实现

超声波传感器 (HC-SR04)

超声波传感器测物体距离,即测物体距参考点有多远。4引脚:

原理:发射端(Trig)发高频声波,物体反射,接收端(Echo)收反射波。声速已知,可算距离。深受Arduino爱好者喜爱,日常项目常用。触发需≥10微秒高电平脉冲。

特性:

相关阅读:Arduino自动浇水灌溉系统——电路、代码与项目报告

自动铁路道口控制器:Arduino电路与源代码实现

舵机

舵机为特定角度精确运动的特种电机。是允许角度/线性位置精确控制的旋转/线性执行器。舵机非单一实体,而是合适电机+位置反馈传感器的组合。

使用舵机需额外高级模块,不像直流电机那样简单。广泛用于机器人、大规模制造业。

与步进电机(开环控制)略似。步进电机有固有步距角,但无反馈系统,仅限设计用途。舵机有反馈,动态可按任务编程调整。厂商一般配专用控制模块。

机制——闭环伺服机构,利用反馈更新转子运动和终位。控制输入可模拟或数字。

编码器配合电机给控制器位置速度反馈,产生误差信号直到达标。为减小误差电机正反转直至误差归零。高端舵机输出轴配光电编码器测速。

自动铁路道口控制器:Arduino电路与源代码实现

蜂鸣器

蜂鸣器分机械、电子、机电、压电型。常用电子式(烤箱、游戏机、家电等)。内部有电路,铁氧体盘振动发声。属电流驱动器件,输入电压源。

自动铁路道口控制器:Arduino电路与源代码实现

自动铁路道口控制器工作原理

电路用两超声波传感器和舵机模拟铁路道口。两传感器经Arduino触发脚触发测距,后续逻辑完全依赖测距值。

轨道空闲时舵机不动;列车从任一侧驶入,对应传感器距离变化,Arduino立即将数字引脚7、8置高。引脚接两舵机,舵机转动90°关闭栏杆阻车。列车离开另一侧传感器检测到,Arduino获悉列车离去,舵机复位开栏杆。

为保障行人安全,增加高速列车报警功能:计算两传感器在一个周期内触发时间差。若时间小于阈值,蜂鸣器鸣响警示道口附近人员。

项目源代码与解析

代码定义5个int变量和4个long变量。tr1、tr2、eh1、eh2用于发脉冲和收微秒计时值;val1、val2、dis1、dis2存微秒时长和厘米距离。波特率9600位/秒,负责板卡与串口监视器通信。

const int tr1 = 13, eh1 = 12, tr2 = 3, eh2 = 2;; int bz = 11; unsigned long val1, dis1, val2, dis2; #include <Servo.h> Servo myservo1; Servo myservo2; int pos=-1; 

void setup()中代码仅运行一次:设置波特率、引脚模式。

void setup() { pinMode(tr1, OUTPUT); pinMode(tr2, OUTPUT); pinMode(bz, OUTPUT); pinMode(eh1, INPUT); pinMode(eh2, INPUT); myservo1.attach(8); myservo2.attach(7); Serial.begin(9600); } 

void loop()持续运行:触发超声波测距,距离作为条件判断参数。条件真则pos递增驱动舵机关栏杆;假则pos递减复位开栏杆。另一条件判断两传感器连续触发间隔,过短则置引脚11高电平驱动蜂鸣器报警。复位或断电前循环执行。

void loop() { digitalWrite(tr1, LOW); delayMicroseconds(2); digitalWrite(tr1, HIGH); delayMicroseconds(10); digitalWrite(tr1, LOW); val1 = pulseIn(eh1, HIGH); dis1 = (val1 * 0.0343) / 2; digitalWrite(tr2, LOW); delayMicroseconds(2); digitalWrite(tr2, HIGH); delayMicroseconds(10); digitalWrite(tr2, LOW); val2 = pulseIn(eh2, HIGH); dis2 = (val2 * 0.0343) / 2; Serial.println("distance is "); Serial.println(dis1); Serial.println(dis2); if(dis1 < 100 || dis2 < 100) { if(pos==-1){ for (pos = 0; pos <= 90; pos += 1) { myservo1.write(pos); myservo2.write(pos); delay(15);} } delay(1000); digitalWrite(tr1, LOW); delayMicroseconds(2); digitalWrite(tr1, HIGH); delayMicroseconds(10); digitalWrite(tr1, LOW); val1 = pulseIn(eh1, HIGH); dis1 = (val1 * 0.0343) / 2; digitalWrite(tr2, LOW); delayMicroseconds(2); digitalWrite(tr2, HIGH); delayMicroseconds(10); digitalWrite(tr2, LOW); val2 = pulseIn(eh2, HIGH); dis2 = (val2 * 0.0343) / 2; if(dis1 < 100 || dis2 < 100) {digitalWrite(bz, HIGH); Serial.println("distance2 is "); Serial.println(dis1); Serial.println(dis2);} } else if(dis1 >= 100 && dis2 >= 100) { if(pos==91){ for (pos = 90; pos >= 0; pos -= 1) { myservo1.write(pos); myservo2.write(pos); delay(15); } } digitalWrite(bz, LOW); delay(200); } } 

Hex文件对接Proteus仿真: Arduino IDE点File>Preferences,勾选“Show verbose output”编译和上传两项。编译后窗口复制hex文件路径,Proteus双击Arduino粘贴至Program file选项点OK。电路即可在Proteus仿真。

相关项目:

工业技术

  1. Arduino自动列车控制器 – 可编程调度/加减速/双向运行
  2. SERENA:基于 Arduino Mega 2560 与 TFT 触摸屏的多级密码报警系统
  3. Arduino 电源控制中心:N-FET/P-FET/继电器/RTC 多功能扩展板
  4. Arduino 自动浇水系统:定时 + 土壤湿度双模式,轻松养护盆栽
  5. DIY Arduino 加湿器控制器:继电器安全控制高压电路
  6. NOR门SR锁存器:构建与理解数字存储器
  7. 成熟电气系统常见失效模式排序
  8. 理解TTL或非门与或门:电路分析与转换
  9. 高级电机控制电路:自锁、停止与延时技术
  10. 云监控:实时资产管理的远程控制系统
  11. M-TECH:Apollo雕刻机专用高阶CNC控制系统
  12. 基于PIR传感器的自动门开启系统:电路、原理与应用