一灯大师,I/O口控制: LED点灯, NPN/PNP三极管, N-MOS管/P-MOS管, 光耦, 继电器
一灯大师,I/O口控制:LED点灯, NPN/PNP三极管, N-MOS管/P-MOS管, 光耦, 继电器
I/O口,控制LED, 尽量用低电平导通,不要用强推挽高电平导通
强烈建议使用上图点灯,用低电平导通电路点亮 LED灯
可用 强推挽模式/准双向口模式/开漏口模式,对外输出低,点亮 LED灯
=====================================================
只能使用强推挽模式对外输出高,点亮 LED灯
不推荐使用上图的方式,很多常用数字电路无法和此电路共享 I/O
=====================================================
网友说不管亮度,只要省成本,I/O口,不接限流电阻,直接驱动LED灯
要省外部这个1K ~ 5K 的限流电阻,那就用内部粗糙的4K上拉电阻代替外部的限流电阻
网友说不管亮度,只要省成本,可以去掉上面的限流电阻。见上图
单片机 I/O内部有一个粗糙的 4K上拉电阻
STC8H/STC32G系列 I/O口 上电时的状态是
【高阻输入 + 4K上拉电阻关闭】
只要始终保持 I/O为高阻输入,仅控制内部上拉电阻与电源的通断,
即可控制 LED灯的亮灭
STC8H/STC32G系列 I/O口 上电是【高阻输入 + 4K上拉电阻关闭】
可I/O口直接接LED灯到地,保持高阻输入:
打开内部4K上拉电阻,灯亮;关闭内部4K上拉电阻,灯灭
目前STC8H/STC8G/STC8C/STC8A 内部无下拉电阻;上拉电阻是4K
目前STC32G12K128内部无下拉电阻;上拉电阻是4K
STC32G8K64的内部有下拉电阻是10K;上拉电阻是10K
STC32F12K54的内部有下拉电阻是10K;上拉电阻是10K
有些朋友说,他系统上电时LED灯误闪了下,
后帮他排查发现他从硬件到软件都是不统一规划:
===1,他用的是最不推荐的高导通发光二极管
===2,他从高阻输入切换成【强推挽输出】前,没有先将对外输出锁存从1变成0
切换I/O口的工作模式时,LED灯 通了
======================================================================
1线制/I2C/SPI等外部OC门开漏的电路, 外部加 10K 上拉电阻
AiCube-可视化 图形 I/O配置 体验
https://v.stcai.com/sv/e40e76b-1963e22a9cc/e40e76b-1963e22a9cc.mp4
利用 AiCube@AIapp-ISP V6.95M,
智能配置开发工具启动程序框架自动生成器,实现如下的实验:
32位8051单片机入门的第一个完整的C语言程序,printf_usb("Hello World !\r\n")
https://v.stcai.com/sv/426d0d7d-1963d548feb/426d0d7d-1963d548feb.mp4
AiCube 实验一:直接 printf_usb("Hello World !\r\n")
32位8051单片机入门的第一个完整的C语言程序
AiCube 实验二:查询方式,查询到电脑命令后,
printf_usb("Hello World !\r\n")或其他
AiCube 实验三:中断方式,单片机USB中断接收服务函数收到命令后,
printf_usb("Hello World !\r\n")或其他
视频讲解:I/O口原理及应用, 中断的基本概念及应用, 所有普通I/O口都支持的外部中断 - I/O读写及点灯,外部中断 ,所有I/O都支持的普通I/O中断,按键扫描 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
I/O口,控制 PNP 三极管,要求不高的电路中 R2可省
R2: 20K/15K/10K, 确保 PNP三极管 上电不导通
R1: 3.3K/5.1K/10K
R3: 20K/15K/10K
PNP三极管一般用在,和MCU相同的电压电路中
========================================
要求不高的电路中PNP三极管基级可不加上拉电阻,如下图
大电容贵,用2个小的电容
=====================================================
下图是I/O口不够用时,一种典型共享I/O口的电路
8 个独立 LED指示灯实验
用一个 I/O控制 PNP三极管,来共享多个 I/O
三极管不导通时,P0数字口可作其它数字功能使用
三极管被导通时,P0数字口可控制 LED灯亮灭
======================================
下图可以控制给共地的其他需要【高压输入】的数字/模拟电路供电
根据负载的电流需求调整 R3的大小
I/O口,控制 NPN 三极管
R2: 20K/15K/10K,确保 NPN三极管上电不导通
R1: 3.3K/5.1K/10K, 用强推挽置高来导通NPN三极管
R3: 20K/15K/10K
如果 V+高于 MCU-VCC,Vout就是高压,
Vout如是高压就不能接 MCU的 I/O
使用 NPN三极管的好处,R3可以接到 3.3V/5V/9V/12V等不同的电平
R2:确保 NPN三极管上电导通
R1: 3.3K/5.1K/10K,电阻值可以根据实际应用改小
R3: 20K/15K/10K等,实际是用户负载
如果 V+高于 MCU-VCC,Vout就是高压,
Vout如是高压就不能接 MCU的 I/O
使用 NPN三极管的好处,R3可以接到 3.3V/5V/9V/12V等不同的电平V+
典型慢速光耦 通信/控制电路,
PC817价格是RMB0.11以下
下图,典型慢速光耦 通信 电路
两个电路之间经过光耦进行数字通信,极大地减少了电路之间的电磁干扰;
两个电路可以画在同一块板上,也可以是两块板,通过接插件连接;
在同一块板上时,要拉开两电路之间的距离;
外部干扰不大时,两个电路的地可以相连;
外部干扰j较大时,不大时,两个电路的地和电源全部分开;
各电阻可根据实验情况调整;
安装时必须注意,安装螺钉不可与外部导电物体接触,并保持一定距离。
下图,典型慢速光耦 控制 电路
B电路中 VccB1 / VccB2 可以各自接不同的电源, 如 3.3V/5V/9V/12V/24V 等,
但要注意,OCout1 / OCout2 应连接到相应的电平电路上。
如B电路中 VccB1 / VccB2 是高压,
则高压的 OCout1 / OCout2 输出就不能直接连到低压A电路的MCU 上,
否则会损坏只能低压工作的 MCU,MCU的工作电压 一般是 5V/3.3V,5.5V - 3.0V等
RMB0.11的普通慢速,光耦 的正确用法:
因为不需要高速光耦,
我们这个机械手系统选择的是 RMB0.11的低速光耦 PC817
BINx端你可以上拉10K电阻到不同的电压,如 5V/9V/12V...
这对方BINx端的输入外部加上拉10K/5K/4K/3K/... 都可以尝试,
上拉电阻根据实际需要接 3.3V/5V/12V...
如果对方 BIN1 ~ BIN10 端是 STC32G/STC8H,
打开STC32G/STC8H的内部粗糙的4K上拉电阻就可以了 ,外部就不用加上拉电阻!
我们左边是机械手的电路控制光耦,如送出【开始测试】的信号,
送出去的低信号,是连续10mS低,右边另外1个系统才会认为是有效的低
===这样抗干扰强
因为不需要高速光耦,我们这个机械手系统选择的是 RMB0.11的低速光耦 PC817
STC8/STC32 典型MOS管控制电路
P-MOS 管: 高不导通,低导通
R1可以使用20K/10K; 确保上电不导通
此处 P-MOS管电源和 MCU电源相同
SI2301/RMB0.045; AO3401/RMB0.075
=======================================
下图可以控制给共地的其他需要【高压输入】的数字/模拟电路供电
P-MOS 管: 高不导通,低导通
上面的R1可以使用20K/10K; 确保上电不导通
下面的标号R1的3.3K电阻,标号改成 R3
===========================================================
N-MOS 管: 低不导通,强推挽高导通
R1可以使用20K/10K; 确保上电不导通
V+电源 可以高于 MCU-Vcc 电源电压
V+电源: 如 5V/9V/12V 等
SI2302/RMB0.05;AO3400/RMB0.074
DebugLab 大师 对 MOS 管应用的专业说明:
MOSFET一般使用共源极(Source,以下称S极)接法,其中N沟道(以下称N型)MOSFET,S极接地,栅极(Gate,翻译为门极,但此名称多用于晶闸管,以下称G极)相对S极的电位高于一定值时导通,P型MOSFET,S极接电源,G极的电位相对S极低于一定值导通,也可以说NMOS是VGS为正导通,PMOS的VGS为负导通,其绝对值不能大于数据手册中的VGS(详见10楼参数详解)。
单片机直接控制建议使用低VGS的MOSFET,如CJ2301、CJ2302,因为一般的MOSFET要想让RDSON足够小,VGS要加到8V以上,见过某些开源项目中使用单片机5V的GPIO驱动TO-220封装的大功率MOSFET,虽然也能用,但不推荐这样做。
连续工作优先考虑RDSON,高频还要考虑Ciss和QG,低压控制高压还要考虑Coss(D极电压斜率过大,米勒效应会引起G极电压平台),脉冲工作优先考虑EAS(如法拉电容储能点焊机),这些都是需要注意的。
来点电路图:
单片机和MOS使用同一个5V电源供电,因为G极是高阻输入,所以建议NMOS加下拉电阻,PMOS加上拉电阻,让MOSFET默认为关闭状态,STC新出的单片机上电IO也是高阻的,避免上电瞬间闪一下动一下等问题,NMOS高电平导通,PMOS低电平导通单片机5V供电,负载却是12V的,在这里用NMOS是没有问题的,和5V的应用相同,但是要注意VDS要大于12V,否则MOSFET可能会击穿,但是PMOS还像5V那么用,就会一直导通了(图中红框中的坚决不要用),因为0V和5V对于12V来说都是负的,VGS=-12和-7,PMOS都会导通,所以要像右边那个图那样在G极接一个电阻上拉到12V关闭MMOSFET,但是想让MOSFET导通,就不能直接接单片机的IO口了,单片机IO口电压是不能超过单片机电源电压的,可以使用三极管来下拉,三极管是电流驱动的,BE之间等效为一个二极管,压降很小,所以要在单片机的IO口上串联一个电阻再接三极管的B极,同样出于抗干扰考虑,也给三极管接了个下拉电阻,注意加了个三极管就反相了,输入高电平MOSFET导通单片机最大只能提供20mA电流,如果频率比较高,可以像这样用两个三极管接成推挽射随器的结构,也叫图腾柱电路,给MOSFET的输入电容充放电提供大电流,这个图输入写的是IN,不是GPIO了,不建议直接用单片机驱动,也建议用12V驱动,可以像上一个图那样再接一个上拉电阻和三极管,注意图腾柱电路是同相的,IN为12V,MOSFET导通半桥,5V供电,和单片机使用同一个电源,上管是PMOS,下管是NMOS,G极上下拉电阻前面已经介绍完了就不再重复了,上管导通下管关闭输出高电平,下管导通上管关闭输出低电平,都关闭就输出高阻了,都导通呢就短路了,如果需要高低电平交替输出,需要使用互补带死区的信号,可以使用STC单片机的带死区互补PWM直接驱动它有了半桥就可以把两个这样的半桥组合在一起,形成全桥,也叫H桥,这样就可以控制负载的电流方向了,可以直流实现电机的正反转控制,两个NMOS导通,两个PMOS关闭,电机被短路,就可以实现刹车了,当然这个做起来比较麻烦,可以使用成品芯片来实现这个功能,比如FM116如果想使用12V驱动负载呢,使用上面12V供电的NMOS和PMOS的电路图想必初学者已经会举一反三了就不重复了,这里再介绍一种电路,就是这个自举电路,像这样使用3相桥就可以驱动三相电机了,输出低电平的时候,电容通过二极管和下管充电,输出高电平的时候,输出等于电源电压,上管G极就使用电容中的电压充电了,这样就得到了2倍电源电压,上管VGS也等于电源电压,上管就是这样工作的,这个电路也有很多实际应用,上管也使用NMOS是因为NMOS的载流子为电子,制造工艺相同的情况下比PMOS性能更好,PMOS想达到相同的ID或RDSON,芯片就要做得很大,这样输入电容也就大了
这个电路是光耦输入,宽电压的MOSFET驱动电路,V+可以输入9~36V,使用PMOS是因为负载需要共地,先看图腾柱电路的输入,电阻大约二比一分压,输入9V时,MOSFET的VGS大约是-6V,可以导通,但RDSON会略大,但负载电压也低,电流不会很大,所以没什么影响,输入36V时,如果没有稳压管,VGS就是-24V了,这就太高了,所以加了个12V稳压管,这时稳压管会导通,把VGS限制在12V,MOSFET可靠工作,可以算出大约18V时稳压二极管开始导通
感谢【除盅大师】的精彩讲解,这回STC8/STC32外接 N-MOS / P-MOS 彻底讲清楚了
STC8 控制继电器常见电路
STC32 控制继电器常见电路
R2: 20K/15K/10K,确保上电时PNP 三极管不导通
R1: 3.3K/5.1K/2.2K/1K,可根据实际需要适当调整 R1阻值大小
要求不高时,可以省 R2
=======================================
R2: 20K/15K/10K,确保上电时PNP三极管不导通
R3: 3.3K/5.1K/1K,可调整 R1阻值大小使三极管饱和
========================================================
R2: 20K/15K/10K,确保上电时NPN三极管不导通
R1: 3.3K/5.1K/2.2K/1K,可调整 R1阻值大小使三极管饱和
用强推挽的高控制NPN三极管导通,这样电流够;准双向口的高,电流小
V+电源 可以大于或等于 MCU-VCC,可以是 3.3V/5V/9V/12V等不同的电平
================================================
使用光耦去驱动三极管控制继电器,
极大地减少了电路之间的电磁干扰,还可以不共地
======================================
使用光耦去驱动三极管控制继电器,
极大地减少了电路之间的电磁干扰,还可以不共地
为防止上电误动作, NPN三极管的基级加20K下拉电阻 到地
===================================================
=========================================================
谢谢大佬们的实用电路,希望stc再创辉煌,造福所有工程师😁
您的鼓励是我们和广大51爱好者,一起创作的源动力 神农鼎 发表于 2023-11-4 22:51
I/O口,控制 PNP 三级管
第一行文字中,应该是"I.O口,控制NPN三极管”,误用成PNP了