Stepper Motor HAT

来自Waveshare Wiki
Eng10讨论 | 贡献2019年12月9日 (一) 11:11的版本 →‎细分设置
跳转至: 导航搜索
Motor Driver HAT
Stepper Motor HAT
{{{name2}}}
{{{name3}}}
板载接口
RPi


说明

提供树莓派和Jetson nano例程

特点

  • 基于树莓派接口设计,适用于Raspberry Pi Zero/Zero W/Zero WH/2B/3B/3B+
  • 板载两路DRV8825电机驱动芯片,内置转换器,方便控制,可以驱动两个步进电机,
  • 可通过拨码开关选择六种不同的步进分辨率:全步,半步,1/4步,1/8步,1/16步和1/32步
  • 并可通过电位器调节输出电流, 最大支持2.5A电流输出。
  • 板载5V稳压芯片,输出可达3A电流,可直接给树莓派供电
  • 板载多种步进电机接口,方便规格步进电机接入

产品参数

  • 电机驱动电压:8.2V~28V
  • 电机驱动芯片:DRV8825
  • 最大电流:2.5A
  • 产品尺寸:65mm × 56mm
  • 过孔直径:3.0mm

硬件资源

Stepper motor hat hard.png

标号 描述
VIN 8.2~28V外部电源输入
5V 5V电源
GND 电源地
A1 双极步进电机M1绕组A输出1端
A2 双极步进电机M1绕组A输出2端
B1 双极步进电机M1绕组B输出1端
B2 双极步进电机M1绕组B输出2端
A3 双极步进电机M2绕组A输出1端
A4 双极步进电机M2绕组A输出2端
B3 双极步进电机M2绕组B输出1端
B4 双极步进电机M2绕组B输出2端

其中:
A1、A2、B1、B2:步进电机M1控制端口
A3、A4、B3、B4:步进电机M2控制端口
电源开关可以控制模块是否给树莓派供电
拨码开关D0-D5可以控制细分格式;
D0-D2控制步进电机1;
D3-D5控制步进电机2;
板载的两个电位器,可以控制输出电流

电源

Stepper motor hat power.png
电源部分采用MP1584稳压芯片,该芯片支持4.5V到28V的宽电压输入,输出电流达3A。虽然芯片支持最低4.5V的输入,但是由于给电机驱动芯片的工作电压也由VM供给,最少需要8.2V才能工作,因此实际上输入电压最好保持在8.2-28V。

电机驱动

DRV8825是一款双H桥电机驱动芯片,支持32细分,还集成了短路、过热、欠压及交叉传导保护电路,能够检测故障状况并迅速切断H桥,从而为电机和驱动芯片提供保护。
Stepper motor hat motordriver.png
VM为输入电压,输入范围为:8.2V到45V,综合稳压芯片的输入范围,输入8.2V到28V。
nSLEEP需要保持高电平,否则芯片将直接进入睡眠模式,器件的 H 桥被禁止,电荷泵电路停止工作,V3P3 输出被禁止,同时内部所有时钟停止工作,所有的逻辑输入都被忽略。
nENBL管脚为使能管脚,输入低电平,H 桥输出使能,STEP上的上升沿被识别。输入高电平, H 桥被禁止,输出是高阻状态,STEP 输入被忽略。在不工作的情况下一定要失能,否则芯片将一直保持在使能状态,芯片与电机将一直处于高温状态!
STEP为步进时钟输入,DIR为方向控制输入,MODE0、MODE1、MODE2为细分输入。
12与13管脚为调节输出电流的大小,R13与R16为采样电阻0.2欧姆,根据数据手册上的公式(数据手册:page11):
Stepper motor hat datasheetA.png
Ichop = V(xREF)/(5*R(ISENSE))
把R(ISENSE) = 0.2代入公式
那么输出电流与电位器上的电压成正比:
I = Vref
若电机的扭力不够,可以通过调节板载的电位器来增加输出电流。

控制原理

H桥

