正文共:1300字19圖
預計閱讀時間:4分鐘
這其實是個爛尾了很久的項目 第一次看到輝光鐘的時候真的很驚豔 !
就那種,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的精度,非常合適!
在串口燒寫程序時,除了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)
直接上電的話,會嘗試連接已保存的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輝光管就行了~
點擊「閱讀原文」獲取~
代碼是在PlatformIO平臺下開發的,直接就能編譯使用了~
初次使用需要在串口下燒寫,後續就可以OTA燒寫,
編譯出來的firmware.bin文件,直接可以使用配置頁面上傳。
如果要在ArduinoIDE下開發的話,這裡給出一個遷移方案(未進行實際測試,歡迎大家測試反饋)
首先需要部署好在ArduinoIDE下的ESP32開發工具鏈(廢話),
新建一個Arduino項目,將src文件夾裡的main.cpp的內容完全複製進ino文件內,
將src文件夾下的其餘文件,直接複製到ino文件同一目錄下,
重啟arduinoIDE之後,應該能直接看到別的文件。
在庫管理器裡加載RTC,NTPClient,AutoConnect這三個庫,
然後嘗試編譯一下吧~(記得設置好ESP32本身的配置信息哦)
如果編譯成功的話,項目–>導出已編譯的二進位文件,可以獲取bin文件,
然後通過配置頁面上傳就行了。
如果在ArduinoIDE下編譯有問題歡迎反饋~我會盡力幫忙