Arduino SimpleFOC库-007-电流感应

本文介绍了Arduino SimpleFOC库中在线电流检测的实现,包括硬件配置、ADC分辨率和频率设置、自动零偏移查找等功能。讨论了在线电流检测技术的优势和硬件需求,特别是对分流电阻和放大器的要求。还详细阐述了如何与电机相位对齐,以及如何作为独立电流传感器使用。示例代码展示了如何初始化和读取电流值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Arduino Simple FOC的目标是通过(至少)三种最标准的电流感应类型来支持 FOC 实现:

到目前为止(检查发布),Arduino Simple FOC仅支持在线电流感应。

当前的每一种传感类都将实现所有必要的功能,以实现 FOC 算法的简单而稳健的实现:

  • 硬件配置
    • ADC 分辨率和频率
    • 自动零偏移查找
  • 驱动同步
    • ADC 采集事件触发
    • 与驱动程序阶段的自适应对齐
  • 读取相电流
    • 电流矢量幅度的计算
    • FOC d 和 q 电流的计算

每个实现的类都可以用作独立的类,它们可用于读取 Arduino Simple FOC范围之外的 BLDC 驱动器输出上的当前值,请参见 中的示例代码utils > current_sense_test。为了使 FOC 算法工作,电流检测类链接到BLDCMotor使用驱动器读取 FOC 电流的类。

在线电流检测

在线电流检测技术是最简单的一种,也是最精确的一种。分流电阻器与电机相位对齐,在这些分流电阻器上测得的电流将是电机相电流,而与 PWM 占空比的状态无关。因此,这种实现非常适合 Arduino 设备,因为可以随时对 adc 进行采样以读取电流,并且 adc 采集持续时间与其他电流感应方法一样重要。这种方法的缺点是硬件,这种电流检测架构需要高精度双向放大器,其 PWM 抑制比常规低端或高端放大器要好得多。

### 使用ESP32进行电压和电流测量 #### 测量电压 对于电压的测量,可以利用ESP32内置的模数转换器(ADC)。通过连接分压电路到指定引脚并读取模拟值来实现电压监测。具体来说,当采用`analogRead()`函数获取来自特定GPIO引脚上的输入信号时,该数值范围是从0至4095对应于所选参考电平,在大多数情况下默认为3.3V。 下面是一段用于计算实际电压值的例子代码: ```cpp const int ADC_GPIO = 34; // 定义使用的ADC引脚编号 void setup() { Serial.begin(115200); } void loop() { float voltage = 3.3 * analogRead(ADC_GPIO) / 4095; Serial.printf("Voltage: %.2f V\n", voltage); delay(1000); // 延迟一秒再重复采样 } ``` 这段程序会周期性地打印当前测得的电压值[^1]。 #### 测量电流 要间接地测量电流,则可以通过检测流经负载两端的小阻值分流电阻所产生的微弱电压降来进行换算得出。这里推荐使用霍尔效应传感器或者精密分流计等专门设备配合ESP32完成这项工作;不过简单起见也可以构建一个简易版方案——即在线路中串联一个小欧姆级别的电阻作为感应元件,并将其产生的毫伏级变化接入上述提到过的ADC接口加以处理分析。 假设已经准备好了一个适合应用场合需求的标准件之后,就可以参照之前介绍过的方式编写类似的Arduino IDE兼容源码片段了: ```cpp #include <SimpleFOC.h> // 配置参数... float shunt_resistance = 0.1; // 分流电阻大小, 单位Ω void setup(){ ... } void loop(){ // 获取原始AD数据 long adc_value = analogRead(currentSensorPin); // 将其转化为对应的电压差 double measured_voltage = (adc_value/4095.0)*3.3; // 计算得到瞬时电流强度I=U/R double current = measured_voltage/shunt_resistance; // 输出结果供调试查看 Serial.print("Current:"); Serial.println(current); // 进一步逻辑操作... } ``` 需要注意的是,以上给出的只是基础框架示意而非完整的项目工程文件,因此可能还需要根据实际情况调整配置选项以及完善其他功能特性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值