51单片机中如何用c语言控制直流电机正反转

51单片机中如何用c语言控制直流电机正反转,第1张

#include <reg52h>

#define uint unsigned int

#define uchar unsigned char

sbit IN1=P1^0;

sbit ENA=P1^1; //左轮 1

sbit IN2=P1^2;//左轮2

sbit IN3=P1^3;//右轮 1

sbit ENB=P1^4;

sbit IN4=P1^5;//右轮 2

sbit left=P0^0;

sbit right=P0^1;

//sbit middle=P0^2;

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void init()

{

ENA=0; // 1

ENB=0; //

IN1=0; // 0

IN2=0; // 2

IN3=0;

IN4=0;

}

void pwm()

{

ENA=1;

ENB=1;

}

void dianji()

{

if(left==0&&right==0) //前进

{

IN1=1;

IN2=0;

IN3=1;

IN4=0;

pwm();

}

else if(left==0&&right==1) //右转

{

IN1=1;

IN2=0;

IN3=0;

IN4=1;

pwm();

} else if(left=1&&right==0)// 左转

{

IN1=0;

IN2=1;

IN3=1;

IN4=0;

pwm();

}

}

void main()

{

init();

while(1)

{

dianji();

}

}

主电路图:

从左到右,从上到下各元件名称及作用如下: L1、L2、L3:

三相交流电 QS:隔离开关(俗称"刀闸") 作用:隔离电路 FU1、FU2:

熔断器(fuse) 作用:短路和过电流的保护 KM1、KM2:

交流接触器主触点(常开型) 作用:接通断开电路 FR:

热继电器 作用:过载保护 M: 电机

工作过程:将主电路中的QS闭合,按下按钮SB2,线圈KM1得电。主电路中主触点KM1闭合,电机正转。当松开按钮时,由于常开辅助触点KM1闭合,线圈KM1一直得电形成自锁,所以电机正常运行。

按下按钮SB3,联动常闭触点打开,线圈KM1失电,8处的辅助触点KM1返回原来闭合状态,线圈KM2得电,电机反转。无论在哪种运行状态下,按下按钮SB1,电路断开,线圈失电,电机停止。

扩展资料

改变直流电动机转动方向的方法有两种:

一是电枢反接法,即保持励磁绕组的端电压极性不变,通过改变电枢绕组端电压的极性使电动机反转;

二是励磁绕组反接法,即保持电枢绕组端电压的极性不变,通过改变励磁绕组端电压的极性使电动机调向。当两者的电压极性同时改变时,则电动机的旋转方向不变。

他励和并励直流电动机一般采用电枢反接法来实现正反转。他励和并励直流电动机不宜采用励磁绕组反接法实现正反转的原因是因为励磁绕组匝数较多,电感量较大。当励磁绕组反接时,在励磁绕组中便会产生很大的感生电动势.这将会损坏闸刀和励磁绕组的绝缘。

并励直流电动机正、反转控制电路原理图如图所示:

当合上电源总开关QS时,断电延时时间继电器KT通电闭合,欠电流继电器KA通电闭合。按下直流电动机正转启动按钮SB1,接触器KM1通电闭合,断电延时时间继电器KT断电开始计时,直流电动机M串电阻R启动运转。经过一定时间,时间继电器KT通电瞬时断开断电延时闭合常闭触点闭合,接通接触器KM3线圈电源,接触器KM3通电闭合,切除串电阻R,直流电动机M全压全速正转运行。

同理,按下直流电动机M反转启动按钮SB2,接触器KM2通电闭合,断电延时时间继电器KT断电开始计时,直流电动机M串电阻R启动运转。经过一定时间,时间继电器KT通电瞬时断开断电延时闭合常闭触点闭合,接通接触器KM3线圈电源,接触器KM3通电闭合,切除串电阻R,直流电动机M全压全速反转运行。

直流电动机M在运行中,如果励磁线圈WE中的励磁电流不够,欠电流继电器KA将欠电流释放,其1号线与3号线间的常开触点断开,直流电动机M停止运行。

