气体放电灯(GRI)的小时数,它们是数字时钟

项目概念


该产品的概念是为了满足查看真实火焰的需要。 严格来说,气体中的辉光放电虽然看起来像真正的火焰,但它并不是火焰。
我喜欢它的颜色,这是开始为自己制作单个手表的唯一动机。

没有提出创建用于大规模生产的设备的任务。

因此,项目预算更为合理。 决定是根据我们自己对美的想法做出的,没有考虑组件的成本。 当然,总是有局限性,例如,我没有购买大型的GRI(气体排放指示器),例如IN18-它们的价格超出了直观定义的边界,并且不符合我对产品外观的概念。 我使用的是GRI IN-12型。

IN12充满氖气(或惰性气体的混合物)和汞蒸气的混合物。 汞蒸气显着提高了设备​​的耐用性,并为等离子体的辉光提供了蓝色调。 其他GRI可能不含汞,并发出清晰的霓虹灯。

手表的主要功能是显示准确时间(CEP,您好!)。 非常希望启动时间是自动设置的,并且不需要用户进行任何操作。 从我个人的角度来看,根本不需要此类设备上的按钮。 类似的设备具有十二个按钮和数百个功能,这些功能是由按下和按下时间的各种组合引起的,给我一种安静的悲伤。 首先-GRI非常适合仅显示数字。 在我看来,没有任何其他设想,并且尝试显示菜单项等使用的是不合适的工具。 闹钟等其他功能也是如此。

其次,很明显记住要记住哪个按钮组合打开了一个或另一个嵌入式功能是不现实的。 为此类设备编写程序既有趣又令人愉快,但随后将无法使用。

在唐纳德·A·诺曼(Donald A. Norman)的《熟悉事物的设计》一书中,对这一问题进行了充分考虑。 我将引用一段:

“在旅途中,我多次使用Leitz幻灯机。 第一次是最糟糕的噩梦。 我开始讲课并展示了第一张幻灯片。 当需要移到下一张幻灯片时,负责演出的学生轻轻按下按钮并开始惊恐地观看,因为架子朝相反的方向移动,从幻灯片放映机中滑出并从桌子上跌落到地板上,混合了所有幻灯片。 花了15分钟才能整理好幻灯片。 这不是学生的责任,而是这种优雅的幻灯机。 一个按钮如何执行两个相反的功能? 没有人第一次能做到这一点。”

问题在于一个按钮执行两个相反的功能-短按可将幻灯片向前移动,长按可向后移动。”

我们继续讨论设置时钟。 这些设备可以使用计算机,平板电脑或智能手机从自己的网页进行最佳配置。

我不需要带有GRI的手表的闹钟-首先,总是有具有这种功能和更方便的界面的蜂窝电话。 其次,GRI上的时钟不能使用自主电源,因为典型功耗(200伏* 7毫安= 1400毫瓦或1.4瓦)非常大,并且超出了化学电流源的合理限制。 因此,带有GRI的时钟将由网络供电,并且警报功能将取决于网络的可靠性。

根据以上推理,出现了以下系统:

GRI时钟来自网络,具有从Internet上获取准确时间的能力,其设置来自其自己的网页。 不需要其他功能。

但是,我通过添加以下功能违反了该规则的严格性:

手表可以显示街道温度,湿度和大气压。 早上上班时,此功能可以满足我个人了解室外温度的需要。 我每天都在同一个地方系好衬衫,当手表找到我在那儿时,它们始终显示出以毫米汞柱为单位的外部温度,湿度和气压。 事实证明,这项功能非常成功,对我和我的家人来说都是非常需要的。 从外部源自动获取并存储两次包裹之间的时间,有关街道温度,压力和湿度的数据。 如果超过了超时(数据已过时),时钟将显示当前日期。 在我的家庭系统中,有关外部环境参数的数据以10分钟为间隔到达,“数据已过时”超时设置为30分钟。 在设计手表时,假设可以给外部团队一个声音,例如说:“时钟,天气!”。 然而,在原型制作过程中,事实证明该方法不可靠且不方便。 因此,将来,语音控制被根据飞行时间激光定位器来确定人在手表前面的存在的方法所代替。 如果您站在时钟前面约一秒钟,时钟应显示天气数据。

