单片机pwm控制电机转速

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机pwm控制电机转速相关的知识,希望对你有一定的参考价值。

利用89C51或89C52 控制直流电机运转,电机驱动芯片是L298N,还有3个按钮,本别对应电机加速、减速和反转。利用红外对管测速,并在液晶显示器上显示设定转速和实测转速,显示器用的是SO12864,我研究了10多天了,做出来在仿真的时候一点作用都没有,不知道是哪里出错了。希望网友有资料的可以邮件给我。帮帮忙啊。如果你会的话也可以帮忙做一下,谢了。高悬赏

  单片机控制电机转速:
  如果只有一个转向的话就比较容易了,如果要有正反两个转向,就需要一个H桥,并且两个I/O口输出高低电频控制。
比如用P1口的P1.0,P1.1,P1.2三个I/O口接按键,P3.4口接电频输出,编个定时程序及按键程序,如果是快(全速运行),那就P3.4口直接输出高电频“1”;中(50%),那就让P3.4口0—50ms输出高电频“1”,50ms—100ms输出低电频“0”,后面就一直以50ms进行一次取反;慢(就用10%吧),0—40ns输出高电频“1”,41ns—400ns输出低电频“0”,这样为一个周期,后面就一直循环吧。
  如果按键P1.0按下,执行方式1,全速运行,否则以默认方式运行;按键P1.1按下,执行方式2,改变占空比,以50%的速度运行,否则,不作改变;按键P1.2按下,执行方式3,改变占空比,以10%的速度运行,否则,不作改变。
参考技术A 一. 带注释软件清单
;==========使用单元设定==========
//..................................使用单元设定
DIS0 EQU 30H
DIS1 EQU 31H
DIS2 EQU 32H
DIS3 EQU 33H
LED EQU 34H
TM1 EQU 35H;
TM2 EQU 36H;
INTV BIT 37H;中断标志
THX EQU 38H;定时脉宽高电平
CISHU EQU 39H
FIRST BIT 41H; 检测加减是否第一次按下
SET1 BIT 42H
SETZ0 EQU 43H;设定当前设定值SETZ0~SETZ3
SETZ1 EQU 44H
SETZ2 EQU 45H
SETZ3 EQU 46H
TM3 EQU 47H; 循环次数单元
JIA1 BIT 48H; 单步加标志
LIANJIA BIT 49H; 连加标志
JIAN1 BIT 50H; 单步减标志
LIANJIAN BIT 51H; 连减标志
SETDATA EQU 52H; 设定速度暂存单元
REALDATA EQU 53H; 实测速度暂存单元
YK1 EQU 54H; 上次输出数据暂存单元
KP EQU 56H;比例系数
KI EQU 57H;积分系数
EK EQU 58H;设定值和实测值的差值
EK1 EQU 59H;上次的EK值
OUTPUT EQU 60H;
EK2 EQU 61H;EK-EK1的值
ONPRESS BIT 62H;判定ENTER键是否弹起标志
TMS EQU 63H;闪烁时长
SHAN BIT 64H; 闪烁标志
;==========主程序==========
ORG 0000H
SJMP MAIN
ORG 0013H;外部中断1入口地址
AJMP INX1
ORG 001BH;定时器T1中断入口地址
AJMP ITX1
ORG 0070H
MAIN: MOV SP,#70H;设定堆栈指针入口地址
ACALL INIT;调用初始化程序
M1: JB SET1,FLASH;当前为设置状态则跳到闪烁显示模块
ACALL DISP; 否则为一般显示
SJMP NEXTT
FLASH: ACALL DISP1
NEXTT: ACALL DELAY;调用按键延时程序
ACALL M2;调用按键程序
DJNZ CISHU,M1;第隔100MS刷新一下实测值
MOV CISHU,#20
ACALL CONTROL;调用控制调速模块
SJMP M1
//==========初始化模块==========
INIT:MOV DPTR,#0FD00H ;设置PA、PB为输出口,PC为输入口
MOV A,#03H
MOVX @DPTR,A
MOV TMOD,#21H ;定时器/计数器T1为方式2,定时器/计数器T0为方式1
MOV TL0,#00H ; 定时器/计数器T0赋初值#00H
MOV TH0,#00H
MOV THX,#0BBH ;输出单元赋初值#0BBH,即脉冲高电平宽度
MOV TH1,THX
MOV TL1,THX
SETB TR1 ;启动定时器/计数器T1
SETB TR0 ; 启动定时器/计数器T0
SETB ET1 ;允许定时器/计数器T1溢出中断
SETB EX1 ;允许外部中断1中断
SETB IT1 ;选择边沿触发
SETB EA ;CPU开中断
SETB 07H;
SETB SHAN
CLR 11H;检测是否成功
MOV LED,#7FH
参考技术B   单片机控制电机转速:
  如果只有一个转向的话就比较容易了,如果要有正反两个转向,就需要一个H桥,并且两个I/O口输出高低电频控制。
