电动车跷跷板设计报告1
电动车跷跷板设计方案

电动车跷跷板设计方案1. 引言电动车作为一种环保、经济、便捷的交通工具,在城市中越来越受到人们的欢迎。
随着电动车使用的普及,对电动车的性能和舒适性需求也越来越高。
其中,车辆的悬挂系统是决定乘坐舒适性的关键因素之一。
本文将重点介绍电动车跷跷板设计方案。
2. 跷跷板的作用电动车的跷跷板是连接前后轮的重要部件,它在路面不平的情况下起到缓冲和减震作用,提高骑行的舒适性和稳定性。
合理的跷跷板设计能够降低车身的颠簸感,提高乘坐舒适性和操控性。
3. 跷跷板设计需考虑的因素在设计电动车跷跷板时,需要考虑以下因素:3.1 材料选择跷跷板需要具备足够的强度和耐久性,以应对恶劣的路面条件和长时间使用带来的疲劳等问题。
常见的跷跷板材料包括铝合金和碳纤维等。
铝合金具备较高的强度和刚性,而碳纤维材料则轻量且具备良好的振动吸收能力。
3.2 结构设计跷跷板的结构设计需要考虑到整车的重心、空间限制和悬挂系统的类型等因素。
合理的结构设计可以降低车辆的重量,并提高整车的稳定性和行驶的舒适性。
3.3 减震系统跷跷板作为车辆的减震系统之一,需要考虑到减震效果和调校。
通过合理的减震系统设计,可以降低车身的颠簸感,提高骑行的舒适性。
4. 设计方案基于以上考虑因素,本文给出以下电动车跷跷板设计方案:4.1 材料选择采用铝合金材料作为跷跷板材料。
铝合金具备优秀的强度和刚性,同时具有较好的耐腐蚀性和耐久性,适合应对各种路面条件。
在材料选择上,还可以考虑采用碳纤维增强的铝合金,以进一步提高载荷能力和减震效果。
4.2 结构设计跷跷板的结构设计应该考虑到整车的重心和空间限制。
可以采用H 型结构设计,将重力分散到两侧,提高整车的稳定性。
在空间限制允许的情况下,还可以考虑增加三角支撑等结构,提高跷跷板的刚性和稳定性。
4.3 减震系统跷跷板需要配备减震系统,以提高骑行舒适性。
可以采用液压减震器或弹簧减震器,根据不同的需求进行选择。
减震系统还可以根据用户的体重和骑行环境进行调校,以获得最佳的减震效果。
电动车跷跷板设计方案

电动车跷跷板设计方案电动车跷跷板是一种创新性的设计,可以帮助人们更方便地停靠和启动电动车。
在许多城市,电动车已经成为主要的出行方式。
然而,电动车在停车时,需要使用力量将车辆托起或降下,这对于一些年纪较大或身体不适的人来说可能会很困难。
因此,电动车跷跷板是一项非常有用的发明,能够让电动车的停放更加容易和便捷。
一般来说,电动车跷跷板有两种设计方案:手动操作和自动操作。
手动操作的设计需要用户手动旋转跷跷板,以将电动车推起或降下。
这种设计成本较低,但用户需要一定的力量和技能才能轻松完成操作。
另外,手动操作的设计需要更多的时间和精力,不太适合老年人或身体有残疾的人。
自动操作的设计是一种更加先进和高级的设计,它利用电动机和控制器来完成跷跷板的升降操作。
用户只需要轻按按钮或开关即可完成整个过程。
自动操作的设计有多种控制方式,包括遥控器、传感器和自动识别系统等等。
这种设计的成本更高,但用户可以省去很多时间和精力,使用起来非常方便。
除了操作方式的不同,电动车跷跷板的设计还有很多其他的特点。
比如,电动车跷跷板的材料可以采用钢板、铝合金、塑料等多种材质,不同的材料有着不同的优势和劣势,需要根据风险防范、耐用性、安全性和成本等多个因素来选择。
电动车跷跷板的设计还可以增加一些额外的功能,如夜视灯、加热器、视音频系统等等,这些增强功能可以使车辆的停放更加智能化和便捷。
除了以上提到的基本设计特点,为了满足不同用户的需求和喜好,电动车跷跷板还可以增加一些个性化的设计元素。
比如,可以在跷跷板表面印上个性化的图案或标志,让用户可以将自己的电动车个性化地装扮起来。
此外,电动车跷跷板的外形和尺寸也可以根据用户需求进行定制。
在选择电动车跷跷板方案时,需要考虑很多因素,如成本、设计和效果等等。
这些因素关系到电动车跷跷板的使用效果和意义,也与对于产品的整体评估有关。
因此,我们需要在设计电动车跷跷板时,充分考虑不同用户的需求和喜好,以期为用户提供最佳的使用体验。
电动车跷跷板实验报告