Stepper motor hat Hbridge.png
DRV8825一款双H桥电机驱动芯片, H桥是经典的控制电机电路,由于形状像字母”H”而得名。由四个三极管或者mosfet组成四竖,中间的一横接电机,要使电机转动,则需要对角线的一组导通。
当Q1、Q4导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经 Q4回到电源负极,电机正转,如上左图;
当Q2、Q3导通时,电流就从电源正极经Q3从左至右穿过电机,然后再经 Q2回到电源负极,电机正转,如上右图;
如果是双桥的话,那么就有了两组输出线,刚刚对应步进电机的四根线。

电机的转动原理

对于两项四线电机而言,其运动如下图所示:
Stepper motor hat motoetcontrol.png
根据安培定则可以知道,A组线圈电流左进右出时,那么定子将会产生磁场,靠内部的一侧为磁场北极,那么就会吸引电机上的转子,当四组线圈的电流按照一定关系时,产生一个旋转磁场,那么转子也就同步转动。假设一个电机只有四个定子,那么就对应下面的四个状态:
第一个状态:A组线圈电流左进右出,C组选区电流右进左出,此时为0度;
第二个状态:B组线圈电流上进下出,D组选区电流下进上出,转子从第一个状态旋转90度;
第三个状态:A组线圈电流右进左出,C组选区电流左进右出,转子从第二个状态旋转90度;
第四个状态:B组线圈电流下进上出,D组选区电流上进下出,转子从第三个状态旋转90度;
当从前一个状态变换到后一个状态称之为一步,当完成了四步的时候:这个电机就转了一圈了,这个电机的步距角就为90度。
但是现实中的电机,可能不止有4个定子,常见的42电机,57电机等都是50个定子(实际上只有48个定子,还有两个移除以此使每组定子形成一定的间距),它们的步距角为1.8度。
28BYJ-48是永磁式减速四相八拍步进电机,减速比为64,步距角为:5.625/64 度

微步细分

电机转动是因为线圈的有规律的通电,那么将会合成一个均匀分布的圆形旋转磁场,从而吸引转子转动。
根据这一原理,通过控制各相绕组中的电流,使它们按一定的规律上升或下降,即在零电流到最大电流之间形成多个稳定的中间电流状态,相应的合成磁场矢量的方向也将存在多个稳定的中间状态,只改变这个矢量方向,这样可以使电机能转的角度更小,转动的更加平滑。
以上面的四个定子的电机为例,如果细分一半,那么从第一个状态转到第二个状态急需要两步才能完成,因为第一个状态之后的那么状态,A线圈50%电流,B线圈50%的电流,将会产生一个45度的夹角的矢量磁场,从而吸引电机转子旋转45度,运行8步的时候,电机转完一圈。

DRV8825驱动电机

DRV8825只需要给脉冲数量就可以实现步进电机的旋转,按照前面的分析,并且不使用细分的情况下:
驱动42电机转一圈,需要多少个脉冲:
360 / 1.8 = 200
通过实验发现,42电机确实是转了一周
驱动28BYJ-48电机转一圈,需要多少个脉冲:
360 / 5.625 * 64 = 4096
那么确定是这样的吗?通过实验发现28BYJ-48转了两周。
28BYJ-48是四相电机,它支持单四拍、双四拍以及八拍三种工作方式,八拍的工作方式的步距角是单四拍与双四拍的一半,而使用DRV8825驱动时,是使用的单四拍的工作方式,因此驱动28BYJ-48转一圈需要2048个脉冲。

细分设置

该模块支持最高32细分,可使用软件或者使用硬件控制。

  • 软件细分控制:

首先需要将背面的6个电阻进行焊接
Stepper Motor HAT res.png
程序上修改对应的命令,来启用对应的软件系统
python可通过'softward'来选择
c语言可以通过SOFTWARD来选择
且需要将拨码开关全部拨至1,软件控制才能生效。

  • 硬件细分控制:

在c程序中可以通过HARDWARD来选择
在python中可以通过'hardward'来选择
Stepper motor hat Setway.png
其中D0、D1、D2对应控制M1驱动器的的M0DE0、MODE1、MODE2,D3、D4、D5对应控制M2驱动器的M0DE0、MODE1、MODE2。具体的对应关系如下
Stepper motor hat Setway2.png
详见datasheet page13
注:示例程序需要将D0-D5全部拨至0,对应全步。

