标题:
我做的51单片机循迹小车 改PWM1和PWM2就可以达到理想状态对吗?
[打印本页]
作者:
better-me
时间:
2017-7-22 17:30
标题:
我做的51单片机循迹小车 改PWM1和PWM2就可以达到理想状态对吗?
用51做循迹小车,不知道程序错没错,我觉得改PWM1和PWM2就可以达到理想状态对吗?还有轮子的松紧会不会影响轮子的转动啊?
#include<reg52.h>
#include<intrins.h>
#include "xunji.h"
int t=0,PWM1=10,PWM2=1;
unsigned long int shijian=0;
void delayms(unsigned int xms) //误差 0us
{
unsigned int i,j;
for(i=0;i<xms;i++)
for(j=0;j<110;j++);
}
void Init_T0()
{
TH0 = (65536-10)/256; //0.1ms
TL0 = (65536-10)%256;
EA=1; //开总中断
ET0=1; //开定时器1中断
TR0=1; //启动定时器1 程序开始在此等待中断
}
void zhi()
{
IN1=1;IN2=0;IN3=0;IN4=1;
}
void zuo()
{
IN1=0;IN2=0;IN3=0;IN4=1;
}
void you()
{
IN1=1;IN2=0;IN3=0;IN4=0;
}
void ting()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
void xunji()
{
if((z==1)&&(y==0)) // 左转 (亮为高,暗为低)
{
zuo();
PWM1=20;
PWM2=20;
}
if((z==0)&&(y==1)) // 右转
{
you();
PWM1=20;
PWM2=20;
}
if((z==0)&&(y==0)) // 直走
{
zhi();
PWM1=20;
PWM2=20;
}
if((z==1)&&(y==1)) // 停止
{
ting();
PWM1=0;
PWM2=0;
}
}
/************电机中短*****************/
void T0_time() interrupt 1
{
TH0 = (65536-10)/256; //0.1ms
TL0 = (65536-10)%256;
t++;
shijian++;
if(t==100) //1s
t=0; //清零
if(t<=PWM1)
ENA=1; //当计数变量小于占空比时输出高电平,大时输出低电平
else
ENA=0;
if(t<=PWM2)
ENB=1; //当计数变量小于占空比时输出高电平,大时输出低电平
else
ENB=0;
}
复制代码
作者:
陶墨一
时间:
2017-7-22 22:27
你说的循迹 是黑胶带还是铁丝之类的? 改变PWM可以控制轮子的速度 轮子一定要拧紧
作者:
better-me
时间:
2017-7-23 08:55
陶墨一 发表于 2017-7-22 22:27
你说的循迹 是黑胶带还是铁丝之类的? 改变PWM可以控制轮子的速度 轮子一定要拧紧
黑胶带,改变了pwm但经常还是会经常跑出去
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1