|
楼主
查看: 4244回复: 0
发表于 2020-10-22 21:45:56
只看该作者
摘要
设计方案以MSP430单片机为系统的控制核心,采用红外传感式模块寻迹,实现智能小车的自动寻迹行驶与停止。在实验中采用黑白相间的引导线作为智能小车的既定路线,使小车能够完成爬坡寻迹与定点停车,系统驱动采用控制方式为PWM的直流电机。本报告详细介绍了红外式传感器寻迹模块的工作原理,寻迹模块的电路图以及在以MSP430单片机为控制核心的基础上如何实现智能寻迹小车的自动寻迹行驶。并简要介绍了系统的电路图。该技术可用于无人生产线、服务机器人、仓库等领域,随着汽车ECU电子控制的发展,在汽车上配备远程信息处理器,传感器和接收器,通过这些器件的协调控制可以实现汽车的无人驾驶。
关键词:MSP430单片机,红外式传感器,爬坡,寻迹,定点停车
目录
一.系统方案 3
1.1系统的总体方案与设计框图 3
1.2系统流程图 4
1.3各个模块方案的设计与论证 4
1.3.1电机的选择 4
1.3.2路面寻线模块的选择 4
1.3.3电源的选择 5
1.4方案描述——行驶原理与停止原理 5
二.电路与程序分析 5
2.1各个系统的电路原理 5
2.1.1主控制模块 5
2.1.2电机模块 5
2.1.3红外寻迹模块 6
2.1.4蜂鸣器电路 7
2.2系统的编译工具以及系统代码
2.2.1编译软件 7
2.2.2系统代码 8
三. 理论分析与计算 8
3.1理论分析 8
3.2计算方法 8
四. 测试结果与分析 8
4.1测试结果 8
4.2结果分析 9
一.系统方案
1.1系统的总体方案与设计框图
题目要求设计,本系统由MSP4305529单片机,L298电机模块,红外寻迹模块TCRT5000,18650锂电池等构成,具体系统结构框图如下图所示:
1.2系统流程图
1.3各个模块方案的设计与论证
1.3.1电机的选择
方案一:使用继电器对电机进行开关控制和调制。但缺点很明显,继电器响应慢而且机械结构容易坏。
方案二:使用三极管或者达林顿管,结合单片机输出PWM信号实现调速的目的,此方案易于实施,但若控制电机转动方向较为困难。
方案三:使用PWM控制芯片来实现对电机的控制。
方案选择:采用方案三。该方案电路简单,性能稳定,可以轻松实现对电机方向的控制。
1.3.2路面寻线模块的选择
方案一:采用光敏传感器,根据白色背景和黑线反光程度的不同来判断传感器是否位于黑线上。
方案二:采用反射式红外传感器来进行探测。只要选择数量和探测距离合适的红外传感器,可以准确的判断出黑线的位置。
方案选择:采用方案二。方案一受环境光的影响太大,效果不佳。而红外光不易受到环境光的干扰。
1.3.3电源的选择
方案一:采用若干普通干电池(7号电池)串联。但缺点是不可充电,造成的浪费严重,另外所需要的电池多,体积大,质量大,小车空间不够。
方案二:采用容量大的锂电池,优点是可充电,只需要两节电压较高的电池就可以给系统供电。
方案选择:选择方案二。
1.4方案描述——行驶原理与停止原理
若红外对管2检测到黑线,小车直走;若只有红外管1检测到黑线,小车左拐:若只有红外管3检测到黑线,小车右拐;若三个管都没有检测到黑线,小车保持原来的状态行驶,若三个管都检测到黑线,小车停止。红外检测模块简图如下所示:
二.电路与程序分析
2.1各个系统的电路原理
2.1.1主控制模块
MSP430系列单片机是美国TI公司的一种16位的超低功耗的混合信号处理器,适合于低功耗、高速实时控制以及数据计算,它拥有更多的片上资源供设计使用,是设计的不错选择。
2.1.2电机模块
L298N原理图如上图所示:
IN1(3) IN2(4) ENA 电机状态
0 1 1 正转
1 0 1 反转
0 0 0 停止
1 1 1 停止
电机工作状态表
L298可驱动2个电机,0UT1、OUT2和OUT3、OUT4之间分别接2个电动机。INIIN2,IN3IN4脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。也利用单片机产生PWM信号接到ENA,ENB端子,对电机的转速进行调节。
电机驱动芯片L298N包括LED发光极管、续流二极管、极性电容、稳压器、散热片、接线端子、L298N、一般电容等元件组成。
A.内部采用H桥驱动电路H桥式电机驱动电路包括四个三极管和一个电机,其外形像字母H。故叫做H桥驱动电路。要使电机M运转,必须使对角线上的一对三极管导通,其驱动原理示意图如图所示:
B.功能
对于单项的电机驱动,只要用一个大功率的三极管带动电机即可,当电机需要双向转动时,则需要四个三极管的’H'桥电路,如果需要调速,则需要三极管和场效应管等开关元件实现PWM波调速。
C.性能
1.输出电流和电压的范围,它决定电路能驱动多大功率电机。
2.效率。
3.对控制输入端的影响。
4.对电源的影响。
5.可靠性。
2.1.3红外寻迹模块
A.检测反射距离,通过调节电位器可以测量1至25毫米的距离;
B.比较器输出,信号干净,波形好,驱动力强,超过15mA。
C.工作电压:3.3V至5V
D.输出形式:0和1,具体到题目,检测到黑线为1,白线为0。
E.使用宽电压LM393比较器。
红外测距模块的电路原理图如下所示:
2.1.4蜂鸣器电路
2.2系统编译工具及系统软件代码
2.2.1编译软件
本系统采用CCS作为编译MSP4305529单片机的软件,CCS,英文全称是Code Composer Studio,它是美国德州仪器公司(Texas Instrument,TI)出品的代码开发和调试套件。该软件有如下优点:
具有集成可视化编辑界面,含有诸多继承代码生成工具。
Code Composer Studio IDE 提供强健、成熟的核心功能与简便易用的配置和图形可视化工具,使系统设计更快。
应用设计 - 包括 DSP BIOS、参考框架和更新顾问,编码与编译 - 包括 C/C++ 和汇编语言以及 CodeWright 集成编辑器,调试 - RTDX 快速模拟和连接/断开连接,分析与调优 - 包括实时分析、编译器分析和回卷。
2.2.2系统代码
见附录
三.理论分析与计算
3.1理论分析
通过调节PWM波(脉冲宽度调制)的占空比实现小车速度的快慢,具体原理如下所示:
基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。
也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。
3.2计算方法
通过分析,按照坡道所设置的角度,调节PWM占空比用以设置小车“马力”大小,以适应不同的坡度。
四.测试结果与分析
4.1测试结果
根据不同的斜坡角度与小车内部所设置与之配套的占空比,经过反复实验得到如下表所示实验数据:
PWM占空比 坡道调节角度 所需要的时间(s)
35% 0 17
45% 10 18
55% 15 16
70% 31 18
4.2结果分析
该小车实验结果分析除了受到系统误差外,还受到电池长时间使用电压降低,木板和轮胎的粗糙程度,小车自重等影响,试验时应该尽量减小这些误差的影响。
附录
仅展示主函数代码:
#include <bap_ccd.h>
#include <bap_lcd.h>
#include <bap_myScope.h>
#include <bap_TB6612.h>
#include <bsp.h>
#include <bsp_exit.h>
#include <bsp_key.h>
#include <bsp_led.h>
#include <bsp_pwm.h>
#include <bsp_timer.h>
#include <control.h>
#include <fun.h>
#include <in430.h>
#include <msp430f5529.h>
#include <stdint.h>
void control(void);
uint8_t carStartFlag = 0;
uint8_t carSetTravelTime_s = 10;
void main(void)
{
uint8_t key_value = 0;
WDTCTL = WDTPW | WDTHOLD; // 关闭看门狗
FLL_SET(); // 设置系统时钟为25M
LED_Init(); // led初始化
KEY_Init(); // 按键初始化
EXIT_Init(); //外部中断初始化
TIMER_A1_Init();
ccd_Init();
myScopeInit();
TB6612_IO_Init();
TimerA0_1_pwm_init_1000FullDuty(0, 1000);//占空比,频率
TimerA0_2_pwm_init_1000FullDuty(0, 1000);//占空比,频率
TimerA0_3_pwm_init_1000FullDuty(0, 1000);//占空比,频率
TimerA0_4_pwm_init_1000FullDuty(0, 1000);//占空比,频率
_EINT(); //中断使能
ips114_init();
ips114_display_chinese(0,0,16,chinese_test[0],6,RED);
ips114_showchar(96,0,':');
ips114_showuint8_t(112,0,10);
ips114_showchar(144,0,'s');
while(1)
{
if(!carStartFlag)
{
TSL1401_GetLine();
TSL1401_Handle();
LCD_Display_CCD_Binaryzation_Data();
key_value = KEY_Scan();
if(key_value == 1) carStartFlag = 1;
else if(key_value == 2)
{
if( ++carSetTravelTime_s > 20) carSetTravelTime_s = 10;
ips114_showuint8_t(112,0,carSetTravelTime_s);
}
}
else
{
if(controlTaskRunFlag)
{
TSL1401_GetLine();
TSL1401_Handle();
// LCD_Display_CCD_now_position();
control_frontWheel();
// TimerA0_1_pwm_duty_1000FullDuty(a, 1000);//占空比,频率
// TimerA0_2_pwm_duty_1000FullDuty(b, 1000);//占空比,频率
//
// if(++a > 800) a = 0;
// if(++b > 800) b = 0;
controlTaskRunFlag = 0;
}
}
// myScope_sendOscilloscope_Size128(ccdData);
// LED1_TOGGLE;
}
}
|
|