17960| 25
|
[项目] ESPnixie----基于ESP32的辉光钟 |
这其实是个烂尾了很久的项目 第一次看到辉光钟的时候真的很惊艳 就那种,duang~一下,很好看,很骚气的感觉 Amazing!!! 然后淘宝上看了看价格,觉得自己做才有意思(并不是 其实说到底就是钱包不允许(摊手 -------- 以下部分是电路分析和介绍,觉得太长的可以略过 -------- 言归正传,这个辉光钟使用的辉光管型号是IN14 这个管子产于上世纪70-90年代的苏联。同其他辉光管一样,也是利用冷阴极辉光放电效应发光。IN14主要充氖气,通电后会产生特征的橘红色光芒来显示0-9十个数字。值得一提的是,IN14的管内还充入了少量汞,可以大幅延长使用寿命。因为汞蒸气能够有效吸收阴极发射的电子,避免其他阴极受电子辐射产生“中毒”现象。也正是因为汞蒸气的存在,IN14的橘色辉光边缘,会带有些许蓝紫色光芒,使得显示效果更加漂亮。 蓝紫色的边缘不太好拍清楚,实际看的话还是比较明显的 从背面拍就比较明显了 实际上在黑暗环境下,从顶部后侧斜向下看,整个管子的玻璃壳都会泛着幽幽的紫光 1977年8月,暴力美学工厂出产 首先解决辉光管的驱动问题 IN14最合适的驱动参数为,阳极170V,串联20K电阻,典型电流为2.5mA 显然直接用220V市电来获取170V高压是比较危险的 出于安全考虑,使用BOOST电路进行升压,从12V直接升压到170V 在第一版样机中,使用经典的MC34063进行升压 但是MC34063是单端驱动,MOS管的关断依靠电阻 关断速度慢不说,米勒效应还大到起飞 直观点来说,就是MOS管和功率电感 非!常!适!合!烧!开!水! 可以看到,MOS管关断速度非常慢,而且因为米勒效应存在一个很大平台 已经选择了栅漏电容尽可能小的管子了,再换更小的管子很难了 后来看上了MAX1771 内置图腾柱驱动,而且是PFM控制,在轻重载条件下都能获得很高的转换效率 经过长时间测试,这一版升压电路仅略微温热 示波器图忘记拍了,很完美的方波,没有过冲没有振铃,上升和下降边沿很陡峭 很常规的BOOST电路 二极管本来想用肖特基的,但是这么高耐压的肖特基很少,而且很贵 所以最后还是选择了超快恢复管 辉光管驱动芯片选择了HV57708 这个也算是辉光管常用驱动电路了 这里值得一提的是,HV57708的输出端只有80V耐压,所以,这里有个很有意思的技巧。 在电路上,每个辉光管的阳极直接通过20K电阻接到170V高压上 而每个阴极接到HV57708的输出端口上 而HV57708的高压电源端,实际上输入75V,由170V高压通过ZMM75稳压二极管获得 这样,在HV57708输出低电平时,辉光管点亮。 而输出高电平时,辉光管阴极为75V,不能保持辉光放电,从而不显示数字 需要注意的是,HV57708为5V电平,而ESP32为3.3V,且不像STM32的IO是5V容忍的,所以必须加电平转换 在这里用了一个SN74LVC125来作为电平转换 主控芯片直接使用了乐鑫官方的ESP32-WROOM-32UC模组 因为PCB板载天线增益较低,方向性也比较明显,而且天线区域需要净空,对器件布局来说会增加一些麻烦 所以特意选择了这个需要外接天线的模组 淘宝上一个小巧的2.4G天线也就两三块钱,但是增益比板载天线要好得多了 在制作外壳的时候,主板用铜柱垫高一些,天线的安装位置前后刚好净空 时钟芯片选择了DS3231,配合一枚CR1220纽扣电池 DS3231使用I2C通讯,内部集成晶振,需要的外围器件很少 而且能达到5ppm的精度,非常合适 ----------已知bug---------- 一开始设计的时候,HV57708的数据线和锁存线分别用了36和39这俩IO 然后调试的时候死活没反应 然后才发现ESP32的IO34~39只能作为输入,不能作为输出!所以就只能飞两根线了,将他们分别接到26和33两个IO上 在串口烧写程序时,除了IO0要保持为低,IO2也要保持为低 但是在设计时候IO2作为I2C的SDA使用了,被上拉电阻拉高了 后来排查了好久好久才发现这个问题,所以如果要用串口烧写程序,就必须手动将IO2与GND短接一下 不过好在,我开发了OTA升级,直接通过wifi就可以升级程序 然后忘记引出复位引脚也是一个极蠢的错误 (fishgan本来就很蠢)(doudou不仅蠢还皮) 之前一版使用的STM32主控芯片,配合的是XC6206线性稳压器 换ESP32以后,脑袋短路了一下,还是用了XC6206,然后就翻车了。。。 一开始调试时候好好的,后来开发完成,撤除串口调试器以后,莫名就不行了 查了老半天才发现是因为ESP32在wifi通讯时,瞬时电流过大,超过了XC6206最大输出电流 所以,电压就会掉下来,然后ESP32就一直触发Brownout错误,然后复位 而接着调试器的时候,调试器输出3.3V就足够供给了 最后只能飞线出来换上一个AMS1117解决 此外要注意一下,很多市面上的USB转串口,都是5V电平的 直接接到ESP32串口上会导致esp32工作不正常 用一个电平转换电路,或者在RX和TX线上串联一个470欧姆电阻就行啦 当然。。我的解决方案是,直接用stm32f103c8t6的开发板自己做了个usb转串口 stm32的原生usb接口与电脑通讯,然后串口电平是3.3V,刚好适合 最后就是一个无伤大雅的bug 调试的端口焊盘标注,TX和RX标反了 (hahahahaha) -------软件功能------- 显示时间是最基本的啦~ 然后每过一分钟会将所有数字跳闪一遍,这样可以有效抑制阴极中毒,延长辉光管寿命 每天会自动连接互联网校时 如果纽扣电池没电,或者长时间没有联网校时,程序会判断为当前时间不可靠 这时候时间数值会闪烁显示,提示用户 联网校时的时长我设定为7天 在nixieHardware.h中可以通过修改MAX_OFFLINE_DAY的数值来调整 直接上电的话,会尝试连接已保存的WiFi热点,同时辉光管显示全1在连接成功或者10秒未成功连接之后,进入正常运行,显示时间 而按住P1按键上电(其实就是P1焊盘和GND短接),会启动AP模式和本地网页服务器此时辉光管显示全0 AP模式默认的wifi热点名称是nixieClock,密码是12345678 在network.h中,可以修改DEFAULT_AP_SSID和DEFAULT_AP_PASSWORD来调整 在连接ap热点后,应该会自动跳转到配置主页 当然,也可以用http://NixieClock.local或者IP地址来访问配置页面 在配置页面里,可以设置家里的路由器,也可以直接上传新的程序 配置页面里的功能大家就自己探索吧~ 再说一下,预留了数字间冒号的位置,程序里也已经支持了 但是我本人不太喜欢有冒号(这个就看个人口味了,有人就很喜欢) 要的话直接焊上IN3辉光管就行了~ -----福利时间------- 附件里提供了完整的项目文件 包括硬件原理图,PCB文件(已经修正所有已知bug啦) 还有软件源代码以及编译好的镜像 不过完整打包的项目超出了论坛附件大小限制,所以上传到百度云啦 附件是传送门 代码是在PlatformIO平台下开发的,直接就能编译使用了~ 初次使用需要在串口下烧写,后续就可以OTA烧写 编译出来的firmware.bin文件,直接可以使用配置页面上传 如果要在ArduinoIDE下开发的话,这里给出一个迁移方案(未进行实际测试,欢迎大家测试反馈) 首先需要部署好在ArduinoIDE下的ESP32开发工具链(废话) 新建一个Arduino项目,将src文件夹里的main.cpp的内容完全复制进ino文件内 将src文件夹下的其余文件,直接复制到ino文件同一目录下 重启arduinoIDE之后,应该能直接看到别的文件 在库管理器里加载RTC,NTPClient,AutoConnect这三个库 然后尝试编译一下吧~(记得设置好ESP32本身的配置信息哦) 如果编译成功的话,项目–>导出已编译的二进制文件,可以获取bin文件 然后通过配置页面上传就行了 如果在ArduinoIDE下编译有问题欢迎反馈~我会尽力帮忙 -----------py交易时间-------- 因为做这个项目花了不少钱,所以打样时候多的板就出了回点血TAT 出完为止 7块空板-----70元一块(实际上我打样10块750元.....就算70了吧) 所有器件(XC6206已换成AMS1117,除了辉光管)------ 60元一套 如果需要我代焊好的话emmmm 就算20元手工费吧。。。去恰一杯DQ(冬天才适合吃冰淇淋!)【所以没有老婆的零花钱了】 此外可以单独加配木质外壳(激光切割,未组装) 也20元吧。。。毕竟zz同志被我白嫖画的外壳,请他恰顿饭去【所以也没有老婆的饭了】 -----参考信息------ HV57708参考手册http://ww1.microchip.com/downloa ... Sheet-20005861A.pdf ESP32参考手册https://www.espressif.com/sites/ ... uc_datasheet_cn.pdf SN74LVC125参考手册https://atta.szlcsc.com/upload/p ... 4/1457707114011.pdf MAX1771参考手册https://atta.szlcsc.com/upload/p ... FB84B5C72F3E59A.pdf DS3231手册https://atta.szlcsc.com/upload/p ... 5/1457707245139.pdf AutoConnect项目地址https://hieromon.github.io/AutoConnect/index.html ArduinoIDE下ESP32开发环境部署https://github.com/espressif/ard ... e/boards_manager.md -------最后碎碎念------- 项目开发fishGan 外壳设计zz 特别感谢老婆大人doudou帮忙排版和加彩蛋~❤ (哼我也会加彩蛋) 本项目未经许可不得商用! 不得单独转载项目文件包!必须连同本文转载! 转载请注明原作者和出处~ |
51 KB, 下载次数: 6598
DFryl-cTvM8 发表于 2020-3-16 16:24 首先检查一下IO2的电平,烧写模式的时候,IO2也必须拉低的。 有一些板子,是带SD卡的,而且用SPI_MMC控制器的话,IO2就会有个上拉电阻 此外,IO0拉低以后,板卡需要复位一次执行烧写引导程序。 我不知道你用的USB-UART转换器是独立的还是集成的。 如果是独立的,大概率是因为你没接DTR引脚,经典设计是使用DTR信号来复位板卡 此外你也要检查你的串口信号线电平,如果5V直接接ESP32是不行的。 建议用3.3V的USB-UART模块,或者加电平转换器。实在没条件的话,两根信号线上分别串联一个470欧姆电阻 |
ARRGANT 发表于 2020-7-2 14:18 你这里有两个问题源。 首先提示connect failed是因为没能成功连接WiFi,这个报错并不影响正常走时和刷新辉光管显示。但是具体是哪一环节出错我需要你更多信息才能判断。 其次,无限打1是在程序的第57行(loop函数的第二行)Serial.println(pinIntStatus);这一句。pinIntStatus这个引脚要连接到DS3231的SWQ引脚的。在初始化阶段,这个引脚被配置成了秒脉冲输出。无限1就说明ESP32没有读到这个信号。排查一下硬件连接问题(线好不好,连接的IO和宏定义是不是对的起来) |
我尝试了这个方案但是在串口烧写的时候出了问题,“Chip sync error: Failed to connect to ESP32”, IO0和地已经短接了。是有什么其他步骤没做吗? |
FishGan 发表于 2020-8-22 20:13 您可以加下QQ吗 能分享下当时购买的链接吗? 好多都不好找了。。。。我的QQ 978572839 麻烦您。。。 |
FishGan 发表于 2020-8-25 10:20 这样啊 那您能不能分享下您当时的订单 ?好多器件不知道该咋买 。。。不是很懂硬件。。。。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed