Link

使用焊接焊盘进行硬件配置
SimpleFOCShield v1

Arduino SimpleFOCShield 的一个非常重要的特性是硬件配置功能。

每个板上在底面都有一组焊接焊盘,用于进行配置。这些焊接焊盘使板能够:

  • 启用/禁用编码器 A、B 和索引通道的上拉电阻
  • 配置 BLDC 驱动器引脚分配(PWM 引脚 A、B、C 和使能引脚)

注意 📢:导电墨水

许多 Arduino SimpleFOCShield 板在出厂前会进行初步测试,并且会以初始配置发货。测试配置是使用导电墨水而非焊接连接完成的。因此,当您拿到板子后,如果想要更改配置,只需用湿纸巾擦掉墨水即可。

启用编码器/霍尔传感器上拉电阻

每个板都集成了三组 3.3KΩ 的上拉电阻,用于编码器通道 A、B 和索引(或霍尔传感器 U、V、W)。上图展示了如何焊接焊盘以启用上拉电阻。 并非所有编码器都需要上拉电阻,或者更确切地说,一般情况下,大多数编码器不需要。对于那些追求成本优化的人 :slight_smile:,很多便宜的 Ebay/Aliexpress 编码器会需要它们,例如 600P ebay 编码器 及类似产品。

启用 I2C 上拉电阻

1.3.2 版本 的 shield 开始,板子配备了 4.7KΩ 的上拉电阻用于 I2C 通信引脚。上图展示了如何焊接焊盘以启用上拉电阻。 并非所有 I2C 设备(特别是磁性传感器)都需要上拉电阻,或者更确切地说,一般情况下,大多数不需要,尤其是在与 Arduino UNO 一起使用时。但在与 STM32 板(如 Nucleo-64)连接这些传感器时,经常会出现问题。这时您需要启用上拉电阻,或者自己外接上拉电阻。

注意:堆叠使用

如果您要堆叠多个 shield 并且希望使用 I2C 上拉电阻,请确保一次只在一个板上焊接这些焊盘!

自定义引脚分配

SimpleFOCShield 的引脚分配自定义功能使板子在使用不同传感器和额外的 Arduino 模块时具有很高的灵活性。但更重要的是,它使板子能够堆叠使用。

以下是可配置信号及其可能的引脚分配表:

信号可能的引脚
Pwm A3、9
Pwm B6、11、13*
Pwm C5、10
使能7、8
编码器 A3、A2、A3
编码器 B2、A1
编码器 I4、A0

*从 SimpleFOCShield 版本 v1.3.1 开始

现在,有很多可能的引脚配置,但根据所使用的微控制器和传感器,并非所有配置都是可行的。 例如,Arduino UNO 只有 2 个外部中断引脚,即引脚 23。因此,当将板子与 Arduino UNO 和编码器一起使用时,我们会尝试将引脚 3 用于编码器通道 A,而不是驱动器的 pwm A 引脚。

另一个例子是当与 STM32 Nucleo 堆叠两个板时。Nucleo 板不能在引脚 116 上生成 pwm,因此您不能同时组合使用这些引脚。因此,使用 Nucleo 板时,经验法则是避免使用引脚 11,而是使用引脚 13 代替。

因此,在以下内容中,您可以找到基于堆叠需求和所使用的微控制器的建议引脚分配配置。

建议的引脚分配:单块板

当仅使用一块板和一个电机时,选择引脚分配会简单得多。基本上,只要您使用编码器,就需要注意将引脚 3 用于编码器通道 A,而不是驱动器的 pwm A 引脚。此外,如果您使用 SPI 磁性传感器,应避免使用引脚 1011,因为它们用于 SPI 通信。

考虑到所有这些,使用一块板时,可能最好的引脚分配如下:

信号Pwm APwm BPwm C使能编码器 A编码器 B编码器 I
引脚号956832A0

在上图中,您可以看到为了获得此配置需要焊接哪些焊盘。

// 基于上述引脚分配的驱动器实例配置
BLDCDriver3PWM driver = BLDCDriver3PWM(9, 5, 6, 8);

建议的引脚分配:与 Arduino UNO 堆叠

Arduino UNO 只有 6 个 pwm 引脚,这意味着当我们堆叠两块板时,可选择的引脚不多,我们需要使用所有这些引脚。只要我们将引脚 3 用于 pwm A,并且不将引脚 13 用于 pwm C,那么如何组织 pwm A、B、C、使能和编码器 A、B、I 信号并不重要。

以下是一个与 Arduino UNO 兼容的引脚分配示例:

信号Pwm APwm BPwm C使能编码器 A编码器 B编码器 I
板 #1910118A2A1A0
板 #23567A324

上图展示了如何在两块板上焊接焊盘以获得所需的引脚分配。

// motor instances configuration based on pinout above
BLDCDriver3PWM driver1 = BLDCDriver3PWM(9, 10, 11, 8);
BLDCDriver3PWM driver2 = BLDCDriver3PWM(3, 5, 6, 7);

建议的引脚分配:与 Stm32 Nucleo 堆叠

当将堆叠的 SimpleFOCShield 与 stm32 Nucleo 板一起使用时,我们只需确保不将引脚 11 用于 pwm C,而是使用引脚 13 代替。对于 Arduino UNO,我们不应将引脚 3 用于编码器 A,而应用于 pwm A。但如果我们遵守这些限制,就可以随意选择其他引脚。

以下是一个适用于与 Nucleo 板堆叠的引脚分配配置示例。

信号Pwm APwm BPwm C使能编码器 A编码器 B编码器 I
板 #191068A2A1A0
板 #235137A324

查看上图,了解如何焊接焊盘以获得此配置。

// motor instances configuration based on pinout above
BLDCDriver3PWM driver1 = BLDCDriver3PWM(9, 10, 6, 8);
BLDCDriver3PWM driver2 = BLDCDriver3PWM(3, 5, 13, 7);

引脚 13 还是引脚 11

我们建议您先尝试配置引脚 13,如果不行再尝试引脚 11。经过测试的板子有:Nucleo-F401RE - 引脚 13 可用 / 引脚 11 不可用;Nucleo-F466RE - 引脚 11 可用 / 引脚 13 不可用。