PR 記事には広告が含まれています
Translate

ESP32でK155ID1を制御して2桁のニキシー管IN-12Bをダイナミック点灯させるまで

スポンサーリンク

ニキシー管用の基板と制御用のICのK155ID1が揃ったので、ESP32を使ってニキシー管を制御したいと思います。

スポンサーリンク
  1. 基板にソケットを半田付け
  2. 1桁をK155ID1で制御してみる
  3. ESP32で0から9まで順番に表示
  4. 2桁をダイナミックスキャン
    1. フォトカプラ
    2. 回路図
    3. プログラム
    4. 動作させてみる
  5. ESP32で2桁のニキシー管をダイナミック点灯できました
  6. https://kohacraft.com/@kohacraft_blog
  7. ちょっと昔のレトロな時計をニキシー管でさらにレトロにかつ最新のNTP時計に改造してみた
  8. ちょっと昔のレトロな時計
    1. まずは分解
  9. ニキシー管のはんだ付け
    1. 回路図
    2. ユニバーサル基板に配線
  10. 組み立て
  11. 時計のプログラム
  12. 完成!!
  13. レトロな外見の時計がよりレトロに最新になりました
  14. https://kohacraft.com/@kohacraft_blog
  15. 180Vの昇圧回路を作ってニキシー管IN-12BとNIS-1がレトロな光を放つようになりました
  16. 昇圧回路の用意
    1. 9Vの昇圧DCDCを改造
    2. ニキシー管IN-12Bを点灯させてみる
      1. パラメータの算出
    3. 2つつないでみる
    4. ニキシー管INS-1を点灯させてみる
  17. ニキシー管はいい
  18. https://kohacraft.com/@kohacraft_blog
  19. ロシア製 IN-12B 数字のニキシー管 が届いたので開封していきます
  20. 梱包
  21. 開封
  22. 取り出し
  23. 同じ型番が2種類
  24. https://kohacraft.com/@kohacraft_blog
  25. 電子ペーパーNTP時計の作り方
  26. 1.組み立て
    1. 電子ペーパーと本体基板との接続
      1. コネクタの黒部分を引き出す
      2. フイルムコネクタを差し込む
      3. コネクタの黒い部分を閉める
    2. USBをつなぐ
  27. Arduinoのセットアップ
  28. NTP時計プログラムの準備
    1. NTP時計プログラムのダウンロードと展開
    2. データファイルのコピー
    3. プログラムをカスタマイズ
  29. プログラムの書き込み
    1. USBをつなぐ
    2. シリアルモニタを起動
    3. プログラムの書き込み
    4. 動作の確認
    5. 時刻が表示されない場合
      1. 無線LANに接続できませんでした
      2. インターネットから時刻の取得ができませんでした
      3. 白または黒
  30. 文字盤のカスタマイズ
    1. 文字とファイル名
    2. 文字盤ファイルの画像フォーマット
  31. おつかれさまでした

基板にソケットを半田付け

IN-12Bの2桁用の基板をJLCPCBで作りました。テストなので直接ニキシー管を半田付けするのではなく、ソケットを使いたいと思います。

ソケットはこちらをAliexpressで購入しました。

AliExpress.com Product - 1.0 Female Terminal Female Pin IN12 Socket IN18 QS30-1 QS27-1 YS27-3Amazonでも売っています。

ソケットをつけました。

ピンヘッダを付けて基板完成

スポンサーリンク

1桁をK155ID1で制御してみる

まずは基本の回路として、ニキシー管IN-12BとK155ID1をつないで0を表示させたいと思います。

おおおお!0が光りました。

スポンサーリンク

ESP32で0から9まで順番に表示

ESP32の出力ピンは3.3Vです。これに対しK155ID1は5VのTTL入力になっています。3.3V系と5V系で電圧が異なるので、レベル変換回路を使いしました。回路の左側の抵抗からトランジスタがレベル変換です。K155ID1がTTL入力なので、プッシュプルではなくトランジスタで電流を引き抜くだけで大丈夫です。

ただし、この回路では論理が反転します。K155ID1に0000を指定したいときは1111を、0101を指定したいときは1010をD0からD3端子に入力します。

おおおお!表示が切り替わります。ニキシー管をもっと近くで見て見ましょう。

いいですねぇ。この構造的な光り方。光りも暖かいです。

スポンサーリンク

2桁をダイナミックスキャン

次は2桁に改良します。これまでは1桁だけを光らせていましたが、次は、2つのニキシー管を交互に高速に光らせて、あたかも2つが同時に光っているようにします。

フォトカプラ

ニキシー管のアノード側の180VをON,OFFします。トランジスタでスイッチング回路を作ってもいいのですが、ポピュラーな方法としてフォトカプラを使う方法があります。

