智能车制作

标题: pwm ATD 分压稳压 功率放大 [打印本页]

作者: 853355780    时间: 2010-2-24 19:55
标题: pwm ATD 分压稳压 功率放大
pwm  ATD 分压稳压 功率放大 有谁可详解一下
作者: dalei322    时间: 2010-2-24 20:44
5.3.2 PWM模块
MC9S12DG128B集成了8路8位独立PWM通道,通过设置相应控制寄存器可变成4个16位PWM通道,每个通道都有专用的计数器,PWM输出极性和对齐方式可选择,8个通道分成两组,共有4个时钟源控制。
PWM[2]主要是用于控制舵机的转向和电机的驱动。
1、通过将PWM0和PWM1级联,提高其控制精度来控制舵机的转向,由PWM1输出。在单片机总线频率为24MHz时,若设置级联PWM周期常数为60000,对应的PWM周期为20ms,PWM占空比常数为4500对应为1.5ms。改变占空比常数可以改变输出脉冲的宽度。同时为了提高舵机的响应速度使在弯道时能顺利过弯,将舵机的频率设置成10ms。
2、为了实现MC33886的正向和反向控制,用PWM2和PWM3级联,PWM6和PWM7级联,两路PWM级联来驱动电机。为提高电机的驱动能力对电机驱动频率进行了反复的调整。

最终PWM的初始化程序如下:
void pwm_init(void){
PWME=0x8A;
PWMCTL=0xB0;
PWMPRCLK=0x11;
PWMSCLA=0x01;
PWMSCLB=0x01;
PWMCLK=0xEA;
PWMPOL=0xFF;
PWMCAE=0xFF;
PWMCNT01=0;
PWMCNT23=0;
PWMCNT67=0;
PWMPER01=30000;
PWMPER23=1000;
PWMPER67=1000;
}
5.3.3 ATD模块
S12内部设置了2个10位/8位的A/D模块[2],可自行设置其转化精度和采样模式等。为了提高采样的分辨率,此次设计采用了15路AD输出。通过红外传感器采样到道路的信息,并经过ATD的模数转化,最终将结果存在相应的寄存器中,读取控制舵机的转向以及电机的速度。
其初始化程序如下:
void atd_init(void){
ATD0CTL2=0xC0;
ATD1CTL2=0xC0;
ATD0CTL3=0x02;
ATD1CTL3=0x02;
ATD0CTL4=0x8A;
ATD1CTL4=0x8A;
ATD0CTL5=0xB0;
ATD1CTL5=0xB0;
}
- 22 -
5.3.4 ECT模块
由于S12系列的MCU的定时器模块在HC12的标准定时器模块上增加了输入捕捉及脉冲累加器的功能,因而称为增强型定时器模块[2]。此次设计就用了脉冲累加和输入捕捉的功能,另外还有定时器中断的功能。
捕捉有传感器检测到的脉冲的个数,并通过脉冲累加器累加得到当前的速度值,40ms测试一次当前速度。
其初始化程序如下:
void ect_init(void){
MCCTL=0xCF;
MCFLG=0x80;
MCCNT=60000;
TCTL4=0x01;
TIOS_IOS0=0;
PBCTL=0x40;
PACN10=0x0000;
}
利用定时器进行中断反馈速度值,实时获得当前的速度。中断服务程序:
#pragma CODE_SEG NON_BANKED
void interrupt 26 ect_interrupt(void){
pulse=PACN10;
PACN10=0x0000;
MCFLG=0x80;
}
#pragma CODE_SEG DEFUALT
5.3.5时钟模块
为了提高系统的响应速度,使用单片机内部的锁相环[2]电路将外部晶振电路的16MHz通过设置SYNR,REFDV寄存器倍频到48MHz,总线时钟为24MHz。其初始化程序如下:
void crg_init(void){
SYNR=0x02;
REFDV=0x01;
while((CRGFLG & 0x08)==0 ){}
CLKSEL |=0x80;
}
作者: dalei322    时间: 2010-2-24 20:57
5.3.2 PWM模块
MC9S12DG128B集成了8路8位独立PWM通道,通过设置相应控制寄存器可变成4个16位PWM通道,每个通道都有专用的计数器,PWM输出极性和对齐方式可选择,8个通道分成两组,共有4个时钟源控制。
PWM[2]主要是用于控制舵机的转向和电机的驱动。
1、通过将PWM0和PWM1级联,提高其控制精度来控制舵机的转向,由PWM1输出。在单片机总线频率为24MHz时,若设置级联PWM周期常数为60000,对应的PWM周期为20ms,PWM占空比常数为4500对应为1.5ms。改变占空比常数可以改变输出脉冲的宽度。同时为了提高舵机的响应速度使在弯道时能顺利过弯,将舵机的频率设置成10ms。
2、为了实现MC33886的正向和反向控制,用PWM2和PWM3级联,PWM6和PWM7级联,两路PWM级联来驱动电机。为提高电机的驱动能力对电机驱动频率进行了反复的调整。

