直流电机驱动

来自Microduino Wikipedia
跳转至: 导航搜索

目的

在运动控制技术中,DC电机的应用很多,本教程将教大家如何用一个电位器来控制DC电机的转速。改变电位器的输出电压值,通过AD转换后,PWM输出给电机。

设备

  • Microduino-CoreSTM32
  • 其他硬件设备
  • 面包板跳线 一盒
  • 面包板 一块
  • 3线电位器 一个
  • 直流电机 一个
  • S8050 NPN晶体管 一个
  • IN4007整流二极管 一个
  • USB数据连接线 一根

原理

PWM

PWM(脉冲宽度调制)是按一个固定的频率来接通和断开电源,并且根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来达到改变平均电压大小的目的,从而来控制电动机的转速。也正因为如此,PWM又被称为“开关驱动装置”。

改变占空比的方法有:

  • 定宽调频法:即保持t1不变,只改变t2,这样使周期(或频率)也 随之改变。
  • 调宽调频法:即保持t2不变,而改变t1,这样使周期(或频率)也 随之改变。
  • 定频调宽法:保持T(或频率)不变,而同时改变t1和t2。

本教程采用定频调宽法。

PWM调速设计方法:

  • 软件延时法:首先求出占空比D,再根据周期T分别给电机通电N 个单位时间(t0),即N =t1 /t0,然后再断电N个单位时间,即N =t2 /t0。
  • 计数法:首先求出单位延时个数N,作为给定值放在存储单元,对通电单位时间(t0)的次数计数,然后与通电给定值比较;同理,对断电单位时间计数,然后与断电给定值比较。

原理图

在连接NPN晶体管的时候,基极B与2.2K电阻相连接在Microduino-CoreSTM32的D4引脚,发射极E连接地线,集电极C连接电机并加一整流二极管防止电感带来的影响,Microduino-CoreSTM32得A0(14)引脚用来读取电位器的电压值。 原理图如下所示:

程序

//PWM pin: 0,1,4,11,12,14(A0),15(A1),16(A2),17(A3),18(SDA),19(SCL),20(A6),21(A7)
int potPin=14;  // potentiometer connected to analog pin A0(14)
int motorPin=4;  //PWM pin 4
int potValue=0;
int motorValue=0;

void setup() 
{
    pinMode(potPin, INPUT_ANALOG);//sets the potentiometer pin as analog input
    pinMode(motorPin,PWM); //sets the motor control pin as PWM
}

void loop()
{
  potValue=analogRead(potPin);  // read the input pin
  motorValue=map(potValue,0,4096,0,65535);    // analogRead values go from 0 to 4095,
                                              // pwmWrite values from 0 to 65535
  pwmWrite(motorPin,motorValue);     //PWM pass motor
  SerialUSB.print("potentiometer = " );
  SerialUSB.print(potValue);
  SerialUSB.print("\t motor = ");
  SerialUSB.println(motorValue);
  delay(2);
}

通过analogRead()函数读取电位器的电压值并把其转换为对应的数字,用map()函数把对应的数字映射到0-65535范围内对应的值,最后通过pwmWrite()函数输出对应的PWM波。

注意:motorPin的引脚要设为支持PWM输出的引脚,Microduino-CoreSTM32支持PWM输出的引脚有0,1,4,11,12,14(A0),15(A1),16(A2),17(A3),18(SDA),19(SCL),20(A6),21(A7)。

调试

步骤一:把代码复制到IDE中,编译

步骤二:电路连接如下图:

步骤三:运行代码,打开串口监视界面。

步骤四:调整电位器,查看电机转速

结果

扭动电位器,可以调整电机转速,串口见识界面的值也随之变化。

视频

视频地址:http://v.youku.com/v_show/id_XODgwNjg3MTQw.html