ShIoTiny和周围的世界:将传感器连接到二进制输入,接触反弹和其他问题


要点或本文的主题


另一篇关于ShIoTiny的文章-基于ESP8266芯片的可视可编程控制器。 本文介绍了将各种类型的传感器连接到ShIoTiny控制器的二进制输入的功能 。 此外,本系列前几篇文章的读者还回答了许多受欢迎的问题。


以前的系列文章


ShIoTiny:小型自动化,物联网或“假期前六个月”


ShIoTiny:绘图程序的节点,链接和事件或功能


ShIoTiny:湿室通风(示例项目)


项目现场


二进制固件,控制器电路和文档


介绍或问题答案


除第一篇外,我所有关于ShIoTiny的文章都是来自冒着尝试使用我的固件风险的读者提出的问题。


事实是立即详细回答所有人-我没有机会。 业余爱好是一种业余爱好,很少有人会像工作,家务或孩子那样投入大量时间。 我也不可以 信件中的问题基本上可以减少到几个。 因此,撰写一篇涵盖多个问题的文章比撰写十几封信要容易。


许多问题涉及如何连接各种类型的传感器以及如何使用它们。 这不足为奇:使用输出继电器非常简单。 而他们只是不想连接到输入! 有很多选择。 本文专门针对本文,并且很可能将致力于以下内容:一个非常广泛的主题-传感器的连接。


但是,在继续探讨传感器奇妙世界的传记之前,我将允许我自己使用Habr作为媒介来回答他们以信函形式向我提出的最受欢迎的问题。


回答读者最受欢迎的问题


可能最流行的问题是“ 您为什么不支持PWM / DS1821 / RTC ...等? ”。 我回答。 因为当我设计ShIoTiny时,我并不需要它。 至于PWM,根本没有地方将其放在ShIoTiny板上。 没有剩余的腿可以连接RTC 。 依此类推。 但是,如果该项目开发成功,我将制作另一台具有相同编程思想,但外围设备不同的设备。 当然,我将在ShIoTiny中支持其他一些芯片,例如昨天支持的DS1820 / 22温度传感器。 但是,您不能拥抱巨大的事物,也不能推翻未经编辑的事物。 像我的时间一样,控制器的内存不是无限的。


下一个最受欢迎的问题是:“ 您打算批量生产ShIoTiny吗? ”。 我会详细回答。 目前,我还有几个董事会,如果有人感兴趣,请写信,我会发送。 如果到那时他们仍然存在。 再次(目前是50-100件),我暂时不打算发布它。 根本没有这样的需求,而说出50个板对于一个爱好来说并不是那么容易,并且会花费我很多钱。 有很多人想获得现成的费用-情况可能会改变。 因此,如果不是一切,那么很大程度上取决于社会的意见和愿望。


另一个经常问到的问题是:“从哪里获得资源? ”。 我回答。 无处可去 由于某些原因,我还无法发布它们,并且我不知道我是否可以在可预见的将来发布。


最后,关于MQTTUDP多播的问题 。 我希望针对这些问题撰写单独的文章,因为其中有很多功能。 关于MQTT的内容在上一则有关通风系统的文章中,但此处以通用术语描述了所有内容。 但是-请阅读说明。 有很多答案,尽管这仍然是草案。


本文以常见问题结束,最后讨论了本文的目的-传感器的惊人,美丽,令人恐惧和神秘的世界。


传感器-它是什么,为什么?


对于从未见过字母或象形文字的人来说,任何一种未知语言的铭文都只是一个复杂的模式。 盲人没有照片。 对于聋哑人,音乐。 我为什么 信息是某种物质介质上的对象或现象的有条件显示。 没有实质性媒体的信息就不存在。 没有能够理解信息的人,信息就不存在。


因此,如果我们不希望ShIoTiny成为“盲人”,“聋人”和“文盲”,我们必须教会他“ 感知 ”和“ 理解 ”关于他周围世界的信息,并在此基础上做出某些决定来管理所需的东西我们的设备。