电流设置

DRV8825的最大输出电流有2.5A.,可以通过调节下图的电位器来调节电流的大小
Stepper motor hat Setway3.png
详见datasheet page12
Stepper motor hat Setway4.png
板载的Risense = 200mR,那么我们可以简化公式:Ichop = Vxref
因此Ichop与Vxref成正比,Vxref是电位器的电压,Ichop是输出电流。
电位器顺势针旋转电压变小,电位器逆时针旋转电压变大。若需要测量,则可以给模块插上电源,使用万用表,红表笔接触下面,黑表笔接触上面的矩形焊盘。
Stepper motor hat Setway5.png
出厂设置的电位器处于正中间,是可以驱动大部分的电机的。
如果电机的最小相电流比这个大的,可能达不到理想状态,长时间工作可能会导致芯片烧毁。
请勿顺逆时针旋转到底,长时间工作可能会导致芯片烧毁。

树莓派使用

占用管脚

Stepper Motor HAT 树莓派(BCM)
A1A2B1B2 dir 13
A1A2B1B2 step 19
A1A2B1B2 enable 12
A1A2B1B2 mode 16 17 20
A3A4B3B4 dir 24
A3A4B3B4 step 18
A3A4B3B4 Dir 4
A3A4B3B4 mode 21 22 27

安装库

如果使用bookworm系统,只能使用lgpio库,bcm2835跟wiringPi无法安装与使用

BCM2835

#打开树莓派终端,并运行以下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz 
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install
# 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/

wiringPi

#打开树莓派终端,并运行以下指令
cd
sudo apt-get install wiringpi
#对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
# 运行gpio -v会出现2.52版本,如果没有出现说明安装出错

#Bullseye分支系统使用如下命令:
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build
gpio -v
# 运行gpio -v会出现2.70版本,如果没有出现说明安装出错

lgpio

#打开树莓派终端,并运行以下指令
wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zip
cd lg-master
sudo make install

# 更多的可以参考官网:https://github.com/gpiozero/lg
  • python
sudo apt-get update
sudo pip install RPi.GPIO

下载示例程序

下载示例程序,解压到指定目录:

sudo apt-get install p7zip-full
wget http://www.waveshare.net/w/upload/8/8c/Stepper_Motor_HAT_Code.7z
7z x Stepper_Motor_HAT_Code.7z -r -o./Stepper_Motor_HAT_Code
sudo chmod 777 -R Stepper_Motor_HAT_Code
cd Stepper_Motor_HAT_Code/Raspberry\ PI/

运行示例程序

提供三种程序,BCM2835、wiringPi、python

  • BCM2835例程
cd bcm2835/
make clean
make
sudo ./motor
  • wiringPi例程
cd wiringpi/
make clean
make
sudo ./motor
  • python例程
cd python/
sudo python test.py

Jetson Nano使用

安装库

#python2
sudo apt-get install python-pip
sudo pip install Jetson.GPIO
sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name
vsudo udevadm control --reload-rules && sudo udevadm trigger
#python3
sudo apt-get install python-pip3
sudo pip3 install Jetson.GPIO
sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name
sudo udevadm control --reload-rules && sudo udevadm trigger

下载示例程序

下载示例程序,解压到指定目录:

wget http://www.waveshare.net/w/upload/8/8c/Stepper_Motor_HAT_Code.7z
7zr x Stepper_Motor_HAT_Code.7z -r -o./Stepper_Motor_HAT_Code
sudo chmod 777 -R Stepper_Motor_HAT_Code
cd Stepper_Motor_HAT_Code/Jetson\ nano/

运行示例程序

提供三种程序:c、python2、python3

  • C例程
cd C/
make clean
make
sudo ./main
  • python2
cd python2/
sudo python main.py
  • python3
cd python3/
sudo python3 main.py

文档

程序

数据手册


批量下载教程——请戳Download-icon.png