KVIN
获得 8 次赞
帮助过616人
用ADC采集电压,然后显示再显示屏上,比较常用的有0.96寸OLED,可以自己取模图片,电池电量的图片,可以搜索阿里矢量图标库,然后取模,显示在OLED上,也可以用LCD大屏,可以借助emWIN图像库或其他嵌入式GUI库来显示比较好看的图案
简单来说,算法是解决一个问题的方法。简单的问题,算法当然不会那么复杂,几句即可,当困难的问题,就不是那么容易了,大部分是需要结合数学知识以及一些巧妙的思路。当然,这么说比较空洞,因为我是做电机矢量控制,所以就用电机控制算法来举例:例如无感BLDC的FOC,主要核心的几个算法是:状态观测器,坐标变换,快速反正切或PLL锁相环,电流环PID,转速换PID。因为电机控制是一个强实时性系统,所以算法程序基本都是在中断中完成。电机PWM载波频率一般选择的15k以上,ST,Microchip等选用的载波频率都是16k,假定我们选择的是16k频率,那么PWM周期就是62us,电机的电流采样也是跟着PWM同时采样的,所以周期也是62us,在ADC完成中断中,需要进行FOC计算,也就是说,在62us为周期的中断中,要计算状态观测器,坐标变换,快速反正切或PLL以及电流环PID。那么问题就来了,芯片能否胜任这个工作,在62us这么短的时间内,计算这么多东西。这便涉及到计算能力的问题,以及一些数学公式的优化。如果用DSP,或者有集成硬件浮点运算的芯片,当然优势会很大,就不用花过多时间在数学公式优化上,DSP无疑是比较好的选择,当然,这样成本就上去了,可能量少的话,不会在意这几块钱,或者几十块钱,如果量大呢,就需要综合考虑,如果这个项目出货量有10万块板子,如果每个板芯片都贵5块钱,那么总的成本就多50万。算法在DSP上进行验证,是因为硬件帮你做了数学上比较复杂的运算,让你可以把精力放在算法研究上,当然,这也只是验证,用DSP验证算法,并不代表这个算法只能用DSP来实现。因为在实际项目中,成本还是需要考虑的,不仅成本,每个项目都有自己的运行环境,环境以及工程师自己的喜好都是芯片选型的考虑因素。在实际中,往往考虑成本以及其他因素,会选用单片机,因为它便宜,就拿FOC来说,我用的STM32F103,硬件浮点运算也没有,主频72M,在这种情况下,就需要我自己写了一个定点运算的数学库,包括定点运算的Q格式,全整数实现反正切计算,全整数计算开方等等数学函数,使用C语言浮点运算的math.h,程序肯定会死机的,除此之外,程序也不能随意编写,大量运用了指针,因为使用指针会加快运算速度。所以如果是没有浮点运算的,那么你就要考虑这些,包括C语言的加快程序运算的知识,还要自己编写一个定点运算的数学库(当然,你能移植也可以)。这样就比较消耗你的精力了,你不仅要考虑算法的正确性,还要考虑这些杂七杂八的东西。综上,在验证算法上,使用DSP来验证算法,是比较好的选择,因为你的目的是验证算法,检验算法正确性。在实际生产上,就需要多方面考虑,不能单单的说,单片机做算法不行,而是根据自己项目的实际情况而定。以上是个人观点,仅供参考,有不同意之处,多多交流。
第一次画功率板,低压大电流,24V,8A,总是感觉要给充足的铜给功率回路,而且要散热效果很好,于是就在功率回路上疯狂打孔,在AD上预览的时候还觉得不错,肯定能过大电流,而且散热效果很好。结果打样回来之后巨丑无比,而且因为打空太多,确实散热很好,MOS都很难焊上去啊。上丑照
首先保证将波形缩放到0-3.3V,避免被测波形烧毁单片机。使用ADC功能采集,STM32的ADC数据一般为12位精度,也就是0-4095,当然,STM32的ADC功能有很多种模式,可以根据自己的需要进行配置。可以配置成单次扫描,也就是说,每次ADC触发只扫描一个通道,也可以配置成连续扫描,每次ADC触发扫描所有被选通道。可以选择使用DMA传输,也可以选择不适用DMA传输。不止如此,可以选择软件触发,也就是程序上触发ADC采样,也可以选择硬件触发,一般是与TIM的输出相配合,比如使用某个PWM的上升沿去触发ADC进行采样,这个就应用在一些对于采样时刻有要求的场合,也可以使用外部中断触发信号。STM32F0是只有规则注入这种模式的,这种模式就是按照采样通道事先配置好的顺序,一个个采样。但从STM32F1开始,不止有规则注入,也有触发注入。触发注入可以在触发信号时,优先去采样触发通道,触发通道最大有3个。根据你的波形特性,看你是需要那种ADC触发来采集,一般来说,就是一直开着ADC,然后使用DMA一直往一个数组里传最新数据即可。当然使用PWM触发ADC采样也是很常用的。具体情况具体分析。