基于AT89S52单片机的循迹小车开发(一)硬件模块的框架搭建
2009-04-26 13:43
363 查看
这学期开始做单片机,虽然刚接触不到一个月,但也积累了一点点东西。一直想找个时间写点什么,就班门弄斧把自己现在做的一点点东西拿出来,和大家分享,欢迎大家指点~!
OK,闲话不多说~!转入正题。其实这篇blog写的有些没必要,循迹小车的设计方案在网上随便一搜就一大堆,我也是通过网上搜集的资料,来设计自己的方案。所以关于小车的硬件模块安排,简略描述,重点放在软件设计及制作过程中遇到的问题。
循迹小车从整体上来说,分为检测模块、控制模块、驱动模块、电源模块和小车车体五部分组成。
检测模块采用红外反射传感器实现对黑线的循迹,我们采用的是ST178。传感器的分布多种多样。我们用了4个传感器,中间两个紧排在一起,共同检测黑线,边上的两个传感器检测背景,这样可以把偏离状态分成6种情况,不同情况对应不同的转向角度,可以使小车的行走路线得到优化。
控制模块核心为AT89S52单片机,首先要搭建单片机最小系统,这个在任何一本单片机教程中都有。然后确定输入端口和输出端口,为了方便程序设计,将P0端口作为输入端口,P1作为输出端口。P0做输入时一定要接上拉电阻,端口的默认值为高电平。
查查资料就能发现,单片机端口的负载只能为若干组TTL电路,所以必须使用驱动电路来控制、带动小车电机。驱动模块采用L298直流驱动芯片。一个 L298芯片可以同时控制两组电机,正好对应小车的前进电机和转向电机。利用PWM脉冲原理控制电机功率,实现转向角度和行走速度的调节。
电源模块本来是比较难解决的问题,在网上找资料的时候也发现很多讨论,采用5号电池,容量太低,一会儿就没电了,用电瓶吧个头太大,往车上一放车都动不了,好在老师花血本搞来两块数码相机用的锂电池^_^,轻松解决了电源问题。不过还是容量有点小,一块电池也就能用一个多小时,因此要两块电池换着用。当然,基本的稳压电路是必不可少的。
小车车体一般就用市面上的玩具车,我们用的是别人之前用过的车体,不满足我的要求,轮胎比较大,而且走起来也不很稳,但完成循迹还是没问题的。我觉得选择车轮较小、转向极限角较大的F1赛车模型比较好,正想办法游说老师去买一个~~。因为直流电机的受惯性较大,不能很好急停,有同学利用步进电机自己做了个小车。我认为用步进电机并不适合,不仅重量大、速度慢,而且控制起来也不稳,因为通过两个轮的转速差来控制方向,小车看起来就像刚学走路的小鸭子...。经过我们的实验,使用直流电机,当小车速度不是很快时,利用L298内部的急停功能可以实现小车在5cm内停下,当然,这和小车本身的重量、灵活性有关。
小车的整体结构就先说到这里,讲的挺凌乱的,也没什么重点。本想言简意赅点,结果说着说着就说了一堆。呵呵,第一篇嘛,还请大家谅解。从下一篇开始分析小车的程序部分以及我在制作过程中总结的经验教训,估计会更凌乱,嘿嘿。
OK,闲话不多说~!转入正题。其实这篇blog写的有些没必要,循迹小车的设计方案在网上随便一搜就一大堆,我也是通过网上搜集的资料,来设计自己的方案。所以关于小车的硬件模块安排,简略描述,重点放在软件设计及制作过程中遇到的问题。
循迹小车从整体上来说,分为检测模块、控制模块、驱动模块、电源模块和小车车体五部分组成。
检测模块采用红外反射传感器实现对黑线的循迹,我们采用的是ST178。传感器的分布多种多样。我们用了4个传感器,中间两个紧排在一起,共同检测黑线,边上的两个传感器检测背景,这样可以把偏离状态分成6种情况,不同情况对应不同的转向角度,可以使小车的行走路线得到优化。
控制模块核心为AT89S52单片机,首先要搭建单片机最小系统,这个在任何一本单片机教程中都有。然后确定输入端口和输出端口,为了方便程序设计,将P0端口作为输入端口,P1作为输出端口。P0做输入时一定要接上拉电阻,端口的默认值为高电平。
查查资料就能发现,单片机端口的负载只能为若干组TTL电路,所以必须使用驱动电路来控制、带动小车电机。驱动模块采用L298直流驱动芯片。一个 L298芯片可以同时控制两组电机,正好对应小车的前进电机和转向电机。利用PWM脉冲原理控制电机功率,实现转向角度和行走速度的调节。
电源模块本来是比较难解决的问题,在网上找资料的时候也发现很多讨论,采用5号电池,容量太低,一会儿就没电了,用电瓶吧个头太大,往车上一放车都动不了,好在老师花血本搞来两块数码相机用的锂电池^_^,轻松解决了电源问题。不过还是容量有点小,一块电池也就能用一个多小时,因此要两块电池换着用。当然,基本的稳压电路是必不可少的。
小车车体一般就用市面上的玩具车,我们用的是别人之前用过的车体,不满足我的要求,轮胎比较大,而且走起来也不很稳,但完成循迹还是没问题的。我觉得选择车轮较小、转向极限角较大的F1赛车模型比较好,正想办法游说老师去买一个~~。因为直流电机的受惯性较大,不能很好急停,有同学利用步进电机自己做了个小车。我认为用步进电机并不适合,不仅重量大、速度慢,而且控制起来也不稳,因为通过两个轮的转速差来控制方向,小车看起来就像刚学走路的小鸭子...。经过我们的实验,使用直流电机,当小车速度不是很快时,利用L298内部的急停功能可以实现小车在5cm内停下,当然,这和小车本身的重量、灵活性有关。
小车的整体结构就先说到这里,讲的挺凌乱的,也没什么重点。本想言简意赅点,结果说着说着就说了一堆。呵呵,第一篇嘛,还请大家谅解。从下一篇开始分析小车的程序部分以及我在制作过程中总结的经验教训,估计会更凌乱,嘿嘿。
相关文章推荐
- 基于Spring2.5.6搭建技术开发框架
- 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--模块开发
- IDEA基于maven多模块框架搭建
- 基于springmvc mybatis junit搭建分工程,分模块的web工程框架(二)
- 基于springmvc mybatis junit搭建分工程,分模块的web工程框架(三)
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架-5.2 表字段综合管理模块
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架 - 5.3 数据库连接管理模块
- 基于IDEA开发的maven+spring4+hibernate4+struts2--s2sh框架搭建
- 关于camera:基于S12单片机的循迹小车视觉系统设计与优化
- 基于React Native的android开发框架搭建
- 用Grunt搭建基于LESS的前端html开发框架
- 基于springmvc mybatis junit搭建分工程,分模块的web工程框架(一)
- 基于pix硬件的apm开发环境搭建
- 基于umi搭建React快速开发框架 01
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架 - 5.1 数据字典管理模块
- 系统架构师——搭建SpringMVC,Spring,Mybatis框架——从模块开发到系统架构搭建
- IOS开发-基于WebDriverAgent代理服务,实现iOS手机app自动化测试的框架搭建
- 基于DDD的.NET开发框架 - ABP模块设计
- 基于webpack和vue.js搭建的H5端框架(其实主要用于Hybrid开发H5端框架,但是依然能够作为纯web端使用)