Arduino Nano外加PCA9685芯片驱动24路sg90、mg90、mg996r、DS3225舵机,利用运放原理(LM324)搭建电流检测电路防止舵机堵转电流过大损坏,由于Arduino Nano只能输出6路PWM信号,采用外置ADC,这里用的是PCF8591芯片。
首先为PCA9685部分,较简单。上拉电阻接到了MCU上。
运放电流检测参考了其他博主的博客,(原文见(15条消息) 【单片机笔记】运放电流检测实用电路_沉默的小宇宙的博客-CSDN博客_运放电流检测电路)如下:
以下为参考以上原理搭建的此版原理:
为了原理图便利性,我将采样电阻接到了负载附近,如下:
对于相关电阻的计算在此作出以下解释:
以DS3225舵机为例,实测它的堵转电流为2A,选取采样电阻0.05R,则负载实际分压0.05*2=0.1V,同向放大电路计算公式:
已知需放大到5V左右,则Uo~5V,Ui=0.1V,则当Uo=4.8V时,Rf=47k,R1=1k,增益为48.
为确保在减小噪声的影响的同时能提高电流检测的准确性,需要实测采样电阻分压的情况来精确选取采样电阻阻值的大小,后续完成工程后提供精确阻值选取示例。
下面为外置ADC的基本原理:
(要注意硬件地址的读取 )
mg90s:堵转电流0.6A,采样电阻0.05R,分压30mv,放大158k/1k=158倍,0.03*(1+158/1)=4.77v
DS3225:堵转电流2A,采样电阻0.05R,分压0.1v,放大1+(47k/1k)=48倍,0.1*(1+47/1)=4.8v