青岛大学全国电子设计大赛设计报告题目电动车跷跷板学生姓名马云开高原王世伟专业智能科学与技术二零一五年五月摘要本电动车跷跷板是以玩具车为车架,AT89C52单片机为控制核心,加以直流减速电机、LN298驱动电路、mpu6050陀螺仪、红外光电传感器、LCD1602液晶以及其他电路构成。
系统由AT89C52单片机通过IO口控制小车的前进后退停止平衡以及转向,寻迹由红外光电对管完成,平衡由mpu6050陀螺仪完成,用L298N驱动直流减速电机,同时本系统用1602液晶显示,以显示当前电动车的运动状态以及各部分运行时间。
关键词:AT89C52 L298N 直流减速电机传感器mpu6050陀螺仪AbstractThis electric vehicles on the seesaw is toy car frame, AT89C52 single chip microcomputer as control core, dc gear motor, LN298 drive circuit, mpu6050 gyro, the infrared electric sensors, LCD1602 LCD and other circuits. System controlled by single-chip microcomputer AT89C52 through IO mouth car stop balance and to browse forward and backward, to be finished by infrared electric pipe tracing, balance completed by mpu6050 gyroscope, used L298N drive dc gear motor, this system use 1602 LCD at the same time, to show the current motion state and each part of the running time of electric cars.Keywords: dc gear motor L298N AT89C52 sensor mpu6050 gyroscope摘要 (2)Abstract (2)1.电动车跷跷板(F题) (4)2.系统方案的选择与论证 (6)2.1设计要点 (6)2.2 单片机的选择: (6)2.3 显示器选择: (7)2.4电机制动 (7)2.5地面黑线检测模块 (7)2.5角度检测模块 (7)3.1 显示模块 (9)3.2 电机调速 (9)3.3 电机驱动 (9)3.4 跑道标志检测 (10)3.5路程检测模块电路图 (10)4.软件流程 (10)4.1 主程序流程 (10)4.2 计时子程序流 (11)4.3路程速度监测子程序图 (11)4.4角度检测子程序图 (11)5.测试方法与数据 (12)6总结 (14)7.参考文献 (14)附录一.元件清单 (14)附录二仪器设备清单 (15)附录三原件电路图 (15)附录四主程序 (17)附录五需要完善及要解决的问题 (35)1.电动车跷跷板(F题)电动车跷跷板(2007年F题)【本科组】一、任务设计并制作一个电动车跷跷板,在跷跷板起始端A一侧装有可移动的配重。
电动车跷跷板设计

57科技资讯 S CI EN CE & T EC HNO LO GY I NF OR MA TI ON 工 业 技 术1 设计任务与要求1.1设计任务在给定条件的翘翘板上,小车主要完成从一端出发行驶至平衡点附近,停留一定的时间后开始寻找平衡点,达到平衡点之后行驶至终点,停留一定的时间后返回终点。
如图1所示。
2 方案比较与论证2.1各种方案比较与选择电机选择:为实现小车的运动,还有完成跷跷板的平衡调节,电机应该具有较好的灵敏度和动力。
方案一:直流电机,直流电机响应比较快,调节起来比较方便,价格也比较便宜,可以实现高速的选择。
但是力矩有一定的限制。
方案二:减速电机,减速电机驱动能力强,制动性也好,调节平衡比较方便,但是响应比较慢。
通过实践,直流电机速度快但是动力不强,制动性比较差,不能较好的实现平衡的调节,减速电机虽然反应慢,但是可以满足平衡的调节要求,因此选择减速电机。
倾角测量传感器:倾角是小车运行的控制量,它的准确获取才能使小车能够稳定地达到平衡,并且能够准确测量倾角,还能加大控制量。
方案一:倾角传感器,经测量倾角传感器灵敏度高,跷跷板两端采样值的差值20。
方案二:MMA7260三轴加速度计,该传感器可以测量重力延竖直方向上的分量,但是通过实际的检测发现其灵敏度低,且不稳定。
控制器的选择:对于一个不稳定系统,要控制系统达到平衡位置,需要加入一个控制器。
方案一:采用PID控制器。
PID控制器是一种适应范围广的控制算法。
可以达到一般的控制要求。
跷跷板的平衡是要达到两边的力矩平衡。
小车行驶到某一个特定的位置才能使跷跷板平衡。
方案二:采用步进法不断搜索平衡点,使系统达到平衡。
步进调节比较稳定。
由于倾角传感器的灵敏度的限制,控制量太小用PD控制器实现起来比较麻烦,而且参数的调节也不好控制,因此我们采用步进控制。
2.2控制算法设计采用步进控制,角度的变化量和长度的变化量均随时间而变,并且和各自速度相关,因此,引入小车每个控制周期的步进量 v ,和角度每个控制周期的变化量 ,假设速度控制的周期为T(ms),那么就有下面的式子合力钜: ()cos(T)f M G L v T M 合 (1)每个控制周期,先让小车走一段距离,停止一定时间测量角度,然后以这个角度为依据进行下一次平衡调节,如果所调的参数满足式子(1),那么跷跷板最终可以达到平衡。
电动车跷跷板

