为什么不能用GPIO直接驱动高负载器件
单片机上的GPIO输出的最大电流一般就是几十mA,总的输出电流在几百mA以内,以STM32F103C8T6为例,GPIO输出电流最大可达20mA,电压基本都是3,3V,总的输出电流为800mA,当负载需要的电流高于单片机能提供的电流时,要么负载不能正常工作,要么就是单片机内部检测到电流过高不断重启,甚至会烧坏单片机。
所以单片机叫单片微控制器,而不是驱动器,他的控制引脚GPIO主要是用于信号控制,信号输出,在连接上驱动模块,比如电机驱动模块后,通过引脚控制模块从而控制驱动的马达等。
如何用三极管驱动
从课本中我们已经知道了,三极管有放大,开关的作用,单片机板载有5V外部电源,当要驱动直流小马达这样的器件的时候,可以用GPIO控制三极管导通截止,然后用5V外部电源进行供电,从而用小信号控制了马达的工作。电路如上。可以通过标准的GPIO3.3V电压控制工作电压为5V的小马达。
20mA的电流控制工作电流为200mA左右的器件,作用还是很大的。
可以发现直接接5v电源和用三极管驱动时的电压不一样,这个和三极管的知识有关。
三极管驱动的重要参数
当我们采用三极管作为开关电路时,必须要知道三极管的集电极最大电流以及电压,我在驱动过程中通过测得电流马达启动时为700mA左右(因为现实马达和仿真马达不一样)启动马达瞬间需要的电流是正常、工作电流的3倍左右,这一瞬间的大电流会让单片机进行重启保护。也会让三极管暴热,甚至烧坏。所以我在升级电路的情况下,增大了基极电阻,将电流降了下来,但是会导致马达转数很慢甚至不启动。通过并联电阻等手段降低启动电流后,就可以正常工作。
同时集电极工作电流是和基极电流有关的,我们需要选取合适的基极电阻来得到合适的基极电流从而得到满足工作参数的集电极电流。