声明:这个项目是国外的一个开源项目,文章末尾会提供原项目地址。

 

本文只是介绍下重点部分。

这个项目分为软件与硬件部分,首先介绍硬件部分。

 

1. 电路板

 

1.1 特点:

  1. 驱动板引脚接口兼容Arduino UNO、Arduino Mega2560、ST Nucleo...

  2. 最大功率:120W;电压:12V-24V;最大电流5A。

  3. 电机驱动:L6234PD013TR。

  4. 编码器接口:具备3.3KΩ上拉电阻(可选)。

  5. IIC接口:具备4.7KΩ上拉电阻(可选)。

  6. 可套娃使用:可同时运行2台电机。

 

1.2 原理图:

自制FOC控制驱动器_后端开发

 

1.2 3d图:

自制FOC控制驱动器_后端开发_02自制FOC控制驱动器_后端开发_03

 

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. foc程序库

 

2.1 支持的硬件

 

2.1.1 电机

  1. BLDC电机

  2. 步进电机

 

2.1.2 驱动板卡

  1. BLDC驱动器

  2. 步进电机驱动器

  3. 云台电机驱动器

 

2.1.3 位置传感器

  1. 编码器

  2. 磁性传感器

  3. 霍尔传感器

  4. 开环控制

 

2.1.4 主控

  1. Arduino

  2. STM32

  3. ESP32

  4. Teensy

 

2.3 简单程序

 

由于我是用的是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(); 
}