网站建设记录过程,erp生产订单管理系统,网站网站怎么定位,晋城网站建设费用目录 采样时刻触发采样同步采样 点击查看本文开源的完整FOC工程 本节介绍的adc外设高级用法用于电机电流控制。 从前面几节可知#xff0c;电机力矩来自于转子的q轴受磁力#xff0c;而磁场强度与电流成正比#xff0c;也就是说电机力矩与q轴电流成正相关#xff0c;控制了… 目录 采样时刻触发采样同步采样 点击查看本文开源的完整FOC工程 本节介绍的adc外设高级用法用于电机电流控制。 从前面几节可知电机力矩来自于转子的q轴受磁力而磁场强度与电流成正比也就是说电机力矩与q轴电流成正相关控制了q轴电流就是控制了电机力矩。从前文电流控制内容可知q轴电流从三个相线电流计算得到三个相线电流通过电流采样单元连接到stm32的adc接口得到。这里要注意本文全文没有提到过dq轴电压或相线的电压因为相线电阻会随着温度而改变而电流才是决定磁场强度。
采样时刻
从电机控制电路来看相线的电流采样并不是随时都适合采的。 首先看采样单元位于下桥的电路低侧采样当下桥关闭时流经低侧电流采样单元的电流为0而电机绕组是一个电感其电流不能突变电机相线实际是有电流存在的因此低侧采样只能在下桥打开或者上桥关闭互补PWM的状态下进行但是不要在功率管刚打开或者关闭的时刻采样因为开关动作时电流存在波动。回顾前文推导SVPWM内容我们使用的是七段式SVPWM在一个PWM周期内加入了000零矢量以及111零矢量因此不管功率管是低电平导通还是高电平导通在一个PWM周期内总是都存在3个下桥功率管全导通的时段只要在该时段中间进行采样即可。 再看采样单元位于相线的电路在线采样不管上下功率管是否关闭由于采样单元位于相线相线电感电流不能突变因此始终有电流流过照理说可以随时采样但是功率管在刚打开或者关闭的时候此时定时器计数位于比较线电流会有波动所以最好在定时器计数上下溢出时即pwm三角波极值点的时候采样此时电流比较稳定。 总结上面分析的采样时刻示意图如下图注意图中配置的PWM模式为Mode1并且配置有效电平为高电平可以查看上一节关于PWM模式和有效电平的注释。 电机电流的采样时刻非常重要但是如果不了解adc外设的高级用法你虽然知道在应该哪个时刻采样电流就会绕一个非常大的弯子去实现在特定时刻采样比如煞费苦心地配置定时器中断或者精心设计一个延时想尽可能在特定时刻进行采样等等。 在介绍采样方式前先放出stm32cube中的adc配置项的解释见下图
触发采样
adc可以被定时器输出事件从硬件层面上触发采样这样就可以自动在某些时刻进行采样了。这里要使用上节未进行介绍的高级定时器的重复计数器Repetition Counter以及输出事件Trigger Event Selection。adc外部触发源可以设置为定时器的输出事件定时器每产生一个输出事件都会触发一次adc采样。定时器输出事件来源之一是定时器更新事件定时器计数上下溢出可以产生定时器更新事件重复计数器控制了定时器上下溢出多少次才产生一次定时器更新事件。示意图如下 对于在线采样由于所有极值点都可以进行采样因此重复计数器参数不管设置多少都可以只是影响到采样频率。 对于低侧采样由于要保证在上桥关闭或者下桥打开状态下进行采样采样时刻要么全是上极值点要么全是下极值点因此重复计数器必须为奇数。要注意pwm模式1或者模式2会影响采样时刻位于上极值点还是下极值点举个例子pwm模式1时当定时器计数值大于比较线时控制上桥的pwm正通道会输出无效电平因此需要在上极值点采样那么定时器起始计数值应当设置为大于0这样可以跳过第一个下极值点并且设置重复计数器为1这样每次adc采样都会在定时器计数值上极值点被触发。 在stm32cube中定时器触发adc采样功能需要设置高级定时器的配置项为 adc通道分为两种常规通道和注入通道注入通道就是在常规通道采样时可以插队注入通道采样完毕后常规通道继续其未完成的采样。在stm32中只有注入通道才能被高级定时器TIM1的输出事件触发因此需要配置注入通道而不是常规通道
同步采样
stm32的adc有多个通道对应多个IO口有两种方式可以采集adc多个通道分别是采样序列和同步采样。 采样序列 多个adc通道可以配置到采样序列中当adc被定时器触发采样时采样序列中的多个通道会按照序列顺序自动依次采样整个序列采样完成后产生一个采样完成中断。但是这个采样方式的多个通道不是同时进行的有先后顺序的在采集电机电流时总是希望几个相线电流能够同时被采样到因此同步采样更加好。有些stm32的adc只有一个只能采用采样序列方式。 同步采样 同步采样需要多个adc配置为主adc和从adc。当主adc被定时器触发采样时从adc也会同时进行采样全部adc采样完成后产生一个采样完成中断。在stm32f1中最多可以配置双adc同步模式在stm32f4中可以配置三adc同步模式。 以电机电流在线采样双采样单元为例在stm32cube中首先打开adc1的通道0和adc2的通道1对应电路上的两个采样单元
配置adc1为双同步注入模式此时adc1即为主adc
配置adc2 stm32cube生成代码后在main函数的while(1)前调用
HAL_ADCEx_Calibration_Start(hadc1);
HAL_ADCEx_Calibration_Start(hadc2);
HAL_ADCEx_InjectedStart_IT(hadc1);
HAL_ADCEx_InjectedStart(hadc2);开启双adc同步采样配合定时器触发采样就可以在硬件层面上实现特定时刻自动双adc同步采样。 至此实现FOC的最重要的两个外设定时器和adc已经介绍完毕你可以根据自己的电路环境以及本文提供的stm32cube定时器和adc外设配置说明图对配置项删减尝试实现FOC控制。 你也可以等等再写代码先了解一下接下来要介绍的cmsis-dsp库因为反park变换、park变换、clark变换、pid控制器等等常用的功能在cmsis-dsp库中都有。 点击查看本文开源的完整FOC工程