引言:运算放大电路,可以用于观测较小的电压,通过将其放大,再用ADC读取信号即可,其分为内部运放(芯片内部的运算放大器)和外部运放(外部设备),本文将详细介绍这两种运放如何使用,运算放大器的种类,放大系数如何选择,及其它参数如何设计。

1.HAL库函数

序列 HAL库函数 作用
1     HAL_OPAMP_Start(&hopamp1); 启动内部运算放大器

2.运算放大器的种类及原理

2.1运算放大系数的计算

首先需要理解什么是虚短、虚断

(1)虚短:差模输入电压约为0,即u+ = u_(要求工作在线性区)
(2)虚断:输入电流约等于0,即i+ = i_ = 0
注:只在FOC常用的差分运放讲解如何使用

2.2反相比例

A_{uf} = -\frac{R_{F}}{R_{1}}

2.3同相比例

A_{uf} = 1+\frac{R_{F}}{R_{1}}

2.4反相加法运算

u_{0} = -(\frac{R_{F}}{R_{i1}}u_{i1} + \frac{R_{F}}{R_{i2}}u_{i2})

2.5同相加法运算

u_{0} = (1+\frac{R_{F}}{R_{1}})(\frac{R_{i2}}{R_{i1}+R_{i2}}u_{i1} + \frac{R_{i1}}{R_{i1}+R_{i2}}u_{i2})

2.6差分运算电流

先上结论

原因:由虚断,相对于放大器的两个输入电流为0可知

 u_{+} = \frac{R_{3}}{R_{2}+R_{3}}u_{2}                

u_{-} = u_{1} + u_{R1} = u_{1} + \frac{u_{0} - u_{1}}{R_{1} + R_{F}}R_{1}

由虚短,两个输入电压相等,再经解方程可知,放大系数如上。

是不是很简单,都用虚短虚短都能解出。

3.内/外运放设计

        对于芯片来说,内部运算放大器,就是放大器集成到了芯片内部,使用起来只算芯片的功耗,不占MCU计算资源;外部运算放大器,就是在板子上添加外设,对电流起放大作用

3.1外部运算放大器设计

(1) 运算放大系数计算

        这个1.65V可以是3.3V过俩等值的电阻接GND得到,我用的型号是TLC2274AIDR,一个芯片带4个运放,我只用了其中的3个。

       两图对照,ui1 = 0,ui2 = U_CURRENT, R1 = 1K, R2 = 10K , R3 = 4.7K , RF = 100K, u0 = ADC_U  ,则 u0 = 32.29 * ui2 , 即ADC_U = 32.29 * U_CURRENT

(2)怎么反应到三相电流上

        ADC分辨率为12位,芯片的参考电源VDDA为3.3V,则ADC的数值1代表3.3/2^12

         ADC_U = ADC读到的值* 3.3/2^12 = 32.29 * U_CURRENT

        流过R29的电流 = (U_CURRENT - 0)/(0.7*10^-3) = (ADC读到的值 * 3.3 / 2^12 / 32.29) /(0.7 * 10^13) = 0.03564412 * ADC读到的值

(3)运算放大系数怎么选

        准则:ADC能读取的信号是0~3.3V,所以保证放大后的信号在3.3V内就行(即放大器的线性工作区间)

        计算过程就是上个问题的逆向推算,先估计一下你电机的相电流是多少,比如我电机的线电流(正常电机都标功率和线电压) = 30A ,而电机一般是星型连接(三角连接一般是三相异步电机),则有效相电流 = 30 / 根号2 = 21.21A,峰值相电流 = 30 * 根号2 = 42.43A,用这个峰值相电流逆推运算放大系数

3.2内部运算放大器使用

注:来源于欧拉电子工作室的电路板设计

        计算方式同上,但是三相全桥这个电容一定要慎重添加,因为会延误ADC读取三相电流,如果要加也要加一个小电容,pf级别的

4.内部运放在STM32cubemx上的配置

建议就是正常模式吧,因为可以字节焊电阻随意设置放大系数,也可以用户定义放大系数。

5.代码说明

HAL_OPAMP_Start(&hopamp1);

很简单,开启一下内部运放就OK,不占用mcu计算资源。


代码会最后挂在gitup上供大家使用

感谢指正,谢谢关注

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