3392
- 收藏
- 点赞
- 分享
- 举报
简易智能电动车设计
简易智能电动车设计
摘 要
本系统设计以MC9S12DDG128单片机为核心器件实现对电动小车行驶的自动控制。通过多个红外光电传感器对汽车运动位置进行检测,运用PWM直流电机调速技术,完成对小车运动方向和避开障碍物的控制,使用PID算法使小车的速度快速得到响应。
一、 方案的选择和论证
根据题目基本要求,可将其划分为如下几个部分:
●控制器模块;
●障碍物探测模块;
●路面轨迹检测模块;
●环境光照测量模块;
●电机驱动模块;
●显示模块。
●电源模块
1、总体方案:
方案一:用继电器来控制电机的停与转,但是转速不可调。用红外传感器实现避障,红外传感器发出了红外光,障碍物反射光,距离障碍物远近不同,传感器输出的信号不同,将信号送入单片机进行A/D转换,控制小车的左传、右转。
方案二:用单片机的PWM信号控制电机的转速,即可实现电机转弯,用红外接近传感器实现避障,当距离障碍物10cm时,红外接近传感器由低电平变为高电平,由单片机控制小车转弯,其中避障采用红外接近开关,电机驱动采用MC33886其有两路PWM信号输入,可同时控制2个直流电机进行调速。
比较两种方案,运用方案一,信号的处理比较复杂,不容易实现对小车的控制。方案二运用了比较先进的传感器,使问题的处理变得相对简单。同时由于Freescale MC9S12DG128单片机具有16路10位/8位高速AD接口,可方便的扩展任何传感器。16位4通道/8位8通道的PWM口可以方便的扩展电机。通过比较我们最终选用了方案二,并基本完成了题目设计要求。
2、控制器模块:
系统设计以MC9S12DDG128单片机为核心器件,可方便的扩展传感器电路,16位4通道/8位8通道的PWM口可以方便的扩展电机,因此可以很好的控制小车的运行。
3、路面轨迹检测模块:
路面检测模块实现小车检测路面的黑线,当检测到黑线小车在黑线上停留5秒钟,然后加速前进。地面信息的采集可采用光敏电阻辨识路面黑白两种状态,但是该方法受环境光照强都的影响较大。数据误差较大。这里采用光敏电阻采集环境关照的情况。并且可以设定环境光的门限值,当环境光强低于某一门限值时智能小车自行启动。搜索房间情况。
4、障碍物探测模块:
障碍物探测模块用来判断小车前方是否由障碍物,并确定小车与障碍物之间的距离。为了确保小车在行驶过程中避免撞到障碍物,系统需要利用测距传感器测出障碍物与小车之间的距离,使小车作出正确的动作,避免与障碍物相撞。
5、距离测量模块:
距离测量模块使用来测量小车从启动到任意时刻所走的路程,考虑到小车在行驶过程中,车轮旋转一圈所行驶的距离就是车轮的周长,因此只要在某时间间隔内测量出车轮的圈数,依照l=n×c(其中l为路程,c为车轮周长,n为圈数),即可得出路程数值。
6、电机驱动模块:
直流电机驱动使用33886电机驱动专用芯片在驱动性能方面比L298优秀,并且电路简单容易实现。
7、显示模块:
在小车运行的过程中,需要对小车运行的时间和路程进行显示。可以考虑两种显示方案。
方案一:使用液晶显示屏显示时间和路程。液晶显示屏具有轻薄短小,耗电量低,无辐射危险,可视面积大,画面效果好,分辨率高等特点。
方案二:使用传统的数码显示。数码管具有低能耗,低损耗等特点,但是数码显示的信息量较小。
在本系统中,采用液晶显示。
8、电源模块:
系统使用可充电池供电。
二、 系统实现原理方框图
1、系统原理
利用光敏电阻来感知黑线,能够使小车沿着黑线的轨迹走;当检测到障碍物时,利用红外传感器发出了红外光,障碍物反射光,使小车能够避开障碍物。
2、系统方框图
三、 单元电路设计
1、光敏电阻电路:
利用光敏电阻可以感知颜色的深浅,并根据颜色的深浅的不同而输出不同的电压信号,从而使小车区分白纸和黑线。具体实现电路如下所示:
2、PWM信号发生电路:
PWM信号的发生一般我们都会采用单片机提供的定时器模块。其缺点是:单片机的定时器数量有限。一般都需要留做他用,MC9S12DG128单片机PWM周期和占空比的计算方法。
系统时钟经过分频得到A,B,SA,SB 分别送给PWM模块,可以得到8路不同频率不同占空比的PWM信号。
3、电机驱动电路:
4、单片机最小系统板电路:
5、电源部分电路:
系统使用的电压是由:5.0v, 6v, 7.8v。各种传感使用的电压是5伏特,电源使用7.8伏的蓄电池供电。其中的6v电压供给前面的红外壁障传感器。
系统在启动瞬间,由于电机的突然起动可能会拉低系统电压,造成单片机的复位,在运行过程中也有可能造成上述结果。所以这里给单片机和传感器供电分立,单片机采用LM2940,其压差为0.5v。传感器采用7805和7806。
具体电路如下:
6、红外传感部分电路:
7、显示部分电路:
系统的人机接口是1602液晶显示模块,使用MC9S12DG128单片机的PORTA和PORTK口。PORTK口的低3位用作CS,RW,E操作口,PORTA用作数据接口。
其中PORTA口必须加上拉电阻。
三、软件设计
1.主程序流程图:
2.红外避障传感器流程图:
关于控制算法:
方案一:采用神经网络,该控制算法具有记忆功能,对要处理的信息进行预测。能较快的响应并达到平衡状态。
方案二:采用模糊控制算法,优点是使得要处理的信息更加准确。模糊化将采集到的数据通过隶属度函数影射到模糊集,然后经过去模糊化再将模糊集的信息影射到精确集。但是难度在于隶属度函数的选取。没有规则可依。
方案三:采用较为通用的PID控制算法,控制电机的转速。
编成算式:
#define C 0.16
float KP = 8;
float KD = 0.01;
float KI = 1;
//float C=0.17; // 车轮周长
float position;
float cPWMK;
float error1 = 0;
float error2 = 0;
float error3 = 0;
float speed(float P) {
float temp;
temp = 1.7-C/P;
return temp;
}
extern void driver_dcmotor(unsigned int pwm_input_dc){
PWMDTY45=pwm_input_dc;
}
long PID(unsigned int target_pwm)
{
unsigned int PWM;
error1=speed(period);
cPWMK=KP*(error1-error2)+KI*error1+KD*(error1-2*error2+error3);
PWM =(int)(target_pwm+cPWMK);
error2 = error1;
error3 = error3 + error1;
return PWM;
}
摘 要
本系统设计以MC9S12DDG128单片机为核心器件实现对电动小车行驶的自动控制。通过多个红外光电传感器对汽车运动位置进行检测,运用PWM直流电机调速技术,完成对小车运动方向和避开障碍物的控制,使用PID算法使小车的速度快速得到响应。
一、 方案的选择和论证
根据题目基本要求,可将其划分为如下几个部分:
●控制器模块;
●障碍物探测模块;
●路面轨迹检测模块;
●环境光照测量模块;
●电机驱动模块;
●显示模块。
●电源模块
1、总体方案:
方案一:用继电器来控制电机的停与转,但是转速不可调。用红外传感器实现避障,红外传感器发出了红外光,障碍物反射光,距离障碍物远近不同,传感器输出的信号不同,将信号送入单片机进行A/D转换,控制小车的左传、右转。
方案二:用单片机的PWM信号控制电机的转速,即可实现电机转弯,用红外接近传感器实现避障,当距离障碍物10cm时,红外接近传感器由低电平变为高电平,由单片机控制小车转弯,其中避障采用红外接近开关,电机驱动采用MC33886其有两路PWM信号输入,可同时控制2个直流电机进行调速。
比较两种方案,运用方案一,信号的处理比较复杂,不容易实现对小车的控制。方案二运用了比较先进的传感器,使问题的处理变得相对简单。同时由于Freescale MC9S12DG128单片机具有16路10位/8位高速AD接口,可方便的扩展任何传感器。16位4通道/8位8通道的PWM口可以方便的扩展电机。通过比较我们最终选用了方案二,并基本完成了题目设计要求。
2、控制器模块:
系统设计以MC9S12DDG128单片机为核心器件,可方便的扩展传感器电路,16位4通道/8位8通道的PWM口可以方便的扩展电机,因此可以很好的控制小车的运行。
3、路面轨迹检测模块:
路面检测模块实现小车检测路面的黑线,当检测到黑线小车在黑线上停留5秒钟,然后加速前进。地面信息的采集可采用光敏电阻辨识路面黑白两种状态,但是该方法受环境光照强都的影响较大。数据误差较大。这里采用光敏电阻采集环境关照的情况。并且可以设定环境光的门限值,当环境光强低于某一门限值时智能小车自行启动。搜索房间情况。
4、障碍物探测模块:
障碍物探测模块用来判断小车前方是否由障碍物,并确定小车与障碍物之间的距离。为了确保小车在行驶过程中避免撞到障碍物,系统需要利用测距传感器测出障碍物与小车之间的距离,使小车作出正确的动作,避免与障碍物相撞。
5、距离测量模块:
距离测量模块使用来测量小车从启动到任意时刻所走的路程,考虑到小车在行驶过程中,车轮旋转一圈所行驶的距离就是车轮的周长,因此只要在某时间间隔内测量出车轮的圈数,依照l=n×c(其中l为路程,c为车轮周长,n为圈数),即可得出路程数值。
6、电机驱动模块:
直流电机驱动使用33886电机驱动专用芯片在驱动性能方面比L298优秀,并且电路简单容易实现。
7、显示模块:
在小车运行的过程中,需要对小车运行的时间和路程进行显示。可以考虑两种显示方案。
方案一:使用液晶显示屏显示时间和路程。液晶显示屏具有轻薄短小,耗电量低,无辐射危险,可视面积大,画面效果好,分辨率高等特点。
方案二:使用传统的数码显示。数码管具有低能耗,低损耗等特点,但是数码显示的信息量较小。
在本系统中,采用液晶显示。
8、电源模块:
系统使用可充电池供电。
二、 系统实现原理方框图
1、系统原理
利用光敏电阻来感知黑线,能够使小车沿着黑线的轨迹走;当检测到障碍物时,利用红外传感器发出了红外光,障碍物反射光,使小车能够避开障碍物。
2、系统方框图
三、 单元电路设计
1、光敏电阻电路:
利用光敏电阻可以感知颜色的深浅,并根据颜色的深浅的不同而输出不同的电压信号,从而使小车区分白纸和黑线。具体实现电路如下所示:
2、PWM信号发生电路:
PWM信号的发生一般我们都会采用单片机提供的定时器模块。其缺点是:单片机的定时器数量有限。一般都需要留做他用,MC9S12DG128单片机PWM周期和占空比的计算方法。
系统时钟经过分频得到A,B,SA,SB 分别送给PWM模块,可以得到8路不同频率不同占空比的PWM信号。
3、电机驱动电路:
4、单片机最小系统板电路:
5、电源部分电路:
系统使用的电压是由:5.0v, 6v, 7.8v。各种传感使用的电压是5伏特,电源使用7.8伏的蓄电池供电。其中的6v电压供给前面的红外壁障传感器。
系统在启动瞬间,由于电机的突然起动可能会拉低系统电压,造成单片机的复位,在运行过程中也有可能造成上述结果。所以这里给单片机和传感器供电分立,单片机采用LM2940,其压差为0.5v。传感器采用7805和7806。
具体电路如下:
6、红外传感部分电路:
7、显示部分电路:
系统的人机接口是1602液晶显示模块,使用MC9S12DG128单片机的PORTA和PORTK口。PORTK口的低3位用作CS,RW,E操作口,PORTA用作数据接口。
其中PORTA口必须加上拉电阻。
三、软件设计
1.主程序流程图:
2.红外避障传感器流程图:
关于控制算法:
方案一:采用神经网络,该控制算法具有记忆功能,对要处理的信息进行预测。能较快的响应并达到平衡状态。
方案二:采用模糊控制算法,优点是使得要处理的信息更加准确。模糊化将采集到的数据通过隶属度函数影射到模糊集,然后经过去模糊化再将模糊集的信息影射到精确集。但是难度在于隶属度函数的选取。没有规则可依。
方案三:采用较为通用的PID控制算法,控制电机的转速。
编成算式:
#define C 0.16
float KP = 8;
float KD = 0.01;
float KI = 1;
//float C=0.17; // 车轮周长
float position;
float cPWMK;
float error1 = 0;
float error2 = 0;
float error3 = 0;
float speed(float P) {
float temp;
temp = 1.7-C/P;
return temp;
}
extern void driver_dcmotor(unsigned int pwm_input_dc){
PWMDTY45=pwm_input_dc;
}
long PID(unsigned int target_pwm)
{
unsigned int PWM;
error1=speed(period);
cPWMK=KP*(error1-error2)+KI*error1+KD*(error1-2*error2+error3);
PWM =(int)(target_pwm+cPWMK);
error2 = error1;
error3 = error3 + error1;
return PWM;
}
我来回答
回答0个
时间排序
认可量排序
暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2008-07-06 19:07:02
-
2020-12-01 12:34:05
-
2018-10-26 13:38:38
-
02014-12-21 11:04:08
-
2008-11-14 18:51:37
-
2013-12-13 17:13:53
-
2013-11-30 21:55:20
-
2013-12-03 20:28:27
-
2015-01-08 14:07:37
-
2013-12-01 22:50:15
-
2013-12-02 16:26:31
-
2013-12-02 16:36:49
-
2013-12-01 22:32:11
-
2013-11-20 20:47:49
-
2013-11-20 20:32:53
-
2018-09-20 18:22:59
-
2013-12-04 12:32:31
-
2013-12-03 20:39:39
-
2020-07-17 17:23:24
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
-
10求HI3519DV500_SDK_V2.0.1.1
-
5有偿求HI3516DV500 + OV5647驱动
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认