通过外部命令通过HTTP接口提供的时钟可以显示此命令中接收到的数据。 团队既传输数据本身,又传输数据在显示屏上的显示时间。 它被认为是通过事件(例如,家庭服务器的处理器过热或某些其他参数)从计算机显示某些内容的机会。 嵌入式界面使您可以从外部显示七位代码,包括两个点。 实际上,它根本不适用。

强制性要求还包括数字平滑变化的影响。 正是这种效果,我真的很喜欢!

指示器的亮度应根据环境光线进行调整,同时保持图像对比度不变。

时钟应显示六位数字,并在数字前显示一个辅助值,以指示当前显示的内容。

构思的硬件解决方案的实施


GRI选择


为了显示时间和其他数据,使用了四个GRI IN-12A,两个IN-12B和一个IN-15A。

IN-12B包含我用来分隔小时-分钟-秒的点。

GRI IN-15A可以在行的开头显示许多特殊符号“ +”,“-”,“%”,“ P”等。

指标之间的最佳距离。


为了使手表看起来和谐,应确保指示器之间(例如,一行中的字母之间)有一定的距离。 对问题的研究给出了以下信息:数字之间的最佳距离是4毫米,单词之间的最佳距离是8毫米。 面板上的贴合指示器确保数字之间的最佳距离。 我相信这不是巧合,苏联工程师在开发过程中脑子发芽,并保持了正确的距离。

与时间服务器同步


考虑自动获取准确时间的方法:

  1. 互联网上的对精确时间服务器的请求。
  2. Glonass \ GPS接收器。 不幸的是,在某些情况下它无法正常工作:例如,在我房间底部的公寓中,卫星发出的信号消失了,周围建筑物的配置不成功也影响了我,其中晴朗的天空只能在窗户上直接看到。
  3. 小区网络。 从理论上讲,您可以从蜂窝站请求时间而无需注册(即没有SIM卡)。 我没有尝试过。 从理论上讲,最通用的方式不需要用户做任何事情。
  4. 长波长的精确时间信号。 应用很难,没有便携式现成的解决方案。

我认为,最好的方法是通过Internet请求确切的时间。 应该注意的是,用于存储ESP8266当前时间的内置功能非常准确:在一个月中,意外断开与所描述的小时数连接到Internet的网络接入点的连接,不到一分钟。 我通过时钟和计算机​​时间的巧合确定了这一点。 恢复电源后,接入点将自动同步。

处理器和控制电路的选择


要控制时钟,需要具有能够访问Internet的处理器。 其中可用的是基于ESP8266的板。 对问题的研究表明,该板价格便宜,分布广泛,具有由发烧友创建的丰富的现成软件,可以在Arduino环境中进行编程。

选择用于控制GRI的系统(微电路)


GRI由大约200伏的相当高的电压供电。 根据护照(见图1),IN12需要至少170伏特才能在电流高达2 mA时正常发生辉光放电。 控制系统必须能够切换几毫安的电流,并能承受200伏左右的电压。 在苏联,生产了K155ID1(133ID1等)微电路(高压二进制十进制解码器)。 它们在静态模式下工作完美,每个灯需要一个解码器。 现在,这些微电路可以从旧库存中获得,甚至可以由明斯克集成工厂小批量生产。 原则上,这是反微电路手表的不错选择。 但是,由于微处理器上的输出数量有限,它们很难在微处理器系统中使用。 因此,以ESP8266时钟为基础,仅得出了十几个结论,其中一些具有一定的局限性。 对于7个解码器,需要28个输出,或者需要一个中间寄存器,必须在该寄存器中顺序输出数据,然后与K155ID1并行输出,这使电路变得非常复杂。


图1.辉光放电指示器IN-12的护照


图2.辉光放电指示器IN-15的护照

使用155ID1时,数字平滑变化的效果需要动态指示。 事实上,GRI是一种非常非线性的器件,很难通过改变电压以模拟方式控制其亮度-由于电流施加的电压特性的斜率很高,因此非常困难。 在低亮度区域,气体排放变得不稳定。 同样,外部照明会影响灯的稳定点亮-随着外部照明的减少,击穿电压和指示器导通时间都会增加。 外部光子用作放电的一种较轻的引发剂。 顺便提及,通过气体放电装置的电流对所施加的电压的高度陡度被用来获得稳定的电压,实际上,这种气体放电装置是稳压器。 因此,为了控制GDI的亮度,需要使用脉冲功率模式,其中亮度与流经GDI的平均电流成比例,而平均电流又与脉冲的宽度成比例。

