HakoHiroのアイコン画像
HakoHiro 2021年02月07日作成 (2021年02月09日更新)
製作品 製作品 閲覧数 3289
HakoHiro 2021年02月07日作成 (2021年02月09日更新) 製作品 製作品 閲覧数 3289

レトロ VFD IV-18時計を木の枝に組込んでみた

レトロ VFD IV-18時計を木の枝に組込んでみた

概要

レトロに光る 蛍光表示管(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

  1. IV-18
    Amazon 等で結構販売しています。1,300円/1本程度。
    IV−18外観
    IV−18 後ろが透けて見えます
    IV−18背面 内部の太い棒がPin1 Filamentです
    資料は Dieter's Nixie Tube Data ArchiveのPDFファイルが参考になりました。 
    https://pdfslide.tips/documents/dieters-nixie-tube-data-nixie-tube-data-archive-document-in-this-file.html

  2. ピンアサイン
    上記の資料からの抜粋です。
    Bottom Viewです

  3. ピン位置の確認方法
    ピン位置の確認が大変なのですが、最初の確認方法がおすすめです。

  • 6,7,8PinがTube内でどこにも繋がっていない で判断するのが楽です。
  • 1Pin Filamentが 背面の太い線に繋がっている
  • 22Pinのワイヤーがわずかに短い
  1. 予備点灯確認
    Filament間(Pin1-Pin13)に 5V、Anodeに20-30V加えると発光します。
    ピンアサイン確認も兼ねて、また古い素子なので欠陥確認の為

概略ブロック

概略ブロック図
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に表示します。

  1. 部品一覧(金額は概略です)
  • M5 Atom lite: スイッチサイエンス 980円
  • HV5812: Mouser       300円
  • レベル変換:秋月電子通商    200円
      4ビット双方向ロジックレベル変換モジュール
      AE-LCNV4-MOSFET
  • DC/DCレギュレータ:秋月電子通商 240円
      三端子DC/DCレギュレータ 5V BP5293-50
  • DCジャック:秋月電子通商
  1. M5Atom lite
    キャプションを入力できます
    小さい、安い、でもI/O端子が多い、更にWiFi,Bluetoothが使える。言うことはありません。RTCのついているM5Stick-Cを使おうとも考えたのですが、どうせ時刻合わせをしなければならないなら、Atom liteで充分と考えました。

  2. 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でスイッチング出来ます。これらの石を使うことにより、少ない信号線で、高電圧をスイッチング出来、配線を削減できます。(精神健康上、高圧の引き回しが少ないだけで大分違います)

  3. ブレッドボード内配置
    動作確認したのでユニバーサルにします

筐体(木の枝)

筐体(これでも筐体と呼んでいいものかしら?)には、イチイの木の枝を使います。北海道ではオンコと呼んでいる木です。アララギという別名もあります。樹皮を剥いて生地を出しても白くて美しいのですが、剥くのはいつでもできるので樹皮を残して彫り込みを入れます。オンコの木は削っていて気持ちよく、いつまでも彫り込んでいたくなります。
ところで、オンコの実を食べたことはありますか?甘くて美味しいですが、種子にはアルカロイドの毒があります。還暦すぎるまで、種子に毒があることは知りませんでした。子供の頃はよく食べたのですがね。
筐体にVFD用の彫込
IV-18のワイヤーにケーブルをはんだ付け、ワイヤーは熱収縮チューブで保護。

VFDを設置、配線引き出し
あとは、所定の位置にケーブルを差し込めばOKのはず。

プログラム

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があんまりあっさり動いてしまったので速度パラメーターを全然調整していませんでした。

感想

  1. HV5812
    とにかく、VFDとかニキシー管を制御するときは、このたぐいのSPIで高圧をスイッチングするICを使うべきだと思います。特にニキシー管の場合、ディスコンのSN74141Nを使う例が多いのですが、入手困難な上、所詮高圧のBCDデコーダーですから、配線量はそんなに減りません。

  2. M5Atom lite
    小さくて、安くて、I/Oが多くて さらに通信もついているので、非常に使いやすい。当方がこれから制作するハードウェアの大部分はこれか、Atom matrixになっていきます。

  3. IV-18 蛍光表示管
    この 青緑色の表示は落ち着きますね。蛍光表示管では、IV-21というこれよりも1回りくらい小さい管もあるのですが、老眼の目ではちょっと離れると時間識別不可能となってしまいます。
    これ以外にも、いろんな蛍光表示管がありますので、調べてみてはどうでしょう。

今後の課題

  • ブレッドボードからユニバーサルへの変更
    流石に24Hr継続して通電するものにブレッドボードはいただけないので、早めにユニバーサル基板に移すつもりです。同時にSPI速度パラメーターの調整。
  • 表示の工夫
    IV-18は、8桁+符号が表示可能なのに、6桁しか使っていない。表示を流すとかして、もう少し派手目にしたい、また日付、温度、湿度とかも表示したい。この投稿で秋月電子通商様の賞品をGetしたら、追加センサーを考えてみようと思います。
  • 枝の皮むき(どうしようかな?)
    オンコの木は、樹皮を剥くときれいな白色なのですが、この皮付きもなかなかいけるので迷っています。
2
HakoHiroのアイコン画像
函館在住のOldエンジニアです。マイコンは Z80ワンボードの頃から使っています。なにせあの頃は、ハンドアセンブルでプログラム作成していました。(ニーモニックを手書きで書き、それを表を見ながら機械語コードに落とします)おかげで リターンコード(RTN=0xC9)はいまだに覚えています。RTNまで来るとサブルーチンが一段落でホッとするので・・・ 現在は、電子工作の他に錫で色々作って楽しんでいます。
  • HakoHiro さんが 2021/02/07 に 編集 をしました。 (メッセージ: 初版)
  • HakoHiro さんが 2021/02/07 に 編集 をしました。 (メッセージ: ソース部誤記訂正)
  • HakoHiro さんが 2021/02/08 に 編集 をしました。 (メッセージ: 説明追記)
  • HakoHiro さんが 2021/02/08 に 編集 をしました。 (メッセージ: 見出しの修正)
  • HakoHiro さんが 2021/02/09 に 編集 をしました。 (メッセージ: 誤字修正)
  • Opening
    Dreadnoughtのアイコン画像 Dreadnought 2023/06/02

    大変興味深く拝見させていただきました。
    製作の参考とさせていただきたいので、配線の状況が詳しくわかるような写真を何枚か追加していただけないでしょうか。よろしくお願い致します。

    0 件の返信が折りたたまれています
  • Opening
    HakoHiroのアイコン画像 HakoHiro 2023/06/03

    Dreadnought様
    興味を持っていただきありがとうございます。
    配線資料をUpいたします。
    キャプションを入力できます
    ただし、資料をUpdateしたかどうかが定かではありません。配線する前にご自身で確認のほどお願い致します。
    ところでドレッドノートとは・・・・戦艦マニアさんですか?

    0 件の返信が折りたたまれています
  • Opening
    Dreadnoughtのアイコン画像 Dreadnought 2023/06/05

    返信いただきありがとうございます。資料の方、ありがたく活用させていただきます。

    当方、海軍好きです!ドレッドノートは当時の最新鋭の技術を詰め合わせたような艦ですからロマンがあってお気に入りです。

    0 件の返信が折りたたまれています
ログインしてコメントを投稿する