ADC扫描采样步进电机两相绕组电流值

要求:同时采样电机A,B两相绕组电流值,在ADC中断中将采样得到的电流值保存在currentA,currentB两个数组中。然后进行中值平均滤波,数据保存至current_A,current_B两个变量中。

参考资料:DSPIC33FJ32MC204芯片数据手册

注1:想要采样绕组电流的前提肯定是电机运行,所以我们需要先编写好步进电机驱动运行的程序。步进电机(含状态机)驱动运行,可以参考我之前的一篇文章,按键按下启动电机,再次按下停止电机。

这时我们ADC转换触发信号源不选择定时器3,而是选择MPWM间隔结束触发ADC转换。

注2:ADC在转换完成时,ADC模块会将转换结果写入模数转换结果缓冲区。ADC结果缓冲区为16字(1字=2字节=16位)的阵列,通过SFR空间进行访问。在缓冲区填满时产生中断。ADC模块支持16个结果缓冲区(ADC1BUF0~ADC1BUFF)。也就是说我们可以在ADC中断中读取缓冲区中的结果。

硬件思路:首先明确ADC采样引脚,从图中可知与绕组电流有关的引脚为IMOTOR1,IMOTOR2也就是AN0,AN1

SHUNT_1和SHUNT_2采样得到A,B下半桥臂下半管的电压值,经过电压抬升电路得到IMOTOR1(AN0)和IMOTOR2 (AN1)

也就是说AN0和AN1采样得到的是IMOTOR1和IMOTOR2处的电压值。将电压值储存到IMOTOR1[10]和IMOTOR2[10]数组中。然后根据GainADC反推出采样电流值(SHUNT),最后将电流值储存至currentA,currentB两个数组中。

程序编写思路:首先查看芯片手册中AN0和AN1属于ADC采样通道中的哪个通道内?

芯片手册ADC框图:

可以从图中得到AN0,AN1都被CH0通道控制,同时AN0可以由CH1通道控制,AN1可以由CH2通道控制。

这个时候我们有两种简单的选择方法:

一种是AN0和AN1都由CH0通道单独控制,如果由CH0单通道控制,那么可以采用通道扫描的方法对AN1和AN0进行转换。

通道扫描:

使用CH0扫描4个模拟输入(举例用):

另外一种是由AN0和AN1交替输入选择控制,dspic33f提供MUXA和MUXB两个多路开关完成交替输入选择控制。然后进一步选择顺序采样或者同时采样。

注3:顺序采样和同时采样的不同之处在于采样维持时间。

同时采样:

顺序采样:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

清漠233

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

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

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

打赏作者

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

抵扣说明:

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

余额充值