搁浅的风度 发表于 2014-8-31 08:38: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控制左右两边的速度不等实现左转和右转么?新手求解。

linread 发表于 2014-8-31 09:38:34

四轮个轮子的小车,比较简单的方法是左边2个轮子同PWM,右边2个轮子同PWM,然后改变左右2边的PWM占空比,做差速转向

搁浅的风度 发表于 2014-8-31 10:20:06

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 发表于 2014-8-31 11:09:22

程序我没看,我就给了个方案,以前做过个就是这样转向的,没有问题

搁浅的风度 发表于 2014-8-31 11:19:14

linread 发表于 2014-8-31 11:09
程序我没看,我就给了个方案,以前做过个就是这样转向的,没有问题

好吧,                     
页: [1]
查看完整版本: 关于四轮智能小车的驱动