180V以上の耐圧(コレクタエミッタ間電圧)のあるフォトカプラを選びます。私は安かったのでLTV-851を選びました。

データシートによると、コレクタエミッタ間電圧(VCEO)が300Vあるので、今回の用途には十分です。

フォトカプラは、LEDとフォトトランジスタが向かい合った構造になっていて、LEDが光るとその光を受けたフォトトランジスタがONするようになっています。光によってトランジスタをON、OFFする仕組みです。

LEDに適切な電流を流すための、抵抗値を計算します。フォトカプラは、LEDに流した電流に応じて、トランジスタがONした時のトランジスタに流れる電流量が変わります。どのぐらいの比率かは、Current Transfer Ratio(CTR)の欄を見るとわかります。データシートには40%とあります。40%ということは、LEDに1mA流すと、トランジスタにはその40%の0.4mAが流れるということです。今回、ニキシー管には2mAが流れて欲しいので、ILED= 2mA / 40% = 2mA / 0.4 = 5mA と、5mA以上流す必要があります。

LEDに流す電流が決まったので、LEDにつなぐ抵抗の抵抗値を求めます。LEDの順方向電圧はForward Voltageの欄で最大1.4Vとあります。ESP32のピンのONした時の電圧を3.3Vとすると、抵抗値は

R = ( 3.3V - 1.4V ) / 5mA = 1.9V / 5mA = 380[Ω] となりました。

このため、LEDにつなぐ抵抗は380Ω以下、近い値として330Ωがいいでしょう。

回路図

フォトカプラの定数が決まったので、回路にします。

ニキシー管の右側の回路が追加した部分です。

これで、2つのニキシー管を交互に点灯させることで、2桁の表示ができるはずです。

プログラム

ESP32のArduinoのプログラムがこちらです。

const int D0 = 26;
const int D1 = 25;
const int D2 = 33;
const int D3 = 32;

const int A1 = 14;
const int A2 = 27;

void setup() {
  pinMode( A1, OUTPUT );
  digitalWrite( A1, LOW );
  pinMode( A2, OUTPUT );
  digitalWrite( A2, LOW );

  pinMode( D0, OUTPUT );
  digitalWrite( D0, HIGH );
  pinMode( D1, OUTPUT );
  digitalWrite( D1, HIGH );
  pinMode( D2, OUTPUT );
  digitalWrite( D2, HIGH );
  pinMode( D3, OUTPUT );
  digitalWrite( D3, HIGH );
}

void numOut( int num )
{
  digitalWrite( D0, !( num & ( 1 << 0 ) ) != 0 );
  digitalWrite( D1, !( num & ( 1 << 1 ) ) != 0 );
  digitalWrite( D2, !( num & ( 1 << 2 ) ) != 0 );
  digitalWrite( D3, !( num & ( 1 << 3 ) ) != 0 );
}

void loop() {
  for ( int i = 0 ; i < 100 ; i++ )
  {
    for( int j=0 ; j<100 ; j++ )
    {
       //1桁目表示
      numOut( i%10 );
      digitalWrite( A1, HIGH );
      delay(1);
      digitalWrite( A1, LOW );
      delayMicroseconds(100); //100us以下だとゴーストが発生
    
      //2桁目表示
      numOut( (i/10)%10 );
      digitalWrite( A2, HIGH );
      delay(1);
      digitalWrite( A2, LOW );
      delayMicroseconds(100); //100us以下だとゴーストが発生
    }
  }
}

00から99までカウントアップするプログラムです。numOut()関数が、0から9までの数字をK155ID1の2進数に変換しています。

動作させてみる

うぉぉぉぉ!2桁表示できました!

何度見てみいいですね。ニキシー管の光り方。

2つのニキシー管を交互に点灯させるのですが、各アノードをOFFした後に、100us以上待たないと、隣の桁に自分と同じ数字がうっすらと写ってしまうゴーストが発生してしまいました。綺麗に表示させるには、プログラム中のdelayMicroseconds(100);が必要です。
スポンサーリンク

ESP32で2桁のニキシー管をダイナミック点灯できました

この仕組みを拡張すれば、もっとたくさんのニキシー管を点灯させることができます。

2019.11.22追加 続きはこちら↓時計を作りました

スポンサーリンク

https://kohacraft.com/@kohacraft_blog

スポンサーリンク

ちょっと昔のレトロな時計をニキシー管でさらにレトロにかつ最新のNTP時計に改造してみた

先日の実験で、ニキシー管をESP32で制御できることがわかったので、応用して時計を作ろうと思います。

スポンサーリンク

スポンサーリンク

