怎样用单片机控制电机或马达的正反转以及转速。要有电路设计,如果有proteus仿真图和程序就最好了!

怎样用单片机控制电机或马达的正反转以及转速。要有电路设计,如果有proteus仿真图和程序就最好了!,第1张

给你原理图,修改一下,

两个程序修改一下。。

实在弄不来我再帮忙

这是控制正反转的程序:

#include <reg52h>

bit Flag;//定义正反转标志位

unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格

unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格

//

/                    延时函数                                    /

//

void Delay(unsigned int i)//延时

{

while(--i);

}

//

/                   主函数                                       /

//

main()

{

unsigned char i;

EX1=1;         //外部中断0开

IT1=1;         //边沿触发

EA=1;          //全局中断开

while(!Flag)

{

P0=0x71;//显示 F 标示正转

for(i=0;i<4;i++)      //4相

{

P1=F_Rotation[i];  //输出对应的相 可以自行换成反转表格

Delay(800);        //改变这个参数可以调整电机转速 ,数字越小,转速越大

 }

}

while(Flag)

{

P0=0x7C;//显示 b 标示反转

for(i=0;i<4;i++)      //4相

{

P1=B_Rotation[i];  //输出对应的相

Delay(500);        //改变这个参数可以调整电机转速 ,数字越小,转速越大

 }

}

}

//

/                   中断入口函数                                 /

//

void ISR_Key(void) interrupt 2 using 1

{

Delay(300);

Flag=!Flag;         //s3按下触发一次,标志位取反

}

这是控制转速的程序:

#include<reg52h>     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit KEY1 = P3^1;     //定义调速按键

sbit PWM = P1^5;      //定义调速端口

unsigned char CYCLE;  //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 01ms

unsigned char PWM_ON ;//定义高电平时间

//

/                    延时函数                                    /

//

void delay(unsigned int cnt)

{

while(--cnt);

}

//

/                    主函数                                      /

//

main()

{

unsigned char PWM_Num;//定义档位

TMOD |=0x01;//定时器设置 1ms in 12M crystal

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;//定时1mS

IE= 0x82;  //打开中断

TR0=1;

CYCLE = 10;// 时间可以调整 这个是10步调整 周期10ms 8位PWM就是256步

while(1)

{

if(!KEY1)

{

delay(10000);

if(!KEY1)

{

PWM_Num++;

  if(PWM_Num==4)PWM_Num=0;

switch(PWM_Num){

case 0:P0=0x06;PWM_ON=0;break;//高电平时长

case 1:P0=0x5B;PWM_ON=4;break;

case 2:P0=0x4F;PWM_ON=6;break;

case 3:P0=0x66;PWM_ON=8;break;

default:break;

}

}

}

}

}

//

/                    定时器中断函数                              /

//

void tim(void) interrupt 1 using 1

{

static unsigned char count; //

TH0=(65536-1000)/256;

TL0=(65536-1000)%256;//定时1mS

if (count==PWM_ON)

{

PWM = 1;        //灯灭

}

count++;

if(count == CYCLE)

{

count=0;

if(PWM_ON!=0)    //如果左右时间是0 保持原来状态

   PWM = 0;      //灯亮

}

}

#include <stdioh>

void main()