关于世界的信息以各种各样的表示形式存在于各种物质载体上:空气振动-声音和光子通量-光; 空气中水蒸气的浓度和地球的温度; 质量的存在与否及其大小。 依此类推。 所有这些都可以为我们带来决策所需的信息。


但是我们的ESP8266微控制器( ShIoTiny的基础)只理解两种信息类型:数字二进制信号0V - 3V和范围从0V1V的模拟信号。


因此,我们需要从特定物理现象或物理量的语言到ESP8266微控制器可以理解的电信号语言的“ 转换器 ”。 这种“ 翻译器 ”称为传感器


严格来说,在我们的案例中, 传感器是一种技术工具,可将有关周围世界的信息转换为ShIoTiny控制器的电子组件可以理解的电信号


传感器不同。 有成千上万的黑暗。 但是,如果您开始理解,那么一切都不会那么可怕。 首先 ,我们只对在输出端生成电信号的传感器感兴趣。 其次 ,我们将只限于流行的传感器类型。 第三 ,实际上,传感器生成的信号种类不多。


从“第一”-一切都清楚了。 在物理上不可能传感器直接连接到以机械,液压或气动形式提供信息的ShIoTiny


与“第二”-一切也很清楚。 不可能有人将熔融的放射性锂中的特定快速粒子或pH计连接到ShIoTiny 。 好吧,如果有人这样做,我认为他的资格要比我高得多,他很可能不需要这篇文章。 但是水或空气的温度,空气或水的压力,湿度,光线,液位或门的状态(开闭)-所有这些都可以由家用控制系统中的ShIoTiny控制器进行测量。


我们将处理“第三者”。 通常从普通类型的传感器输出什么电信号? 可以区分传感器输出端的三种主要信号类型:


二进制信号 也就是说,只有两个电平的信号-逻辑0或逻辑1。电参数并不重要-它们始终可以转换为所需的电平。


模拟信号 。 即,电流或电压根据给定值范围内的测量参数而变化。


数字信号 。 这些是使用特定协议与微控制器通信的传感器。


这里,也许是可以连接到ShIoTiny的所有选项。 当然,也有具有频率输出,相位输出的传感器,以及具有各种奇异输出信号的传感器。 但是,由于不可能将它们直接连接到ShIoTiny,因此我们现在不再讨论它们。


二进制输入ShIoTiny


让我们从最简单的-ShIoTiny二进制输入开始。 它们由Input1Input2Input3指示 。 由于这些输入绝对相同,因此我们将考虑输入Input1 。 对于其他两个二进制输入-Input2Input3,关于此输入的所有说明均是如此。


ShIoTiny二进制输入电路如图所示。 立即进行预订,发现电路缺陷很小-必须将10K电阻器连接到1K电阻器。 但这不影响设备的操作,这是很棒的。 那么,为什么在二进制输入电路中有那么多元件? 这样的问题也被问到了我。 我会尽力回答。


图片


ShIoTiny中的二进制输入适用于“ ”和“ 湿 ”触点。 此外,该电路还提供过压保护(即,例如,如果5伏而不是3伏到达Input1 )。


二进制输入保护


如果在其输入上施加约220V的电压,则在ShIoTiny的所有二进制输入上进行的过压保护当然不会使控制器免于烧毁。 但是从输入到输入Input1,2,3 + 5V甚至+ 12V-这种保护完全可以节省。


这种保护非常简单,不仅可以与ESP8266一起使用 ,还可以与其他微控制器一起使用。


考虑两种保护方法:将中性线( )的+ 5V-5V电压施加到Input1输入。


当输入Input1的电压正常时-保护二极管D1D2闭合,因为它们以相反的方向导通。


一旦Input1的电压超过+ 3V(例如,我们将Input1短路+ 5V ), D1二极管就会打开,并将GPIO控制器的输入拉至+ 3V ,以防止GPIO ESP8266的电压升高至3V以上。 实际上,电压将略高于3V (3.2V或3.3V)-但这并不重要。 微控制器的输入不会烧毁,这很重要。


