导航:首页 > 操作系统 > 基于51单片机的直流电机调速的方法

基于51单片机的直流电机调速的方法

发布时间:2023-03-14 04:58:40

Ⅰ 51单片机控制电机转速

前天帮别人做了一个,还可以显示当前速度,和设置的速度, 4X4键盘(16个按键),设置速度可直接输入,有正转,反转,启动,停止,和加速,减速功能



Ⅱ 51单片机怎么控制大功率的直流电机,麻烦给下电路图,谢啦。主要是驱动那怎么设计

看了这么多回答的,还是我给你一个答案吧!

答案见插图。解释如下:

1:你说的大功率直流电机,用三极管肯定驱动不了,必须要大功率的MOSFET或者IGBT去驱动,IGBT或者MOSFET可以买Infineon的。主电路结构最好采用H桥电路,可以双极性正反调速。

2:H桥的上管可以用IR2110来驱动,这个芯片自己提供了一个自举功能,上管MOSFET(或IGBT)的源极电压是浮动的,自举电路可以保证上管的栅源之间的电压在开启电压阈值之上。

3:你想要用51单片机实现调速,只需要用51单片机的P0~P3口产生两组互相反相的PWM波(注意两组之间要有死区),输出到IR2110的HIN和LIN。至于程序,就很简单了,不用我多说,你懂的。呵呵……

Ⅲ 51单片机直流电机调速问题

if(K1=0) 使用错误,应该是if(K1==0)

满意请采纳

Ⅳ 51单片机控制直流电机。(c语言控制)

有3种方案:
第一种,通过PWM脉宽调制输出方法控制转速,控制占空比的大小可以实现调速!
第二种,通过AD转换的方法控制直流电机的电压
第三种,用xtr115程控电流源来控制直流电机(类似第二种方法)
如果以上的驱动能力不够的话再加上一个电压跟随器!
程序方面就是一个寄存器的配置问题了,你查一下单片机的技术手册上面都有介绍的,祝你成功

Ⅳ 基于51单片机直流电机调速测速仿真原理

基于51单片机直流电机调速测速仿真原理是以STC90C52RC单片机为主控芯片,利用PWM的原理,通过按键对直流电机进行调速,实现正反转;采用霍尔传感器对直流电机的转动进行计数,并通过主控芯片将采集到的计数值转化为直流电机的当前速度值;利用LCD1602显示模块将计算得到的值进行实时显示。

Ⅵ 51单片机直流电机调速

第一:你这个不是电机调速的,用外部中断是测速的呀。
下面是我写的.PID部分的代码就不给了,想加的话,自己找可以了
#include <AT89X52.H>
#include "common.h"

#define _WHEEL_C_

#define Left_moto_pwm P1_5
#define Right_moto_pwm P1_4

#define Left_moto_go {IN1=0,IN2=1;}
#define Left_moto_back {IN1=1,IN2=0;}

#define Right_moto_go {IN3=1,IN4=0;}
#define Right_moto_back {IN3=0,IN4=1;}

sbit IN1=P1^0;
sbit IN2=P1^1;
sbit IN3=P1^2;
sbit IN4=P1^3;

unsigned char pwm_val_left=0;
unsigned char push_val_left=0;

unsigned char pwm_val_right=0;
unsigned char push_val_right=0;

float L_Count=0,R_Count=0;
unsigned int TimerNum=0,SYS_TimeNum=0;
float Save_L_Distance=0,Save_R_Distance=0,Left_Speed=0,Right_Speed=0;
unsigned char Left_point=0,Right_point=0;

unsigned char sys_1ms=0,sys_1s=0,TurnFlag=0;

//初始化PWM调速函数
void Init_Wheel()
{
TMOD = 0x01;
TH0 = 0x0FF;
TL0 = 0x0A4;
EA = 1;
ET0 = 1;
TR0 = 1;
}

void Init_WheelSpeedInter()
{
IT0=1; //INT0下降沿中断
EX0=1; //允许INT1中断
IT1=1; //INT1下降沿中断
EX1=1; //允许INT1中断
EA=1;

}

//得到上一次0.5秒的行驶距离
float GetLeftWheelMileage()
{
return Save_L_Distance;
}

//得到上一次0.25秒的行驶距离
float GetRightWheelMileage()
{
return Save_R_Distance;
}

void Inter_Left(void) interrupt 0
{
L_Count++;
}

void Inter_Right(void) interrupt 2
{
R_Count++;
}

//小车向前函数
void Wheel_Run(char left_val,char right_val)
{
push_val_left=left_val;
push_val_right=right_val;
Left_moto_go ;
Right_moto_go ;
}

