专栏名称: 嵌入式微处理器
关注这个时代最火的嵌入式微处理器,你想知道的都在这里。
目录
相关文章推荐
白鲸出海  ·  ChatGPT官宣周活过4亿,TikTok重 ... ·  2 天前  
阿里开发者  ·  GPU是如何进行算力管理的? ·  3 天前  
白鲸出海  ·  跨境电商 “卷” ... ·  3 天前  
白鲸出海  ·  一款伪直播应用,赚了百万美元 ·  3 天前  
51好读  ›  专栏  ›  嵌入式微处理器

自制FOC控制驱动器

嵌入式微处理器  · 公众号  ·  · 2024-07-18 18:28

正文

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


本文只介绍一下重点部分,这个项目分为软件与硬件部分,首先介绍硬件部分。


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 原理图:


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. 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

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


开源地址:点击文末 “阅读原文 ”查看演示视频。


END

来源:嵌入式基地







请到「今天看啥」查看全文