Bilibili配套视频:
https://www.bilibili.com/video/BV1Vk4y1w7xB/?spm_id_from=333.999.0.0
电机控制环路主要涉及的外设功能包含高级定时器TIM1的发波;OPAMP及ADC准确的采样三相电流;并在三相电流过流时及时封波;本章将会使用STM32G4内部TIM1 ADC COMP DAC级联使用,完成以上内容。
TIM1发波时序及电流采样触发:
根据MCU内部比较器的资源分配,我们INP输入为PB1,对应比较器三的输出脚,同时也为ADC1_IN12通道;INM输入选择DAC3_CH1,通过设置DAC的模拟值与ADC1通道12的采样值进行比较,合理设置DAC_CH1模拟值就能实现过流保护。
三相电流过流封波时序:
1.STM32CUBEMX配置及Keil代码
1.在上一章的工程基础上我们增加TIM1 channel 4的触发源,作为ADC电流采样注入组的触发源;分别修改ADC1和ADC2的注入组转换触发源为TIM1比较4事件;
2.首先将PB1配置增加COMP1_INP功能;
3.设置DAC_CHI连接MCU内部外设,其他参数默认,不需要修改;
4.设置COMP1的INP及INM,配置上升沿触发中断;
5.使能TIM1的break功能,滤波器配置为2,高电平触发break;
6.点击生成代码 ,打开Keil工程;
7.修改上传VOFA数据个数,ia,ib,ic,Vbus,V电位器;
8.设置TIM1 ARR值8000-1;CCR4 值8000-2;开启channel 4 pwm;开启ADC注入组采样;
PWM开关频率 = 160M/(8000*2) = 10k;
9.启动DAC,并设置DAC阈值;启动比较器;
10.在while循环中对VDC和电位器电压采样;
VDC电压采样增益:26 = 78k/3k;(基于原理图电阻分压)
11.按键2开始PWM输出,按键3停止PWM输出;
12.在ADC注入组转换完成回调函数中计算三相电流偏置值及ia,ib,ic值,同时使用UART DMA上传数据到VOFA;
13.编译并下载代码;
2.实验现象
按以下图片接线,并将USB转UART模块连接至电脑:
打开VOFA上位机显示三相电流ia,ib,ic及VDC、电位器电压