这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 循迹小车求助

共3条 1/1 1 跳转至

循迹小车求助

菜鸟
2014-07-21 16:15:58     打赏

最近在做循迹小车,前面是2驱电机,后面是万向轮;使用2路红外传感器(左和右),现在遇到的问题是小车不能拐弯,我的想法是:左路检测到黑线,小车左拐;右路检测到黑线,小车右拐,同时检测到黑线则直走,同时都没检测到则让小车后退。

//引脚说明

 

sbit Left_Moto_IN1=P0^0;//左电机
sbit Left_Moto_IN2=P0^1;

sbit Right_Moto_IN3=P0^2;//右电机
sbit Right_Moto_IN4=P0^3;

sbit Left_Led=P1^6;  //左路红外
sbit Right_Led=P1^7; //右路红外

我的电机驱动是L298N,2PWM控制速度的方法如下:

uchar count = 0;

void Init_timer()
{

    //12M晶振
    TH0 = (65535-10)/256;
    TL0 = (65535-10)%256;
    TMOD = 0x01;
    TR0 = 1;
    ET0 = 1;
    EA = 1;
}

void Timer0_int()interrupt 1
{
   TH0 = (65535-10)/256;
   TL0 = (65535-10)%256;
    count ++;
    if(count >= 100){count = 0;}  
}

//PWM控制左轮速度

void Wheel_l(uchar speed)
{
    if(count <= speed)
    {
       Left_Moto_IN1 = 1;//左电机的两个输入端

       Left_Moto_IN2 = 0;//p0.1
    } 
   else
    {
       Left_Moto_IN1 = 0;
        Left_Moto_IN2 = 0;
    }
}

 

//PWM控制右轮速度
void Wheel_r(uchar speed)
{
     if(count<= speed)
    {
         Right_Moto_IN3 = 0;//右电机的两个输入端
         Right_Moto_IN4 = 1;  
     }
    else
     {
         Right_Moto_IN3 = 0;
         Right_Moto_IN4 = 0;
     }
}

 

void main()
{
      Init_timer();
      while(1)
       {
            if((Left_Led==1)&&(Right_Led==0))//左边检测到黑线右边没检测到 小车左转
            {
                    Wheel_l(10);
                    Wheel_r(30);
             }
           if((Left_Led==0)&&(Right_Led==1))//右边检测到黑线左边没检测到 小车右转
           {
                  Wheel_l(30);
                  Wheel_r(10);
           }  
           if((Left_Led==1)&&(Right_Led==1))//两边同时检测到黑线  小车直走
           {
                    Wheel_l(30);
                    Wheel_r(30);
           }
          if((Left_Led==0)&&(Right_Led==0))//两边都没检测到黑线  小车后退
          {
                   back();//电机同时后退
                  delayms(10);
                  Stop_All();//两个电机都停止
                  delayms(10);
         }

}

请问大家,这样做对不对?现在小车在黑线边界的地方不能拐弯,直接跑出去了


菜鸟
2014-07-22 11:44:37     打赏
2楼

给你看下我的布局

 

 

我只有了红色框框里的两只传感器


菜鸟
2014-07-22 11:47:55     打赏
3楼

 

这是粗略的流程图, 初始化定时器是为了 PWM控制车速


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]