51单片机霍尔测速与PWM调直流电机转速快慢
最近后台有小伙伴留言,说能不能写一篇关于霍尔传感器测试马达速度的文章,他们导师给他们布置的毕业论文是关于霍尔传感器和PWM控制的。今天我就写一篇类似的文章,增加一点难度,LCD实时显示速度,希望你们看后能明白其中的原理,更希望你们有所收获。
文章可能稍微有点长,请小伙伴们耐心看完。
首先对PWM技术先进行一下说明
PWM-脉冲宽度调制技术,通过对微处理器输出的一系列数字脉冲宽度进行调制,等效地获得模拟电路所需的波形,从而实现对模拟电路控制的一种有效技术。采用PWM技术可以避免传统调速系统模拟电路容易随时间飘移、产生一些不必要的热损耗、以及对噪声敏感等缺点,并且PWM调速系统低速特性好,动态抗干扰能力强的特点.由此来实现直流电机的启动、停止、加速、减速、正转、反转以及速度的动态显示,并且大幅度提高了转速显示的精确性。好了我们开始正式的设计说明。
设计说明
1.本设计采用STC89C51/52 两种单片机(任选其一)作为主控制器
· 2.采用霍尔传感器非接触式测电机转速
· 3.LCD1602液晶显示当前的转速,转速单位为转/分(RPM)。和显示当前的pwm占空比0~100%。
· 4.电机的速度可以通过按键调整,也可以开始暂停,正转和反转。
项目试验功能及说明:
液晶屏第一行显示电机转速,第二行显示占空比,占空比数值越大,电机转速越快。
系统一共有6个按键,单片机附近的独立按键是系统的复位按键,按下单片机会复位。
下面一排是控制按键:
1键:加速键,可以短按,占空比加1,也可长按,占空比连续加;
2键:减速键,可以短按,占空比减1,也可长按,占空比连续减;
3键:正转切换键,按下后电机正转;
4键:反转切换键,按下后电机反转;
5键:开始暂停键,按一下开始,再按一下暂停。
项目试验元器件清单
1) 9*15万用板
2) STC89C51单片机
3) 40脚IC座
4) 1602液晶
5) 16p母座
6) 16p排针
7) 10k电阻*3
8) 1k电阻*5
9) 3v直流电机
10) 3*1万用板
11) 磁铁*2
12) 塑料管
13) 3144霍尔传感器
14) 4148二极管*4
15) 8050三极管*4
16) 8550三极管*2
17) 103排阻
18) 104独石电容
19) 10uf电解电容
20) 30pf瓷片电容*2
21) 12M晶振
22) 按键*6
23) 自锁开关
24) DC电源插口
25) 导线若干
26) 焊锡若干
27) USB电源线或电池盒
制作出来的实物:
单片机直流电机控制转速仿真原理图如下:
按键仿真功能图:
电路设计原理图:
PCB-LAYOUT图如下:
部分源代码:
#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;
}
void write_data(uchar date)//向1602写一字节(数据)
{
rs=1;
P0=date;
delay(5);
en=0;
delay(5);
en=1;
}
void init()//初始化函数
{
en=0;
rw=0;
write_com(0x01); //lcd初始化
write_com(0x38); //5X7显示
write_com(0x0c); //关闭光标
TMOD=0x01; //定时器方式1
TH0=0xdc;
TL0=0x00; //定时器装入初值
EA=1; //开总中断
ET0=1; //定时器0开中断
TR0=1;
EX1=1;
IT1=1; //定时器启动
TH1=0xfc;
TL1=0x66;//定时100us
ET1=1; //定时器1开中断
TR1=1;
write_com(0x80);
write_data('V');
write_data(':');
write_com(0x87); //第一行显示转速
write_data('r');
write_data('p');
write_data('m');
write_com(0xc0);
write_data('z');
write_data('h');
write_data('a');
write_data('n');
write_data('k');
write_data('o');
write_data('n');
write_data('g');
write_data('b');
write_data('i'); //在第二行显示zhankongbi:
write_data(':');
displaym();
}
void keyscan() //键盘扫描函数
{
if(num1==0)
{
delay(5); //消除抖动
if(num1==0)
{
if(m<=199)
m++;
displaym(); //设定占空比加一
}
}
if(num2==0)
{
delay(5);
if(num2==0)
{
if(m>=1)
m--;
displaym(); //设定占空比减一
}
}
if(num3==0)
{
delay(5);
if(num3==0)
{
zheng=1; //正传标志置1
fan=0; // 反转标志置0
}
}
if(num4==0)
{
delay(5);
if(num4==0)
{
zheng=0; //正传标志置0
fan=1; // 反转标志置1
}
}
if(num5==0)
{
delay(5);
if(num5==0)
{
while(num5==0) ;
kai=1-kai;
}
}
}
void display()
{
write_com(0x82);
zhuansu=zhuansu*30; //将两秒内的计数乘以30得到转每分
if(zhuansu/10000!=0)
write_data(zhuansu/10000+0x30); //如果转速的万即第五位位不为0 正常显示否则显示空格
else
write_data(' ');
if(zhuansu/1000==0)
write_data(' ');
else
write_data(zhuansu%10000%1000+0x30); //如果转速小于1000 千位为空格 否则正常显示
if(zhuansu/100==0)
write_data(' ');
else
write_data(zhuansu%10000%1000/100+0x30); //如果转速小于100 百位为空格 否则正常显示
if(zhuansu/10==0)
write_data(' ');
else
write_data(zhuansu%10000%1000%100/10+0x30); //如果转速小于10 十位为空格 否则正常显示
write_data(zhuansu%10000%1000%100%10+0x30);
write_com(0xd0); //如果没有这句,当中断内的显示函数执行完,就会在转速的位置显示占空比数据,导致乱码
}
void displaym()
{
write_com(0xcb);
if(m/200%10!=0)
write_data(m/200%10+0x30); //如果占空比百位不为0则显示百位否则显示空格
else
write_data(' ');
if(m/200%10==0&&m/20%10==0)
write_data(' ');
else
write_data(m/20%10+0x30); //如果占空比小于10 十位正常显示 否则显示空格
write_data(m/2%10+0x30); //显示个位
}
void main()
{
flag_1=0;
m=100; //占空比为100
zhuansu=0; //转速初值0
flag=0;
zheng=1; //初始化电机正转动
fan=0;
init(); //初始化
while(1)
{
keyscan(); //键盘扫描程序
}
}
void int1()interrupt 2 //外部中断1脉冲技术记录电机的转速 电机转一圈zhuansu加一
{
zhuansu++;
}
void int2()interrupt 3 //定时器0显示转速
{
TH0=0xdc;
TL0=0x00;//定时10ms
flag++;
if(flag==200) //计时到达2s
{
display(); //显示转速
zhuansu=0; //转速重置0
flag=0;
}
}
void int3()interrupt 1 //产生PWM
{
TH1=0xff;
。。。。。。。。。。
…………限于本文篇幅有限 只能写部分代码,需要完整代码请留言或者私信…………
最后,如果有什么意见或者建议欢迎直接给我留言,让我们共同学习一起进步,
如果需要完整代码或设计文件,请在下方留言或者私信我,看到后会第一时间回复。
谢谢!
如果喜欢我的文章请评论转发加关注哦。
PWM调速对直流电机运行特性的影响研究
摘 要 :直流电机PWM调速实质是利用电力半导体器件的开关特性控制直流电源的开通与关断时间来改变电机两端电压的大小,从而实现调速。但电机两端电压的变化不仅会改变转速,而且也会对电机转矩、机械特性造成影响。为了研究电机PWM调速对电机运行特性的影响,搭建了直流电机驱动电路进行实验,并根据实验数据的分析计算,得出PWM波影响直流电机运行特性的规律。
0 引言
PWM即脉冲宽度调制,PWM调速就是在固定的频率下,通过控制电力半导体器件在一周期内的开通与关断时间,调整直流电机两端的电压大小,从而调节电机转速[1]。PWM调速具有控制方便、调速平滑、响应速度快等优点,因此在直流电机调速领域中被广泛采用[2-3]。PWM调速主要靠电压的调整,而电压的变化对直流电机的转矩、机械特性也会造成影响。为研究这种影响的变化规律,设计直流电机驱动电路进行实验,通过调节PWM波的占空比和频率来进行对比试验,然后对实验数据分析计算,得到PWM调速对电机运行特性的影响。
1 直流电机运行特性
直流电机的运行特性主要包括转速特性、转矩特性、机械特性(转速-转矩特性)及效率特性。本文主要讨论前三种特性。
1.1 转速特性
转速特性是指在额定电压和额定电流的情况下,电机的转速n与电枢电流Ia之间的关系。
式中,Ce为电动势常数;
为每一磁极总磁通量;U为电枢端电压;Ia为电枢电流;Ra为电枢电路总电阻。
1.2 转矩特性
转矩特性是指在额定电压和额定电流下,电机的转矩Te与电枢电流Ia之间的关系。
式中,
为转矩常数。
1.3 机械特性
机械特性作为电机一个重要的特性,是指电机在额定电压和额定电流情况下,转速与转矩之间的关系。
式中,
为理想空载转速,
为机械特性斜率。
2 PWM调速电路设计方案
根据直流电机的运行特性公式(1)~(3)可知,直流电机的运行特性与U和Ia均有关。为准确分析PWM波对运行特性的影响,直流电机驱动电路需采集电机的电流值和电机两端的电压值。总体设计框图如图1所示[4]。
2.1 驱动电路
驱动电路由IR2110驱动芯片和场效应管搭建的H桥电路组成。IR2110是高电压、高功率MOSFET和IGBT驱动芯片,具有独立的高端和低端输出通道,其高压侧可承受500 V~600 V的电压[5]。图2为H桥驱动电路,MOSFET选用IRF540,自举电容为0.47
,自举二极管为1N5819。电机的控制信号为PWM1、PWM2,分别接STM32的PB12、PB13。其中PWM1为正转控制信号,PWM2为反转控制信号。PWM1和PWM2同时输入时为能耗制动。
2.2 电流、电压检测电路
驱动电路电流检测选用线性电流传感器ACS712,该器件输出电压与检测的电流有很好的线性[6],将该芯片串接在H桥与电源之间,如图2所示。系统中ACS712输出与STM32的PA0相连。电压检测选用电阻分压的方式,将电机两端电压接10
和1
电阻接地,用STM32的PA1端口采集两电阻之间的电压。
2.3 STM32及上位机
STM32用于输出PWM波以及电机的电流、电压采集与转换,并将数据通过串口输出。测试中上位机为PC,选用串口调试助手作为上位机软件。
3 数据采集
PWM波主要参数为占空比和频率,为确保结果准确可靠,分别进行恒定频率不同占空比和恒定占空比不同频率实验。实验选用正科ZYTD-60SRZ的24 V/36 W永磁式电机,其空载转速2 000 r/min,空载电流为0.23 A。
3.1 恒定频率不同占空比
实验中PWM输出的频率不变,占空比逐渐增加,从上位机得到电机的电流值和电压值。为排除误差引入的干扰,得到准确的数据,选择3个不同频率进行实验。图3为不同频率下电机两端的电压变化曲线,表1为不同频率下电机的电流值。
由实验可知,在频率恒定,占空比达到一定值时,电机两端电流才会受到占空比的影响。且电机两端的电压与占空比呈线性关系变化。电机电流随占空比增加而增大,低占空比时增加缓慢,占空比达到一定值后电流快速增加,之后趋于稳定。
3.2 恒定占空比不同频率
为使数据准确可靠,选择占空比分别为10%、30%、50%、70%、90%、99%进行实验。实验过程中,占空比不变,频率由低到高逐渐增加,得到电机的电流值和电压值,绘制图表如下。图4为恒定占空比下电机两端的电压变化曲线,表2为恒定占空比下电机的电流值。
由上述实验可知,在低占空比的情况下,频率对电机两端电压影响较大,而高占空比时,影响则小得多。但是低频时,电机运行会产生抖动,且噪声较大;高频时则运行平稳,且噪声小。该实验中,电机在1 kHz时运行平稳,噪声小。电机的电流与电压的变化规律几乎一致,且在同一频率下的电流变化正好印证了恒定频率不同占空比的实验。
4 验证实验
为了验证实验结果的正确性,便于对电机运行特性进行分析。选用强磁24 V直流电机验证。其结果如表3、表4。
由表3、表4的数据可得到与上述实验相同的结果,因此,可得到实验结果如下:
(1)占空比达到一定值,电机两端电压才会增加,且与占空比近似线性;
(2)电流在低占空比时电流较小,达到一定值时电流迅速增大,接近额定电流时,趋于稳定;
(3)电机在低频运行时,会有抖动且噪声大,高频时运行平稳、噪声小;
(4)频率对电机两端电压的影响与占空比有关,占空比高则影响小,占空比低则影响大;
(5)电机的电流变化与电压的变化趋势大体一致。
5 运行特性分析
由实验可知,用PWM波控制电机时,占空比为影响电压、电流的主要因素,因此需要讨论占空比对运行特性的影响。该24 V/36 W直流电机的额定空载转速n′0= 2 000 r/min,可得:
由
可得:
在对电机运行特性进行分析时,可认为
恒定不变,则
也为定值。
将数据进行运算得到该直流电机运行特性随占空比的变化曲线,如图5~7所示。
(1)转速特性
根据转速公式(1),在低占空比时,由于电压和电流变化较小,电机转速很小,当占空比超过一定值时,电压和电流均升高,在这一阶段转速开始上升,在占空比较高时,电机的电流和电压接近额定值,这时转速缓慢上升,直到达到最大值。
(2)转矩特性
根据转矩公式(2),转矩主要由电机电流决定,因此转矩的变化趋势与电机电流相似,在低占空比时,转矩很小,随着占空比增加转矩也增加,在高占空比时,转矩逐渐趋于稳定。
(3)机械特性
由公式(3)可知,电机的机械特性与转速和转矩有关,计算时设空载转速为定值,因此机械特性主要决定因素为转矩。在低占空比时,转矩很小,机械特性最好,随着占空比增加转矩增加,机械特性逐步减小,在高占空比时,转矩逐渐趋于稳定,机械特性也趋于稳定。
6 结论
通过搭建直流电机驱动电路,分析PWM波的占空比、频率对直流电机两端电压和电流的影响,得出相关数据并进行分析得到一般性结论,然后验证结论的正确性。根据实验结论和直流电机运行特性的相关计算公式,分析电压、电流的变化对运行特性的影响,从而得到脉宽调制对直流电机运行特性的影响。
(1)PWM波的占空比对运行特性的影响:电机转速与转矩变化趋势相似,在低占空比时,转速和转矩很小,当占空比超过一定值时,转速和转矩增加,在高占空比时,转矩逐渐趋于稳定;而机械特性在低占空比时最好,随着占空比增加机械特性逐步降低。
(2)PWM波的频率对运行特性的影响:随着频率增加电机运行的抖动和噪声减小,但综合硬件设计,使用PWM控制电机时,应选取合适的频率。
参考文献
[1] 何存富,周龙,宋国荣,等.基于DSP的直流电机驱动控制电路设计[J].测控技术,2007(1):64-67.
[2] 解恩,王璞.一种新颖的直流电机PWM调制方式[J].电机与控制应用,2012(11):29-32.
[3] 焦玉朋.基于51单片机的PWM直流电机调速系统[D].呼和浩特:内蒙古大学,2013.
[4] 杨学存,杨战社,孔令红.基于ARM的嵌入式直流电机PWM调速系统设计[J].煤矿机械,2012(4):255-257.
[5] 伍洲,方彦军.IR2110在电机驱动器设计中的应用[J].仪表技术与传感器,2008(11):88-90.
[6] 董建怀.电流传感器ACS712的原理与应用[J].中国科技信息,2010(5):92-93,96.
相关问答
51单片机 步进电机怎么 调速 ?答:51单片机不能直接驱动步进电机,因为单片机的输出的是数字信号,不是驱动电流,所以需要外加驱动,舵机是可以通过单片机直接控制的PWM控制,51单片机是对所...
51单片机 如何控制74hc595产生 pwm 波?求代码?不停地更新595的输出就可以了。但是595本身就是串口行控制的,所以PWM的频率不会很高。不停地更新595的输出就可以了。但是595本身就是串口行控制的,所以PWM...
请问“基于 单片机 的数字直流调速系统设计”和“基于 单片机 的直流电机 PWM调速 控制测量系统”有什么区别?没有语言环境,谁知道你要干嘛,第二个要带测量没有语言环境,谁知道你要干嘛,第二个要带测量
0-5V转 PWM 谁有做过 单片机 方案,为什么我的 单片机 输出 PWM 老是不稳?单片机采集模拟信号,需要在单片机内部程序中做平均滤波算法,否则容易不稳定。如果你只是用到了模拟信号转pwm,也可以使用apc芯片,无需编程,很稳定。gp9303就...
怎么用 51单片机 来实现 pwm 调节占空比?可以用两级中断来实现,该方法可实现精确占空比与频率的调整。。。大致思想是:1.在定时器T0中开定时器T1,并使pwm=1,2.在定时器T1中关掉T1,即TR1=0;并使pw...
51单片机 控制 pwm 风扇原理?原理是当输出频率一定时,输出电压与高电平的占空比成正比,即PWM每个周期中高电平脉宽越宽输出电压越高。单片机使用方法是1.设置定时器的工作模式为PWM和输...
如何将 单片机 输出的 PWM 控制信号,变成可以带负载的变化的电压?单片机输出的PWM为控制信号,需要加入控制器件才可以驱动负载单片机输出的PWM驱动能比较弱,不能直接驱动负载,需要三极管、MOS管参与才可以控制负载的功率,比...
STC 单片机PWM 输出最大可以达到多少频率?STC1T单片机理论上是最高工作频率35MHZ;其最高时钟频率没那么高,不过20多MH应该没问题的,定时器最高频率应该就是20/256MHZ左右了,不需要定时器直接在主循环...
stc15 单片机pwm 工作原理?STC15W内部集成了一个15位的PWM模块,可以6路独立输出.此外PWM模块每一路都有两个用于控制波形翻转的计数器T1和T2,可以灵活地控制每路PWM的高低电平宽度,...
用 单片机 做 PWM 控制电加热器的加热功率请问控制思路是什么?控制思路是,PWM波形,在高电平时候可以给加热器通电,于是加热丝器就开始加热。在底电平的时候就不给加热器通电。不加热。通过控制加热的时间来控制加热的热...