八、无刷电机电压电流温度采集

1、三相电流采样

上图为 U 相电流采集电路(U、V、W 三相同理,这里只以 U 相为例),其中R17 为采样电阻(20mR),当有电流 I 流过采样电阻时,采样电阻上就会产生一个电压,电压大小为: I*0.02Ω(20mR)。使用 I-V 表示电流 I 经过采样电阻后形成的电压,所以 U相的电压,我们使用 I-V_U 表示。

那么现在只需要测出电压 I-V_U 的值,就可以换算出 U 相电流,但是这里有一个问题,假设 U 相电流为 10A,此时电压 I-V_U = 10 * 0.02 V = 0.2V,同理当电流为 20A 时,求得的电压值 I-V_U = 0.4V,可以看到当电流比较大的情况下,求得的电压值是非常小的,不利于我们的 ADC 采集,考虑到 ADC 的精度问题,所以我还需将电压经过差分放大电路放大后在来采集,如下图:

由上图得出该差分放大电路的放大倍数为:Diff = 12K/(1K+1K)= 6 倍, 并有一抬升电压 1.25V,所以电压放大后的输出为: AMP_IU = 6 * ( 0.02*I ) + 1.25V。由于AMP_IU 是接到电机开发板的 ADC 引脚的,所以该值是已知的,此时就可以计算出 U 相电流 I 的值。

1.1实际应用

1、电机停机状态下,通过ADC1_CH8(PB0)检测AMP_IU电压对应的ADC值,计算电压值AMP_IU电压 =  ADC值 * 3.3 / 4096,此时电压值即偏置电压;

2、当电机旋转时,继续检测AMP_IU电压对应的ADC值, 计算AMP_IU电压AMP_IU电压 = ADC值 * 3.3 / 4096

3、采样电压放大,放大倍数= 12 / (1+1) = 6倍

4、得到输出电压:AMP_IU = (6*0.02Ω* I) + 1.25V

5、采集输出电压计算实际电流I ;I = ( 旋转时电压 – 偏置电压 ) / 0.12 A

2、电源电压采样

驱动板的供电电压 POWER 经过电阻分压后进入 LMV358 的 A 路运放,该运放为电压跟随电路,所以 1 脚输出电压 VBUS 和电阻分压的值相同,即 VBUS = POWER/(12K+12K+1K)*1K,当 ADC 采集到 VBUS 电压后就可以计算出 POWER 电压。

2.1实际应用

第一步:使用ADC1_CH9(PB1)采集VBUS点的电压,即

VBUS = ADC_CH9(PB1)  * 3.3 / 4096

第二步:电压跟随电路  VBUS = POWER * 1/(12+12+1)

第三步:采集输出电压计算实际电压POWER  = VBUS * 25

最终得到:

POWER = 25* ADC_CH9(PB1)  * 3.3 / 4096

3、控制器温度采样

上图为温度检测电路,可以看到,NTC 电阻和固定的 4.7K 电阻分压,然后接入B 路运放,B 路运放也是电压跟随电路,所以此时 VTMEP = 3.3V/(Rt+4.7K)*4.7K,通过ADC 采集 VTMEP 的电压后就可以算出 Rt 的值,其中 Rt 就表示 NTC 电阻在当前温度下的电阻值。从 NTC 电阻的数据手册可以找到温度计算公式:T1=1 / ( In (Rt/R0) / B + 1/T2 ),这里的 T1 和 T2 指的是 K 度即开尔文温度,K 度 = 273.15(绝对温度) + 摄氏度;其中:

⚫ T2 :273.15 + 25(25 摄氏度下的 K 度值)

⚫ T1 :实际温度

⚫ Rt :热敏电阻在 T1 温度下的阻值;

⚫ R0 :热敏电阻在 T2 常温下的标称阻值;

⚫ B 值:热敏电阻的重要恒定参数;

其中 T1 是我们需要求解的温度值,Rt 的大小由前面的温度采集电路可以算出,其他的参数都是可以在数据手册中查找得出,代入温度求解公式即可算出T1温度值,注意该值为K度。

3.1实际应用

第一步:使用ADC1_CH0(PA0)采集VTEMP点的电压,VTEMP = ADC1_CH0(PA0) * 3.3 / 4096

第二步:电压跟随电路,VTEMP  = 3.3 * 4700 /(Rt + 4700)

第三步:采集VTEMP计算此时热敏电阻的阻值Rt

Rt  =  ( 3.3 * 4700 )/  VTEMP  -  4700

第四步:根据Rt算出实际温度值

实际温度 T1=1 / (  In (Rt/R0) / B + 1/T2 )

### 无刷电机电流采集方法 对于无刷直流电机(BLDC),其电流采样通常用于实现精确的速度控制和保护功能。以下是几种常见的电流采集方法及其对应的传感器和技术: #### 1. **基于分流电阻的电流测量** 通过在电路中串联一个小阻值的精密电阻(称为分流电阻),可以间接测量流经该电阻的电流。利用欧姆定律 \( V = I \times R \),可以通过测量分流电阻两端的电压降计算出实际电流。 这种方法的优点在于简单易用,适合低成本应用场景;然而,由于分流电阻会引入一定的功率损耗,在高效率设计中需谨慎选用合适的阻值[^1]。 ```cpp // 示例代码片段展示如何读取模拟信号并转换成电流值 const float shuntResistorValue = 0.1; // 分流电阻值 (单位: Ohm) void setup() { Serial.begin(9600); } void loop() { int sensorValue = analogRead(A0); // 假设A0连接到分流电阻上的放大器输出端口 float voltage = sensorValue * (5.0 / 1023.0); // 将ADC数值转化为伏特数 float current = voltage / shuntResistorValue; Serial.print("Current: "); Serial.println(current); } ``` --- #### 2. **采用霍尔效应电流传感器** 霍尔效应电流传感器是非接触式的电流检测装置,能够安全有效地监测交流或直流电流通量而无需中断线路。这类设备广泛应用于工业自动化领域以及家用电器产品之中。它们具有较高的隔离性能与抗干扰能力,非常适合于复杂电磁环境下的应用场合[^3]。 一种典型的代表型号为ACS712,它提供了多种量程选项供开发者选择,并且可以直接接入微控制器进行数据处理。 ```cpp #include <Arduino.h> #define ACS_PIN A0 // 定义ACS712模块的数据引脚至Arduino ADC输入接口 float offsetVoltage = 2.5; // 默认偏移电压设置为2.5V void setup(){ Serial.begin(9600); } void loop(){ int rawReading = analogRead(ACS_PIN); double actualVolts = ((double)rawReading/1024)*5 - offsetVoltage ; double amps = actualVolts/(185e-3); // 对应每毫伏对应多少安培 Serial.print("Measured Current="); Serial.println(amps,2); delay(1000); } ``` --- #### 3. **集成化芯片方案** 现代电力电子控制系统倾向于使用高度集成化的IC完成复杂的任务,比如德州仪器生产的INA219等专用电量监控芯片不仅支持双向电流测定还具备实时功耗统计等功能。这些器件内部集成了PGA(Programmable Gain Amplifier),使得外部硬件设计更加简洁紧凑同时提高了整体精度水平[^2]. 当配合像ESP32这样的高性能MCU时,则可进一步简化固件开发流程并通过高级API轻松获取所需参数信息. --- ### 总结 综上所述,针对不同需求场景可以选择不同的电流传感方式实施对无刷电机运行状态的有效监管。无论是基础型还是高端智能化解决方案均各有千秋,具体选型还需综合考虑成本预算、空间限制等因素做出权衡决定。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一道光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值