概要
レトロに光る 蛍光表示管(Vacuum Fluorescent Display)IV-18を使って時計を作ります。更に時計を木の枝に組込んでみました。
ニキシー管とは異なり、青緑色の表示で結構気に入っています。
ただ、これも既にディスコン品です。なにかディスコン品で時計ばかり作っていますね。(バブルLED,ニキシー管、VFD・・・)そろそろディスコン品の作成、投稿は打ち止めにしたいと思っています。
VFD管とは
蛍光表示管(Vacuum Fluorescent Display)のことで、1966年に伊勢電子工業(現在のノリタケ伊勢電子)の発明です。ノリタケ伊勢電子さん自体はVFD管を継続生産していますが、今回使用する IV-18は、ソビエト製(ロシアではないよ!)で、20世紀末に製造中止です。
VFD管の動作原理等については、ノリタケ伊勢電子さんのHPを参照ください。https://www.noritake-itron.jp/cs/appnote_vfd/1
-
IV-18
Amazon 等で結構販売しています。1,300円/1本程度。
資料は Dieter's Nixie Tube Data ArchiveのPDFファイルが参考になりました。
https://pdfslide.tips/documents/dieters-nixie-tube-data-nixie-tube-data-archive-document-in-this-file.html -
ピン位置の確認方法
ピン位置の確認が大変なのですが、最初の確認方法がおすすめです。
- 6,7,8PinがTube内でどこにも繋がっていない で判断するのが楽です。
- 1Pin Filamentが 背面の太い線に繋がっている
- 22Pinのワイヤーがわずかに短い
概略ブロック
IV-18の駆動は HV5812 ICで直接24Vをスイッチングします。
IV-18のフィラメントとHV5812のコントロールに5V を必要としますので、DC-DCレギュレータで 24Vから5Vを作成。
時計のコントロールは、M5Atom liteを使用します。M5Atomは、NTPサーバーから時刻を取得し、内部タイマーをセットします。そのタイマーで時刻データを生成し、3.3V SPIで出力します。それを 4bit Level変換素子で 5V SPIに変換し、HV5812を通して IV-18に表示します。
- 部品一覧(金額は概略です)
- M5 Atom lite: スイッチサイエンス 980円
- HV5812: Mouser 300円
- レベル変換:秋月電子通商 200円
4ビット双方向ロジックレベル変換モジュール
AE-LCNV4-MOSFET - DC/DCレギュレータ:秋月電子通商 240円
三端子DC/DCレギュレータ 5V BP5293-50 - DCジャック:秋月電子通商
-
M5Atom lite
小さい、安い、でもI/O端子が多い、更にWiFi,Bluetoothが使える。言うことはありません。RTCのついているM5Stick-Cを使おうとも考えたのですが、どうせ時刻合わせをしなければならないなら、Atom liteで充分と考えました。 -
HV5812
Microchip社の”20-Channel Serial-Input Vacuum Fluorescent Display Driver for Anode or Grid”です。
SPI信号で、20-80Vの20本の信号線を直接スイッチング出来ます。ICのタイトルにもあるようにVFD用のICです。
ニキシー管でも、HV5522と言うICがあり、こちらは200VをSPIでスイッチング出来ます。これらの石を使うことにより、少ない信号線で、高電圧をスイッチング出来、配線を削減できます。(精神健康上、高圧の引き回しが少ないだけで大分違います)
筐体(木の枝)
筐体(これでも筐体と呼んでいいものかしら?)には、イチイの木の枝を使います。北海道ではオンコと呼んでいる木です。アララギという別名もあります。樹皮を剥いて生地を出しても白くて美しいのですが、剥くのはいつでもできるので樹皮を残して彫り込みを入れます。オンコの木は削っていて気持ちよく、いつまでも彫り込んでいたくなります。
ところで、オンコの実を食べたことはありますか?甘くて美味しいですが、種子にはアルカロイドの毒があります。還暦すぎるまで、種子に毒があることは知りませんでした。子供の頃はよく食べたのですがね。
IV-18のワイヤーにケーブルをはんだ付け、ワイヤーは熱収縮チューブで保護。
プログラム
MacでVS-Code+PlatformIOを使用して開発。Arduinoライブラリを使用。
内容は主に、HV5812を駆動する SPI制御と、NTPサーバーから時間を取得する制御になる。SPIの方は、前のニキシー管で経験があったのであっさり出来てしまい、ほんとにこれがベストかどうかが良く分からない状態です。
NTPサーバーの方は、「ESP32/ESP8266でインターネット時刻と同期する」の記事を参考にこれもあっさりと片付いた。
https://programresource.net/2020/02/17/2852.html
そして、動作確認完了の直後であり、あまりエラー処理等真面目にやっていませんが、ソースを以下に記載します。
VFDIV−18時計
/* Atom lite
* using VSPI and control HV5812
* SCLK #19
* MOSI #33
* MISO -----
* CS(SS) #23
* Blanking #22 //用意したけど使っていない
*
* //Timer部分は「ESP32/ESP8266でインターネット時刻と同期する」 からコピー
*/
#include "M5Atom.h"
#include <SPI.h>
#include <WiFi.h>
#include <time.h>
// wifiの設定
const char* ssid = "xxxxxxxxxxxxxxxx"; // WiFiのSSID
const char* password = "xxxxxxxxxxxx"; // WiFiのパスワード
unsigned long last_timer;
#define JST 3600*9
#define BLK 22 // Blanking
byte font[10]; // 数字Font 0-9
unsigned int digit[8]; // VFD の左端の桁がindex0
unsigned int timeData[6]; // 2byte hh mm ss
void getTimeAndMakeData(void);
void setup() {
// ---------------------------------------
// WiFiを通して NTPサーバーと同期
WiFi.mode(WIFI_STA);
if (String(WiFi.SSID()) != String(ssid)) {
WiFi.begin(ssid, password);
}
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
configTime( JST, 0, "ntp.nict.jp", "ntp.jst.mfeed.ad.jp");
Serial.print("Sync time.");
time_t t;
do {
t = time(NULL);
delay(100);
}while (t == 0);
// Timer設定処理 End
// ---------------------------------------
pinMode(BLK,OUTPUT);
digitalWrite(BLK,0);
font[0] = 0x7e; font[1] = 0x0c; font[2] = 0xb6; font[3] = 0x9e;
font[4] = 0xcc; font[5] = 0xda; font[6] = 0xfa; font[7] = 0x0e;
font[8] = 0xfe; font[9] = 0xce;
// 桁位置定義 シフト演算でも良いのだけれど・・
digit[0] = 0x8000; digit[1] = 0x4000; digit[2] = 0x2000; digit[3] = 0x1000;
digit[4] = 0x0800; digit[5] = 0x0400; digit[6] = 0x0200; digit[7] = 0x0100;
M5.begin(true,false,false);
delay(50);
M5.dis.drawpix(0, 0xf00000); // Green 起動確認用
SPI.begin(19,-1,33,23); //sclk=#19,MISO=Non,MOSI=#33,SS=CS=#23
SPI.setFrequency(70000);
SPI.setDataMode(SPI_MODE2); // MODE2で動いちゃったから細かい検討なし
}
void loop() {
getTimeAndMakeData(); // 内部タイマーから表示時間Dataを作成
// hh mm ssを表示
for (int i=0; i < 6; i++) {
SPI.setHwCs(true);
SPI.write16(timeData[i]); //HV5812は20bit、Dataは16bitと合っていないが
//不足分は0となるみたい
//ちなみに write32でも動く
SPI.setHwCs(false);
delay(1); // delay無しでいける?未確認
}
}
void getTimeAndMakeData() {
time_t t;
struct tm *tm;
t = time(NULL);
tm = localtime(&t);
int indexNum[6];
indexNum[0] = tm->tm_hour / 10;
indexNum[1] = tm->tm_hour % 10;
indexNum[2] = tm->tm_min / 10;
indexNum[3] = tm->tm_min % 10;
indexNum[4] = tm->tm_sec / 10;
indexNum[5] = tm->tm_sec % 10;
// 時計表示の場合は、hh mm ss として空白桁を2,5桁とする
timeData[0] = digit[0] + font[indexNum[0]];
timeData[1] = digit[1] + font[indexNum[1]];
timeData[2] = digit[3] + font[indexNum[2]];
timeData[3] = digit[4] + font[indexNum[3]];
timeData[4] = digit[6] + font[indexNum[4]];
timeData[5] = digit[7] + font[indexNum[5]];
}
platformio.ini
platformio.ini
[env:m5stick-c]
platform = espressif32
board = m5stick-c
framework = arduino
upload_speed = 115200
monitor_speed = 115200
lib_deps =
m5stack/M5Atom@^0.0.1
fastled/FastLED@^3.4.0
platformio.ini はプロジェクトのライブラリ等の設定ファイルです。
upload_speed と monitor_speed
それと、lib_depsにM5Atomライブラリを登録しています。
FastLEDのライブラリは、Atom本体のボタンのLEDの為に必ず必要となります。(いつまでかわかりませんが・・・)
動作状況
Youtube動画で動作状況を御覧ください。
写真、動画で見ると表示がちょっとちらついていますね。目視では全然気にならないのですが、SPIがあんまりあっさり動いてしまったので速度パラメーターを全然調整していませんでした。
感想
-
HV5812
とにかく、VFDとかニキシー管を制御するときは、このたぐいのSPIで高圧をスイッチングするICを使うべきだと思います。特にニキシー管の場合、ディスコンのSN74141Nを使う例が多いのですが、入手困難な上、所詮高圧のBCDデコーダーですから、配線量はそんなに減りません。 -
M5Atom lite
小さくて、安くて、I/Oが多くて さらに通信もついているので、非常に使いやすい。当方がこれから制作するハードウェアの大部分はこれか、Atom matrixになっていきます。 -
IV-18 蛍光表示管
この 青緑色の表示は落ち着きますね。蛍光表示管では、IV-21というこれよりも1回りくらい小さい管もあるのですが、老眼の目ではちょっと離れると時間識別不可能となってしまいます。
これ以外にも、いろんな蛍光表示管がありますので、調べてみてはどうでしょう。
今後の課題
- ブレッドボードからユニバーサルへの変更
流石に24Hr継続して通電するものにブレッドボードはいただけないので、早めにユニバーサル基板に移すつもりです。同時にSPI速度パラメーターの調整。 - 表示の工夫
IV-18は、8桁+符号が表示可能なのに、6桁しか使っていない。表示を流すとかして、もう少し派手目にしたい、また日付、温度、湿度とかも表示したい。この投稿で秋月電子通商様の賞品をGetしたら、追加センサーを考えてみようと思います。 - 枝の皮むき(どうしようかな?)
オンコの木は、樹皮を剥くときれいな白色なのですが、この皮付きもなかなかいけるので迷っています。
投稿者の人気記事
-
HakoHiro
さんが
2021/02/07
に
編集
をしました。
(メッセージ: 初版)
-
HakoHiro
さんが
2021/02/07
に
編集
をしました。
(メッセージ: ソース部誤記訂正)
-
HakoHiro
さんが
2021/02/08
に
編集
をしました。
(メッセージ: 説明追記)
-
HakoHiro
さんが
2021/02/08
に
編集
をしました。
(メッセージ: 見出しの修正)
-
HakoHiro
さんが
2021/02/09
に
編集
をしました。
(メッセージ: 誤字修正)
Opening
Dreadnought
2023/06/02 Opening
HakoHiro
2023/06/03 Opening
Dreadnought
2023/06/05
ログインしてコメントを投稿する大変興味深く拝見させていただきました。
製作の参考とさせていただきたいので、配線の状況が詳しくわかるような写真を何枚か追加していただけないでしょうか。よろしくお願い致します。
Dreadnought様
興味を持っていただきありがとうございます。
配線資料をUpいたします。
ただし、資料をUpdateしたかどうかが定かではありません。配線する前にご自身で確認のほどお願い致します。
ところでドレッドノートとは・・・・戦艦マニアさんですか?
返信いただきありがとうございます。資料の方、ありがたく活用させていただきます。
当方、海軍好きです!ドレッドノートは当時の最新鋭の技術を詰め合わせたような艦ですからロマンがあってお気に入りです。