0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Nixie时钟气象站的制作

454398 来源:wv 2019-09-15 17:59 次阅读

步骤1:解释代码。..。..

Nixie时钟气象站的制作

我试着尽可能地注释代码。我发现在学习Arduino和C ++编程(这里是前Fortran人)时,需要花费大量的自学时间,并且跟随别人的代码并不总是那么明显(至少对于初学者而言)。所以转到链接并将LINE#引用到我所描述的关键事项中,如下所示:

LINES 2-3 - 这些带来支持库代码以使您的时钟模块到工作并定义您正在使用的时钟模块。

#include

DS3231 rtc(SDA,SCL);

左侧《- p》

线路6 - 27:为了保持代码笔直,我在看N1,N2,N3和N4时从左到右分配了每根管子。然后我必须将4根控制线(ABCD)分组,将每根管子的芯片驱动到这些相应的管子上。

#define N1C 28//C 《《《--- N1是小时数十位Nixie Tube,所以每管重复这4行!#define N1B 26//B

#define N1D 24//D

#define N1A 22//A 《《《-----这是将引脚22的输出分配给线路的线路最左边的Nixie Tube芯片。它插入输出引脚22并焊接到芯片的“A”引线上。通过真值表,“A”引线是最低有效数字,D引线是最高有效数字。所以我打赌你想知道为什么引脚分配不按字母顺序排列到ABCD 。..。..这是因为芯片从上到下ADBC有它们,我希望焊接时焊丝没有交叉扭曲。让它们保持平直更容易(我想)。但任何一致性的技巧都必须防止接线错误。您可以随时更改程序以匹配,但故障排除是时间丢失的地方。

LINE 49 - 字节dig1,dig2,dig3,dig4;每个管必须显示给定的数字,无论它是时间还是温度的数字,无论如何。..。..程序取数字并使用一个字节来保存在程序中稍后从寄存器中剥离的数字,但是它被定义这里。

LINE 53 - 60这是DHT22的固定代码,来自互联网上几个来源的示例。找到很多地方。注意我为其他型号的传感器(DHT11)剪切了代码,因为我想要一个精益程序。

LINES 64-77只是设置BME传感器和Servo for Library支持的代码。第77行将伺服控制分配给该引脚61.

LINES 79 - 104这将为4个N1 - N4数码管中的每一个分配4条BINARY控制线ABCD的所有引脚作为输出。注意我试图在评论中显示“A”输出是2 ** 0(最小信号位),“B”是2 ** 1,“C”是2 ** 2,最后和“ D“是2 ** 2或最重要的位。那么这是什么意思?查看附加照片中芯片的Truth表。如果我想在数码管上点亮数字“6”,我需要在ABCD线上发送二进制位模式以打开芯片的引脚6。或者A关闭,B打开,C打开,D关闭。如果它们打开,芯片只查看ABCD线并将它们相加以打开相应的输出。 2 ** 1 = 2,2 ** 2 = 4,所以0 + 2 + 4 + 0 = 6.现在,如果我将芯片引脚6的导线焊接到#6导线管的端子引脚上激活,它将从阳极170VDC完成电路并点亮。

LINES 106-113定义按钮面板输入的Mega引脚。

LINES 122-128设置RTC模块的初始时间和日期。在第一次扫描时,它将使用您在此代码行上实际拥有的值加载模块。一旦Arduino运行您的总代码,您将使用按钮面板更改时间。

LINES 129 - 234 BME280标准设置代码。只需使用这些参数和代码行,这里没有问题。我希望我有更多的时间来真正了解BMP280是否可以通过最后几行校准,但我真的没有得到这个代码的良好参考。我的BMP对实际温度不准确,不得不通过从程序中稍后测量的数字中减去一个整数来强制进行校准。看看你是否能找到它!

LINES 237 - 240 - 设置DHT传感器。这里不用担心。

LINES 246-253声明如果按下按钮,则将变量名称“butXstate”设置为HIGH状态。

LINES 262 - 300和392-409 - 如果nixies显示不正确,这对于解决项目问题至关重要。这些行使用串口让你知道什么是内存寄存器的温度,时间等数据。..这就是你看到的地方。然后从那里进行调试,以便在管上进行调试。串口不在这些寄存器中,有时我想知道我的SDA/SCL通讯速度是否缓慢。问题。不 - 接线错误!

