利用ADuC7026控制有刷直流电机的两种方法
0赞1.直流电动机的工作原理
导体受力的方向用左手定则确定。这一对电磁力形成了作用于电枢一个力矩,这个力矩在旋转电机里称为电磁转矩,转矩的方向是逆时针方向,企图使电枢逆时针方向转动。如果此电磁转矩能够克服电枢上的阻转矩(例如由摩擦引起的阻转矩以及其它负载转矩),电枢就能按逆时针方向旋转起来。
2.ADUC7026控制方式
对直流电机有两种控制方式,一是通过连接到DAC接口通过改变输入电压来改变转速,或是连接到PWM接口通过改变PWM信号的占空比来改变转速。下面介绍用ADuC7026的DAC和PWM功能控制电机转速的方法。

(1)通过调节电位器的值来改变ADC0引脚的输入电压值,对ADC0的输入电压进行重复单一的DA转换,DAC1的输出随着电位计的调节而改变,从而控制电机转速。
ADuC7026片上DAC简介:ADUC7026集成了4个12位电压输出的DAC,每个DAC都有一个可以驱动5 kΩ/100 pF的缓冲器。它有三个可选择的量程,0V~VREF (内部带隙2.5V参考电压),0V~DACREF和0V~AVDD。DACREF同外部的DAC参考电压是等效的,其信号的范围为0V~AVDD。它们采用电阻串网络,通过缓冲放大器与端口相连。
#include<aduc7026.h>
void ADCpoweron(int);
int main(void)
{ // 设置ADC和DAC
ADCpoweron(20000); // 设置ADC上电
ADCCP = 0x00; // 设置ADC0转换
DAC1CON = 0x13; // 设置参考电压范围为AGND~AVDD
REFCON = 0x01; // 内部2.5V参考电压
while (1)
{
ADCCON = 0x6A3; // 软件启动转换,单端模式,转换启动使能
while (!ADCSTA){} // 等待转换结束
DAC1DAT = ADCDAT; // 将ADC0的结果送到DAC1
}
}
void ADCpoweron(int time)
{
ADCCON = 0x620; // ADC上电
while (time >=0) // 延时,等待ADC完全上电
time--;
}
/******************************************************************************/
(2)控制PWM占空比,调节senddata数值改变电机运转速度
aduc7026PWM简介:ADuC7026有一个灵活的,可编程的三相脉宽调制(PWM)波形发生器,通过编程可以产生驱动三相电压源逆变器所需的转换模式,来控制交流电机。它可在六个PWM输出管脚(PWM0H、PWM0L、PWM1H、PWM1L、PWM2H、PWM2H)产生三对PWM信号,这六路PWM输出信号包含三个高电平驱动信号和三个低电平驱动信号。产生的PWM模式的转换频率和死区时间可通过PWMDAT0 和PWMDAT1 寄存器编程实现。另外,三个占空比控制寄存器(PWMCH0、PWMCH1和PWMCH2)直接控制三对PWM信号的占空比。六路PWM输出信号可以分别由PWMEN寄存器中的输出使能位控制使能,而PWMEN寄存器中的三个控制位允许各对PWM信号中的两个信号交叉使用。在交叉模式下,本应向高电平转换的PWM信号会转变为互补的低电平输出,本应向低电平转换的PWM信号会转变为互补的高电平输出。
#include<aduc7026.h>
int main(void) {
GP4DAT = 0x04000000; // 设置P4.2输出,LED 亮
GP3CON = 0x11111111; // 使能PWM输出到P3口
// 设置PWM
PWMCON = 0x0001; // 使能PWM
PWMDAT0 = 0x00A0; // 切换周期
PWMDAT1 = 0x00; // 死区时间
PWMCFG = 0x00; // 低电平门极斩波使能
PWMCH0 =senddata; // 通道0占空比
PWMEN = 0x00; // 使能通道输出和交叉
GP4DAT ^= 0x00040000; // 补充P4.2引脚,输出数据
while (1){}
}
/******************************************************************************/