电动车跷跷板设计跟总结报告摘要:本设计为使电动车在跷跷板上按要求准确运行采用了单片机A T89C51最小系统作为电动车的检测和控制系统。
通过红外发射接收一体探头检测路面黑色寻迹线,使小车按预定轨道行驶,根据角度传感器检测跷跷板的平衡状态控制电动车使其在跷跷板上达到动态平衡。
再加上基于STM8S单片机的键盘、液晶显示电路,构成了整个系统的硬件总电路。
最后通过软件设计,实现了按预定轨道行驶、保持平衡等功能。
关键字:STM8S 跷跷板角度(倾角)传感器1.方案设计与验证方案一:改装摇控电动车,利用单片机直接控制电动机,采用限位开关检测小车行驶位置。
由于小车是由单片机直接控制,所以驱动不了电机,实现不了小车的基本功能。
用限位开关不利于用小车的独立运行,且控制不便。
方案二:自制小车,利用步进电机,采用单片机控制,用电位器自制角度传感器,自制小车,制作过程极其复杂,且时间紧张,没有较好的机械部件支持,步进电机不易购买,体积较大,供电系统复杂,价格昂贵。
自制传感器精度不高,反应不灵活,线性度太差。
无法实现角度与电阻的线性转换。
方案三:自制小车,利用步进电机,采用stm8s单片机控制,使用现成的角度传感器跟现成的L298N电机驱动模块,成本低,花费时间短,精度高。
综上考虑,我们选择了方案三,经过一番仔细的论证比较,我们最终确定的系统详细方框图如下:2.电路设计2.1寻迹线探测模块通过光电检测器来实现黑白线的监测,当检测到黑线时输出端为低电平,白线时为高电平。
两个TCRT5000来实现小车走直线。
输出端要加上拉电阻,才能得到稳定信号,其原理图如图所示。
2.2电机驱动模块使用L298N,用单片机PWM能实现加速,减速,直线,转弯,后退等动作,原理图如下:3.3倾角检测模块MMA7361角度传感器采用了信号调理、单级低通滤波器和温度补偿技术,并且提供了2个灵敏度量程选择的接口和休眠模式接口,该产品带有低通滤波并已作零g补偿,原理图如下:4软件设计5测试方法跟结果仪器名称型号用途数量计算机联想调试程序 1数字万用表my-65 各种电路参数 1秒表测量时间 1测量结果次数到达A点时间到达B点时间到达C点时间总时间1 8.93 6.82 9.66 25.412 15.72 6.75 8.79 31.263 20.65 6.59 7.88 35.126设计总结经过我们小组的努力,我们终于成功的完成了题目的要求,并在此基础上进行了创新。
基于51单片机的电动车跷跷板设计

基于51单片机的电动车跷跷板设计1.引言本设计为参加电子设计竞赛而作,较好地解决了电动车在跷跷板上的运行和控制问题,系统结构比较简单,控制比较准确。
2.系统方案设计、比较与论证根据题目的基本要求,设计任务主要完成电动车在规定时间内按规定路径稳定行驶,并能具有保持平衡功能,同时对行程中的有关数据进行处理显示。
为完成相应功能,系统可以划分为以下几个基本模块:电动机驱动模块、寻迹线探测模块、平衡状态检测模块、信息显示模块。
见图1 图1 系统框图2.1 寻迹线探测模块探测路面黑色寻迹线的原理:光线照射到路面并反射,由于黑线和白纸的反射系数不同,可根据接受到反射光强弱由传感器产生高低电平并最终通过单片机判断是否到达黑线或偏离跑道。
方案一:由可见光发光二极管与光敏二极管组成的发射-接收电路,如图2 所示。
该方案成本较低,易于制作,但其缺点在于周围环境光源会对光敏二极管的工作产生很大干扰,一旦外界光亮条件改变,很可能造成误判和漏判;如果采用超高亮发光管和高灵敏度光敏管可以降低一定的干扰,但又将增加额外的功率损耗。
图2 方案一电路方案二:自制红外探头电路。
此种方法简单,价格便宜,灵敏度可调,但易受到周围环境影响,特别是较强光照对检测信号的影响,会造成系统不稳定。
再加上时间有限,制作分立电路较繁琐。
方案三:集成式红外探头。
可以采用集成断续式光电开关探测器,它具有集成度高、工作性能可靠的优点,只须调节探头上的一个旋钮即可以控制探头的灵敏度。
此种探头还能有效地防止普通光源(如日光灯等)的干扰。
红外探测器E3F-DS30C4 见图3。
图3 集成红外探测头基于上述考虑,为了提高系统信号采集检测的精度,我们采用方案三。
2.2平衡状态检测模块方案一:断续式光电开关。
在跷跷板两头的地面上各放置一个,调节灵敏度使其在一定范围内接收不到反射光产生低电平,从而认为达到。
电动车跷跷板设计方案

采用锂离子电池,具有高能量密度、长寿命和环保等优点。
电池选择
设计一种智能控制系统,实现电机的精确调速和电池的电量管理,以确保跷跷板的稳定运行和安全性。
控制系统
限速装置:设置限速装置,确保电动车跷跷板的行驶速度在安全范围内。
紧急停车装置:设置紧急停车按钮,以便在紧急情况下迅速停车。
通过以上设计方案的实施,我们将能够实现一种既安全又有趣的电动车跷跷板。这种创新型交通方式将为人们带来全新的出行体验,同时也有助于提升城市交通的多样性和趣味性。
手势控制
引入语音识别技术,允许用户通过语音命令进行操作,提供更加直观和便捷的人机交互方式。
语音控制
在操作界面上设置触控屏幕,用户可以直接通过触控屏幕进行操作,增加交互的灵活性。
触控屏幕
安全保护机制
防滑处理
便携性设计
易维护性
01
02
03
04
设计时应充分考虑使用安全,例如设置限位开关,避免电动车跷跷板超出安全范围。
电动车跷跷板设计方案
汇报人:
日期:
目录
引言总体设计方案关键技术与实现人机交互与界面设计测试、验证与评估总结与展望
01
CHAPTER
引言
近年来,随着电动车市场的不断扩大,电动车的技术和设计也在不断改进。然而,在行驶过程中,电动车仍存在一些平衡问题,特别是在复杂路况和高速行驶时。这些问题不仅影响了电动车的行驶稳定性,还可能给驾驶者带来安全隐患。因此,针对这一问题,我们提出了电动车跷跷板设计方案。
结构设计评估
评估所选材料的性能、成本和环保性。选择具有良好性能、成本低廉且环保的材料,以降低生产成本和环境负担。
材料选择评估
评估电动车与跷跷板的配合使用是否便捷、直观。优化人机交互设计,提高用户的使用体验和安全性。
电动车跷跷板设计报告

