Arduino Simple FOC Shield 的一项非常重要的功能是硬件配置
每块电路板的底部都有一组用于配置的焊盘。这些焊盘使电路板能够:
- 配置 BLDC 驱动器引脚(PWM 引脚 A、B、C 和使能引脚)
- 启用/禁用编码器 A、B 和方向通道的上拉电阻
- 配置编码器/霍尔传感器连接
- 启用/禁用线性稳压器
- 配置ADC的范围
- 配置电流检测的引脚
启用编码器/霍尔传感器上拉电阻
每块板都集成了三个 3.3KOhm 上拉电阻器,用于编码器通道 A、B 和索引(或霍尔传感器 U、V、W)。上图显示了如何焊接焊盘以启用上拉电阻。
启用 I2C 上拉电阻
带有用于 I2C 通信引脚的 4.7KOhm 上拉电阻。上图显示了如何焊接焊盘以启用上拉电阻
启用板载稳压器为 MCU 供电
板子具有集成的线性稳压器,以便为 MCU 供电,该 MCU 已通过电源组合形式的板端子堆叠在板上。板版本 v2.0.1 集成了 5V 稳压器,直接连接到板的 5V 引脚,所有 Arduino 板都可以正常工作。
配置电流检测 ADC 范围
如图微控制器连接 5V,则其 ADC 在 5V 范围内运行,如果微控制器在 3.3V 下工作,则它具有 3.3V ADC 范围。
经验法则:3.3V 或 5V
Arduino UNO - 5V 范围
stm32 (nucleo, bluepill) 和 esp32 芯片 - 3.3V 范围
配置电流检测引脚
电流感应的引脚排列非常简单,唯一真正重要的是我们不将相同的引脚用于其他用途。因此,如果堆叠多块板,请确保以使用另一块不使用的引脚配置。
信号 | 可能的引脚 |
---|---|
A相电流 | A0、A1 |
当前 B 相 | A2、A3 |
如图 A相电流A0; B相电流A2
自定义引脚排列
Simple FOC Shield 的引脚布局定制使该板能够非常灵活地使用不同的传感器和额外的 arduino 模块。但更重要的是,它使电路板可以堆叠。
以下是可配置信号及其可能的引脚分配表:
Signal | Possible pins |
---|---|
Pwm A | 9, 10 |
Pwm B | 3, 5 |
Pwm C | 6, 11, 13 |
Enable | 7, 8 |
Encoder A | 3, 12, A5 |
Encoder B | 2, A4 |
Encoder I | 4, 11, 13 |
现在,有很多可能的引脚配置,但根据您使用的微控制器和传感器,并非所有引脚配置都是可行的。例如,Arduino UNO 只有 2 个外部中断引脚,它们分别是 pin2
和3
。因此,当使用带有 Arduino UNO 和编码器的电路板时,我们将pin3
用于编码器通道 A 而不是 pwm A。
另一个例子是用 STM32 Nucleo 堆叠两块板时。Nucleo 板不能在引脚上生成 pwm
因此您不能组合Pin11
,6
引脚。因此,当使用 Nucleo 板时,避免使用 pin11
而是使用 pin 13
。
建议引脚:单板
当只使用一块板和一个电机时,选择引脚分配会容易得多。基本上你只需要注意,如果你使用编码器,编码器 A 使用Pin3,而驱动器pwm A不使用。同样,如果你使用 SPI 磁传感器,你应该避免使用引脚10
,11
因为它们是与SPI通信引脚.
// driver instance configuration based on pinout above
BLDCDriver3PWM driver = BLDCDriver3PWM(5, 9, 6, 8);
Signal | Pwm A | Pwm B | Pwm C | Enable | Encoder A | Encoder B | Encoder I |
---|---|---|---|---|---|---|---|
Pin number | 9 | 5 | 6 | 8 | 3 | 2 | 4 |
// driver instance configuration based on pinout above
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 5, 6, 8);
建议的引脚排列:与 Arduino UNO 堆叠
Arduino UNO 只有 6 个 pwm 引脚,这意味着当我们堆叠两个板时,我们没有太多选择要使用哪一个,重要的是我们如何连接 pwm A、B、C、使能和编码器 A、B、I 引脚,因为我们pwm A使用 pin3 ,只要我们pwm C不使用 pin13 。
Signal | Pwm A | Pwm B | Pwm C | Enable | Encoder A | Encoder B | Encoder I |
---|---|---|---|---|---|---|---|
Board #1 | 10 | 5 | 6 | 8 | 12 | 2 | 4 |
Board #2 | 9 | 3 | 11 | 7 | A5 | A4 | 13 |
// motor instances configuration based on pinout above
BLDCDriver3PWM driver1 = BLDCDriver3PWM(10, 5, 6, 8);
BLDCDriver3PWM driver2 = BLDCDriver3PWM(9, 3, 11, 7);