声明:这个项目是国外的一个开源项目,文章末尾会提供原项目地址。
本文只是介绍下重点部分。
这个项目分为软件与硬件部分,首先介绍硬件部分。
1.1 特点:
驱动板引脚接口兼容Arduino UNO、Arduino Mega2560、ST Nucleo...
最大功率:120W;电压:12V-24V;最大电流5A。
电机驱动:L6234PD013TR。
编码器接口:具备3.3KΩ上拉电阻(可选)。
IIC接口:具备4.7KΩ上拉电阻(可选)。
可套娃使用:可同时运行2台电机。
1.2 原理图:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CZmFmNlRTMmJTM4ATZkBDOiNWO4ETZyUTY2gTO2U2Nj9CX1AzLcdDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL3M3Lc9CX6MHc0RHaiojIsJye.png)
1.2 3d图:
1.3 硬件配置
由上图可知,在PCB反面提供了一些可配置的焊点。
这些焊点作用:
禁用/使能上拉电阻 配置A、B、I使能引脚 配置BLCD电机引脚(PWM A、PWM B、PWM C)与使能引脚
1.3.1 3.3KΩ上拉电阻说明
3.3KΩ上拉电阻的配置焊点:Pull A、Pull B、Pull I,分别作用于编码器通道A、B、I(或霍尔传感器U、V、W)。
1.3.2 4.7KΩ上拉电阻说明
IIC上拉电阻配置焊点:Pull SCL、Pull SDA。在使用arduino时,iic基本不需要上拉电阻;当使用STM32时,需要使用上拉电阻。
当使用俩快驱动板叠加时,建议使用上拉电阻。
1.3.3 可配置引脚
可配置信号与引脚对照表
信号
引脚
PWM A
3、9
PWM B
6、11、13
PWM C
5、10
使能引脚
7、8
Encoder A
3、A2、A3
Encoder B
2、A1
Encoder I
4、A0
2.1 支持的硬件
2.1.1 电机
BLDC电机
步进电机
2.1.2 驱动板卡
BLDC驱动器
步进电机驱动器
云台电机驱动器
2.1.3 位置传感器
编码器
磁性传感器
霍尔传感器
开环控制
2.1.4 主控
Arduino
STM32
ESP32
Teensy
由于我是用的是AS5600磁编码器,程序就以AS5600为例
#include <SimpleFOC.h>
MagneticSensorI2C sensor = MagneticSensorI2C(0x36, 12, 0x0E, 4);
// Motor instance
BLDCMotor motor = BLDCMotor(9, 5, 6, 11, 8);
void setup() {
sensor.sda_pin = 14; // change i2c data pin - OPTIONAL
sensor.scl_pin = 15; // change i2c clock pin - OPTIONAL
// initialise magnetic sensor hardware
sensor.init();
// link the motor to the sensor
motor.linkSensor(&sensor);
// initialize motor
motor.init();
// align encoder and start FOC
motor.initFOC();
// set the initial target value
motor.target = 2;
_delay(1000);
}
void loop() {
// iterative setting FOC phase voltage
motor.loopFOC();
// iterative function setting the outer loop target
// velocity, position or voltage
// if target not set in parameter uses motor.target variable
motor.move();