使用155ID1 + GRI时的动态指示是完全可能的,但是有许多限制。 因此,由于155ID1电路的特殊性(相对较低的电压键元件-仅60伏),可能会出现相邻数字的闪烁和其他不良影响。 这些效果是通过各种技巧(包括硬件和软件)来对抗的。 在RADIOKOT.RU网站(https://radiokot.ru/forum/viewtopic.php?f=3&t=3210)上有一个专门讨论NIXIE CLOCK的主题,我已阅读并为自己得出结论-动态指示不适合我的目的。

互联网上的搜索提供了155ID1的绝佳替代品-HV5622芯片,它代表具有高压输出的32位移位寄存器。 框图如图3所示。


图3. Supertex inc。HV5622的结构图。 ©

HV5622能够切换高达230伏的电压,通过时钟频率高达8 MHz的串行接口接收数据。 微电路可以串联连接。 为了进行控制,仅需要MK的4个输出:数据,时钟信号,向输出寄存器的写入信号和使能信号。 唯一引起怀疑的是滋养张力。 根据手册,该电压至少应为8伏。 我想用5伏特的电压为芯片供电,甚至用3.3v的逻辑信号控制它们。 在互联网上,我找到了一些使用这种微电路并以5伏电压供电的示例。 因此,在开发过程中,以防万一,我提供了安装逻辑电平转换器和5622更高电压的机会,但没有立即安装这些节点。 实践表明,无论如何,在5伏电压下一切都可以正常工作。

观看营养


为了为GRI上的时钟供电,需要一个具有两个输出的电源:5伏电流(在半安培范围内)和180-200伏电流(在约10 mA范围内)。 默认情况下,此类手表的方案的作者解决了以下电源问题:他们使用外部开关电源220-> 12伏,其中5伏在时钟内部制成,第二个脉冲转换器从输入的12伏获得180伏的电源。 即 实际上,一般的电源电路中使用了2个脉冲转换器,第一个脉冲转换器为220-12,第二个脉冲转换器为12-180。在我看来,它效率低下。 因此,我选择了一种非常传统的方式来使用现成的环形变压器TorAN15。 该变压器的外观如图4所示。


图4. TorAN15变压器

我在ISTOK2.COM网站上购买了该变压器。 变压器有两个次级绕组-一个次级为170伏,第二次级为6.3伏。 这使得使用最简单的电源电路成为可能。 高功率电源GRI由二极管电桥整流,并在电容器上滤波。 这些部件是从不必要的荧光灯保护器中使用的。 微电路电源的低电也可通过二极管电桥整流,在电解电容器上滤波并在整体式稳定器7805上稳定。这种电路的效率远高于具有两次转换的系统,系统的可靠性更高。 加上完全没有高频干扰。 负号不合时宜,变压器很重。 但是在这种情况下,变压器的严重程度却是一个加分-我希望手表坚固耐用。

因此,定义了时钟方案:这是一个基于ESP12E的现成模块,三个HV5622微电路,一个基于MAX44009的光传感器,以及一个传统的(我什至可以说是保守的)电源。 随后,基于VL53L0X飞行时间测距仪激光模块添加了一个用于确定手表前方人员的节点。 时钟示意图如图5所示。


图5. Dronsky Nixie时钟。 原理图

我按以下方式划分了引脚切换:前三个灯-第一个HV5622,后三个灯-第二个HV5622,其余HV5622通过两个IN12B中的特殊字符和点来控制该灯。

在设计阶段,尚不清楚SPI通道是否具有足够的速度来输出数据以平滑数字转换。 对于ESP12E而言,每秒输出96位并不难,这一点毋庸置疑。 但是是否有足够的速度来输出效果? 根据计算应有足够的余量。 但是,正如您所知,它在纸张上很光滑...

因此,首先计划分三个阶段分别为每个芯片输出数据。 实际测试表明,即使时钟频率为4 MHz,SPI通道也具有足够的速度和巨大的效果余量。 甚至连速度提高一倍的能力也没有人宣称。 结果,所有微电路都成链状连接,并且一个命令即可输出96位。 根据计算,96位的输出时间应为24μs。 图6显示了逻辑分析器在GRI上输出七个字符的记录。 考虑到LE信号的产生,总输出时间小于30μS。


图6.逻辑分析仪输出96位输出通道HSPI,时钟频率为4 MHz

所有芯片的CLOCK引脚被合并。 第二和第三微电路的DI(数据输入)端子分别连接到第一和第二微电路的DO(数据输出)端子。 LE引脚(锁存使能)被组合在一起,它们接收一个脉冲,该脉冲将数据从移位传输到输出寄存器。 在传输灯之前,将输出存储在输出寄存器中的内容。 组合BLOCK引脚,并通过1k电阻接地,以保持HV5622的输出级关闭,直到程序在MK中启动。 手册建议通电,首先输出数据,然后打开输出级。

亮度控制


为了控制GRI的亮度,以保持指示器的恒定最佳对比度,使用了BLOCK输出,向其提供了2500 Hz频率的PWM信号。 使用了足够高的PWM控制信号频率,保证没有频闪效应等。根据规范(《施工规范和规定》(《施工规范和规定》)2010年5月23日(SNiP 23-05-95的更新版本)以及《卫生法规和规范》 SNPiN 2.21。 /2.1.1.1278-03),人们不会感觉到300 Hz以上的照明脉动频率。 在这种情况下,PWM频率超出几乎一个数量级即可提供适当的视觉舒适度。

数字平滑变化的影响


为了获得数字平滑转换的视觉效果,有必要在将一个数字更改为另一个数字的时间(通常为200-250毫秒)中交替打开新数字和旧数字,并且减少旧数字的燃烧时间,并增加新数字的燃烧时间。 更改数字的算法(子例程change())执行60个循环。启动数字更改算法时,第一个数字包含循环时间的100%,第二个数字包含0%。随着周期的过去,第一个数字的接通时间从100%减少到0%,第二个数字的接通时间从0%增加到100%。因此,用于在200毫秒和60个周期内平稳改变数字的算法将第一个数字的亮度降低到关闭,将第二个数字的亮度降低到全亮度。

在第二个间隔的其余时间中,数字将连续且静态地打开,通过控制BL端子上PWM信号的常规开/关指示,可以降低数字的整体亮度。

图7显示了更改数字时逻辑分析仪记录的信号。可以看出,在移位子例程的开始处,旧数字的开启时间最长,而新数字是最小的,并且在移位(约250 ms)期间,旧数字的燃烧时间减少为0,新数字增加到最大。在视觉上,这表现为旧图形亮度的平稳下降,同时新图形同时“融化”。


图7.在数字平稳变化期间记录控制信号,

此处是效果的视频记录。


在这里


在这里:


与时间服务器同步


在互联网上研究了这个问题之后,我得出结论,基本上程序的作者自己为NTP协议编写(或使用现成的第三方)例程。这让我有些惊讶,因为Espressif SDK提到了用于实时工作的内置函数。内置功能提供了一个时间服务器请求(最多三个),时间校正(根据我的观察-对时间服务器的请求每4-6小时发生一次),将Unix时间格式的值转换为人类可读的格式,根据给定时间进行校正-区域。

使用内置实时功能的功能包括:对于第一个和随后的多个时间请求,将返回零,并发出“首先运行rtc”诊断信息。如何执行-我没有找到它,因此,仅等待(几秒钟),直到出现零以外的时间。

时钟启动算法


打开时钟后,系统将以客户端模式打开,并尝试使用存储的详细信息连接到接入点。

ESP8266会成功地在服务内存中自行建立先前的连接,并记住这些详细信息。这是在SDK中实现的功能。如果连接失败,则进行下一次尝试,但是将从EEPROM读取访问点的名称和密码。EEPROM还存储时区(范围为-12-+12的数字),然后将其正确地将时间转换为本地格式。

如果此连接也未成功,则操作模式将更改为“访问点”,并且手表的网页在标准地址192.168.4.1上可用于连接到此访问点的任何设备。就我而言,访问点的名称是ESP_D。在智能手机,平板电脑或笔记本电脑上,转到设备页面,选择一个接入点并输入密码。接入点模式打开时,客户端模式关闭。这是由于在与接入点的连接失败的情况下系统行为的特殊性。该系统将不断重复尝试加入的过程,仅会被其占用,并且几乎没有资源可用于其他任何事情。从外部看,这将表现为对界面的不愉快抑制。该页面的外观如图8所示。


图8. WEB时钟界面和命令行的外观,显示对ping命令的响应

在此页面上显示所有找到的访问点。接入点按信号强度排序,最上面的一行是信号最强且很可能是最接近的接入点(即您必须加入的接入点)。您必须输入密码,选择时区,然后单击“确定”。系统将打开“客户端”模式(与“接入点”同时),并尝试加入。如果连接成功,则参数将存储在EEPROM中。如果连接失败,页面上会显示一条消息,您可以再次尝试输入密码,等等。

成功登录网络后,“接入点”模式将关闭,仅保留“客户端”模式,即监视页面只能从内部网络访问。
为了能够按名称(在我的情况下为“ esp”)访问手表,启动了NBNS库,该库通过NetBios协议提供响应。该库允许手表响应诸如ping esp之类的命令,并仅通过名称esp即可访问它们

出于我不清楚的原因,这是一个很棒的库,可对广播请求做出响应,例如“名称”在什么地址?并且让您忘记了根据路由器(交换机)内部数据确定设备IP地址的繁琐过程,这种方法很少使用。互联网上描述的ESP8266上的几乎所有设备都未使用此简单便捷的机制。懒惰应该推动进步-但在这种情况下,它不会动。

接下来,开始主程序循环,其中发生以下情况:

  • 查询当前时间,当秒数过去后,开始更改时间显示。
  • 对光传感器进行轮询,并调整PWM信号的占空比,从而控制时钟的亮度。调整的目的是在改变房间的照明时保持数字的恒定对比度。
  • VL53L0X. , 2 .

实验表明,将反射系数接近于1的白纸或铝箔用作反射镜时,理想的情况是2米。对于反射系数不完善的普通物体(组织,人的皮肤等),确定距离远大于1米。如果传感器指示手表前面有物体,则子例程开始显示当前的室外温度,湿度和气压。采取了一些措施来提高抗噪能力-使用最简单的算法“超过50%的操作”。这意味着在800毫秒的间隔内,必须在距离测量值的一半以上的小于1米的距离内检测到目标。调试时,系统显示,当目标在传感器的视野内时,通常可以执行50-60次操作。

人体检测系统仅在目标出现在视野中时才起作用。要重新开始播放,您需要后退并再次播放。这样做是为了消除以下情况:始终站在时钟前面,始终显示外部参数。

VL53L0X激光传感器使用红外激光二极管,发射的波长为940 nm,对眼睛安全。

该视频显示了激光定位器视野中系统对障碍物出现的反应:


触发外部数据显示的最初计划是使用语音识别芯片。为此,我使用了由Sound Technologies提供的WTK6900B02芯片(语音命令识别器)。根据描述,微电路应识别出十二个音频命令并发出与接收到的命令相对应的二进制代码。来自微电路的脉冲连接到ESP8266的输出之一,并连接了一个硬件中断处理程序。通过硬件中断,记录了语音命令的识别事实。我收到的芯片中预先记录了许多英语命令。我对命令的“正确发音”进行了严格的训练,以便使它们被识别。事实证明,不应该用牛津的发音说话,而应该用中国的口音:))。

