0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一种采用微控制器的自动模型铁路布局项目

科技观察员 来源:Kushagra Keshari 作者:Kushagra Keshari 2022-06-08 17:10 次阅读

本文要介绍的是一种基本的模型火车布局,其中包含经过的侧线,火车以自动顺序运行和停止。

制作模型火车布局是一个很好的爱好,自动化它们会让它变得更好!让我们来看看它自动化的一些优势:

低成本运行:整个布局由Arduino微控制器控制,使用L298N电机驱动器,与传统的列车控制油门和电源组相比,它们的成本几乎为零。

放置在显示器上的理想选择:由于不需要人为干预来保持对布局的控制,因此您可以在无法始终在场的显示器上使用它来控制火车和道岔。

非常适合微控制器爱好者:如果您是或想要开始使用Arduino和编程,这是一个锻炼技能的好项目。

所以,事不宜迟,让我们开始吧!

第1步:观看项目

poYBAGKgZy6Ac00hAATFTeTA7Vo904.png

第2步:获取所有零件和组件

pYYBAGKgZyyAJAVxAAbn5cg8UWU650.png

首先,请确保您具备以下所有条件:

一个Arduino微控制器板,UNO是首选。

L298N双H桥电机驱动板。

6公对公跳线。

7公对母跳线。

一把螺丝起子。

一个12伏直流电源适配器。

底部带有红外接近传感器的轨道段(我使用的是KatoS62轨道)

第3步:将程序上传到Arduino板

poYBAGKgZyiAJq52AAK4aJs8juQ819.png

如果您的计算机上没有ArduinoIDE,请先下载。然后使用这一段code:

inti=0;//Integertostorethelocomotive‘sspeedatascalefrom0to255.

intswitchLimit=80;//Integertostorethespeedlimitatwhichthetrainwillenterthesiding.

voidcheck_n_switch(){

if(digitalRead(A0)==HIGH){//Checkingifthesensordetectsthetrainpassingthesensoredtrack.

if(i《=switchLimit){//Ifthespeedvalueisgreaterthanthesetvalue.

switch_to_pass();//Directthetraintothesiding.

}

if(i》switchLimit){//Ifthespeedvalueislessthanthesetvalue.

switch_to_main();//Directthetraintothemainline.

}

}

}

voidswitch_to_pass(){

digitalWrite(11,LOW);

digitalWrite(12,HIGH);

delay(200);

digitalWrite(12,LOW);

}

voidswitch_to_main(){

digitalWrite(12,LOW);

digitalWrite(11,HIGH);

digitalWrite(11,HIGH);

delay(200);

digitalWrite(11,LOW);

}

