关于四轮智能小车的驱动

2020-01-22 12:15发布

#include <stc12c5a60s2.h>
#define uint unsigned int
sbit L_IN1=P0^0;
sbit L_IN2=P0^1;
sbit L_IN3=P0^2;
sbit L_IN4=P0^3;
sbit R_IN1=P0^4;
sbit R_IN2=P0^5;
sbit R_IN3=P0^6;
sbit R_IN4=P0^7;
uint i,j;
void delay(void)
{
for(i=20000;i>0;i--)
  for(j=110;j>0;j--);
}
void CAR_STOP(void)
{
P0=0x00;
}
void CAR_Go_Forward(void)
{
P0=0X99;
}
void CAR_Left(void)
{
P0=0x90;
}
void CAR_Right(void)  
{
P0=0x09;
}
void Right_back(void)     //右轮后退
{
P0=0x60;
}
void Left_back(void)      //左轮后退
{
P0=0x06;
}
void main(void)
{
while(1)
{
  CAR_Go_Forward();
  delay();
  CAR_Left();
  delay();
  CAR_Right();
  delay();
  Right_back();
  delay();
  Left_back();
  delay();
  CAR_STOP();
  delay();
}
}
只是写的测试程序,可是发现的问题是在左转(右转)的时候左轮(右轮)有明显的拖动的现在,求解,可以加pwm控制左右两边的速度不等实现左转和右转么?新手求解。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
linread
1楼-- · 2020-01-22 18:11
 精彩回答 2  元偷偷看……
搁浅的风度
2楼-- · 2020-01-22 19:51
linread 发表于 2014-8-31 09:38
四轮个轮子的小车,比较简单的方法是左边2个轮子同PWM,右边2个轮子同PWM,然后改变左右2边的PWM占空比,做 ...

#include <stc12c5a60s2.h>
#include <nima.h>
#define uint unsigned int
sbit L_IN1=P0^0;
sbit L_IN2=P0^1;
sbit L_IN3=P0^2;
sbit L_IN4=P0^3;
sbit R_IN1=P0^4;
sbit R_IN2=P0^5;
sbit R_IN3=P0^6;
sbit R_IN4=P0^7;
void CAR_Left(void)
{
P0=0x99;
}
void main()
{
CAR_Left();
  CCAP1L=0x38;
  CCAP1H=0x38;  //pwm1,P1.4,右轮
        CCAP0L=0x70;  //pwm0,p1.3,左轮
  CCAP0H=0x70;  //越大低电平时间越久


}



定义:
#ifndef _nima_H_
#define _nima_H_
#include "STC12C5A60S2.h"
void PWM_INIT(void)
{
        CCON = 0;
        CMOD = 0x02;
        CL = 0x00;
        CH = 0x00;
  CCAPM0 = 0x42;
  CCAPM1 = 0x42;
  CR = 1;       
}
#endif



这样好像也调不了。。。。。。
linread
3楼-- · 2020-01-23 00:20
程序我没看,我就给了个方案,以前做过个就是这样转向的,没有问题
搁浅的风度
4楼-- · 2020-01-23 03:47
linread 发表于 2014-8-31 11:09
程序我没看,我就给了个方案,以前做过个就是这样转向的,没有问题

好吧,                     

一周热门 更多>