天天看点

自制FOC控制驱动器

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

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

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

1.1 特点:

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

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

电机驱动:L6234PD013TR。

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

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

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

1.2 原理图:

自制FOC控制驱动器

1.2 3d图:

自制FOC控制驱动器
自制FOC控制驱动器

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(); 

继续阅读