一旦Input1的电压变为负(例如,我们将输入短路至-5V ), D2二极管就会打开并将Input1 接地 0V ,而不会让GPIO ESP8266输入上的电压降至0V以下。 实际上,电压将略低于0V (-0.2V或-0.3V)-但这并不重要。 微控制器输入不会烧毁。


电阻1K是限流器,因此在保护操作期间不会发生短路。 通过它的电流很小。 例如,在我们的示例中,如果将Input1 + 5V施加到输入,则流过1K电阻的电流约为2mA 。 输入端Input1的负电压为-5V通过1K电阻电流约为5mA


如果谁不理解为什么二极管会打开和关闭,我建议您阅读R. A. Svorenya撰写的“逐步电子学”一书。 在Internet上,例如,在这里 。 我特别建议初学者-本书的语言很简单,并且有很多示例。


有哪些联系方式


因此,有了保护措施。 让我们继续讨论另一个基本问题-将ShIoTiny二进制输入连接到二进制传感器。


正如我们已经说过的,二进制传感器是其输出具有两种状态的传感器-零和一。 但这是合乎逻辑的。 物理上,二进制传感器输出可以有两个选择:“ 干触点 ”和“ 湿触点 ”。 考虑一下它是什么以及与它一起吃。


干触点 ”是没有自己的电压源的触点。 也就是说,只有两个金属导体可以短路并断开。 此定义包括传感器的质量-按钮,开关,液位浮子传感器,簧片开关(磁场传感器)等。 如图所示,在电路上通常标出常开的干触点 ”。


图片


常开-这意味着在没有外部影响的情况下打开-未按下按钮,未打开开关,簧片开关附近没有磁铁...


通常也有闭合的干触点 ”。 在电路上,通常如图所示。


图片


与常开相反,在没有外部影响的情况下常闭的“ 干触点 ”是闭合的。


这些和其他“ 干触点 ”都可以安全地连接到输入Input1,2,3控制器ShIoTiny 。 如图所示,具有干触点类型输出的传感器连接到ShIoTiny二进制输入。


图片


如果输入1的“ 干触点 ”闭合,则大约零伏的电压将施加到控制器输入(由于电路中的错误,精确到0.3伏),因为“ 干触点 ”通过由1K10K电阻形成的分压器将控制器输入接地。 在这种情况下, 节点 Input1将把单位设置为输出。


相反,如果输入1的干触点 断开 ,则将大约3伏电压提供给控制器输入,因为控制器输入通过10K电阻上拉至电源电压。 在这种情况下,节点Input1的输出将设置为零。


所有这些详细说明都是出于好奇。 在最下面的一行中,我们有以下内容:如果我们将一个具有`` 干触点 ''类型输出的传感器连接到input1 ,则当触点断开时, Input1节点的输出将为零,而当触点闭合时,同一节点的输出将为1。 对于输入和节点Input2Input3同样


让我们继续湿接触


湿接触 ”是在其至少一个位置具有其自身的电压源的接触。 例如,另一个控制器或逻辑电路的输出; 灯泡电源线等。 这里可能有很多选择。 但是几乎所有它们都直接或借助一些细节允许将二进制输入Input1,2,3与设备输出相匹配-“ 湿接触 ”。


让我们从最简单的开始-将输入Input1与传感器或微电路类型“ 集电极开路 ”或“ 漏极 开路 ”的输出进行匹配。


实际上, 在我们的情况下 ,该电路完全类似于将传感器与干触点输出连接 。 晶体管仅执行接触的作用。


这种连接的方案如图所示。 “ 集电极开路 ”或“ 漏极 开路 ”概念的实质是,输出晶体管的发射极 (或源极 )连接到“ ”(通常在微电路内部), 集电极 (或漏极 )连接到微电路的“支路”等等。一无所有。


对于新手(不是虚构的气体,而是一个人!),该方案的工作原理是可以理解的。 一旦微电路内部的晶体管打开,它就会将输入Input1接地,然后一切工作都类似于“ ”触点。



不幸的是,并非所有的微芯片和传感器都具有集电极或漏极开路的出色输出。 许多(如果不是大多数的话)芯片和传感器都具有有效输出。 这意味着当我们在输出端有一个逻辑单元时,输出被“上拉”到电源电压,而当逻辑为零时,输出被“上拉”到地。 这种芯片的输出如下图所示。 当然,一切都被简化了。



如果要连接到Input1的微电路或传感器具有这样的有效输出,该怎么办?


这里有两个选项,它们取决于微电路或Vcc传感器的电源电压值。


如果芯片或Vcc传感器的电源电压与ESP8266的电源电压相同(即3伏),那么您可以简单地将此输出连接到输入Input1 ,如上图所示。


但是,如果传感器或微电路的电源为+ 5V+ 12V怎么办? 在我们的例子中,您可以通过打开肖特基二极管非常简单地完成操作,如下图所示。



还有一个细微差别:所有带有“ 湿 ”触点的电路都会给我们一个相反的信号 。 也就是说,当逻辑单元位于传感器或微电路的输出时, Input1节点会将输出设置为零。 反之亦然。 但这已通过编程方式得到纠正-只需将逆变器节点插入电路即可。 所有这些都显示在图中。


图片


实际上,这是将传感器连接到二进制输入Input1,2,3所需的所有基本知识


当然,理论上可能还有其他选择,但是我展示了将传感器与输出(如“ 干触点 ”和低压有源输出)连接的最简单和最常用的方法。


接触的快感


接触颤抖。 不是因为担心设备的创建者,而是因为它们具有弹性。 当您按下按钮时,触点可以闭合打开5至7次,然后再稳定闭合。 释放按钮时也会发生相同的现象。 这种现象称为“联系反弹”


接触反弹是所有机械接触传感器(开关,按钮,簧片开关等)的诅咒。 令人不愉快的chat谐是,它会导致按钮或联系人的错误点击或错误释放。


有几种方法可以解决这种不愉快的现象。 最早的战斗方法可能是触发 。 通过这种方法,使用了带有开关触点的按钮和普通的RS触发器,它们根据方案被打开,如图所示。


图片


如何运作? 很简单 触发器有两个状态。 当按钮靠近触发器的输入R时,触发器的输出Q设置为零。


我们按下按钮-直到按钮的中间触点触及底部-一切都没有改变,触发器的输出为零。 一旦按钮的中间触点接触到同一按钮的底部触点,并且将触发器S的输入端接地,就会在触发器的输出端出现一个。 并且该单元在“响尾蛇”接触时保留。 实际上,要将触发输出切换回零,必须将触发输入R接地! 释放按钮时,此方案的工作方式完全相同。


我们可以在ShIoTiny上做这样的电路吗? 是的,没问题! 在图中显示了它。


图片


但是,将三个输入中的两个花在一个传感器上吗? 此外,并非所有传感器都有开关触点!


不,我们将以遗赠的方式向所有聪明的理论家V.I. 乌里扬诺夫!


处理联系反弹的第二种方法(可能是当今最常见的方法)是软件过滤器


这些巧妙的话背后是什么? 再说一次-没有什么复杂的。 想象一下,我们将不会响应联系人状态的“短暂”变化。 例如,如果我们从按钮上读取零,那么很短的时间(例如持续时间少于0.3秒) 我们会锤 停止反应。 并且只有当我们按下按钮0.3秒钟时,才会持续发出一个单位-我们将对此作出响应。 将按钮的状态从1更改为零时也是一样。


— , . . RS-!


? ShIoTiny -, .


图片


Delay0/1 , 0.4 .


, . , , .


结论


, — , , .


.


, , , , — : shiotiny@yandex.ru

Source: https://habr.com/ru/post/zh-CN466231/


All Articles