模板: Motor Control Shield for Arduino use

来自Waveshare Wiki
跳转至: 导航搜索

本例程已经在Arduino uno上测试通过,直接按下表连接Arduino uno即可

硬件连接

STM32F103RB连接引脚对应关系
Motor Arduino 直流电机 步进电机
M1A D2 直流电机 1 步进电机 1
M1B D3
M2A D4 直流电机 2
M2B D5
M3A D7 直流电机 3 步进电机 2
M3B D8
M4A D12 直流电机 4
M4B D13
M1EN D6 M1A, M1B 使能控制
M2EN D9 M2A, M2B 使能控制
M3EN D10 M3A, M3B 使能控制
M4EN D11 M4A, M4B 使能控制

安装编译软件(Windows教程)

arduino IDE 安装教程

运行程序

在我们提供的资料里面下载程序,并解压,再进入Motor_Control_Shield_Code/Arduino目录下

直流电机

  • 对于直流电机而言:M1EN、M2EN、M3EN、M4EN 接至了 Arduino 的 D6、D9、D10、D11,

这些引脚具有 PWM 功能,因此控制 PWM 的占空比可以控制直流电机的转速。

  • analogWrite(uint8_t pin, int value)为写模拟引脚函数,对于参数 value 而言当设置为 0 时,输出

低电平,设置为 255 时输出占空比为 100%的高电平。

  • 打开DC_Motor/DC_Motor.ino,选择Arduino型号跟端口好,再进行编译下载。

Motor-Control-Shield-3.jpg

  • 以一个直流电机为例:设置管脚为输出状态,然后配置初始状态,D12 管脚设置为低电

平,D13 设置为高电平(当然这两个管脚可以反过来,那么电机转动方向也将改变),D11 输 出高电平使能 L293 驱动芯片。

  • 在 loop()函数中设置 D11 的 PWM 占空比为 50%(value = 128 即 50%),也就间接的控制了电机转

动速度。

现象

四路直流电机同时旋转。

步进电机

  • 以 28BYJ-48 步进电机为例 : 该电机是一个五线四相八拍电机。
  • 因为使用的为 M1A、M1B、M2A、M2B 来模拟时序控制,因此需要控制 M1EN、M2EN 为高电

平使能 L293 芯片。

  • 查阅 28BYJ-48 相关资料可以发现如下这样的两个表格:
1 2 3 4 5 6 7 8
P1-红 VCC VCC VCC VCC VCC VCC VCC VCC
P2-橙 GND GND GND
P3-黄 GND GND GND
P4-粉 GND GND GND
P5-蓝 GND GND GND
供电电压 相数 相电阻Ω 步进角度 减速比 启动频率P.P.S 转矩g.cm 噪声dB 绝缘介电强度
5V 4 50±10% 5.625/64 1:64 ≥550 ≥200 ≤35 600VAC
  • 第一个表说明了电机的四相八拍是如何控制的:
  • 四相分别是 A,B,C,D,若要使 A 相导通则需要控制橙线接地,即控制 M1A 低电平。
  • 类似的控制其他几个引脚,如果把四个控制引脚看作成 4 位 bit 连续数据,那么用 8 个字节即可

表示这组逻辑的控制(橙线为最低位):

Char BeatCode[8] = { //Stepper motor eight eight beat code
 0x0E, 0x0C, 0x0D, 0x09, 0x0B, 0x03, 0x07, 0x06
};
  • 第二个表说明了控制的频率:
  • 可以看到步进电机的启动频率,步进电机在空载情况下能够正常启动的最高脉冲频率,如果脉

冲频率高于该值,电机就不能正常启动。给出的参数是≥550,单位是 P.P.S,即每秒脉冲数,
这里的意思就是说:电机保证在你每秒给出 550 个步进脉冲的情况下,可以正常启动。那么
换算成单节拍持续时间就是 1s/550=1.8ms,那么每个节拍的间隔大于该值即可转动,不过延时
越久,电机转动一步所用的时间将会变长。

  • 得到了上述信息即可以转动步进电机,但无法精确控制,28BYJ-48 是减速电机,其内部有四级

减速,减速比为 1:64,转子转 64 圈,最终输出轴才会转一圈,也就是需要 64*64=4096 个
节拍输出轴才转过一圈,如果每步 2ms,那么 2ms*4096=8192ms,需要 8 秒多才能够转一圈。
但是实际上硬件上的减速比不一定符合标称值,这里采取经验值:4076 个节拍,实际误差万分
之 0.56。

  • 打开Stepper_Motor/Stepper_Motor.ino选择Arduino型号跟端口好,再进行编译下载。

Motor-Control-Shield-2.jpg

现象

两路步进电机同时旋转。