这里仅总结一下IO控制相关
单片机IO直接驱动继电器
上图是随便找到的两个不同型号的继电器。继电器就是个开关,这个开关是由它内部的线圈控制的,给线圈通电,继电器就吸合,开关就动作了。绝大部分的继电器反面都会有如下图一样的标识,看标识也就能看出,下图中1脚2脚之间是线圈,3脚和5脚在继电器不动作的时候是连一起的,当1脚2脚上加电压后,继电器动作,此时3脚就断开5脚,吸合到了4脚上去。
比如你要控制一条线的通断,就可以把这条线故意搞断以后,一端接到3脚,一端接到4脚,然后通过给线圈通电和断电,就可以控制这条线的通断了。我们通过单片机开控制1脚2脚上的线圈通电就可以控制这个开关的闭合与断开了。
线圈1脚和2脚加多大电压呢?
这个问题,需要看你用的继电器的正面,比如蓝色这个继电器,最下面一行字为“SRD-05DCV-SL-C”,其中的“05DCV”就表示线圈上所需要的电压值,在此表示需要直流5V电压才能驱动这个继电器吸合。
前面我们说过了,可以用单片机控制这个线圈上的电压,你可以直接用两只手拿上5V和GND两条线直接通到继电器线圈的两个引脚,就会听到响声了。
那用单片机怎么给他加电压?我们知道,单片机引脚就可以输出5V,是不是直接用单片机引脚连接继电器线圈,就可以了呢?
答案当然不是的!
下面我们来测试一下,用万用表测量一下这个线圈的电阻,如下图所示这个继电器的线圈上的电阻是67.3Ω,假设我们把这个线圈当做一个电阻来看的话,在它两端加上5V的电压,欧姆定律用上一算,电流就是74mA左右。但是,我们单片机的普通引脚最大输出10mA电流,大电流的引脚最大输出20mA电流(具体的单片机输出能力需要参照单片机的datasheet)。
通过上面的计算,虽然5V的单片机可以输出5V的电压,但是输出电流能力有限,远远达不到驱动继电器的电流,所以无法直接驱动继电器。假如我们采用灌电流的连接方式,这样很有可能直接烧坏单片机的IO口。
这时候我们就需要想办法,想想怎么能通过小电流来控制大电流呢,此时我们应该不叫容易想到的三极管,比如比较常用的S8050三极管,ICE最大允许电流是500mA,远远大于70mA,所以用S8050驱动继电器绝对是没有问题的。电路图如下所示:
看上图,ICE也就是从C流到E的电流,就是和继电器线圈一条线的电流。NPN三极管,在这里就是个开关,单片机引脚输出5V高电平,ICE就导通继电器就会吸合;单片机引脚输出0V低电平,ICE就截止,继电器就不吸合。值得注意的是,刚才计算时候我们是吧线圈当作了电阻,而实际它是线圈,线圈内的电流不能突变,所以在断开的瞬间会形成反向电动势,上图中的二极管就是为了释放这个反向电动势而设计的。
同理,电磁阀也是一种电阻很小功率很大的负载,也需要按照上述欧姆定律的方法,选择合适的驱动元件。
在更多的使用场景下,在同一个项目中可能需要驱动多个继电器,此时采用分立元件三极管来驱动可能就会有写繁琐了,此时可以采用一些驱动芯片,比较常见的有达林顿管ULN2003、ULN2803。采用这样的集成芯片驱动可以让电路变得简洁,还可以增加可靠性。如果需要更加保险的考虑的话可以在输入驱动信号的地方采用光耦作为隔离。
whaosoft aiot http://143ai.com