STM32控制低电平触发的继电器模块时始终是闭合解决方法

      前两天一个小的需求,需要使用到继电器模块控制门禁锁。本以为就是单片机直IO口直接输出高低就控制了(实际就是这么控制),但是我失败了。。。

     实验室的买的继电器模块是低电平触发的,而且是支持单片机IO直接控制,然而我发现控制不了。百度了下说IO驱动能力不够,需要外做三极管驱动。其实现在淘宝的继电器模块都是考虑这些的都做好了的。

    解决方法:

    更改IO口的模式。一般我们都常用的是推挽输出模式(GPIO_Mode_Out_PP ,改为开漏输出模式(GPIO_Mode_Out_OD )即可解决这个问题。

 

   顺便下去复习了下这两种模式的区别:参考学习http://www.openedv.com/posts/list/21980.htm(写得很形象)

   (1)推挽输出

       推挽,就是有推有拉,任何时候IO口的电平都是确定的,不需要外接上拉或者下拉电阻。
      

   (2)开漏输出

      开漏,就等于输出口接了个NPN三极管,并且只接了e,b。 c极是开路的,你可以接一个电阻到3.3V,也可以接一个电阻到5V,这样,在输出1的时候,就可以是5V电压,也可以是3.3V电压了。但是不接电阻上拉的时候,这个输出高就不能实现了。

    只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)

STM32控制低电平触发的继电器模块时始终是闭合解决方法_第1张图片

你可能感兴趣的:(嵌入式,单片机)