//小车后退函数
void Wheel_Back(char left_val,char right_val)
{
push_val_left=left_val;
push_val_right=right_val;
Left_moto_back;
Right_moto_back;
}

//小车停止函数
void Wheel_Stop(void)
{
Wheel_Run(0,0);
}

//左轮PWM调速函数
void pwm_out_left_moto(void)
{
if(pwm_val_left>200)
{
pwm_val_left=0;
}else
{
if(pwm_val_left<=push_val_left)
{
Left_moto_pwm=1;
}
else
{
Left_moto_pwm=0;
}

}
}

//右轮调速函数
void pwm_out_right_moto(void)
{
if(pwm_val_right>200)
{
pwm_val_right=0;
}else
{
if(pwm_val_right<=push_val_right)
{
Right_moto_pwm=1;
}

else
Right_moto_pwm=0;

}
}

//PWM调速中断(TIMER0--工作方式1)
void Wheel_Interrupt(void) interrupt 1
{
TH0 = 0x0FF;
TL0 = 0x0A4;
TimerNum++;
if(TimerNum>=2500)
{
//左右轮速度cm/s
Left_Speed=4*L_Count;
Right_Speed=4*R_Count;

//左右轮0.25秒行驶距离
Save_L_Distance+=L_Count;
Save_R_Distance+=R_Count;

//数据发送到串口图示
DataScope_Get_Channel_Data(L_Count, 1 ); //将数据 1.0 写入通道 1
DataScope_Get_Channel_Data(R_Count, 2 ); //将数据 2.0 写入通道 2
Send_Count = DataScope_Data_Generate(2); //生成10个通道的 格式化帧数据,返回帧数据长度
for( DateNum = 0 ; DateNum < Send_Count; DateNum++) //循环发送,直到发送完毕
{
SendByte(DataScope_OutPut_Buffer[DateNum]);
}

TimerNum=0;
L_Count=0;
R_Count=0;

}
pwm_val_left++;
pwm_val_right++;
pwm_out_left_moto();
pwm_out_right_moto();
}

Ⅶ 怎么用C51单片机控制直流电机详细解说下,谢谢~~~~

PWM是用来控制变频器以达到控制交流电机的目的。而要控制直流电动机,如果小功率的电机最简单的就是用DA加功率放大器或者IGBT直接驱动;如果是大功率电机就需要用单片机加DA加直流电机调速模块控制。C51单片机如果没有DA,另加DA,根据控制精度选择DA位数。

Ⅷ 用51单片机控制直流电动机并测量转速

我这个是用pwm+adc做的

ADC EQU 35H

CLOCK BIT P2.4 ;定义ADC0808时钟位

ST BIT P2.5

EOC BIT P2.6

OE BIT P2.7

PWM BIT P3.7

ORG 00H

SJMP START

ORG 0BH

LJMP INT_T0

START: MOV TMOD,#02H ;

MOV TH0,#20

MOV TL0,#00H

MOV IE,#82H

SETB TR0

WAIT: CLR ST

SETB ST

CLR ST ;启动AD转换

JNB EOC,$ ;等待转换结束

SETB OE

MOV ADC,P1 ;读取AD转换结果

CLR OE

SETB PWM ;PWM输出

MOV A,ADC

LCALL DELAY

CLR PWM

MOV A,#255

SUBB A,ADC

LCALL DELAY

SJMP WAIT

INT_T0: CPL CLOCK ;提供ADC0808时钟信号

RETI

DELAY: MOV R6,#1

D1: DJNZ R6,D1

DJNZ ACC,D1

RET

END

阅读全文

与基于51单片机的直流电机调速的方法相关的资料

热点内容
编译器标识 浏览:789
编程珠玑第三章 浏览:782
windows如何开启tftp服务器 浏览:107
欧姆龙plc编程指令表 浏览:186
程序员远程收入不稳定 浏览:860
算法原理怎么写 浏览:469
有个动漫女主蓝头发是程序员 浏览:998
云服务器资源评估 浏览:882
微云下载文件夹是空的 浏览:3
r9数控车的编程 浏览:403
为什么删不掉ksafe文件夹 浏览:291
理科男学编程用什么电脑 浏览:839
安阳弹性云服务器 浏览:570
压缩空气储罐有效期 浏览:408
英国文学PDF 浏览:175
软件编程需求 浏览:626
广州哪里解压 浏览:253
手机小视频怎么压缩 浏览:915
微信聊天界面源码 浏览:24
seo竞价推广点击价格算法公式 浏览:319