[C-坡道行驶电动小车] C题_山东赛区_山东科技大学——智能四驱寻迹小车

[复制链接]

1

主题

1

帖子

7

积分

一粒轻沙

Rank: 1

积分
7
楼主
查看: 3103回复: 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;

        }
}



快速回复 返回顶部 返回列表