比如用P1口的P1.0,P1.1,P1.2三个I/O口接按键,P3.4口接电频输出,编个定时程序及按键程序,如果是快(全速运行),那就P3.4口直接输出高电频“1”;中(50%),那就让P3.4口0—50ms输出高电频“1”,50ms—100ms输出低电频“0”,后面就一直以50ms进行一次取反;慢(就用10%吧),0—40ns输出高电频“1”,41ns—400ns输出低电频“0”,这样为一个周期,后面就一直循环吧。
  如果按键P1.0按下,执行方式1,全速运行,否则以默认方式运行;按键P1.1按下,执行方式2,改变占空比,以50%的速度运行,否则,不作改变;按键P1.2按下,执行方式3,改变占空比,以10%的速度运行,否则,不作改变。
参考技术C   如果只有一个转向的话就比较容易了,如果要有正反两个转向,就需要一个H桥,并且两个I/O口输出高低电频控制。
  比如用P1口的P1.0,P1.1,P1.2三个I/O口接按键,P3.4口接电频输出,编个定时程序及按键程序,如果是快(全速运行),那就P3.4口直接输出高电频“1”;中(50%),那就让P3.4口0—50ms输出高电频“1”,50ms—100ms输出低电频“0”,后面就一直以50ms进行一次取反;慢(就用10%吧),0—40ns输出高电频“1”,41ns—400ns输出低电频“0”,这样为一个周期,后面就一直循环。
  如果按键P1.0按下,执行方式1,全速运行,否则以默认方式运行;按键P1.1按下,执行方式2,改变占空比,以50%的速度运行,否则,不作改变;按键P1.2按下,执行方式3,改变占空比,以10%的速度运行,否则,不作改变。
参考技术D 首先单片机的PWM是不能够驱动电机的,首先你需要一个变频器,然后设置成脉冲控制模式,然后使用单片机输出然后接线到边变频器,变频器电源断路器以及输出接电机即可!

基于51单片机霍尔测速直流电机控制设计(含源码+原理图+论文+PCB封装)基于STM32闭环步进电机控制系统设计(仿真,程序,说明)-转发分享

设计思路:

本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统,并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节,从而控制其输入信号波形等均作了详细的阐述。另外,本系统中使用了霍尔元件对直流电机的转速进行测量,经过处理后,将测量值送到液晶显示出来。

关键词:PWM信号,霍尔元件,液晶显示,直流电动机

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int 
void displaym();
sbit en=P2^5;		//1602  6管脚
sbit rs=P2^7;	 //1602端口	4管脚
sbit rw=P2^6;//lcd1602控制端口 5管脚
sbit num1=P1^0;						//占空比加1
sbit num2=P1^1;								   //占空比减一
sbit num3=P1^2;											   //正传
sbit num4=P1^3;													 //反转
sbit num5=P1^4;														   //开始停止切换

sbit out=P3^4;							 //PWM输出用于正传
sbit out1=P3^7;			//PWM输出用于反转

uint zhuansu,flag,z1,z2,m,flag_1,zheng,fan,kai;




void delay(uint z)//延时1ms函数


 uint x,y;
 for(x=0;x<z;x++)
     for(y=0;y<110;y++);




void write_com(uchar com)//向1602写一字节(控制指令)

  rs=0;
  P0=com;
  delay(5);
  en=0;
  delay(10);
  en=1;

...

基于STM32闭环步进电机控制系统设计1654

 (1) 基本功能:本任务通过输出脉冲控制步进电机的停止、运动、方向。使用 两个按键分别控制步进电机的正转和反转,再次按下这两个按键,步进电机停止, 同时 LCD 显示电机状态信息。

(2) 扩展功能:加入一个转速阈值设置功能,由电位器充当阈值设置器,可设 置目标转速并使电机接近设置的转速。

 

 

可以按照这个思路进行自行设计,也可以通过百度网盘列表下载已经做好的 
https://www.aiesst.cn/baidu.html 

以上是关于单片机pwm控制电机转速的主要内容,如果未能解决你的问题,请参考以下文章

51单片机PWM控制电机

基于51单片机霍尔测速直流电机控制设计(含源码+原理图+论文+PCB封装)

基于51单片机霍尔测速直流电机控制设计(含源码+原理图+论文+PCB封装)基于STM32闭环步进电机控制系统设计(仿真,程序,说明)-转发分享

Verilog直流电机的pwm控制设计

怎么利用单片机 红外遥控 实现小车向左转和向右转

嵌入式&单片机一文带你搞懂电机驱动模块