{

int i,j;

int a[3][4],b[3][4],c[3][4];

printf("input a[3][4]:\n");

for(i=0;i<3;i++)

for(j=0;j<4;j++)

scanf("%d",&a[i][j]);

printf("input b[3][4]:\n");

for(i=0;i<3;i++)

for(j=0;j<4;j++)

scanf("%d",&b[i][j]);

for(i=0;i<3;i++)

for(j=0;j<4;j++)

c[i][j]=a[i][j]+b[i][j];

printf("output c[3][4]:\n");

for(i=0;i<3;i++)

{

for(j=0;j<4;j++)

printf("%d ",c[i][j]);

printf("\n");

}

安装长安星光4500启动马达拆卸程序

断开蓄电池负极电缆。

拆下起动机电缆。

断开起动机连接器。

清除起动机外部的灰尘和油污。拆下起动机。

取下防尘盖,拉起碳刷d簧,取出碳刷。

拆下夹紧螺柱,分离端盖、外壳和驱动端,取出电枢。

拆下驱动杆销轴的螺钉,取出驱动叉销和回位d簧。

拆下中间轴承支撑板的固定螺钉,拆下支撑板垫圈、传动叉和啮合装置。

拆下开关与磁场线圈端子之间的连接铜片,然后拆下开关的固定螺丝,取下开关。

清洁拆卸的零件。

起动机的安装

润滑传动箱中的衬套。

在安装单向离合器总成之前,润滑螺旋花键,润滑与离合器连接的滑动面和接触面,润滑安装在支架上的衬套和插入衬套的电枢轴。

安装止动螺母后,用冲头将其支撑在两个位置并将其锁定。

调整双头螺栓的长度,使嵌入状态下限位螺母与驱动轮之间的间隙为1~4mm。

检查过程中,在空负载下启动机器,以分离驱动齿轮,直到起动机的速度稳定。

连接蓄电池接地线。

检查起动机工作是否正常。

你用1个按键控制调节状态,这个时侯,显示调节值,用几个按键调节数值(个位,十位,百们,千位),在按状态键,回到计数状态,用脚踏板启动马达,马达 连接计数传感器到单片机,当圈数=调节值变量就停止,计数变量再变成0,程序自己去写,当然硬件与软件要一至

51单片机驱动直流电机程序(用的是l298n芯片):

#include<reg51h>

#include<mathh>

#define uint unsigned int

#define uchar unsigned char

#define N 100

sbit s1=P1^0; //电机驱动口

sbit s2=P1^1; //电机驱动口

sbit s3=P1^2; //电机驱动口

sbit s4=P1^3; //电机驱动口

sbit en1=P1^4; //电机使能端

sbit en2=P1^5; //电机使能端

sbit LSEN=P2^0; //光电对管最左

sbit LSEN1=P2^1; //光电对管左1

sbit LSEN2=P2^2; //光电对管左2

sbit RSEN1=P2^3; //光电对管右1

sbit RSEN2=P2^4; //光电对管右2

sbit RSEN=P2^5; //光电对管最右

uint pwm1=0,pwm2=0,t=0;

void delay(uint xms)

{

uint a;

while(--xms)

{

for(a=123;a>0;a--);

}

}

void motor(uchar speed1,uchar speed2)

{

if(speed1>=-100&&speed1<=100)

{

pwm1=abs(speed1);

if(speed1>0)

{

s1=1;

s2=0;

}

if(speed1==0)

{

s1=1;

s2=1;

}

if(speed1<0)

{

s1=0;

s2=1;

}

}

if(speed2>=-100&&speed2<=100)

{

pwm2=abs(speed2);

if(speed2>0)

{

s3=1;

s4=0;

}

if(speed2==0)

{

s3=1;

s4=1;

}

if(speed2<0)

{

s3=0;

s4=1;

}

}

}

void go_forward(uint speed)

{

s1=1;

s2=0;

s3=1;

s4=0;

pwm1=speed;

pwm2=speed;

}

void go_back(uint speed)

{

s1=0;

s2=1;

s3=0;

s4=1;

pwm1=speed;

pwm2=speed;

}

void stop()

{

s1=1;

s2=1;

s3=1;

s4=1;

pwm1=0;

pwm2=0;

}

void turn_right(uint P1,uint P2) //右转函数

{

s1=1;

s2=0;

s3=0;

s4=1;

pwm1=P1;

pwm2=P2;

}

void turn_left(uint P1,uint P2) //左转函数

{

s1=0;

s2=1;

s3=1;

s4=0;

pwm1=P1;

pwm2=P2;

}

void tracking()

{

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0)) //没有检测到

{

go_forward(100);

}

if((LSEN1==1)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==0)) //左一检测到

{

turn_left(40,80); //左转 右轮 》左轮

delay(N);

}

if((LSEN1==0)&&(LSEN2==1)&&(RSEN1==0)&&(RSEN2==0)) //左二检测到

{

turn_left(40,60); //左转 右轮 》左轮

delay(N);

}

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==1)&&(RSEN2==0)) //右一检测到

{

turn_right(60,4); //右转 左轮 》右轮

delay(N);

}

if((LSEN1==0)&&(LSEN2==0)&&(RSEN1==0)&&(RSEN2==1)) //右二检测到

{

turn_right(80,40); //右转 左轮 》右轮

delay(N);

}

if((LSEN1==1)&&(LSEN2==1))

{

turn_left(0,100);

delay(1000);

}

if((RSEN1==1)&&(RSEN2==1))

{

turn_right(100,0);

delay(1000);

}

}

void avoidance()

{

}

void init()

{

TMOD=0x02; //timer0 同时配置为模式2, 8自动重装计数模式

TH0=156; //定时器初值设置100us中断

TL0=156;

ET0=1;

EA=1;

TR0=1; //开启总中断

}

void main()

{

init();

while(1)

{

tracking();

}

}

void timer0() interrupt 1 //电机驱动 提供PWM信号

{

if(t<pwm1)

en1=1;

else

en1=0;

if(t<pwm2)

en2=1;

else

en2=0;

t++;

if(t>100)

t=0;

}

扩展资料

L298N 是一种双H桥电机驱动芯片,其中每个H桥可以提供2A的电流,功率部分的供电电压范围是25-48v,逻辑部分5v供电,接受5vTTL电平。一般情况下,功率部分的电压应大于6V否则芯片可能不能正常工作。

参考资料来源:百度百科-l298n

以上就是关于怎样用单片机控制电机或马达的正反转以及转速。要有电路设计,如果有proteus仿真图和程序就最好了!全部的内容,包括:怎样用单片机控制电机或马达的正反转以及转速。要有电路设计,如果有proteus仿真图和程序就最好了!、大鸣教你如何编程的有6个马达的程序咋编 有书的更好、如何安装长安星光4500启动马达等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10078402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存