基于MC9S12XS128的电磁智能小车的硬件设计
高海沙,丁晓慧
(商丘学院,河南 商丘 476000)
摘要 :若要实现小车的直立行走,应该构建良好的硬件平台。本文按照电磁车体系结构,简单介绍了智能小车的硬件设计模块,主要包括电源、核心控制、传感器、执行机构和人机接口等部分。各部分相互协调,最终使小车能够在最短的时间内沿着规定的轨迹快速稳定地运行。
0引言
图1整体框架图随着电子技术的不断发展[1],能够自动进行识别轨迹的智能小车得到了广泛的应用[2]。本文设计了这样一种智能循迹小车,该智能车通过对道路传感器和加速度传感器、陀螺仪所采集的数据进行处理,根据车模驱动轮上两个编码器所采集的数据,来判断小车底盘的倾角、角加速度和小车的方位、速度、转向角度等,进而控制小车底盘的摆角和两个驱动电机的速度,使小车在最短的时间内稳定、快速运行。本文采用控制器 MC9S12XS128 作为系统的唯一核心控制单元,并进行信号采样、处理、传输数据等动作,以及产生 PWM 波控制电机的运转。
1系统硬件整体框架
电磁车体系整体结构框架如图1所示,大致包括五个部分。
1.1电源部分
向各部分提供电能,包括7.2 V电池和简单实用的稳压电路。
1.2核心控制部分
核心控制部分主体是飞思卡尔公司的16位单片机MC9S12XS128,包含核心控制电路板。通过分析传感器数据,提取赛道和小车自身信息,运行控制算法,向执行机构发出动作信号,控制赛车沿赛道行驶[3]。
1.3传感器部分
通过感知外部世界的环境信息和车模自身的状态信息,使小车完成赛道的检测并获得控制数据,从而使得各部分能够协调工作。传感器模块包括两个陀螺仪和一个加速度。
1.4执行机构
执行动作信号,实现车的直立、前进、变速和转向。执行机构包括电机驱动、电机。
1.5人机接口
实现模式和参数选择、状态指示、实时监控以及数据传输与存储等人机交互功能,包括拨码开关、ZigBee无线模块、LED状态灯等。
2各部分外围电路的设计
2.1电源部分
电磁车的电机需要7.2 V或者较高的电压,其他部分需要5 V的电压,图2电源分配图由于该车模的电池提供7.2 V~8 V的电压,因此只需要一片性能稳定的稳压芯片即可。电源分配图如图2所示。
2.2核心控制部分
核心控制部分由单片机MC9S12XS128最小系统板和核心控制电路板组成。核心控制部分是关键。其中的单片机最小系统板MC9S12XS128主要包括时钟、旁路电容、电源接口、烧录和调试接口、I/O接口。
2.3传感器部分
通过感知外部世界的环境信息和车模自身的状态信息,为小车完成赛道的检测与跟踪以及实现小车的直立运动控制提供所需的信息。传感器部分包括电磁传感器、角度传感器、速度传感器三个模块。其中,角速传感器用于测量小车底盘的倾角和加速度,而速度传感器用于感知车模车身本身的行驶速度,是速度闭环控制的一个必须环节。电磁车使用500线的欧姆龙光电编码器作为速度传感器,安装在车尾与传动齿轮啮合。
2.4执行机构
执行机构主要包括电机驱动、电机。车模原装配件中包括两个电机,电机驱动电路制作在核心控制板上,单片机输出的PWM信号通过电机驱动控制电机的转速;电机驱动使用H全桥电路,两路H全桥电路驱动两路电机。如图3H全桥电路原理图 下图3所示为H全桥电路原理图。
2.5人机接口
人机接口主要用于单片机与调试者之间的交互,4位拨码开关可以用于调整速度和相关参数,8位LED用于显示当前车速状态,无线模块用于实时传输数据[4]。
3结束语
本文介绍了智能循迹小车硬件系统各个模块的设计,实现了电磁车的基本功能,但是要想进一步提高电磁车的速度,在机械设计部分还需要注意很多细节,比如必须降低小车的重心,在小车直立行走稳定性很高的情况下才能通过优化软件算法来最大限度地提升小车的速度。
参考文献
[1] 卓晴,黄开胜,邵贝贝.学做智能车——挑战“飞思卡尔”杯[M].北京:北京航空航天出版社,2007.
[2] 谭浩强.C语言程序设计[M].北京:清华大学出版社,2006.
[3] 王威.HCS12微控制器原理及应用[M].北京:北京航空航天大学出版社,2007.
[4] 韩彩霞.单片机并行I/O口的扩展方法[J].微型机与应用,2013,32(24):2830.
手把手教你制作无电源仍可走的时钟
芯片简介
乍一看题目读者可能会纳闷,这是什么奇怪的东西,不用电源还可以工作?其实笔者只是在这里卖了个关子,说的是不用外加电源也可以正常走时,并不是说整个电路工作时不需要供电。也就是说不使用时这个时钟不需要供电,在你加上电源之后就可以显示时间,并且仍然是正确的。就好像有些手机关闭之后又取下电板,等你下次开机的时候它又能显示正确的时间。其实这些手机里面都是有后备电池的,就是做时钟那一小块电路有后备电池供着电的。要是后备电池没有了电,取下电板后问题就来了,这也是为什么有些用久了的手机取下电板再装上,时间就不对了的缘故。但是本文说的这个时钟不需要外加后备电池,那它是怎么做到这一点的呢?请听我慢慢道来。
图5.1 实物图
图5.2 DS12887引脚
先了解一下“主角”的基本特性吧,DS12887是Dallas半导体公司推出的实时时钟芯片,在芯片内部集成了石英晶体、锂电池和其他支持电路,在没有外部供电的情况下,可以正确走时10年;可以计数时、分、秒、年、月、日和星期等信息,而且闰年补偿到2100年有效;内部的闹钟寄存器用来保存闹钟时间,当实时时间等于闹钟时间时,在DS12887的IRQ引脚输出低电平,微控制器可以利用此信号作为闹钟信号来处理。笔者用万用板焊接了电路,实物图见图5.1。下面将介绍如何使用DS12887制作这个时钟。
芯片引脚
了解了“主角”的基本特性,再来看看它的引脚。一个芯片的引脚可以看作是跟外界“交流”的通道,了解了引脚的用法就可以知道如何跟单片机相连。芯片引脚如图5.2所示,其中部分引脚命名与官方的数据手册有所不同,原数据手册上使用的是Motorala总线时序的命名方式,这里为了方便理解,采用Intel总线时序的命名方式,因为文章所使用的51单片机即为Intel时序。这两种总线时序最初分别是用在Motorala和Intel两家公司生产的芯片中,有兴趣的朋友可以在DS12887的数据手册上找到更详细的信息。
引脚MOT为总线方式选择,DS12887可以有两种时序:当MOT接VCC时选择Motorala总线时序;当MOT接地或悬空时选择Intel总线时序。本文用AT89S52作为控制器,AT89S52作为一种典型的51单片机,理所当然使用的是Intel总线时序。
AD0~AD7是地址、数据复用线,跟标准的51单片机的P0口类似,在一个读写周期里的前后两个时间段分别是作为地址线或数据线。它可以直接连接到AT89S52的P0口。
ALE为地址锁存信号,因为DS12887数据地址线采用分时复用的形式,所以需要ALE作地址锁存信号。在一个读写周期里AD0~AD7引脚上首先出现的信号表示地址,通过ALE的下降沿将该信号锁存到DS12887的地址寄存器,稍后AD0~AD7引脚上出现的信号则表示写入或读出DS12887的数据。ALE可以直接连接至AT89S52的ALE引脚。
RD、WR是读写控制信号引脚,分别连接AT89S52的RD(P3.7)、WR(P3.6)引脚。
CS为片选信号,为低电平时选中芯片,可以跟AT89S52的P2.7脚相连,这样就可以形成DS12887的读写基地址:0x0000。
IRQ引脚为中断输出信号,当DS12887产生中断时,在IRQ引脚输出有效低电平,该引脚为漏极开路输出,在外部需要加上拉电阻。
复位功能在本设计中不使用,RST可以直接接高电平。
片内资源
看完了外面,进到里面看看。DS12887内部有10字节的时钟(时、分、秒)、闹钟(时、分、秒)和日历(年、月、日、星期)寄存器和4个控制寄存器以及114字节的通用RAM。地址分配如附表所示。
在本文的设计中只使用了前面14字节的时钟、闹钟、日历和控制寄存器,其余的114字节的RAM并未使用。采用了如图5.3所示的电路图后,片内的14字节的地址分配就是从0x0000~0x000D,在程序中可以像访问外部RAM一样方便地读取和写入数据至这些地址。
0x0000~0x0009是时钟、闹钟和日历寄存器,保留了时间信息等相关内容,单片机可以通过读取这些内容将时间信息显示出来。
寄存器A的BIT6~BIT5控制DS12887内部晶体振荡器的关断。
寄存器B控制各种中断的使能,在本文中需要将闹钟使能位(BIT5)打开,BIT2决定输出的时钟数据是十六进制或是BCD码,BIT1决定时间采用的格式:24小时或12小时制。
寄存器C保存了中断标志位,若在使用多种中断的情况下,微控制器可以通过读取该寄存器辨别产生了何种中断,从而进入相应的处理程序。而在本设计中,只使用了闹钟中断,当在/IRQ引脚输出低电平时,就可以判断产生了闹钟时间到的中断。但是仍需要通过读取该寄存器以清楚中断标志,以免程序重复处理。
寄存器D是与器件是否有效相关的寄存器,本电路无需处理该寄存器。
附表 片内地址分配
硬件电路
电路使用4位一体共阴极数码管显示时钟、闹钟和日历信息,数码管采用CD4511作硬件译码,74LS06作动态选择和驱动电路。电路图如图5.3所示。
CD4511是一种用于数码管显示的译码芯片,在芯片输入引脚(D~A)输入4位二进制数值,在输出端(a~g)则译码输出共阴极数码管所需要显示的数值,例如,在CD4511的D~A这4个引脚输入“0101”(十进制的“5”,D为最高有效位数据),则在输出端的a~g输出“1011011”。而且CD4511有个很有用的“消隐”功能,即当输入端D~A的值大于9时,输出端a~g呈现高阻态,从而数码管表现为7段灯都会灭掉。
74LS06包含6个非门电路,本文只需要其中4路即可。在输入端置“1”,对应的输出端则为“0”,选中其中一个数码管。比如在AT89S52的P1.4输入“1”,则74LS06的4A引脚为“1”,在其对应的输出脚4Y输出就为“0”,从而选中与s1相连的DS1数码管。在焊接电路板时,可以将CD4511和74LS06这两个芯片放在数码管下方,这样整个电路板就会小巧一些。
图5.3 电路图
因为数码管只有4位,而且必须用其中的两位显示一项时间信息,所以每次只可以显示两项时间信息,例如,DS1、DS2分别显示月份的十位、个位,DS3、DS4分别显示日期的十位、个位。但要显示的时间信息要多得多,所以采用“分时复用”的方法轮流显示时和分、月和日、年和星期,在时间分配上笔者使用了下述方案:在每一分钟中,0~9s、20~39s、50~59s的时间里显示时钟的时和分,在10~19s内显示月和日,在40~49s内显示年和星期,而时钟的秒数则不作显示处理。因为星期的最大数值为7(表示星期天),可以只在个位显示,星期分配的十位可以作“消隐”处理。设定的闹钟信息不是需要经常查看的,所以不做上述的分时显示,而是通过按下KEY4键查看。
图5.4 主函数程序流程图
电路图中的4个按键功能分配如下,KEY1:数值加1键;KEY2:数值减1键;KEY3:调节项目选择,当该键按下可以选择不同的调节项目,依次为时钟的时、时钟的分、月份、日期、年、星期、闹钟的时和闹钟的分。KEY4:选择显示时间(包括时、分、月、日、年和星期)或闹钟。
红色的LED闪亮表示数码管当前显示的是闹钟的时和分,绿色的LED闪亮表示当前显示的是时钟的时和分;而红色的LED闪亮和蜂鸣器发出声音,则表示闹钟所定格的时间到来,发出警报提醒;当两个LED都不闪亮时表示显示的为日历信息,即月、日、年和星期,可以通过DS3是否显示数据区分出显示的是月、日还是年、星期。
软件设计
笔者使用的编译环境为Keil编译软件,采用C51编程语言。
整个程序由几个模块构成,文件mmi.c中包括一些人机交互处理的函数,比如读取按键、在数码管上显示时间信息、LED和蜂鸣器的发声处理等;文件ds12887.c中包括读写和初始化DS12887的函数;文件my52.c中包含延时函数;在文件main.c中则调用这些模块中的函数进行综合处理,主函数的程序流程图如图5.4所示。各个xxx.h文件中则是相应的xxx.c文件中的函数声明、全局变量声明等。更多源程序可以到qq群657864614进行下载!
一个属于电子工程师的专属淘宝店,总有一款适合你。所有商品均可以无理由退货,请放心购买! 首页-电子工程师小李-淘宝网
相关问答
飞思卡尔 单片机 MC 9s12 xs128的中断周期定时器的关闭问题?是在做飞思卡尔智能车么,可以去飞思卡尔论坛问说一下我的理解:我以前也用过这个芯片,有一次是用它做超声波测距,要用输入捕捉来测高电平持续时间,就用了里...
飞思卡尔 9S12 XS128 单片机 的中断向量和中断号,在芯片手册里...工程下面有个文件夹“Includes”面包含文件“mc9s12xs128.h”。把这往下定义“/****************interruptvectornumbers**************...
飞思卡尔 9S12 XS128 单片机 的中断向量和中断号,在芯片手册里...工程下面有个文件夹“Includes”面包含文件“mc9s12xs128.h”。把这往下定义“/****************interruptvectornumbers**************...
用什么软件把程序下载到MC 9S12 XS128 单片机 中?stc-isp,挺好的,一直在用;另外,伟福,也不错~stc-isp,挺好的,一直在用;另外,伟福,也不错~
你好CodeWarrior5.1是mc 9s12 xs128mal 单片机 编程和下载使用的吗?codewarrior5.1是可以的,出现在各个错误感觉你下载的这个文件是只读的原因!你试着改一下属性试试。另外,你现点击一下project->removeobjectcode,...
现在流行什么 单片机 ?现在比较流行单片机有51单片机、AVR、PIC、MSP430、STM32、瑞萨单片机、飞思卡尔单片机。1.51单片机ATMEL(艾德梅尔)的:89C51、89C52STC(国产宏晶)单片机:8...
飞思卡尔 单片机 有什么特点呢?区别不大,都是对寄存器操作的,熟悉了寄存器规则以及编程方法就行飞思卡尔单片机系列32位Kinetis系列;32位ColdFire系列;32位MPC56xx系列;8位微控制器系列(...
在线的好基友 帮忙答一下!稳定的控制芯片供应商,控制芯片...[回答]ARM其实也是单片机,32位的高性能单片机。单片机只是大陆人对微控制器的一个称呼,其学名叫做微控制器(英文简写:MCU),我们常说的单片机一般是8位或16...
帮个忙大佬们 求推荐!景观雨水收集控制系统厂家现货供应,...[回答]目前流行的方案是采用由数字电路组成的大规模集成电路,加上大功率可关断器件组成直流脉宽调速系统(PWM),进而发展成用单片机控制的功能更强的全数字...
朋友们,推荐一下!宣城少儿编程培训班联系电话,有了解这个...[回答]单片机支持汇编编程的C51编程。1、汇编编程,传统的汇编代码。缺点:可读性不强,优点:代码精简2、C51编程,使用专用C语言编程。缺点:代码不精简,优点:...