用电子电路做的话,使用两个D触发器,一个控制正反转,另一个控制开与关,再两个与门分别输出正转与反转信号,输出级采用两个三极管分别驱动两个继电器,两个继电器采用交换正负极的方式连线并输出,用两个按钮分别驱动两个D触发器,按钮两端并联一个小电容,抗干扰防抖动如果你有一定的电子技术基础的话一定可以搭起来

也可以用继电器电路做,如果你有基础的话,也是比较简单的,用两个中间继电器,接成互锁,用三个按钮,一个正转,一个反转,另一个停止就是普通的正反转控制电路

一、是电枢反接法,即保持励磁绕组的端电压极性不变,通过改变电枢绕组端电压的极性使电动机反转;

二、是励磁绕组反接法,即保持电枢绕组端电压的极性不变,通过改变励磁绕组端电压的极性使电动机调向。当两者的电压极性同时改变时,则电动机的旋转方向不变。

串励直流电动机宜采用励磁绕组反接法实现正反转的原因是因为串励直流电动机的电枢两端电压较高,而励磁绕组两端电压很低,反接容易,电动机车常采用此法。

扩展资料:

直流电动机的反转的注意事项:

1、电动机正向(或反向)启动运转后,不必先按停止按钮使电动机停止,可以直接按反向(或正向)启动按钮,使电动机变为反方向运行。

2、为了使电动机能够正转和反转,可采用两只接触器KM1、KM2换接电动机三相电源的相序,但两个接触器不能吸合,如果同时吸合将造成电源的短路事故,为了防止这种事故,在电路中应采取可靠的互锁,上图为采用按钮和接触器双重互锁的电动机正、反两方向运行的控制电路。

参考资料来源:百度百科-直流电动机

硬件的话需要一个全桥生成正负电压。我不了解L298是什么,我一般自己做一个。不过大概都一样,就是你FPGA输出的io信号是PWM的开关高低电平信号,直接给电机驱动即可。按键就是IO输入。剩下的就是编程的工作了。

不过这个我还是建议你用单片机。真的,我就是做电机控制软硬件的。FPGA做流程控制不太方便。当然,FPGA里面也有processer,或称软核。quartus自带一款叫 NIOS 的软核,可以C语言编程。如果你控制大电机的话我们再单说,如果是小电机不在乎动态过程,只要稳态速度的话,还是比较简单的。编程思路就是 电机电压= k电机转速。这个K系数跟你的电机有关系,不过是一个常数。也就是说, 当你要正转速的时候,给正电压即可。要负转速的话,给负电压。电压得到之后,其实就是占空比,然后你用FPGA生成PWM信号输到驱动器里面即可。

PWM信号只是控制信号,想要控制电机驱动,还需要驱动电路,比如H桥、驱动芯片等。正装是一个输出控制PWM信号,另一个输出低电平。反转是一个输出低电平,另一个输出控制PWM,设置成复用就当成普通的IO口,输出低电平。

通过调节PWM的占空比就能调节IO口上电压的持续性变化,因此也能够控制外设的功率进行持续性变化,也就能控制直流电机的转速快慢。

扩展资料:

注意事项:

1、在STM32中拥有多路PWM信号。每一个定时器的输出引脚都可以设置成相应的PWM信号的输出。PWM信号主要的参数有两个,周期的占空比。周期主要是由对应的定时器来确定。占空比就是PWM输出高电平的时间。 

2、在程序运行中可以使用TIM_SetCompare1()来改变相应的占空比。这样就可以实现灵活的控制PWM信号的输出。

3、管脚的IO输出模式是根据应用来定,比如如果用PWM输出驱动LED则应该将相应管脚设为AF_PP,否则单片机没有输出。

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

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

参考资料来源:百度百科-直流电动机

参考资料来源:百度百科-电机正反转

直流电机控制转向的方法很简单,只需要把正负极对调即可。

直流电机通过转子上的整流子在转子绕组中形成一个与定子永磁极极性相反的磁场,带动转子旋转。如果将转子上的正负极调换,则电机反转。

以上就是关于51单片机中如何用c语言控制直流电机正反转全部的内容,包括:51单片机中如何用c语言控制直流电机正反转、直流电机正反转接线图,用两个开关控制、并励直流电动机的正反转控制原理图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存