在FOC控制中,获取必要的信息是很必要的,(哈哈哈哈哈,这车轱辘话把自己逗笑了)今天来实现ADC对电机ABC三相电流 以及温度、编码器信号的采集处理,为后面的SVPWM和过温保护、过流保护等等的程序打定基础。
在我这个电机控制板中ADC采集及编码器信号获取有关的引脚接口如下,后面是给它的重命名,用EXCLE整理处理方便使用。
一、ADC1的配置
ADC1主要测温度,UVW三相的电流,电源电压,测的对象都是比较重要的。
1.首先配置引脚,并给他们重命名,打开ADC1的0.3.6.8.9通道,并将对应的引脚复用,注意这里一定要检查一遍引脚和通道是否对应,因为F407有很多引脚可以复用到相同的功能,比如串口1的RX可以是PA10,也可以是PB7,如果搞错了引脚,轻则函数输入没数据输入,搞半天不知道问题在哪,浪费点时间,重则损坏芯片,损坏板子。
2.配置ADC参数
下面对这些参数选项进行介绍:
ADCs_Common_Settings(ADC 工作模式配置):
- 这里配置为独立模式,独立模式是指在同一个管脚上只有一个 ADC 采集该管脚的电压信号。 如果只是用了一个 ADC 的时候就配置为独立模式。
ADC_Settings(ADC 参数设置)
- Clock Prescaler 用于配置ADC时钟,这里我们选择4分频,详细的介绍请看下面。
- Data Alignment 用于配置数据对齐方式, 这里选择右对齐;
- Scan Conversion Mode 用于配置扫描模式, 当有多个通道需要采集信号时必须开启扫描模式,此时 ADC 将会按设定的顺序轮流采集各通道信号, 这里选择 Enabled;
- Continuous Conversion Mode 用于配置自动连续转换还是单次转换。使用 Enable 配置为使能自动连续转换;使用 Disabled 配置为单次转换,转换一次后停止需要手动控制才重新启动转换,我们选择 Disabled;
- Discontinuous Conversion Mode 用于配置是否使用不连续的转换模式, 所谓不连续, 比如要转换的通道有 1、 2、 5、 7、 8、 9,那么第一次触发会进行通道 1 与通道 2,下次触发就是转换通道 5 与通道 7,这样不连续的转换,依次类推。这里我们选择禁用不连续的转换模式 Disabled;
- 不开启DMA,
ADC Regular_ConversionMode(ADC常规通道转换模式)
- Number Of Conversion 转换通道数量,此参数会影响可供设置的通道数,按实际使用的
- 通道数来选择即可,这里是 5;
- External Trigger Conversion Source 外部触发转换模式配置, ADC 在接收到到触发信号后才开始进行模数转换,触发源可以是定时器触发、外部中断触发等硬件触发、也可以是软件控制触发, 这里选择软件触发,工程中需要我们添加启动 ADC 的代码;
- Rank 配置模拟信号采集及转换的次序,默认是 1,我们上面在转换通道数量中设置了通道数为5,现在就有5个Rank需要来配置了,其中:Channel 用于选择转换的通道,这里根据引脚对应的通道来选择通道 ,比如Rank1,我们对应Channel0,以此类推,将我们准备开启的通道以此对应选择即可。
- Sampling Time 采样周期选择 15Cycles;
采样周期这里有必要好好的学习一下:
二、ADC3的配置
ADC3用来测UVW三相的反向电动势以及停机控制信号,这为我们接下来的无感控制以及对电机的保护设置打下基础。这里和上面ADC1的配置一样,没什么好说的,直接贴图。
1.ADC3引脚配置
2.ADC3参数配置
三、编码器采集的配置
编码器A、B、Z的是以高低电平的形式输入我们的单片机中,具体的电路设计不在此介绍了,看一下A\B\Z的波形及信号性质。
我们使用定时器的输入捕获的方式来进行编码器信号的采集。
TIM3的引脚配置:
TIM3的参数配置:
TIM9的配置也是一样的,注意这里的时钟是选择的内部时钟
三、UVW信号采集的配置
UVW信号采集使用TIM5的输入捕获通道来实现,其设置和TIM3无太大差别,直接贴图。
1.TIM5的引脚配置
2.TIM5的参数设置
四、配置 NVIC
本实验要用到定时器输入捕获中断来完成捕获功能。 所以我们要使能定时器全局中断,
并配置中断优先级。(为什么单独开个标题?因为这个蛮重要的,必须开!怕某些同学没看见或者忘了)
这里直接打开就好了。