最终PWM的初始化程序如下:
void pwm_init(void){
PWME=0x8A;
PWMCTL=0xB0;
PWMPRCLK=0x11;
PWMSCLA=0x01;
PWMSCLB=0x01;
PWMCLK=0xEA;
PWMPOL=0xFF;
PWMCAE=0xFF;
PWMCNT01=0;
PWMCNT23=0;
PWMCNT67=0;
PWMPER01=30000;
PWMPER23=1000;
PWMPER67=1000;
}
5.3.3 ATD模块
S12内部设置了2个10位/8位的A/D模块[2],可自行设置其转化精度和采样模式等。为了提高采样的分辨率,此次设计采用了15路AD输出。通过红外传感器采样到道路的信息,并经过ATD的模数转化,最终将结果存在相应的寄存器中,读取控制舵机的转向以及电机的速度。
其初始化程序如下:
void atd_init(void){
ATD0CTL2=0xC0;
ATD1CTL2=0xC0;
ATD0CTL3=0x02;
ATD1CTL3=0x02;
ATD0CTL4=0x8A;
ATD1CTL4=0x8A;
ATD0CTL5=0xB0;
ATD1CTL5=0xB0;
}
- 22 -
5.3.4 ECT模块
由于S12系列的MCU的定时器模块在HC12的标准定时器模块上增加了输入捕捉及脉冲累加器的功能,因而称为增强型定时器模块[2]。此次设计就用了脉冲累加和输入捕捉的功能,另外还有定时器中断的功能。
捕捉有传感器检测到的脉冲的个数,并通过脉冲累加器累加得到当前的速度值,40ms测试一次当前速度。
其初始化程序如下:
void ect_init(void){
MCCTL=0xCF;
MCFLG=0x80;
MCCNT=60000;
TCTL4=0x01;
TIOS_IOS0=0;
PBCTL=0x40;
PACN10=0x0000;
}
利用定时器进行中断反馈速度值,实时获得当前的速度。中断服务程序:
#pragma CODE_SEG NON_BANKED
void interrupt 26 ect_interrupt(void){
pulse=PACN10;
PACN10=0x0000;
MCFLG=0x80;
}
#pragma CODE_SEG DEFUALT
5.3.5时钟模块
为了提高系统的响应速度,使用单片机内部的锁相环[2]电路将外部晶振电路的16MHz通过设置SYNR,REFDV寄存器倍频到48MHz,总线时钟为24MHz。其初始化程序如下:
void crg_init(void){
SYNR=0x02;
REFDV=0x01;
while((CRGFLG & 0x08)==0 ){}
CLKSEL |=0x80;
}
作者: jiao19880804    时间: 2010-3-17 12:38
谢谢
作者: jiao19880804    时间: 2010-3-19 09:02
xiexie
作者: tlong_1919    时间: 2010-3-19 13:52
顶!!!!!!!!!!!
作者: 632693521    时间: 2010-3-23 10:23





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2