ちょっと昔のレトロな時計

ニキシー管IN-12Bが収まるサイズの、いい感じの時計がないかと探していると、BRUNOブランドのLCDレトロアラームクロックが目にとまりました。

ちょっと昔のレトロな感じのデザインと、パタパタ時計のように液晶がアニメーションするところが特徴です。

パタパタっと変わるところが、可愛いですね。

で、この時計をケースとして利用して、数字の部分をニキシー管にしてよりレトロにしたいと思います。時刻はNTPから取得するようにして、レトロなのですが時間は正確な時計にしたいと思います。

まずは分解

時計が届いたので、早速分解します。この時計は電波時計となっていて、自動で時刻を合わせてくれます。中にバーアンテナが見えますね。

全ての基板を取り外しました。

電池ボックスが邪魔なので、リューターでカットしました。これで、この後作るニキシー管の基板が入るスペースができました。

スポンサーリンク

スポンサーリンク

ニキシー管のはんだ付け

前回はニキシー管2つを使った2桁の表示実験をしました。もう一組作って4桁に拡張します。

基板は専用に作りました。こちらよりご購入できます。

回路図

全体の回路図です。先日の回路に、ニキシー管とフォトカプラの回路を2つ追加しただけです。ダイナミック点灯なので、配線がシンプルです。

この図にはありませんが、この他にESP32のボードと、180Vの昇圧回路があります。ESP32のボードはこれを使っています。

ESP32 ESP-32S Aideepen 2個セット ESP-32ワイヤレスWiFi Bluetooth 2.4GHz CP2102マイクロUSBデュアルコアESP32-WROOM-32開発ボード
Aideepen

昇圧回路はこちらより購入いただけます。

ユニバーサル基板に配線

それほど複雑ではないので、ユニバーサル基板にポリウレタン線で配線していきます。

電源以外は電流がほとんど流れないので、ポリウレタン線の0.2mmで配線しています。細くて取り回しが良く、被覆もはんだごてですぐに溶けてむきやすいです。0.2mmのポリウレタン線は、配線が多い時にとても作業が捗ります。

配線完了。

スポンサーリンク

スポンサーリンク

組み立て

電池ボックスを取り外したLCDレトロアラームクロックの抜け殻に、先ほど作った回路を収めていきます。

こんな感じに、収まります。

いいんじゃないでしょうか。

試しに0000を表示してみます。

おおおぉぉぉ!テンション上がりますね。

スポンサーリンク

スポンサーリンク

時計のプログラム

Arduinoでプログラムを作っていきます。仕組みは簡単で

  1. 無線LANに接続する
  2. NTPサーバーに接続する
  3. NTPサーバーから時間を取得する
  4. 時間を表示する

これだけです。で、こちらが完成したプログラムです。

//ネットワーク関係#include <WiFi.h>const char* WifiSSID = "WIFISSID";const char* WifiPassword = "WIFIPASSWORD";//時刻const long JST = 3600*9;  //Japan Standard Time GMT+9struct tm timeInfo;//時刻を格納する//ポート設定const int D0 = 26;const int D1 = 25;const int D2 = 33;const int D3 = 32;const int NixieA1 = 13;const int NixieA2 = 12;const int NixieA3 = 14;const int NixieA4 = 27;void setup() {  pinMode( NixieA1, OUTPUT );  digitalWrite( NixieA1, LOW );  pinMode( NixieA2, OUTPUT );  digitalWrite( NixieA2, LOW );  pinMode( NixieA3, OUTPUT );  digitalWrite( NixieA3, LOW );  pinMode( NixieA4, OUTPUT );  digitalWrite( NixieA4, LOW );  pinMode( D0, OUTPUT );  digitalWrite( D0, HIGH );  pinMode( D1, OUTPUT );  digitalWrite( D1, HIGH );  pinMode( D2, OUTPUT );  digitalWrite( D2, HIGH );  pinMode( D3, OUTPUT );  digitalWrite( D3, HIGH );  Serial.begin(115200);  Serial.println("start");    //アクセスポイントに接続.できなかったらリスタート  if(connectAP() == false)  {    Serial.println("Can not connect. Restert.");    delay(1000);    ESP.restart();  }  Serial.print("WiFi connectedrnIP address: ");  Serial.println(WiFi.localIP());  //NTPサーバの設定と時刻の取得  configTime(JST, 0, "ntp.nict.jp", "time.google.com", "ntp.jst.mfeed.ad.jp");//NTPの設定  getLocalTime(&timeInfo);  Serial.printf("%d:%dn", timeInfo.tm_hour , timeInfo.tm_min );}void loop() {  //毎時アクセスポイントに接続していなかったら接続を試みる  if(WiFi.status() != WL_CONNECTED && timeInfo.tm_min == 0)    connectAP();  //時刻の取得  getLocalTime(&timeInfo);  //時刻の表示  dispTime( timeInfo.tm_hour , timeInfo.tm_min );}//アクセスポイントに接続するbool connectAP(){    //アクセスポイントに接続  if(WiFi.status() != WL_CONNECTED)  {    Serial.printf("Connecting to %s.n",WifiSSID);    WiFi.mode(WIFI_STA);    WiFi.begin(WifiSSID, WifiPassword);    //60秒試行する.接続までステータスバーを表示    for( int j=0 ; j<600 ; j++ )    {      if( j%10 == 0)      {      Serial.print("*");      dispStatusBar();            }      delay(100);      if(WiFi.status() == WL_CONNECTED)        break;    }  }  return WiFi.status();}//ステータスバーをニキシー管で表示する//この関数が呼ばれる度に0の位置がずれていくvoid dispStatusBar(){  static int count;  digitalWrite( NixieA1, LOW );  digitalWrite( NixieA2, LOW );  digitalWrite( NixieA3, LOW );  digitalWrite( NixieA4, LOW );  numOut( 0 );  switch(count)  {    case 0 :      digitalWrite( NixieA1, HIGH );      break;    case 1 :      digitalWrite( NixieA2, HIGH );      break;    case 2 :      digitalWrite( NixieA3, HIGH );      break;    case 3 :      digitalWrite( NixieA4, HIGH );      break;    default :      digitalWrite( NixieA1, HIGH );      break;      }    if( ++count >= 4 )    count = 0;}//時刻をニキシー管に表示void dispTime( int hour , int minute ){  for( int j=0 ; j<10 ; j++ )  {     //1桁目表示    numOut( minute%10 );    digitalWrite( NixieA1, HIGH );    delayMicroseconds(2400);    digitalWrite( NixieA1, LOW );    delayMicroseconds(100);      //2桁目表示    numOut( (minute/10)%10 );    digitalWrite( NixieA2, HIGH );    delayMicroseconds(2400);    digitalWrite( NixieA2, LOW );    delayMicroseconds(100);    //3桁目表示    numOut( hour%10 );    digitalWrite( NixieA3, HIGH );    delayMicroseconds(2400);    digitalWrite( NixieA3, LOW );    delayMicroseconds(100);      //4桁目表示    if( (hour/10)%10 != 0 ) //0だったら表示しない    {      numOut( (hour/10)%10 );      digitalWrite( NixieA4, HIGH );      delayMicroseconds(2400);      digitalWrite( NixieA4, LOW );      delayMicroseconds(100);         }else{      delayMicroseconds(2500);    } }}//指定した数字のバイナリを出力void numOut( int num ){  digitalWrite( D0, !( num & ( 1 << 0 ) ) != 0 );  digitalWrite( D1, !( num & ( 1 << 1 ) ) != 0 );  digitalWrite( D2, !( num & ( 1 << 2 ) ) != 0 );  digitalWrite( D3, !( num & ( 1 << 3 ) ) != 0 );}

こんな感じです。

さてプログラムができたので、ESP32にプログラムを書き込みます。

スポンサーリンク

スポンサーリンク

完成!!

時計になりました!!

ニキシー管の構造のため、表示が凸凹してます。ニキシー管らしいですね。

暗いと、よりニキシー管らしさを感じますね。

スポンサーリンク

スポンサーリンク

レトロな外見の時計がよりレトロに最新になりました

レトロなニキシー管NTP時計が完成しました。

消費電流はESP32とニキシー管合わせて250mA程度でした。USB電源で動作します。

2020.4.17 追加 目覚まし時計風も作ってみました

追加終わり

kohacraftオリジナルのニキシー管用DCDCコンバータは👇こちら👇で購入ができます。是非チェックしてください。
とってもかわいい目覚まし時計風のニキシー管時計が完成しました☺️
こちら👇👇で販売しています。
目覚まし時計風ニキシー管時計販売
ESP32 ESP-32S Aideepen 2個セット ESP-32ワイヤレスWiFi Bluetooth 2.4GHz CP2102マイクロUSBデュアルコアESP32-WROOM-32開発ボード
Aideepen

#arduino #IN12B #NTP #ニキシー管 #分解 #時計

2019年11月22日, 06:28 0件のブースト 0件のお気に入り

追加終わり

kohacraftオリジナルのニキシー管用DCDCコンバータは👇こちら👇で購入ができます。是非チェックしてください。
とってもかわいい目覚まし時計風のニキシー管時計が完成しました☺️
こちら👇👇で販売しています。
目覚まし時計風ニキシー管時計販売