用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

时间:2023-08-14来源:佚名

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

▲ 本文要分析的电路

事情是这样开始的。

买了个电动牙刷,几十块钱那种:

收到的实物长这样:

牙刷手柄上有1个按键和6个LED灯:

拆开看看电路板:

可以看出,电路板上用的单片机,只有8个脚,却要控制1个按键、6个LED灯、1个震动的马达电机:

初看之下,GPIO应该是不够用的。

单片机除去电源脚(正极)和GND脚(负极),只剩最多6个GPIO脚。

那么是怎么做到够用的?

原来,经过巧妙的电路设计,这款电动牙刷实现了用3个GPIO控制6个LED灯,节省了GPIO。

这个巧妙的电路如下:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

6个LED灯为相同的型号,为方便查看,用红绿两种颜色区分两种不同的方向。

一、原理分析

这个电路用到了单片机GPIO的三种状态:

高电平

低电平

高阻态

所谓“高阻态”,是指GPIO对外部电路表现出极大的阻抗。因阻抗很大,几乎不会吸入电流,也不会对外输出电流。

各个LED灯单独亮起,分为六种情况。

1、当只有LED1亮起时,单片机各GPIO的状态如下:(带箭头的红线为电流回路)

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

2、当只有LED2亮起时,单片机各GPIO的状态如下:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

3、当只有LED3亮起时,单片机各GPIO的状态如下:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

4、当只有LED4亮起时,单片机各GPIO的状态如下:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

5、当只有LED5亮起时,单片机各GPIO的状态如下:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

6、当只有LED6亮起时,单片机各GPIO的状态如下:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

整理如下:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

就是这么简单!

二、总结提升

以上其实是用了一种叫“查理复用”(Charlieplex)的方法。

为什么叫查理复用?

很简单,因为这个方法来源于美信半导体公司的工程师Charlie Allen。

查理复用是一种能够在驱动LED,特别是驱动大量LED时有效地节约GPIO的方法。

使用该方法,n个GPIO可以驱动 n*(n-1) 个LED,所以:

使用2个GPIO可以驱动2个LED。

使用3个GPIO可以驱动6个LED。

使用4个GPIO可以驱动12个LED。

以此类推。

这种方式能够实现的基础是:

单片机GPIO的三个状态:高电平、低电平、高阻态。

LED具有单向导电性。

查理复用设计的方法:

任意两个GPIO引脚之间串入两个LED,这两个LED为并联,且LED方向相反。

当你想要点亮某个特定的LED时,就将其两端所连接到的GPIO引脚分别设定为高电平和低电平,其它剩余的GPIO引脚设定为高阻态。

前面电动牙刷中6个LED灯的电路,就是这么设计的。

下面从最简单的开始,一步一步体会查理复用的电路设计。

1、使用2个GPIO时最简单:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

LED1亮起时:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

LED2亮起时:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

这里只用到高电平、低电平的状态,不需要用高阻态的状态。

2、使用3个GPIO时,前面已经分析过:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

可以等效为下图:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

可以看出,确实是任意两个GPIO之间均串入了两个并联的LED,且LED方向相反。

3、同样的原理,使用4个GPIO时:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

点亮LED1时:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

其他LED亮起的情况不再列举。

查理复用这样的电路接法也会引发一些问题。

首先,LED亮起时完全由单片机的GPIO输出电流,所以对于GPIO的电流驱动能力有一定的要求。设计电路时要注意查询自己使用的MCU的电流驱动能力,下图是STM32单片机中对GPIO电流驱动能力的说明:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

其次,如果出现了某个LED开路或短路的情况,电流的流向会被打乱,LED亮起来的逻辑会变得错乱。最坏的情况下,电路会对GPIO索取大电流,导致单片机损坏。下图是假设LED1短路,那么在点亮LED5时,LED3也会亮起:

用3个IO口控制6个LED灯的原理分析 电动牙刷中6个LED灯的电路设计

三、继续进阶

如果要同时亮起两个以上的LED,怎么办?

交替点亮他们就行,只要交替切换的速度够快,由于人眼的视觉暂留效应,看起来就是同时亮起的。

值得一提的是,如果要同时亮起的LED较多,比如大规模的LED点阵,那么还要注意一些新的问题,颇有门道。

本文不再展开,感兴趣的读者可以自行查询修炼,继续进阶。

 审核编辑:汤梓红

    相关阅读

    软启动器12个故障代码

    软启动器常见故障问题的故障代码,参考如下: 1、故障代码Err01 故障类容:→断相;说明:主电路任意一相断相。 2、故障代码Err02 故障类容:→过电流;说明:超过额定电流12倍。 3、故...
    2022-11-26

    电动车电池看参数的三种方法,轻松查看电动车电池型号

    新买的电动车电池是什么型号的,很多人并不是很清楚,而在需要换电池时搞不清楚型号就会很麻烦,那么电动车电池规格怎么,怎么来识别电动车电池的型号,与电工天下小编一起来...
    2022-11-30

    电焊机电流调到多少合适,根据焊条大小及焊接对象做调整

    2.5焊条电焊机电流大小应根据焊条的种类来定: 1、一般碳钢焊条焊接电流调到100A左右,不锈钢焊条稍低点。 2、焊方管2.5焊条电流: 60-80A电焊机利用正负两极在瞬间短路时产生的高温电...
    2023-01-09
    电焊机电流调到多少合适,根据焊条大小及焊接对象做调整

    电动机的启动电流如何计算,电动机启动电流计算公式

    有关电动机启动电流的计算方法,三相电机启动电流瞬时是正常的多少倍,电动机的启动电流是额定电流 的多少,电动机 启动电流计算公式与实例,感兴趣的朋友参考下。 电动机启动...
    2022-11-22
    电动机的启动电流如何计算,电动机启动电流计算公式

    【电力用户怎么分级,电力用户分类标准】

    【电力用户怎么分级,电力用户分类标准】 有网友咨询,电力用户怎么分级,针对分级的问题,电力用户分为一级用户至三级用户,那么电力用户分类标准是怎么样的,电力客户分级和...
    2022-12-10
    【电力用户怎么分级,电力用户分类标准】

    插座发出滋滋滋的声音是什么原因

    首先最有可能的原因就是电源线与插座接线端子接触不牢固,而造成的虚接,进而产生电弧也就是我们俗称的电火花,就会发出的滋滋声音。 插座内由于质量问题,电源接线柱与插头触...
    2022-11-10
    插座发出滋滋滋的声音是什么原因

    安装西门子软件时提示重启电脑的解决办法

    在 西门子软件安装 时,比如:WinCC、Step7、SIMATIC NET SQL Server for WINCC等软件,有时候并不是很顺利,经常提示要重启,而且重启之后还是提示重启,一直循环提示,这个问题可以通过下面...
    2023-03-09
    安装西门子软件时提示重启电脑的解决办法

    异步电动机正反转控制plc接线图及梯形图(图文)

    【 异步电动机 正反转控制plc 接线图及梯形图 】 用plc实现异步电动机的正反转控制,如何设计控制线路图,如何分配i/o,都是绘制plc接线图的关键,另外异步电动机正反转控制设计 过...
    2022-12-11
    异步电动机正反转控制plc接线图及梯形图(图文)

    网站栏目