尽管花费了大量时间,但我仍无法可靠地识别语音命令。我得到的最好成绩是大约50%的正确识别率。因此,我被迫使用另一种触发外部数据显示的机制-VL53L0X激光测距仪。

手表的主程序留有使用语音控制系统的痕迹。
该程序还具有从VEML6070紫外线传感器读取数据的部分。事实是,我在家中和工作中交替调试时钟程序,并且只有一个MAX44009传感器。因此,在工作中,将VEML6070紫外线传感器连接到ESP8266,并编写了一部分程序来确定当前连接了哪些传感器。为了计算出对比度调整算法,事实证明这已经足够了,我在程序的最终版本中没有做任何更改。

数据输出到寄存器HV5622


如上所述,为了控制气体放电灯,需要能够切换相当高电压的微电路。我选择了HV5622芯片,它们是具有顺序写入和并行读出的32位寄存器。灯的阴极分别连接到其HV5622端子。要点亮特定数字,必须输出0。前两个HV5622连接六个GRI的阴极,第三个HV5622连接小时-分钟和分钟-秒的点分隔符,第七个灯的阴极带有特殊字符。要在灯中包括必要的数字,必须在寄存器中显示一个32位数字,其中日志1(HV5622内部的数据取反)对应于灯的必要阴极。该程序具有10维32位变量的数组。这样的数组的每个元素在其中一个位置包含一个二进制数,其对数为1,其向寄存器的输出将导致所需数字的点火。由于每个微电路控制多个GDI,因此为了输出,必须由几个元素组成一个32位变量,这些元素主要由逻辑0组成,其中log 1对应于每个灯中的必需数字。

值得一提的是,决定使用阵列来控制GRI阴极具有很大的优势:如果发生错误并且在将导线从GRI插座焊接到HV5622插座时混合了GRI的结论,然后对其进行修复,只需更改程序中的常数而不进行任何焊接即可。 HV5622引线数量众多且布局紧凑,因此很难焊接两条相邻的导线。

要完成所有三个寄存器,必须输出3个32位变量(总共96位)。用“杠杆”来做到这一点是不合理的-太长,很费时间。

幸运的是,ESP8266集成了用于串行通信的硬件机制(HSPI),SDK具有对该机制的访问功能。随着这种机制的启动,我不得不受苦。困难在于尚不清楚在HSPI模式下将32位变量输出的位置。为了了解HSPI机制,我使用了逻辑分析仪。经过一系列实验,我意识到可以输出96位,但是,这是开头所需的32位数字,以及两个包含任意垃圾的32位数字。在Internet上搜索没有任何帮助,但是到那时我才意识到,如果有一条类似WRITE_PERI_REG(SPI_W0(HSPI),d0)的指令;然后您可以尝试写入WRITE_PERI_REG(SPI_W1(HSPI),d1); WRITE_PERI_REG(SPI_W2(HSPI),d2);其中d0,d1,d2是32位变量。您必须首先将数据分解为寄存器SPI_W0-SPI_W2,然后发出命令开始交换。我还注意到,HSPI模块最多可以输出512位,并且只有16个这样的寄存器:W0-W15。

