当前位置:文档之家› 上海交通大学 工科创1

上海交通大学 工科创1


二、智能小车系统
单片机
开关
电阻
电容
二极管
三极管

5V 直流电机
PCB
轮胎

小车
此作品主要分单片机处理系统,直流电机驱动模块,步进电机驱动模块等。如图所示,小车的主 要构件是 PCB,即单片机印刷线路板,它是电子元器件的支撑体,是电子元器件电气连接的载体。 PCB 根据电路层数分类,分为单面板、双面板和多层板。而这辆小车所用的都是最常见的单面板。 单面板上焊接着各种电子元器件,如:单片机、电阻、电容、开关、二极管、三极管等。作为核心处 理器的单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU、随机存储器 RAM、只读存储器 ROM、多种 I/O 口和中断系统、定时器/计数器等功能集成到 一块硅片上构成的一个小而完善的微型计算机系统,用于处理编程。另外,小车的驱动还需要 5V 的 直流电机、轮胎等基本构件。
else if(CAR_RunTimeCnt <= 235) {
MD0_DIR = ~MD0_DIR; MD1_DIR = ~MD1_DIR; PWM0Soft_NextDutyVal = 0; PWM1Soft_NextDutyVal = 0; }
开始 D→O 于 O 点停顿 2s 于 O 点转向至 OB 方向 O→B 于 B 点停顿 2s 于 B 点转向至 BC 方向 B→C 于 C 点转向至 CO 方向 于 C 点停顿 2s C→O 于 O 点停顿 2s
else if(CAR_RunTimeCnt <= 548)
于 O 点转向至 OA 方向 O→A
于 A 点停顿 2s A → O(反向) 于 O 点使车头转 向∠BOC 范围内
结束
{ MD0_DIR = ~MD0_DIR; MD1_DIR = 1; PWM0Soft_NextDutyVal = 0; PWM1Soft_NextDutyVal = 255;
MD0_DIR = ~MD0_DIR; MD1_DIR = 1; PWM0Soft_NextDutyVal = 0; PWM1Soft_NextDutyVal = 255; }
else if(CAR_RunTimeCnt <= 215) {
MD0_DIR = 1; MD1_DIR = 1; PWM0Soft_NextDutyVal = 255; PWM1Soft_NextDutyVal = 255; }
else if(CAR_RunTimeCnt <= 254) {
MD0_DIR = ~MD0_DIR; MD1_DIR = 1; PWM0Soft_NextDutyVal = 0; PWM1Soft_NextDutyVal = 255; }
else if(CAR_RunTimeCnt <= 380) {
SHANGHAI JIAO TONG UNIVERSITY
实践报告
PRACTICE REPORT
报告题目: 自动控制小车——综合设计任务
学生姓名: 占文婷, 徐佳琳, 吴文瑾, 黄柳 学生学号: 5121509139,5130159003,5131509013,5131509124
一、引言
1. 实践课程介绍 工程技术与创新是一门综合了理论和实践的课程。工程技术与创新是原创性科学研究和技术
else if(CAR_RunTimeCnt <= 125) {
MD0_DIR = ~MD0_DIR; MD1_DIR = ~MD1_DIR; PWM0Soft_NextDutyVal = 0; PWM1Soft_NextDutyVal = 0; }
else if(CAR_RunTimeCnt <= 136) {
MD0_DIR = 1; MD1_DIR = 1; PWM0Soft_NextDutyVal = 127.5; PWM1Soft_NextDutyVal = 127.5; }
else if(CAR_RunTimeCnt <= 399) {
MD0_DIR = ~MD0_DIR; MD1_DIR = 1; PWM0Soft_NextDutyVal = 0; PWM1Soft_NextDutyVal = 255; }
else if(CAR_RunTimeCnt <= 2000) {
PWM0Soft_NextDutyVal = 0; PWM1Soft_ = 0; } Else …… ……
五、控制参数的整定
出现的问题
控制参数的整定
在 O 点第一次转弯超出圆圈,是因为小车转弯过 将 D→O 直行时间调小,给转弯留出余地,将 12.4s 程中的仍需有一定行进距离,二小组计算中,将 减小为 10.5s 小车转弯理想化,没有考虑这一方面
0 ~ 124 124 ~ 144 144 ~ 155 155 ~ 235 235 ~ 255 255 ~ 277 277 ~ 526
i.于 C 小车转向,2.2s; j.C→O,8s; k.于 O 停顿,2s; l.于 O 小车转向,1.1s; m.O→A,12.4s n.于 A 停顿,2s; o.A→O,反向,12.4s p.于 O 小车转向,1.3s;
于 B 点转弯角度过大,可能是由于地面粘滞力偏 将 B 点的转弯实践由 1.1s 缩小至 0.9s 小的原因
B→C 的直行段远超出规定距离,可能是因为速度 将 B→C 段时间缩小至 15s 并未完全成比例变化,或者由于人工贴路线,导 致 BC 段长度大于 2.4m
小车在 C 点无法进行转弯,可能是由于先减速至 使小车在 C 点先转弯后停顿 零,突然要求加速,由于惯性和摩擦力以及地面 粘滞力太大,导致无法转弯
MD0_DIR = 1; MD1_DIR = 1; PWM0Soft_NextDutyVal = 255; PWM1Soft_NextDutyVal = 255; }
else if(CAR_RunTimeCnt <= 538) {
MD1_DIR = ~MD1_DIR; MD0_DIR = ~MD0_DIR; PWM0Soft_NextDutyVal = 0; PWM1Soft_NextDutyVal = 0; }
四、程序设计
if(TIME_100mSEC_Flag) {
if(CAR_MoveEN) {
CAR_RunTimeCnt++;
if(CAR_RunTimeCnt <= 105) {
MD0_DIR = 1; MD1_DIR = 1; PWM0Soft_NextDutyVal = 255; PWM1Soft_NextDutyVal = 255; }
以下对主要的几个模块加以说明: 1.电源模块: 由于小车采用电池供电,最小系统有单片机、晶振电路、复位电路、电源的转换电路。
2.电机驱动模块: 使用芯片驱动电机,芯片可以直接通过电源来调节输出电压,可以直接用单片机的 IO 口提供信号, 而且带有使能端,方便调速,电路简单,性能稳定。芯片可以驱动两个二相电机。 3.单元模块设计: 经过测量,一般四节新南孚电池串联带负载后可提供 5.8V 电压。经过二极管稳压至 5.1-5.2V 后给逻 辑器件供电并给系统提供高电平标准。本组小车用的是可充电电池,帮助循环使用,节能环保。 4.主控芯片: 使用 Mega16L 接电机驱动芯片的 IN1-IN4,实现对电机驱动芯片的控制,进而控制电机的转动。使用 Mega16L 接 PC0、PC1 接受独立按键信号,实现对小车行进过程中速度的控制。速度进行提前设定, 由于我们小车电机电源没有经过稳压,随着电池电量的消耗,电机电池组的电压逐渐降低,因而小车 速度会发生变化。使得即使电池组电量发生变化,小车也能按预定速度进行。 软件 软件:Keilc51_v702 软件,并向其中添加 STC 单片机,为了下载小车运行程序并让小车进行执行, 还需安装小车 demo 程序、下载线驱动等。 1.编译软件:Keilc51_v702 软件。找到压缩包 Keilc51_v702,解压找到 Setup,改掉属性,安装完全版 本,并填写对应序列号,完成安装后,需添加 STC 单片机。 2.下载程序:下载驱动,后安装烧写程序相关软件 STC—ISP-V483,然后打开程序进行烧写,首先要 注意单片机型号是否正确,还有端口是否正确;打开程序文件后缀为 Hex 的文件,下载。 B 转换口软件:USB-232 转接线驱动程序,于电脑中下载,并于设备管理器中找到合适对应的端
口,使得 USB 转串口线得以应用。
三、方案设计
1.路线:D→O→B→C→O→A→O
2.速度设计:其中 D→O→B 及 C→O→A→O 所用速度皆为最大速度 19.3cm/s,B→C 则为 9.65cm/s。
3.预期时间:
a.D→O,12.4s; b.于 O 停顿,2s; c.于 O 小车转向,1.1s; d.O→B,8s; e.于 B 停顿,2s; f.于 B 小车转向,2.2s; g.B→C,24.9s; h.于 C 停顿,2s;
2.实践内容 五个岛屿(A、B、C、D、O)通过五个桥互连,其相互位置如图所示:
A
O
D
B
C
选择任何一个岛屿作为起点; 设计行进路线,需途径所有的岛屿和桥(至少一次),最后回到 O 岛圆心;
3.实践要求 到达每个岛屿,要停顿 1-2 秒; 途径 0.6 米宽的桥时,小车行驶速度约为途径 0.8 米宽桥的一半; 最后在 O 岛中心停车,车头方向在角 BOC 范围内。
}
else if(CAR_RunTimeCnt <= 636) {
MD0_DIR = 1; MD1_DIR = 1; PWM0Soft_NextDutyVal = 255; PWM1Soft_NextDutyVal = 255; }
else if(CAR_RunTimeCnt <= 656) {
MD1_DIR = ~MD1_DIR; MD0_DIR = ~MD0_DIR; PWM0Soft_NextDutyVal = 0; PWM1Soft_NextDutyVal = 0; }
相关主题