0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于MSP430F5529的红外循迹小车设计

CHANBAEK 来源:俗人chao 作者:俗人chao 2023-03-10 11:44 次阅读

实现功能

第一功能:

小车从A点开始出发,行驶到B点停止。

第二功能:

小车从A点开始出发,然后沿跑道一直行驶。

下图为黑色跑道,跑道为2mm的黑线,A、B、C、D四点为直径4mm的黑圈。

设计方案

小车选用MSP430F5529做为主控芯片,TCRT5000红外循迹模块用来实现小车识别跑道功能,原理为红外发射判断黑白线以及区分黑线宽度,电机使用两个直流电机,电机驱动模块选用TB6612,来实现实时控制电机转动的幅度与转速。

设计电路

接线详解

将MSP430F5529的P3.0、P3.1、P3.2引脚分别与3个TCRT5000模块的DO端相连,芯片实时检测这3个端口的电平,当发生电平跳变时,电机运行就会做出相对应的调整,而控制电机转速的是P1.3与P2.0引脚,它们与TB6612模块的PWMA、PWMB引脚相连,原理是通过改变占空比来实现。P1.2、P1.4、P1.5三个引脚通过拨码开关与GND相连,用来实现对三个行驶模式的分开控制,P2.2需要拉高(启动时)所以图中没画。

模式详解

三个拨码开关分别控制三个模式,第一个模式为第一个实现功能即B点停,第二个模式为第二个实现功能即小车一直行驶,第三个模式为小车定时60秒后开始一直行驶。

设计代码

#include 


int liftbi=0,rightbi=0;


unsigned int temp=0;


void GPIO_init(void)
{


    P3DIR &=~(BIT0+BIT1+BIT2+BIT3);  
    P3REN |= (BIT0+BIT1+BIT2+BIT3);  
    P3OUT &=~(BIT0+BIT1+BIT2+BIT3);


    P2DIR &=~(BIT2);    
    P2OUT &=~(BIT2);


    P1DIR |= BIT0;       
    P1OUT |= BIT0;     
    P1REN |= (BIT1+BIT2+BIT4+BIT5);    
    P1OUT |= (BIT1+BIT2+BIT4+BIT5);    
    P1DIR &=~(BIT1+BIT2+BIT4+BIT5);      
    P1DIR |= BIT6;
}


void Motor_L(float left)
{
    TA0CCR2 = left;   
}


void Motor_R(float right)
{
    TA1CCR1 = right;  
}


void MotorSet(float L, float R)
{
    Motor_L(L);
    Motor_R(R);
}


void mode_0()
{
    long i,j;
    if((P3IN|0xf0)==0xf0) 
    MotorSet(37,23);
    if((P3IN|0xf0)==0xf1)
    MotorSet(37,0);
    if(((P3IN|0xf0)==0xf2))
    MotorSet(37,23);
    if((P3IN|0xf0)==0xf4)  
    MotorSet(0,23);
    if((P3IN|0xf0)==0xf3)  
    {
        MotorSet(37,23);
        for(i=0;i<30000;i++);
        MotorSet(0,0);
    }
    if((P3IN|0xf0)==0xf6)  
    {
        MotorSet(37,23);
        for(j=0;j<30000;j++);
        MotorSet(0,0);
    }
}


void mode_1()
{
    while(1)
    {
        if((P3IN|0xf0)==0xf0)   
        MotorSet(37,23);
        if((P3IN|0xf0)==0xf1)   
        MotorSet(37,0);
        if(((P3IN|0xf0)==0xf2)) 
        MotorSet(37,23);
        if((P3IN|0xf0)==0xf4)   
        MotorSet(0,23);
        if((P3IN|0xf0)==0xf3)  
        MotorSet(38,23);
        if((P3IN|0xf0)==0xf6)   
        MotorSet(38,23);
    }
}


void P12_Onclick()   
{
    while(1)
    {
       mode_0();
    }
}


void P14_Onclick()   
{
    while(1)
    {
        mode_1();
    }
}


void P15_Onclick()    
{
    TA2CCR0 = 32760;                
    TA2CCTL0 = CCIE;                          
    TA2CTL = TASSEL_1 + MC_1 + TACLR;         
       // _enable_interrupts();
        _BIS_SR(LPM3_bits + GIE);
    while(1)
    {
    }
}