摘要:本课题组设计制作了一款智能自动小车。
小车具有以下几个功能:寻迹功能(按路面的黑色轨道行驶);计算并显示所走的路程和行走的时间,变速行驶,自动寻找平衡点使跷跷板达到平衡。
该作品基于凌阳16位单片机SPCE061A,用直流电机作为驱动,通过各种传感器来采集信息,并送入主控单元SPCE061A单片机进行处理,并产生相应的动作,以达到自身控制。
电机控制电路包括方向控制单元和速度控制单元两大部分。
角度检测部分由角度传感器产生信号后送入单片机;黑带检测和速度检测部分都是利用红外线对射方式,在小车的车轮粘上一个挡光圆所料片圈,并在上面开一些透光孔,通过设定固定时间来计量车轮转过圈数进而测出速度。
控制单元接收到信号后,通过程序控制来完成相应动作,实现了无人控制即可完成设计需要动作。
一,系统方案论证与比较方案一:通过搭建各种数字电路来组合成小车的控制系统,对扩展的黑线检测,速度检测,角度测量等信号进行处理。
本方案设计电路复杂,扩展性不好,实现起来比较困难。
方案二:采用凌阳16位单片机SPCE061A来作为系统的控制单元。
红外线探头采用市面上通用的发射管与及接收头,经过LF358放大后送入单片机;角度传感器采用分辨率可以达到小于等度的WQH36-45倾角传感器,它所产生的信号通过A/D转换成数字信号进行处理。
此系统设计起来比较简单,可扩展性较强,灵活性较好,各类功能也易于实现。
所以决定采用方案二,其系统的结构框图如下图所示:比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能够很好地达到设计题目的要求,因此采用方案二来实现。
该系统的结构框图如下图所示:二,模块电路设计与比较1,速度测量模块方案一:利用红外线对射方式,在小车的车轮粘上一个挡光圆塑料圈,并在上面开一些透光孔,,通过计算在固定时间内计量车轮转过圈数而测出速度。
方案二:利用霍尔元件来对转过的车轮圈数来计程,在车轮子上装小磁片,霍尔元件靠近磁片一次计程为车轮周长。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电动车跷跷板(F题)设计报告摘要本设计共分为两部分:跷跷板平衡检测系统和和PTR8000无线通信系统。
平衡检测系统是将角度传感器连接在跷跷板中心位置来检测跷跷板摆动角度的开环控制系统。
为以后电动车找平衡角度做准备。
PTR8000无线通信系统是将角度传感器检测出来的角度通过无线发送模块将数据发送给电动车,根据数据电动车调节自身运动从而达到调节平衡的目的。
平衡检测系统、无线通讯系统与电动车构成了一个闭环控制系统。
电动车以ATmega16为控制核心,采用步进机控制电动车前进和倒退,采用光电传感器检测引导线,利用无线接收模块接收跷跷板平衡检测系统发送的数据,CPU对数据进行智能分析,调整小车前进速度和方向,使跷跷板达到平衡状态。
在电动车到达指定位置时,给出声光提示,同时LED 显示时间和小车当前状态。
附加的PC机电动车跷跷板实时模拟系统,关键字:Atmega16、PTR8000、光电传感器、角度传感器、步进电机一、系统方案1.实现思路和方法本题目要求分为基本部分和发挥部分,基本部分要求在不加配重的情况下电动车在规定时间内完成从跷跷板起始端出发,行驶到跷跷板中心点附近,并且在中心点附近找到平衡位置停留几秒钟,然后从平衡点出发行驶到跷跷板末端停留几秒钟,再从末端倒退回起始端,整个过程要给出时间显示和平衡指示。
设计中主要解决的问题是车在跷跷板中心点附近找到平衡和时间显示。
我们应用角度传感器与板的中心相联来检测板子转的角度再通过PTR8000发送给单片机分析处理后就可以得到角度值来控制车的运动从而达到调节平衡的问题。
显示我们用LCD 液晶显示时间,提示我们用蜂鸣器组成声光报警系统,可以达到提示平衡指示的目的。
2. 方案的选择与论证2.1 控制芯片的选择与论证方案一:采用传统的89C51作为电动车的控制核心。
89C51具有价格低廉、使用简单等特点,但运算速度较慢,数据存储器和程序存储器较少,没有ISP 下载线及SPI接口,功能单一,控制过程比较烦琐。
方案二:采用ATmega16作为电动车的控制核心。
ATmega16拥有丰富的资源,运算速度快,低功耗,高性能,可通过ISP下载线写入程序,其SPI接口可用于对无线通讯模块的控制,使小车能实时接收到跷跷板平衡检测模块发送的数据,以此调整自身前进速度及位置,达到跷跷板平衡的要求。
基于上述分析,拟采用方案二。
2.2 执行机构的选择与论证方案一:采用普通直流电机。
直流电动机驱动力大转弯角度小但只能在有限的场地运动,而且控制精度不高,不适合在高精度控制的场合应用。
方案二:采用步进电机。
步进电机的一个显著特点是具有快速启停能力,如果负荷不超过步进电机所能提供的动态转矩值,就能够立即使步进电机启动、反转或停止。
另一个显著的特点是转换精度高,正转反转控制灵活。
为了保证物体能够平稳且精确的运行,我们选择方案二。
2.3 显示系统的选择与论证方案一:采用LED数码管显示器。
LED数码管亮度高,醒目,但其信息量小,占用资源较多,且显示方式单一。
方案二:采用LCD液晶显示器。
LCD液晶显示器屏幕较大,美观,清晰,能显示数字,字母,汉字,甚至图片。
其功耗低,占用资源少,使用简单。
基于上述分析,拟采用方案二。
2.4 跷跷板平衡检测系统的选择与论证方案一:采用角度传感器。
角度传感器是一种高精度测量物体倾斜角度的检测仪器,将其转轴固定在转动物体上一旦物体转动将带动传感器转轴将产生一个数值,再经过A/D转换把此数值转成角度从而测量出物体转动的角度。
此方法测量数据准确并且测量精度高适合高精度的测量。
方案二:在电动车上水平放置一水槽,在水槽正上方设置两探针,当跷跷板失去平衡时,两探针之一接触水面;当跷跷板平衡时,两探针均不接触水面。
但由于受视觉的影响,测量精度将受到影响。
方案三:在电动车上设置一倒立摆,倒立摆顶端连接电位器的转轴,倒立摆受重力影响,一直垂直指向地面,小车在行进过程中,电位器测量摆的倾角,以此判断跷跷板的状态。
通过分析题目对控制的精度要求很高,所以我们选择方案一。
2.5 数据发射\接收系统的选择与论证方案一:采用传统的有线数据传输。
将独立的系统用数据线连接,进行数据传输,电路连接简单,但使用极不方便。
方案二:采用PTR8000无线收发模块。
PTR8000无线收发模块体积小,低电压,低功耗,性能稳定且不受外界干扰,内置完整的通信协议和CRC,通讯方便。
可方便的放于电动车上,实时接收\发送数据。
本系统需要电动车接收跷跷板平衡检测系统发送的角度传感器检测数据,同时电动车也要实时将自身数据发送给PC机进行显示及模拟,三个独立的系统之间要互相通讯,使用有线数据传输不方便,故采用方案二。
3.系统的设计经过以上方案的比较论证我们设计了如下的系统流程图:3.1 系统框图如图F-1所示。
本系统共分为两部分。
一部分为跷跷板平衡检测系统,另一部分为电动车。
跷跷板平衡检测系统通过角度传感器检测跷跷板的实时状态,单片机将角度传感器收集到的数据处理后,通过PTR8000无线发射\接收模块发送给电动车。
电动车接收到数据以后,CPU 对数据进行分析,以此调整前进方向和速度。
在电动车前进的同时,车头的两个光电传感器检测跷跷板面的引导线,保证电动车不会从跷跷板上掉落。
当电动车接收到跷跷板平衡检测系统发送的跷跷板平衡信号时,小车制动,计时器停止,给出声光提示,并在LCD 上做出相应指示。
图F-13.2 跷跷板平衡检测系统的原理与实现在跷跷板中心位置处安装一个角度传感器,如图F-2所示。
当跷跷板两端上下摆动的时候,角度传感器转轴跟随转动,同时将转动的方向和角度等数据经单片机处理后,通过无线通讯模块传送给小车,小车根据接收过来的数据自行判断并设定行走方向和速度。
当角度传感器转轴转动的角度近似于0°时,即可认为跷跷板处于平衡状态,小车停止, 并给出相应提示。
3.3 跷跷板面引导措施及检测在跷跷板面中央和离板面A 端30厘米处都贴有引导物,A 端到B 端之间画有黑色引导线,引导小车在翘翘板中央行走;跷跷板两端各画有一条黑色引导线,引导小车停在跷跷板两端。
小车两头各采用两个光电传感器检测引导线,分别设置在两车头两角上。
光电传感器是一种以发光二极管为光源,以光敏管为接收器,输出信号以脉冲为主的传感器。
如图F-3所示。
当光电传感器测到黑线或障碍物时,其输出端OUT(图中A点)输出为1,使得光电隔离器的发光二极管截止,发光二极管不发光,光电三极管不导通,因此,光电隔离器的输出端(图中B点)为1,当光电传感器没有检测到黑线或障碍物时,其输出为0,光电隔离器的发光二极管导通,发光三极管导通,光电隔离器的输出为0。
光电传感器F-3图二、理论分析与计算1.测量数据2.理论分析与计算由题意说明可知:根据板长和中心高度可以算出板子与地面的夹角(SINa=中心高除以板长的一半)又平衡条件为A、B两端与地面的距离差d=|da-db|不大于40mm板子的幅度不超过10度,即:板子一端每下降或上升1度对应板子偏移的距离为1.4厘米,板子幅度不得超过2厘米。
三、电路与程序设计1. 检测与驱动电路的设计1.1本系统驱动电路采用UDN2916B驱动芯片做为核心元件。
UDN2916B电路设计时需要充分考虑热设计,因为驱动IC消耗的大部分能量主要为在突变关闭期间马达再生电流造成,马达产生的再生电流流过电流检测电阻和地钳制二极管重新流回马达,产生的电压跌落引起了能量消耗,地钳位二极管上的瞬时电压(VF)出现了最大的跌落,产生了主要的功耗。
设计电路时,如果在驱动IC输出端外加肖特基二极管,并且只要这些肖特基二极管的VF特性值比内部地钳位二极管小,马达产生的再生电流将会有一部分从外部肖特基二极管重新回流到马达,使流经驱动IC内部的电流减少,降低了驱动IC的功耗,反过来也就提高了热性能。
驱动电路原理图见附录1.2 检测电路的设计检测电路分为角度检测和路线检测两部分。
角度检测采用角度传感器来测量角度;路线检测才用光电传感器测量;原理图见附录2.总体电路图见附录3.系统的软件设计与工作流程图1 软件设计本系统使用ATMega16作为核心控制,使用C语言进行软件编程。
跷跷板系统软件完成对角度传感器采集的数据进行处理和发送,电动车系统软件完成数据的接收及判断,实现小车行走、寻找平衡位置的智能化,并实时显示系统接收到的数据、小车行走时间、跷跷板状态等。
2 程序流程图四、创新发挥本设计还运用Visual Basic(以下简称VB)语言在PC机上制作电动车跷跷板实时模拟系统。
VB是面向对象的、支持可视化编程的程序设计语言,能方便的设计出实用的应用系统。
电动车在运行过程中,通过PTR8000无线收发模块,将行驶速度、运行状态(包括前进、后退、左转、右转、停止)、所在位置、跷跷板与地面角度等数据发送给PC机。
接收方面,用ATmega16控制另一PTR8000模块接收数据,再通过RS232串口线传送给PC机。
PC机接收到数据后,对数据进行判断、处理并显示,同时以画图的形式,将跷跷板状态、电动车行走路线进行实时模拟显示。
界面直观、数据显示清晰、模拟逼真,电动车运行过程中的各种参数和跷跷板状态都能一目了然。
为了表示跷跷板已经达到平衡,在小车达到平衡时加有声光信号来表明小车已经达到平衡,跷跷板非平衡状态后声光信号会消失。
五、结果分析在调试过程中,当我们检测到水平角度值时,跷跷板总会偏向另一端,所以我们在调节过程中,每当检测到水平范围附近角度值时,小车都会立即做出相反方向的一段运动,来稳定跷跷板平衡。
小车在行走过程中,小车有时会出现失步现象,主要是驱动模块响应脉冲速度有限,所以小车的运行最大速度较小。
附录附录1 原理图部分(1)系统总体图(2)驱动模块原理图(3)PTR8000通信模块原理图附录2 系统程序#include <iom16v.h>#include <macros.h>#include "delay.h"//////////////////////////////////////////////////// #define Z_EN_1 PORTD|=BIT(0) //使能左轮#define Z_EN_0 PORTD&=~BIT(0) //关闭使能#define Z_zz PORTD|=BIT(1) //左轮正转#define Z_fz PORTD&=~BIT(1) //左轮反转#define Z_cp_1 PORTD|=BIT(2) //驱动左轮#define Z_cp_0 PORTD&=~BIT(2)#define Y_EN_1 PORTD|=BIT(3) //使能右轮#define Y_EN_0 PORTD&=~BIT(3) //关闭使能#define Y_zz PORTD|=BIT(4) //右轮正转#define Y_fz PORTD&=~BIT(4) //右轮反转#define Y_cp_1 PORTD|=BIT(5) //驱动右轮#define Y_cp_0 PORTD&=~BIT(5)#define jin 1 //前行#define tui 0 //后退#define you 1 //#define zuo 0 //#define uint unsigned int#define uchar unsigned charuchar q,p,d;uchar gao,di;uchar time=0;uchar time1=0;unsigned int sp;unsigned char gaoducha;unsigned char a[];define SIZE 32uchar TxBuf[SIZE],RxBuf[SIZE];/*-------------------------------------------------------------------------------------------nrf905配置寄存器宏定义 author:HotPowernrf905配置寄存器(10Byte)工作频率f=(422.4+CH_NO/10)*(1+HFREQ_PLL)MHz-------------------------------------------------------------------------------------------*/#define RX_ADDRESS 0x12345678 //接收有效地址(本方)#define TX_ADDRESS 0x12345687 //发送有效地址(对方)#define CH_NO_FREQ_422_4MHz 0x000 //工作频率422.4MHz(433MHz频段最低频率)#define CH_NO_FREQ_422_5MHz 0x001 //工作频率422.5MHz#define CH_NO_FREQ_425_0MHz 0x01a //工作频率425.0MHz#define CH_NO_FREQ_427_5MHz 0x033 //工作频率427.5MHz#define CH_NO_FREQ_430_0MHz 0x04c //工作频率430.0MHz#define CH_NO_FREQ_433_0MHz 0x06a //工作频率433.0MHz(433MHz频段基准频率)#define CH_NO_FREQ_433_1MHz 0x06b //工作频率433.1MHz#define CH_NO_FREQ_433_2MHz 0x06c //工作频率433.2MHz#define CH_NO_FREQ_434_7MHz 0x07b //工作频率434.7MHz#define CH_NO_FREQ_473_5MHz 0x1ff //工作频率473.5MHz(433MHz频段最高频率)#define CH_NO_FREQ_844_8MHz 0x000 //工作频率844.8MHz(868MHz频段最低频率)#define CH_NO_FREQ_862_0MHz 0x056 //工作频率862.0MHz#define CH_NO_FREQ_868_0MHz 0x074 //工作频率868.0MHz(868MHz频段基准频率)#define CH_NO_FREQ_868_2MHz 0x075 //工作频率868.2MHz#define CH_NO_FREQ_868_4MHz 0x076 //工作频率868.4MHz#define CH_NO_FREQ_869_8MHz 0x07d //工作频率869.8MHz#define CH_NO_FREQ_895_8MHz 0x0ff //工作频率895.8MHz#define CH_NO_FREQ_896_0MHz 0x100 //工作频率896.0MHz#define CH_NO_FREQ_900_0MHz 0x114 //工作频率900.0MHz#define CH_NO_FREQ_902_2MHz 0x11f //工作频率902.2MHz#define CH_NO_FREQ_902_4MHz 0x120 //工作频率902.4MHz#define CH_NO_FREQ_915_0MHz 0x15f //工作频率915.0MHz(915MHz频段基准频率)#define CH_NO_FREQ_927_8MHz 0x19f //工作频率927.8MHz#define CH_NO_FREQ_947_0MHz 0x1ff //工作频率947.0MHz(915MHz频段最高频率)#define CH_NO_FREQ CH_NO_FREQ_430_0MHz //工作频率433.0MHz#define CH_NO_BYTE CH_NO_FREQ & 0xff //工作频率低8位 Byte0 01101100#define AUTO_RETRAN 0x20 //重发数据包Byte1.5 0#define RX_RED_PWR 0x10 //接收低功耗模式 Byte1.4 0#define PA_PWR__10dBm 0x00 //输出功率-10dBm Byte1.3~2 00#define PA_PWR_2dBm 0x04 //输出功率+2dBm Byte1.3~2#define PA_PWR_6dBm 0x08 //输出功率+6dBm Byte1.3~2#define PA_PWR_10dBm 0x0c //输出功率+10dBm Byte1.3~2#define HFREQ_PLL_433MHz 0x00 //工作在433MHz 频段 Byte1.1 0#define HFREQ_PLL_868MHz 0x02 //工作在868MHz 频段 Byte1.1#define HFREQ_PLL_915MHz 0x02 //工作在915MHz 频段 Byte1.1#define CH_NO_BIT8 CH_NO_FREQ >> 8 //工作频率第9位 Byte1.0 0#define TX_AFW_1BYTE 1 * 16 //发送地址宽度1字节 Byte2.7~4#define TX_AFW_2BYTE 2 * 16 //发送地址宽度2字节 Byte2.7~4#define TX_AFW_3BYTE 3 * 16 //发送地址宽度3字节 Byte2.7~4#define TX_AFW_4BYTE 4 * 16 //发送地址宽度4字节 Byte2.7~4 100#define RX_AFW_1BYTE 1 //接收地址宽度1字节 Byte2.3~0#define RX_AFW_2BYTE 2 //接收地址宽度2字节 Byte2.3~0#define RX_AFW_3BYTE 3 //接收地址宽度3字节 Byte2.3~0#define RX_AFW_4BYTE 4 //接收地址宽度4字节 Byte2.3~0 100#define RX_PW_1BYTE 1 //接收数据宽度1字节 Byte3.5~0#define RX_PW_32BYTE 32 //接收数据宽度32字节 Byte3.5~0 00100000#define TX_PW_1BYTE 1 //发送数据宽度1字节 Byte4.5~0#define TX_PW_32BYTE 32 //发送数据宽度32字节 Byte4.5~0 00100000#define RX_ADDRESS_0 RX_ADDRESS >> 24 //接收有效地址第1字节 Byte5 11100111#define RX_ADDRESS_1 (RX_ADDRESS >> 16) & 0xff //接收有效地址第2字节 Byte6 11100111#define RX_ADDRESS_2 (RX_ADDRESS >> 8) & 0xff //接收有效地址第3字节 Byte7 11100111#define RX_ADDRESS_3 RX_ADDRESS & 0xff //接收有效地址第4字节 Byte8 11100111#define CRC_MODE_16BIT 0x80 //CRC16模式Byte9.7 1#define CRC_MODE_8BIT 0x00 //CRC8模式Byte9.7#define CRC_EN 0x40 //CRC使能Byte9.6 1#define CRC16_EN 0xc0 //CRC16模式使能 Byte9.7~6 11#define CRC8_EN 0x40 //CRC8模式使能Byte9.7~6#define XOF_20MHz 0x20 //晶体振荡器频率20MHz Byte9.5~3#define XOF_16MHz 0x18 //晶体振荡器频率16MHz Byte9.5~3 100#define XOF_12MHz 0x10 //晶体振荡器频率12MHz Byte9.5~3#define XOF_8MHz 0x08 //晶体振荡器频率8MHz Byte9.5~3#define XOF_4MHz 0x00 //晶体振荡器频率4MHz Byte9.5~3#define UP_CLK_EN 0x40 //输出时钟使能Byte9.2 1#define UP_CLK_FREQ_500kHz 0x03 //输出时钟频率500kHz Byte9.1~0 11#define UP_CLK_FREQ_1MHz 0x02 //输出时钟频率1MHz Byte9.1~0#define UP_CLK_FREQ_2MHz 0x01 //输出时钟频率2MHz Byte9.1~0#define UP_CLK_FREQ_4MHz 0x00 //输出时钟频率4MHz Byte9.1~0#define UP_CLK_EN_500kHz 0x43 //输出时钟频率500kHz Byte9.2~0 111#define UP_CLK_EN_1MHz 0x42 //输出时钟频率1MHz Byte9.2~0#define UP_CLK_EN_2MHz 0x41 //输出时钟频率2MHz Byte9.2~0#define UP_CLK_EN_4MHz 0x40 //输出时钟频率4MHz Byte9.2~0#define TX_ADDRESS_0 TX_ADDRESS >> 24 //发送有效地址第1字节#define TX_ADDRESS_1 (TX_ADDRESS >> 16) & 0xff //发送有效地址第2字节#define TX_ADDRESS_2 (TX_ADDRESS >> 8) & 0xff //发送有效地址第3字节#define TX_ADDRESS_3 TX_ADDRESS & 0xff //发送有效地址第4字节//nrf905命令控制字 author:HotPower#define WC 0x00 // Write configuration register command#define RC 0x10 // Read configuration register command#define WTP 0x20 // Write TX Payload command#define RTP 0x21 // Read TX Payload command#define WTA 0x22 // Write TX Address command#define RTA 0x23 // Read TX Address command#define RRP 0x24 // Read RX Payload command#define uint unsigned int#define uchar unsigned char#define SET(a,b) a|=(1<<b)#define CLR(a,b) a&=~(1<<b)#define CPL(a,b) a^=(1<<b)#define CHK(a,b) (a&(1<<b))//定义使用的IO口#define PTR8000_DD_I DDRB#define PTR8000_PO_I PORTB//PORTB#define PWR 0#define TRXCE 1#define DR 2#define TX_EN 3#define CSN 4#define MOSI 5#define MISO 6#define SCKvoid xian_shi(unsigned char hang,unsigned char wei_zhi,unsigned char shi_zhi){setaddress(hang,wei_zhi);time_conver(shi_zhi);wr_byte(p);wr_byte(q);}void time_conver(uchar data){switch(data){case 0:{p=0xa3;q=0xb0;break;}case 1:{p=0xa3;q=0xb1;break;}case 2:{p=0xa3;q=0xb2;break;}case 3:{p=0xa3;q=0xb3;break;}case 4:{p=0xa3;q=0xb4;break;}case 5:{p=0xa3;q=0xb5;break;}case 6:{p=0xa3;q=0xb6;break;}case 7:{p=0xa3;q=0xb7;break;}case 8:{p=0xa3;q=0xb8;break;}case 9:{p=0xa3;q=0xb9;break;}}}void wr_byte(uchar x){ uint i,j,q;q=x;PORTC|=(1<<1);for(i=0;i<=4;i++){PORTC&=~(1<<2);PORTC|=(1<<2);}PORTC&=~(1<<2);PORTC&=~(1<<1);PORTC|=(1<<2);PORTC&=~(1<<2);PORTC|=(1<<1);PORTC|=(1<<2);PORTC&=~(1<<2);PORTC&=~(1<<1);PORTC|=(1<<2);PORTC&=~(1<<2);//传数前的准备//010for(j=0;j<4;j++){x=q;if((x&0x80)==0){PORTC&=~(1<<1);}else{PORTC|=(1<<1);}PORTC|=(1<<2);PORTC&=~(1<<2);q=q<<1;}PORTC&=~(1<<1);for(i=0;i<=3;i++){PORTC|=(1<<2);PORTC&=~(1<<2);}for(j=0;j<4;j++){x=q;if((x&0x80)==0){PORTC&=~(1<<1);}else{PORTC|=(1<<1);}PORTC|=(1<<2);PORTC&=~(1<<2);q=q<<1;}PORTC&=~(1<<1);for(i=0;i<=3;i++){PORTC|=(1<<2);PORTC&=~(1<<2);}delay_nms(1);}void LCD_write(uchar x, uchar y, uchar *p){setaddress(x,y);while(*p){wr_byte(*p);p++;}}void setaddress(uchar x, uchar y){uchar move;if(x==1){ move=0x80 + y-1; }if(x==2){ move=0x90 + y-1; }if(x==3){ move=0x88 + y-1; }if(x==4){ move=0x98 + y-1; }wr_command(move);delay_nms(1);}void time1_init(void){TCCR1B=0x04;TCNT1H=0x85;TCNT1L=0xee;TIMSK=0x04;}#pragma interrupt_handler time1_int:9void time1_int(){time++;time1++;xian_shi(2,4,time1/60);LCD_write(2,5,"- ");xian_shi(2,6,((time1%60)/10)); //液晶显示xian_shi(2,7,((time1%60)%10));xian_shi(3,4,((time%60)/10)); //液晶显。