四、直流有刷电机电压、电流、温度采集

一、电源电压采集

由于直流有刷电机驱动板的电源电压远超 STM32 内部 ADC 所能采集的范围,并不能直接使用 ADC 进行电压采集,而是需要使用一些硬件电路对电源电压进行处理,使其减小到 ADC 采集范围。

1.原理图

① 电阻分压,利用三个电阻(R13R17R21)对电源电压 POWER 进行分压,可得 a点的电压 Va = POWER /12+12+1);
② 电压跟随电路,其作用就是让 VBUS = Va,即 VBUS = POWER /12+12+1= POWER/25; 通过这两部分电路的处理,我们就可以直接使用 ADC 采集 VBUS 的电压,再根据公式:
POWER= 25 * VBUS,即可算出电源电压。

2、代码实现

代码实现:       

1、ADC1的通道9(PB1)检测VBUS对应的ADC值,计算VBUS。      

VBUS = ADC值 * 3.3 / 4096

2、根据VBUS计算POWER的电压, POWER =  25 * VBUS

即POWER= ADC值 * 3.3 /  4096 * 25

二、母线电流采集

1.原理图

由于 STM32 内部 ADC 并不能直接对电流进行采集,所以需要先把电流的信号转换为电压的信号。

我们在 H 桥的回路中串接一个 20mR 的采样电阻,这样就可以得到一个采样电压 I-V = 0.02R * 实际电流 I,但是这个采样电压太小了,直接用 ADC 进行采集的话偏差较大,我们需要对它进行差分放大。
差分放大倍数= 12 /1+1=6 倍,参考电压为 1.27V,由此可得输出电压 Iout(即 CURT 点的电压)=6 * 0.02R * 实际电流 I + 1.27V,我们只需要采集 Iout 的电压,再根据公式:实际电流 I=(输出电压 Iout-1.27/0.12A,即可算出实际电流。

2.代码实现

代码实现:   

1、通过ADC1的通道8(PB0)检测电机未启动时Iout的电压,作为参考电压Vref

2、检测电机允许启动后Iout的电压Vrun

3、计算实际电流I     

I= (Vrun - 参考电压Vref ) / 0.12 A

三、控制器温度采集

1.原理图

我们采集的是驱动板的温度,同样需要用到 ADC 进行采集。
利用 NCP18XH103F03RB 热敏电阻对温度进行检测,该热敏电阻是负温度系数电阻,温度越高,其电阻值越低。温度采集电路的原理实现如下:
① 电阻分压,利用热敏电阻和 R35 电阻(4.7K)对 VCC3.3 进行分压,可得 a 点的电压Va = 4.7 * 3.3 V /(4.7 + 热敏电阻阻值 Rt);
② 电压跟随电路,其作用就是让 VTEMP = Va,即 VTEMP = 4.7 * 3.3 V /4.7 + 热敏电阻阻值 Rt);
通过这两部分电路的处理,我们就可以直接使用 ADC 采集 VTEMP 的电压,再通过公式即可算出热敏电阻阻值 Rt。最后我们再根据厂家给出的公式,即可算出该阻值所对应的实际温度值,具体的换算公式将会在代码注释中介绍。

2.代码实现

代码实现:

1、通过ADC1的通道0(PA0)检测VTEMP ,算出Rt     

Rt = 3.3 *  4700 / VTEMP – 4700

2、根据Rt算出实际温度值     

Rt = Rp * exp( B* ( 1/T1 - 1/T2 ) )

四、电压、电流、温度滤波取平均值

它的功能就是把电压、温度以及电流采集通道的 ADC 值分别累计1000 次,然后取平均值(滤波),最后再把 ADC 平均值存入相应的数组元素中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

做一道光

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

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

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

打赏作者

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

抵扣说明:

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

余额充值