您的位置 首页 IC

飞思卡尔那些事之PWM操控直流电机

资源:1、直流电机。当直流电机的接线端电压不同时,会出现正转或反转的状态。如接线柱A和B,当A为高电平,B为低电平时,电机正转;当A为低

资源:

1、直流电机。当直流电机的接线端电压不一起,会呈现正转或回转的状况。如接线柱A和B,当A为高电平,B为低电平时,电机正转;当A为低电平,B为高电平时,电机回转。在电机答应电压规模内,电压越高,输出功率越大,转速越快,反之,输出功率越小,转速越慢。
2、HCS12的PWM输出。经过PWM输出,能够在规范的TTL电平中,输出不同的电压。以操控电机的转速和滚动方向。
3、33886。电机驱动芯片,内部集成半H桥。能够经过TTL电平操控V+电平输出。最高频达10KHz。电压规模为0到40V。最大电流为5A。能够作业在-60到125摄氏度的环境下。

方案:
1、HCS12中的PWM模块,经过硬件进行PWM输出。
2、HCS12中的ECT的比较输出模块,经过比较输出进行PWM的输出。
鉴于PWM模块为输出PWM专用模块,经过设置相应寄存器即可完成PWM输出,简略便利,并且准确。故选用PWM模块进行PWM输出。

阐明:
1、驱动芯片为33886。
2、16位PWM操控
3、周期为1MS即输出1KHZ。
4、对齐方法为PWM左对齐方法。
5、输出极性为开始高电平。
6、占空比为0%~100%,在这期间分为10个档。经过按键进行改换,每按下一个按键,占空比进步一档。
7、经过级联方法完成16位PWM输出。
8、经过级联方法完成16位PWM输出。通道PWM01组成通道A;通道PWM23组成通道B;
9、时钟源挑选。
BusBlock:8MHz。
PWM输出频率:1KHz。
预分频:16分频500kHz
PWMPRCLK=0x66
分频:50分频 10K
ClockSX=ClockX/(2*PWMSCLX)
PWMSCLx=ClockX/ClockSX*2=500k/(10k*2)=25=0x19
经过两次分频可得通道时钟周期为:100US即10HZ
通道A时钟频率挑选PWMPRCLK和PWMSCLA;
通道B时钟频率挑选PWMPRCLK和PWMSCLB;
周期核算公式:
左对齐方法:
输出周期=通道时钟周期*(PWMPERx+1)
PWMPERx=输出周期/通道时钟周期-1
=1MS/10US-1
=9=0X09
10、占空比设置:
左对齐开始输出高电平:
占空比=[(PWMDTYx+1)/(PWMPERx+1)]*100%
PWMDTYx=占空比*(PWMPERx+1)/100%
00%:PWMDTYx=0x00
10%:PWMDTYx=0x01
20%:PWMDTYx=0x02
30%:PWMDTYx=0x03
40%:PWMDTYx=0x04
50%:PWMDTYx=0x05
60%:PWMDTYx=0x06
70%:PWMDTYx=0x07
80%:PWMDTYx=0x08
90%:PWMDTYx=0x09
99%:PWMDTYx=0x0A

CODE:
#include
#include
#pragma LINK_INFO DERIVATIVE “mc9s12xs128”
//===========================================================//
//PWM输出,操控直流电机滚动方向现已转速
//author: Yangtze
//time:2009/4/17/2:15:45
//===========================================================//
unsigned char Ton[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x08,} ;
unsigned int Tperiod=0x09;
void main(void)
{
PWME=0x00;
PWMPRCLK=0x66;//通道时钟预分频, 16分频
PWMSCLA=0x19; //时钟A分频 ,50分频
PWMSCLB=0x19; //时钟B分频 ,50分频

PWMCLK=0x0F;//PCLK1挑选ClockSA,PCLK挑选ClockSB

PWMPOL=0x0F;//开始输出高电平
PWMCAE=0x00;//PWM输出左对齐
PWMCTL=0x3C;//通8道01级联,通道23级联

PWMPER0=0x00; //级联通道01的周期高字节
PWMPER1=0x09; //级联通道01的周期低字节
PWMPER0=0x00; //级联通道23的周期高字节
PWMPER3=0x09; //级联通道23的周期低字节

PWMDTY0=0x00; //级联通道01的占空比高字节
PWMDTY1=Ton[8]; //级联通道01的占空比低字节
PWMDTY2=0x00; //级联通道01的占空比高字节
PWMDTY3=Ton[0]; //级联通道01的占空比低字节
PWME=0x0F;
for(;;);
}

//跋文:
//以上程序中,由于输出频率不是很高,故8位PWM输呈现已够用,上述程序设置通道级联完全是屡次一举。
//在挑选级联与否时,必定要具体问题具体分析,不能想当然的运用,不然又可能会形成资源糟蹋。
//上述程序中,没有对HCS12进行PLL分频,使得HCS12的BusClock很长,在必定程度上形成了资源糟蹋。
//在最终运转过程中,呈现了一点小问题,便是,PWM输出周期并补时方案中的1MS,而是3.5MS。示波器应该没有问题,估量是在核算周期的过程中犯错,影响了成果输出。
//朋友,假如和我相同,对单片机感兴趣的话,和我一块检查一下过错的原因吧。看看谁检查到的原因时正确的。嘿嘿。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/261099.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部