LE信号以编程方式生成,通过该信号将数据传输到输出寄存器HV5622。

系统调试


我不敢立即用成熟的高压(230伏)调试系统,而是用十几个LED组成一个调试指示器,其工作电压为5伏。调试后,当我确定正确的LED正确打开时,将GRI安装在面板中,并使用高电平的LED。通过这样的调试顺序,没有损坏单个芯片或单个指示灯:)。用于调试的节点的


照片如图9 所示。图9.调试LED组件的照片。

这里是一个简短的视频调试过程


房屋


最初的想法是制造一种由厚金属制成的残酷手提箱,例如铜,黄铜或青铜。 但是,由于Wi-Fi连接需要绝缘外壳,在最终版本中,仅保留厚金属的前面板。 在执行定制外壳的公司的Internet上进行的粗略搜索得出每个外壳约5000 r的数字。 我认为,在目前情况下,这是不合理的数额。 因此,我拿起了完工的建筑物(Gainta G2119C),在前往Shcherbinsky Chip-i-Deep商店的小屋的路上买了下来,然后就此解决了,剩下的问题是前面板的问题,也许以后还要再建一栋建筑物。

尽管表壳存在缺陷,但我还是决定在文章中陈述所取得的成果,并相信开发和应用的电路与软件解决方案将引起公众的兴趣。

今天的情况外观如图10所示。




图10.表壳的外观

结论


手表已经工作了一年多,没有发生故障,任务已经完成。 我将再次列出手表型号的显着特征:

  • 静态显示模式,同时具有数字平滑变化的效果
  • 使用HV5622芯片控制GRI
  • HV5622数据是使用HSPI硬件引擎写入的
  • 确切时间取自Internet上的确切时间服务器。
  • 可以通过内部网络按名称访问时钟
  • 首次启动时需要安装一次。
  • 完全没有按钮,警报等
  • 无级调节GRI发光的亮度,以便在给定的环境光变化边界内保持恒定的图像对比度
  • 手表会对人的进近做出反应,并显示街道温度,湿度和气压。

我很满意:)

→带有程序的档案位于此处

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


All Articles