voidsetup(){

pinMode(A0,INPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

pinMode(12,OUTPUT);

}

voidloop(){

switch_to_pass();//Switchingturnoutstothesidingsincethetrainwillstartthejourneyfrothere.

for(i=0;i《=40;i++){//Increasingthespeedofthelocmotiveto40,atthisspeedthelightsturnonbutthetrainremainsatrest.

analogWrite(9,i);

delay(10);

}

delay(1000);

for(i=40;i《=90;i++){//Increasingthespeedofthelocomotiveto90

analogWrite(9,i);

check_n_switch();

delay(500);

}

delay(4000);

for(i=90;i《=180;i++){//Increasingthespeedofthelocomotiveto180.

analogWrite(9,i);

check_n_switch();

delay(250);

}

delay(3000);

for(i=180;i!=90;i--){//Decreasingthespeedofthelocmotivebackto90.

analogWrite(9,i);

check_n_switch();

delay(500);

}

delay(2000);

while(digitalRead(A0)==LOW){//Waitforthetraintocrossthesensoredtrack.

}

switch_to_pass();//Switchtheturnoutstodirectthetraintothesiding.

delay(2000);//Waitforthetraintoenterthesiding.

for(i=90;i!=35;i--){//Reducethespeedofthetraingradually,bringingittoahalt.

analogWrite(9,i);

check_n_switch();

delay(500);

}

for(i=35;i!=0;i--){

analogWrite(9,i);

check_n_switch();

delay(62);

}

delay(5000);//Waitfor5secondsbeforerepeatingthewholeprocessagain.

}

第4步:铺设轨道并进行布局

pYYBAGKgZxqALCAaAAO5wvzIAQQ861.png

如上图所示,用经过的壁板制作一个椭圆形环。确保传感器轨道与列车在穿过传感器轨道后要穿过的第一个道岔之间的距离大于火车的长度,这样当火车穿过道岔时,没有任何部分超过传感器轨道。

第5步:电路原理

poYBAGKgZxaATcbLAANpEYOnZS4492.png

在继续之前,请确保您浏览了完整的电路原理图和所有细节。

第6步:将道岔连接到L298N驱动板的输出

pYYBAGKgZxKAX_CzAAaQRkPMzuI315.png

将两个道岔的红线和黑线分别相互连接,形成并联。然后,将红线连接到电机驱动板的out4端子,将黑线连接到电机驱动板的out3端子。

第7步:将电源馈线轨道连接到L298N驱动板的剩余输出

poYBAGKgZwyAPW6sAAOIGG5m-JQ097.png

将电源馈线的白线连接到电机驱动板的out1端子,将蓝线连接到电机驱动板的out2端子。

第8步:将L298N驱动板连接到Arduino板的电源引脚

poYBAGKgZweAJIjhAARWw2SzOq8463.png

将12伏引脚连接到Arduino板的VIN引脚,将GND引脚连接到Arduino板的GND引脚,最好将电机驱动器的5伏引脚连接到Arduino板的5伏引脚。

第9步:将传感器连接到Arduino板

poYBAGKgZv2AbOEcAARfWhasscE205.png

将传感器的VCC引脚连接到Arduino板的5V引脚,GND引脚连接到Arduino板的GND引脚,OUT引脚连接到Arduino板的A0引脚。

第10步:将电机驱动器的输入引脚连接到Arduino板

pYYBAGKgZvmAL35PAASNForngD8332.png

将Arduino板的数字引脚连接到电机驱动板的输入引脚,如下所示:

D9到IN1

D10至IN2

D11至IN3

D12至IN4

第11步:将火车放在轨道上

pYYBAGKgZvOAD2lzAARiUNtVcJY222.png

检查所有接线连接后,将火车放在壁板上。

第12步:启动设置

pYYBAGKgZu6AZK5zAAPtRo9jZMU552.png

启动设置并确保道岔切换到壁板,如果没有,则只需反转与电机驱动器建立的道岔的连接。此外,确保火车开始向前移动。如果列车运行方向错误,则将馈线轨道与电机驱动器的连接反向。

第13步:完成!

到这一步,该项目已经完成。您可以修改Arduino代码以更改布局的功能、添加更多侧板等。这一切都是可定制的!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6809

    浏览量

    147637
  • 电机驱动器
    +关注

    关注

    15

    文章

    594

    浏览量

    63992
收藏 人收藏

    评论

    相关推荐

    电梯的基础原理:微控制器

    微控制器
    jf_10480160
    发布于 :2022年12月14日 07:20:15

    什么是微控制器

    。  微处理是20世纪伟大的技术创新之,由此而衍生的微控制器将微处理和外设集于身,为多种应用开创了新局面,并将继续发挥不可替代的作用
    发表于 11-14 14:30

    不同微控制器版的特性

    要开始嵌入式开发,我们需要两个主要的东西,即开发板和IDE(集成开发环境)。微控制器开发板是一种印刷电路板(PCB),其电路和硬件设计用于促进某些微控制器板功能的实验。开发板与处理
    发表于 08-07 08:53

    如何设计一种位置控制器

    一种基于S7-200 PLC的位置控制器研究设计位置控制器在工业中有什么应用?
    发表于 04-28 06:16

    如何采用MCU和独立CAN控制器设计个智能节点?

    本文将给出一种采用通用微控制器(MCU)和独立CAN控制器和收发为核心的智能节点,完成与汽车系统之间的通信和
    发表于 05-17 07:00

    请问怎样去设计一种基于STM32F469微控制器的机器学习面部检测电路?

    人脸识别硬件是什么?怎样将人脸识别功能整合到嵌入式系统中去?怎样去设计一种基于STM32F469微控制器的机器学习面部检测电路?
    发表于 07-04 06:14

    请问怎样去搭建一种模糊控制器系统的数学模型

    模糊PID控制方式与传统PID控制相比有何优势?怎样去搭建一种模糊控制器系统的数学模型?如何对模糊控制器
    发表于 08-18 07:35

    STM32H7系列的微控制器

    、工具介绍由于项目开发原因要用到STM32H7系列的微控制器,为了缩短项目开发周期和提高效率,采用了ST官方的STM32CubeIDE进行
    发表于 08-20 06:49

    微控制器的作用与应用

    微控制器是将微型计算机的主要部分集成在个芯片上的单芯片微型计算机。微控制器诞生于20世纪70年代中期,经过20多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域
    发表于 09-10 06:21

    如何去开发一种STM32Fx微控制器自定义引导程序

    如何去开发一种STM32Fx微控制器自定义引导程序?怎样去使用CubeMX生成C项目
    发表于 09-28 08:18

    一种嵌入式-微控制器的集成电路(IC)

    本技术产品采用STM32F10F103RCT6STM32F103RCT6是一种嵌入式-微控制器的集成电路(IC),芯体尺寸是32位,速度是72MHz,程序存储容量是256KB,程序存
    发表于 11-30 06:59

    如何使新手和专业开发人员都能轻松地使用JavaScript编程微控制器

    地使用JavaScript编程微控制器。您可能想知道为什么使用JavaScript,以及JavaScript引擎如何装入微控制器的有限内存中。 有许多旨在将脚本编写在微控制器上的项目
    发表于 12-15 08:49

    一种基于MM32SPIN222C微控制器的电机控制方案

    一种基于MM32SPIN222C微控制器的电机控制方案
    发表于 03-01 07:11

    采用可定制微控制器来优化算法的设计

    采用可定制微控制器来优化算法的设计     Atmel公司的CAP可定制微控制器为这种挑战提出了一种可行的解决方案。CAP是
    发表于 09-27 13:50 574次阅读
    <b class='flag-5'>采用</b>可定制<b class='flag-5'>微控制器</b>来优化算法的设计

    微控制器布局

    有效 的,其他则需要适当的留心一下 PCB 设计。 因此,很容易地理解噪声的来源主要由 NEC CMOS 微控制器 的内部躁声和它传播到外面的躁声组成。 3.1典型的微控制器布局 在以下章节将详细讨论半导体,一些技术术语用以下的
    的头像 发表于 08-15 19:59 905次阅读
    <b class='flag-5'>微控制器</b><b class='flag-5'>布局</b>