1、问题场景
当出现硬件电流保护的状况时,我们的产品出现短按按键能实现加档的画面,但是电机却无法实现加档的转速,只有重启才能恢复正常。之后我们对代码进行了修改,希望能在触发硬件限流保护的情况下,只需要短按就能重开机。如今需要进行一个代码验证,验证思路是这样的,我们要把限制电流调整到5A,这样就会迅速进入堵停,验证就能起作用。
2、计算限制电流原理
上面是OPA(运算放大器),Av( 电压增益),AP负责采样实际的电压(电流×0.01R),经过OPA的放大以后,进入比较器(CMP0)进行比较。
下面是OPCM(用来控制整个过流检测电路的功能和操作的寄存器),它是一个8位DAC寄存器,8bit的最大值为255。
3、计算过程
以上为官方给的计算参考过程。
对照官方的计算参考过程,我们进行我们自己的计算
1、首先是OPA Av,根据下面的代码和芯片手册(datasheet),我们bit2~0设置的是010,所以OPA增益选择 Av = 10。
2、根据我们的代码,可知我们设置的限制电流的8bit数据为200,而8bit的最大值为2的8次方(255)
3、 根据芯片手册可知,OPA的工作电压为5V
4、根据以上的数据:200 / 255 = ( ?* 0.01R * 10 ) / 5 ,根据这个等式,我们就可以知道我们实际的限流值是多少了。 得出的结果是,实际限流值是39.2156862745098 A,实际的限流值这么大,设置的就很没有必要了,跟没有限流一样。例如,家用电器灯泡可能只使用不到1安培的电流,而一些大型电动机可能需要30安培或更多电流来运行。我们的产品那么小一个,根本用不到30A的限制电流。
4、灵活计算处理
1、假如我在之后的某个应用场景中,需要解除限流,我们可以有两个选择,一个解除限流,一个把实际限流值拉大到根本达不到那个值,也就是30多安培。
2、假设我要测定达到限流之后的某个功能是否正常,我就把实际限制电流调低到某个正常电流值,比如5A,2A,这个时候我们只需要修改200 / 255 = ( ?* 0.01R * 10 ) / 5,这两个数值,分别在.h文件里面的CURRENT_OVER和opms寄存器后三位的值。
x / 255 = ( 5 * 0.01R * 10 ) / 5,x = 255
200 / 255 = ( 5 * 0.01R * x ) / 5,x = 78.43137254901961