void main(void)
{
    volatile unsigned int i; 
    WDTCTL = WDTPW + WDTHOLD; 
    P1DIR |=BIT3; 
    P1SEL |=BIT3;
    P2DIR |=BIT0; 
    P2SEL |=BIT0; 
    TA0CCR0 = 50;
    TA0CCTL2 = OUTMOD_7; 
    TA1CCR0 = 50; 
    TA1CCTL1 = OUTMOD_7;


    TA0CTL= TASSEL_2 +MC_1;
    TA1CTL= TASSEL_2 +MC_1;
    TA0CCR2=liftbi;   
    TA1CCR1=rightbi;   
    GPIO_init();


// _bis_SR_register(LPM3_bits); 
    while(1)
    {
        if((P2IN|0xFB)==0XFF) 
            P2OUT &=~BIT2;   
        if((P1IN&0x04)==0x00) 
        {
            if((P2IN|0xFB)==0XFF) 
            {
                P12_Onclick();
            }
        }
        if((P1IN&0x10)==0x00)
        {
            if((P2IN|0xFB)==0XFF)
            P14_Onclick();
        }
        if((P1IN&0x20)==0x00)
        {
            if((P2IN|0xFB)==0XFF)
            P15_Onclick();
        }
    }
}
#pragma vector = TIMER2_A0_VECTOR
__interrupt void Timer_A(void)            
{
    temp++;
    if(temp>=60)
    {
        mode_1();
    }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电机
    +关注

    关注

    139

    文章

    8312

    浏览量

    142084
  • 引脚
    +关注

    关注

    16

    文章

    1044

    浏览量

    48958
  • 小车
    +关注

    关注

    0

    文章

    49

    浏览量

    20523
  • 驱动模块
    +关注

    关注

    0

    文章

    57

    浏览量

    14003
  • MSP430F5529
    +关注

    关注

    12

    文章

    52

    浏览量

    19950
收藏 人收藏

    评论

    相关推荐

    MSP430F5529 红外遥控键盘 PC机显示 希望大神们能来救救偶!

    ` 要求:通过MSP430F5529的GPIO口连接红外遥控一体化接收头。MSP430F5529USB接口与PC机USB口相连。当红外发射遥控器的按键被按下后,
    发表于 06-03 20:03

    msp430f5529驱动

    msp430f5529驱动
    发表于 07-14 17:22

    msp430f5529的头文件

    您好!问一下,msp430f5529的头文件 "msp430f5529.h"在哪里可以下载?最近需要用到! 谢谢
    发表于 06-21 07:07

    MSP430F5529

    MSP430F5529能作为USB主机或者从机吗,有程序吗
    发表于 08-16 12:13

    怎样去设计一种基于MSP430F5529的两路寻迹小车

    、STM32或者MSP430单片机都应该必须会的。主要器件在这里笔者分享一下自己做的寻迹小车:主控使用Ti官方的MSP430F5529,相比G2553,F5529引脚功能比较多些,其他
    发表于 09-02 07:52

    怎样去设计一种基于MSP430F5529红外循迹小车

    MSP430F5529做为主控芯片,TCRT5000红外循迹模块用来实现小车识别跑道功能,原理为红外发射判断黑白线以及区分黑线宽度,电机使用
    发表于 11-29 07:43

    MSP430F5529 LaunchPad时钟的相关资料推荐

    实验内容:上电控制MSP430F5529 Launch Pad上的主时钟系统达到25Mhz实验准备:1、硬件:MSP430F5529 Launch Pad2、软件:Code Composer
    发表于 02-14 06:50

    如何去实现一种基于MSP430f5529红外循迹小车设计

    #include "msp430f5529.h" void qj() //前进 { P3OUT &=~ BIT0; P3OUT |=BIT1; P2OUT &
    发表于 02-15 06:09

    msp430f5529例程

    msp430f5529例程msp430f5529例程msp430f5529例程msp430f5529例程msp430f5529例程
    发表于 01-19 14:35 115次下载

    MSP430F5529例程

    MSP430F5529例程
    发表于 03-16 08:37 73次下载

    msp430f5529原理图

    MSP430F5529是最新一代的具有集成USB的超低功耗单片机,可以应用于能量收集、无线传感以及自动抄表等场合,是最低工作功耗的单片机之一。MSP430F5529开发板
    发表于 10-23 16:07 3.2w次阅读

    基于MSP430F5529红外循迹小车

    ;nbsp;   小车选用MSP430F5529做为主控芯片,TCRT5000红外循迹模块用来实现小车识别跑道
    发表于 11-19 19:51 23次下载
    基于<b class='flag-5'>MSP430F5529</b>的<b class='flag-5'>红外</b><b class='flag-5'>循迹</b><b class='flag-5'>小车</b>

    基于MSP430F5529的两路寻迹小车附OLED显示代码

    、STM32或者MSP430单片机都应该必须会的。主要器件在这里笔者分享一下自己做的寻迹小车:主控使用Ti官方的MSP430F5529,相比G2553,F5529引脚功能比较多些,其他
    发表于 12-04 21:06 22次下载
    基于<b class='flag-5'>MSP430F5529</b>的两路寻迹<b class='flag-5'>小车</b>附OLED显示代码

    基于MSP430f5529红外循迹小车

    #include "msp430f5529.h" void qj() //前进 { P3OUT &=~ BIT0; P3OUT |=BIT1; P2OUT &=~ BIT0
    发表于 12-16 16:54 13次下载
    基于<b class='flag-5'>MSP430f5529</b>的<b class='flag-5'>红外</b><b class='flag-5'>循迹</b><b class='flag-5'>小车</b>

    【库函数】MSP430F5529 按键消抖

    MSP430F5529 按键消抖实现
    发表于 12-16 16:55 15次下载
    【库函数】<b class='flag-5'>MSP430F5529</b> 按键消抖