导航:首页 > 操作系统 > 单片机小车调速程序

单片机小车调速程序

发布时间:2024-10-22 07:34:08

A. 基于51单片机的智能循迹小车如何实现小车的速度不会随电池的电量而变化.(程序)

1、电池电压高的话可以用稳压的办法,如将12V电池稳压至9V用,当降到9V就要换电池或充电,保证电机驱动供电电压9V不变
2、或者就是速度闭环了,取一个低速作为目标值,保证低压时也能达到该速度

B. 51单片机小车左右不能同步是什么问题C语言怎么写

小车电机是通过pwm脉宽调速:
1、单片机是否能同时产生pwm。一般来说在程序上是有一点延迟的。
2、电机两端的电压是否相同。如果驱动电路性能不好,是会有偏差的。
3、此外左右两侧车轮材料,压力导致的摩擦力是否一致。如果不同也是会有误差的。
一般来说都会对小车车轮的转速进行测量,反馈给控制器,如果转速不相等,是控制pwm来调节的。如果是循迹,是要加传感器矫正的。

C. 用c语言写一个单片机控制小车走直线的程序,小车一共3个轮子,一个万向轮,另两个是电机驱动的,用51单片

自己看注释改一下就行 函数都写好了了 没用的删掉就可以了

#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
#define L_M 1
#define R_M 2
uchar temp2,temp1,t,m1,m2,redline;
sbit tr=P2^4; //超声波
sbit ec=P2^5; //
sbit en=P2^7; //液晶的EN
sbit rs=P2^6; //液晶RS选择端
//液晶数据口 P0口
sbit Rin_1=P2^0; //寻迹管脚输入
sbit Rin_2=P2^1;
sbit Lin_2=P2^2;
sbit Lin_1=P2^3;
sbit L_EN=P1^0; //左侧电机使能
sbit L_1=P1^1; //左侧电机控制 1
sbit L_2=P1^2; //左侧电机控制 2
sbit R_1=P1^3; //右侧电机控制 1
sbit R_2=P1^4; //右侧电机控制 2
sbit R_EN=P1^5; //右侧电机使能
void delay(uint z) //延时程序1
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay1s(uchar t) //1s延时函数
{
uchar a,h,i,j,k;
for(a=t;a>0;a--)
{
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
}
void v_cotrol(uchar number,uchar speed)
{
if(speed<100)
{
if(number==1)
m1=abs(speed);
if(number==2)
m2=abs(speed);
}
}
void turnleft()
{
L_1=1; // left fan zhuan //
L_2=0;
R_1=1; // right fanzhuan
R_2=0;
}
void turnright()
{
L_1=0; // left zheng zhuan
L_2=1;
R_1=0; // right fanzhuan
R_2=1;
}
void gostright()
{
L_1=0; // left zheng zhuan
L_2=1;
R_1=1; // right zhengzhuan
R_2=0;
}
void goback()
{
L_1=1; // left zheng zhuan
L_2=0;
R_1=0; // right zhengzhuan
R_2=1;
}
void stop()
{
L_1=1; // stop
L_2=1;
R_1=1; // stop
R_2=1;
}
void timer0_int()
{
TMOD=0X01;
TH0=-100/256;
TL0=-100%256;
EA=1;
ET0=1;
TR0=1;
}
state_int()
{
Rin_1=1;
Rin_1=1;
Lin_1=1;
Lin_1=1;
t=0;
m1=50;
m2=50;
stop();

}
void main()
{
timer0_int();
state_int();
while(1)
{
//避障程序
if((Lin_1==1)&&(Lin_2==1)&&(Rin_1==1)&&(Rin_2==1))
gostright();
if((Lin_1==1)&&(Lin_2==1)&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
turnleft();
if((Rin_1==1)&&(Rin_2==1)&&(((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0))))
turnright();
if((((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0)))&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
goback();
if((Lin_1==1)&&(Lin_2==1)&&(Rin_1==1)&&(Rin_2==1))
gostright();
if((Lin_1==1)&&(Lin_2==1)&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
turnleft();
if((Rin_1==1)&&(Rin_2==1)&&(((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0))))
turnright();
if((((Lin_1==1)&&(Lin_2==0))||((Lin_1==0)&&(Lin_2==1))||((Lin_1==0)&&(Lin_2==0)))&&(((Rin_1==1)&&(Rin_2==0))||((Rin_1==0)&&(Rin_2==1))||((Rin_1==0)&&(Rin_2==0))))
goback();

}

while(1);
}
timer0() interrupt 1
{
TH0=-100/256;
TL0=-100%256;
if(t==0)
{
temp1=m1;
temp2=m2;
}
if(t==temp1)
L_EN=0;
if(t==temp2)
R_EN=0;
t++;
if(t==50)
{
t=0;
L_EN=1;
R_EN=1;
}

}

D. 我用51单片机做个智能小车四驱的!想要实现差速转向,怎么做!要pwm控制!需要几个定时器!一个可以

电子差速从几年前就有人投入了研究,分主动差速和被动差速。被动差速是控制两个电机严格的按照等转矩或等功率运转,主动差速是根据要求控制两个电机按一定的差速比闭环调速运转。
51系列单片机指令周期太长,不适合做电机驱动,无法实现电子差速的要求,建议使用性能更好单片机来完成,比如dsPIC,STM32,AVR系列等。

E. 求高手写一个C程序,要求用单片机控制小车前进,后退,左转弯,右转弯。用的是C51系列单片机。

控制小车其实也就是控制小车的电机,一般来说,是通过PWM信号来控制。比如说,要让小车前进,则输出正转的PWM信号,后退则输出反转的PWM信号等。而调节PWM信号的占空比则可以改变电机的转速,从而改变小车的速度。此外,拐弯则需要借助于传感器提供的信号了。编程时,先了解小车的电机资料,再有就是捕获传感器的信号了。

阅读全文

与单片机小车调速程序相关的资料

热点内容
php如何修改服务器的端口号 浏览:642
几何讲义pdf 浏览:91
利用python创建变量 浏览:733
期货入门基础知识pdf 浏览:180
比心app海滩币在哪里看 浏览:942
聚合直播app源码 浏览:482
打造云服务器需要多少钱 浏览:565
pythonsql变量赋值 浏览:490
电脑建立共享文件夹以后 浏览:472
一加8t如何加密文件 浏览:673
phpfpm是否启动 浏览:916
加密精灵隐藏了怎么恢复 浏览:166
程序员什么样的公司最好 浏览:65
制冷压缩机与设备实训 浏览:11
自己在家搭建服务器有什么用 浏览:707
mysql和php和ajax 浏览:377
四洲制的编译者是 浏览:444
单片机小车调速程序 浏览:986
服务器没反应是怎么回事啊 浏览:497
通达信嵌入Python编写公式吗 浏览:211