#include<reg51.h>
/*定义按键和L298N引脚*/
sbit BZ1=P0^0; sbit IN1=P2^0;
sbit BZ2=P0^1; sbit IN2=P2^1;
sbit BF1=P0^2; sbit IN3=P2^2;
sbit BF2=P0^3; sbit IN4=P2^3;
sbit BJIA1=P0^4;
sbit BJIA2=P0^5;
sbit BJIAN1=P0^6;
sbit BJIAN2=P0^7;
/*函数声明*/
void delay(t);
void Z1();
void Z2();
void F1();
void F2();
void JIA1();
void JIA2();
void JIAN1();
void JIAN2();
void change();
char W=0;//W用来在调速状态下选择电机;
int t1=80,t2=80;
/*延时函数*/
void delay(int t)
{while(t--);}
/*正转函数1*/
void Z1()
{IN1=1;IN2=0;W=1;}
/*正转函数2*/
void Z2()
{IN3=1;IN4=0;W=1;}
/*反转函数1*/
void F1()
{IN1=0;IN2=1;W=2;}
/*反转函数2*/
void F2()
{IN3=0;IN4=1;W=2;}
/*加速函数1*/
void JIA1()
{t1+=10;}
/*加速函数2*/
void JIA2()
{t2+=10;}
/*减速函数1*/
void JIAN1()
{t1-=10;}
/*减速函数2*/
void JIAN2()
{t2-=10;}
/*停止*/
void TING()
{IN1=IN2=IN3=IN4=0;}
/*制动函数*/
void ZHI()
{IN1=IN2=IN3=IN4=1;}
/*按键信号*/
void change()
{
if(BZ1==0){Z1();delay(t1);TING();delay(255-t1);}
if(BZ2==0){Z2();delay(t2);TING();delay(255-t2);}
if(BF1==0){F1();delay(t1);TING();delay(255-t1);}
if(BF2==0){F2();delay(t2);TING();delay(255-t2);}
if(BJIA1==0&&t1<235){delay(5);JIA1();}
if(BJIA2==0&&t2<235){delay(5);JIA2();}
if(BJIAN1==0&&t1>80){delay(5);JIAN1();}
if(BJIAN2==0&&t2>80){delay(5);JIAN2();}
if(BZ1==0&&(BZ2!=0&&BF1!=0&&BF2!=0)){delay(255);}
if(BZ2==0&&(BZ1!=0&&BF1!=0&&BF2!=0)){delay(255);}
if(BF1==0&&(BZ1!=0&&BZ2!=0&&BF2!=0)){delay(255);}
if(BF2==0&&(BZ1!=0&&BZ2!=0&&BF1!=0)){delay(255);}
}
/*主程序*/
void main()
{
P0=0xff;
while(1)
{change();}
}
如果可以可以将程序发看一下。个人认为还是程序存在问题
670642033 qq
驱动芯片的问题吧,用同一个口控制。
智能小车速度太快,没法控制怎么办?用PWM调整转速也没反应~
控制电机时,可以延时长一点,把速度降下来。
增加电机驱动的驱动能力,即提高电压。
一般两个电机的阻力不同,电压小的情况下容易造成堵转,电流会很大,造成驱动模块分压增加,电机两端电压就更小了,转不起来的那个轮子就启动不起来了。。。。
这种情况驱动模块发热很厉害,很容易烧驱动芯片的。
希望对你有所帮助
#15958933965#
如何使机器人小车的两侧轮子PWM控制 - ******
#唐帝# 你这说的也太简单了,能不能具体点.机器人小车两侧的轮子用两个PWM控制,就得做两个电机的驱动电路,然后输出PWM信号就可以调整两个电机各自的速度了
#15958933965#
增量式PID算法控制小车速度 ******
#唐帝# 首先声明一下,你的是多变量输入和输出,运用简单的单回路控制系统估计效果不太好. 如果你确实要用PID,下面是建议: 1,直线运动,两个输出是一样的,所以公用一个函数,(若有直线纠正的话,你懂怎么办的).由于你的电机还有传...
#15958933965#
STC12C5A60S2单片机的P1.3 P1.4怎么输出PWM控制电机调速? ******
#唐帝# <p>这是软件模拟的 PWM 仿真实例,STC系列单片机有带硬件 PWM 控制器,在数据手册是有例程.</p>
#15958933965#
做单片机小车的实验,用PWM的输出控制小车 - ******
#唐帝# 第一种可能:PWM控制频率太低了.因为PWM是开关量信号,如果你的频率太低了,那么电机就会抖出现你刚才说的情况.第二种可能:你的占空比给的太低.我想问你一句,你用的单片机是有内部PWM模块,还是自己用I/O口模拟的PWM信号?
#15958933965#
寻迹感光智能车使用手册 - ******
#唐帝# 摘要 基于HCSl2单片机设计一种智能车系统.在该系统中,由红外光电传感器实现路径识别,通过对小车速度的控制,使小车能按照任意给定的黑色引导线平稳地寻迹.实验证明:系统能很好地满足智能车对路径识别性能和抗干扰能力的要求,...
#15958933965#
飞思卡尔智能车求助,电机反转PWM的初始化 - ******
#唐帝# PWMDTY23是控制电机上的电压占空比的,进而控制电压 ,速度和电压有关啊 要是换向的话,无非就是把电机里相线的通电顺序改为相反啊,实现的话 我觉得不是添加什么程序,而是改一下,将相线的通电顺序改为相反.
#15958933965#
pwm 应用在控制汽车中的哪个电机 - ******
#唐帝# 1、所有无刷电机的控制器都用到了PWM调制技术,主要是控制电机3相6路的开断,调制6路MOS的通断2、部分转换器和充电器也有用PWM技术,都是调整电压输出的
#15958933965#
用STC89C52单片机通过调试PWM来控制小车循迹走直线,其中利用定时器是怎么控制pwm的,谢谢 - ******
#唐帝# PWM那款单片机如果带这个功能 的,可以去查查相关手册,STC的很多型号的都有PWM功能,不过,不知道您是怎么来控制小车,我看最多也就能给电机调一下速罢了.没有PWM功能的单片机,可以模拟出PWM,这个网上有很多程序下载
#15958933965#
飞思卡尔智能车控制舵机时,PWM为什么要级联? - ******
#唐帝# 举个夸张的例子:不级联的时候,舵机可以转0,30,60,90,120,150,180.级联后或许就可以转1,2,3,4,5,6,7,8,9,10,11,12,13,...............170,171,172,173,174,175,176,177,178,179,180.这就是影响车稳定性的一个重要因素了.