LINES 302 -304 - 这会调出DISPLAYWHAT()。查看是否有某个参数的请求(按钮被按下)。然后它进入DriveTubes(),根据“DisplayWhat()”下的内容,实际将ABCD控制模式写入4个管中的每一个。

LINES 307 - 390是滚动的顺序时钟的功能,用于显示时间,温度,时间,压力,时间,湿度,时间周期。它使用“freq = t.sec”查看已经过的秒的总值,并显示“分钟”的任何象限“它是在.IF语句说明如果在这个时间范围内经过几秒钟并且没有按下按钮,那么从寄存器中获取数字,然后根据该数字驱动管子。同时点亮绿色LED让人知道数字代表什么。

LINES 412 - 424这些只是让传感器的湿度从寄存器刷新到使用。

LINES 427 - 454 DisplayWhat(这只是检查是否按下按钮,如果是,按哪一个。然后去做该按钮所要求的。如果按下按钮0,1,2或3然后转到更改时间,因为此人想要更改时钟时间。如果按钮4然后去获得温度并显示它,按钮5 - 去获得压力并显示它,按钮6去获取湿度并显示它。如果按钮7,则按顺序冲洗所有管子,以防止管子阴极中毒。

LINES 456 - 473 DisplayTime()从RTC获取小时和分钟的时间并从军队中取出时间为12小时基本时间(第462-3行)。然后无论是几分钟还是几小时,它都会除去第一个数字除以10,然后通过取得该部分的剩余部分来获取第二个数字。如果小时小于“10”,要关闭第一个Nixie管,我将芯片驱动到全值16,这样所有ABCD都会打开,真值表会关闭芯片的所有输出,所以没有数字会亮。这是以这种方式去除数字的唯一值。

LINES 474 - 512 ChangeTime()如果按下前4个按钮中的任何一个按钮,则调出。 newhour等的变量名称通过每次按下按钮(对于分钟相同)递增或递减,然后在行510上将新值写入RTC存储器并且时钟采用新的时间设置。

LINES 513 - 594 DisplayTemp()或DisplayPress()或DisplayHumid()都以相同的方式运行。天气变量定义为浮点数,然后从传感器读取。然后将该数字分解为4位数,并逐个单独剥离,因为数字除以10然后减去以得到下一个数字。将其乘以10,并将数字转换为要驱动到该管的数字,并对剩余的管重复。示例:Temp = 71.25然后temp变为7.125,dig1 = 7. Temp仍然是7.125 - 7 = 0.125然后* 10 = 1.25现在设置为Dig2,依此类推。

LINES 598 - 822 RunPoission ()驱动四个数码管以每秒0.1秒的持续时间滚动数字0到9。我们在它们各自的引脚上写入相应控制线的低电平或高电平,以获得正确的BINARY模式,以打开芯片上的右侧输出,以点亮管内正确的电线。

//3 - 例如在Nixie管N1上显示数字3 。..。..

digitalWrite(N1D,LOW);//D1这是2 ** 3,所以我们不需要8,所以“写”引脚N1D关闭或低电平。

digitalWrite(N1C,LOW);//C1这是2 ** 2,所以我们不需要4,所以“写”引脚N1D关闭或低电平。

digitalWrite(N1B,HIGH);//B1这是2 ** 1,所以我们需要一个2来“写”引脚N1D或HIGH。

digitalWrite(N1A,HIGH);//A1这是2 ** 0,所以我们需要一个1来“写”引脚N1D或高电平。

2 + 1是3,芯片将输出3驱动为ON,因此将170VDC传递到管内的电线。

延迟(10);延迟0.010秒并继续扫描并显示“4”然后显示“5”等。

LINES 828 - 1119 DriveTubes()的工作类似于RunPoission(),检查Dig1,Dig2的值是否有效,Dig3和Dig 4等于,然后如果该条件为真,则它会通过并将控制线图案驱动到相应的写入模式。

步骤2:清理案例

我知道Syncroscope并不大足以容纳项目所需的所有电源,而不是Arduino Mega,芯片和布线。所以我建造了一个丙烯酸盒子,给它一个爆炸式的外观。

我摧毁了范围内部,为时钟的其余部分让路。我知道这会很紧张。我只保存了大气指示的面板和指示器。装配丙烯酸外壳有点棘手,没有全面的玻璃斜坡。有点走了很长的路。这肯定需要练习,我使用画家的胶带来防止胶水接触我不想破坏的区域。建议:学习如何用抛光轮或丙烷罐火焰对边缘进行打磨和抛光。这两种方法都很有效,但需要耐心和实践。

我试图最小化这种情况下的访问面板,并发现我组装完整的工作结构非常困难。我试图保持原始仪表的内部支撑,将它们全部保持在一起,至少可以证明这是非常具有挑战性的。请注意,只有一侧可以进入透明盒子,我不得不使用长铰接式尖嘴钳将远端杆固定到位并拧紧这些螺母。整个组件作为夹钳式设计拉在一起。换句话说。..。..做一些不太复杂的事情,这将更容易一起,麻烦也更容易。麻烦拍摄它真是太糟糕了,我将它全部拆开并重新安装在废料板上的所有组件以使一切工作,然后在最后的情况下重新组装时钟。我做了两次!!!

第3步:设置面板

由于我只有一次切割铝面板,所以我非常小心地先用图形方式将其打好并仔细测量。测量两次切割一次。我甚至将面部复印作为切割有机玻璃面板的指导,以确保它是正确的。然后我在钻床上抛光/抛光边缘。

第4步:构建电路。..。..

我在时钟中有三个变压器,我放入了后壳圆形部分:

1。 120 VAC至5 VDC为Arduino和传感器供电

2。 120 VAC至12 VDC为高压转换器供电。

3。一个12 VDC到200 VDC的变压器 - 为Nixie管供电。

A切换器为它们供电,我使用两个120 VAC氖灯,表示120 VAC已打开。

I然后按照所示的接线图,必须多次测试每个焊接连接,以确保良好的连接。请仔细按照Arduino输出到4芯片驱动器的接线。确保IO编号与所有4个芯片的芯片的ABCD一致。然后确保SOCKETS的芯片始终连线,以便将芯片输出与正确的数字相匹配以进行显示。请注意,IN12引脚编号不是点亮数字的数字。很容易忘记这一点,所以检查并再次检查。

步骤5:焊接电路。..。..

焊接芯片需要铅笔尖铁,大量使用焊剂和技术,以确保没有两个引脚短路。我使用电路板保持一切整洁,并使用Arduino引脚插件。剥离这些细导线是非常保守的,因为热量会导致大部分绝缘层拉回或收缩。将ABCD导线分成四组焊接到引脚上,然后将4个联接的引脚插入到母模块中,焊接到芯片上。

为了将引脚固定到位,我将引脚的两侧热熔化女性的侧面。如果您需要返工,可以使用Xacto刀移除热熔胶。慢慢来。但胶水将所有东西固定在一起,避免了连接松动。

我保持良好的电线颜色方案,以保持直线。..。

黄色 - 数字为170 VDC

p》

红色-5 vdc

黑色 - 接地

白色/黑色120 VAC

紫色12 VDC

Orange Browns等。.. Servo,Nixie等的具体线索

步骤6:设置时钟

按钮板。..(参见接线图)。这些按钮用于设置上/下的小时和分钟,并根据需要调用温度,湿度和大气压力。最后一个按钮运行一个防中毒程序来清洗管子。

当按下按钮时,务必使用8K欧姆电阻器(6K - 10K工作正常)将输入拉到地面。这可以防止麻烦的杂散电压导通输入。关于这些面板的其他地方的一些例子不使用这种方法,并且它们通过编程来缩短它,但它不可靠。只是以正确的方式做到这一点。请参阅接线图,并按照正确的方案进行无故障工作按钮。

我通过焊接在黄铜销底部的小黄铜垫圈上将按钮延伸穿过外壳,黄铜针脚从杆架上切割和打磨。如果倒置,杆不会掉出来。这也使得通过侧壁的按钮没有大的切口,外观整洁,外观干净。

步骤7:装配

装配将取决于您的时钟设计和外壳。这些照片显示了一些装配阶段,坦率地说有些不能很好地完成,然后我重新进行了构建。如果你仔细观察这里的图片和完成的项目,你会看到我做的很多改变。最值得注意的是,nixie插座在安装到电路板上时一直焊接到芯片驱动器引脚。然后ABCD控制线是从芯片到引脚进入Arduino的引脚。

我使用了大量的遮蔽胶带来防止丙烯酸刮伤。大量的线束可以训练电线而不会在各自的焊点处脱落,并且大量的热熔胶使电线绝缘,然后将它们剥离。

步骤8:最终组装和故障排除

我在建立时钟,编写程序和解决问题之间交替进行。我基本上构建了一小段代码来使一件事工作,然后为另一个功能添加代码。如果某些东西不起作用那么。..。..我知道这是添加的新功能,它会扰乱扫描或者流程结构不好。

我的右边有一个数字没有显示全部数字正确,我不知道这是代码还是错误的接线工作/交叉短路,或坏的数码管。所以我换了管。..。..所有的管子都以同样的方式运转,所以它不是管子。然后我找到了布线,发现两根电线交叉连接到插座(数字将我从要显示的数字中剔除)。这只发生过一次,但我仍然没有走出困境。我几乎在那里,但得到疯狂的数字,并最终发现我有一个错字推动数字“2”。 AAAARGH!发现这是一个大海捞针,一旦发现它当然是完美的意义。这是让这一位数发挥作用的日子。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时钟
    +关注

    关注

    10

    文章

    1479

    浏览量

    130290
  • 气象站
    +关注

    关注

    1

    文章

    691

    浏览量

    15334
收藏 人收藏

    评论

    相关推荐

    【开源作品】基于树莓派4B、ESP32制作的桌面机器人、气象站、立方光!

    气象站 这是我十多年来一直想建立的项目。我终于成功了,我真的很兴奋——一个电池供电的气象站项目。我过去建造过许多气象站项目,但这次不同。它可以在电池上持续数月。原因是它使用的令人惊叹的电子纸显示。让我向你
    发表于 03-05 16:52

    手持自动气象站-手持气象仪-手持五参数气象

    光伏检测仪气象站
    山东天格光电科技有限公司
    发布于 :2023年11月18日 15:32:10

    校园气象站组成与作用

    对于校园气象站,相信很多人都不陌生,主要作用是用于监测气象要素信息。校园气象站作为学校教学研究的器材,可监测校园气象,为学校提供参考数据,也可以锻炼学生的动手能力。对青少年的
    的头像 发表于 10-31 16:28 307次阅读

    #移动气象站# 扬尘监测# 车载气象站 车载扬尘监测站

    监测气象站
    pgz1234
    发布于 :2023年09月18日 08:52:32

    负氧离子在线监测系统# 气象站# #气象监测

    监测气象站
    pgz1234
    发布于 :2023年09月18日 08:50:51

    什么是气象站气象站的简介

    什么是气象站气象站的简介
    的头像 发表于 09-14 16:14 757次阅读

    光伏气象站是什么

    光伏气象站作为现代气象观测的重要工具,为气象学、农业、航空、环境科学和能源等领域的研究和应用提供了气象数据,是辅助指导生产生活的重要设施。 传统的手工
    的头像 发表于 08-14 16:36 427次阅读

    自动气象站是什么,自动气象站的功能特点

    自动气象站是一款自动监测记录气象信息的仪器,自动气象站能够自动监测和记录气象信息,如温度、湿度、气压、风速、风向、降水量等,为气象学研究和
    的头像 发表于 07-27 11:10 771次阅读
    自动<b class='flag-5'>气象站</b>是什么,自动<b class='flag-5'>气象站</b>的功能特点

    如何制作简单的气象站

    电子发烧友网站提供《如何制作简单的气象站.zip》资料免费下载
    发表于 06-30 09:45 0次下载
    如何<b class='flag-5'>制作</b>简单的<b class='flag-5'>气象站</b>

    气象监测系统是气象站

    气象监测系统是现代气象业务体系的重要组成部分,是提升公共气象服务能力和提高气象预报预测准确率的重要基础。 气象监测系统是
    的头像 发表于 06-14 16:43 271次阅读

    如何使用Openweathermap和0.96英寸oled来制作一个小气象站

    我是 ESP8266 的新手。我想通过使用 Openweathermap 和 0.96 英寸 oled 来尝试一个小气象站。当我尝试编译代码时,出现此错误。怎么了? 调用使用属性错误声明的“HTTPClient::begin”:过时的 API,使用 ::begin(WiFiClient, url)
    发表于 06-02 10:16

    使用D1 mini作为气象站,A0读数不稳定的原因?

    使用 D1 mini 作为气象站。在其他草图中,通过 100k 电阻将 batter+ 连接到 A0,电池监控效果非常好。 当我将 D1 和 D2 用于连接到 BME280 和 BME280
    发表于 05-25 07:56