PR 記事には広告が含まれています
スポンサーリンク
Translate

Canon Canola L1211の表示器をESP32でダイナミック点灯して11桁の数字が表示できました

スポンサーリンク

Canon Canola L1211の表示器の各桁をESP32でON,OFFできるようにしました。前回はセグメントをON,OFFできるようにし、1桁の数字の表示ができるようになっていました。詳しくはこちらをご覧ください。

スポンサーリンク

桁の制御回路

回路の設計

ニキシー管同様、各桁をONするためには170V程度の電気をON,OFFしないといけません。一般に簡単は方法としては、高耐圧のフォトインタラプタを使って、マイコンから高電圧をON,OFFする方法があります。しかしその部品を持っていなかっため、高耐圧のトランジスタで回路を設計することにしました。

回路は、以前ニキシー管で作った回路と基本は同じです。詳しくはこちらをご覧ください。

桁の制御

こちらが、桁の制御の回路になります。高耐圧のPNPトランジスタMPSA92を使い、高電圧の電流が吐き出されるようにします。このトランジスタのベースも高電圧となっているため、セグメントの制御の時に使った高耐圧のNPNトランジスタMPSA42を用い、MPSA92のベースを制御します。このような回路にすることで、マイコンのような低い電圧の信号でも高電圧をON,OFFすることができるようになります。

はんだ付け

13桁もあるので、トランジスタの数が多いです。

13桁分作ったのですが、残念ながらESP32のピンが足りないために、A0とA12はマイコンにはつながっておらず、光らせることができません。

スポンサーリンク

プログラム

//                       a  b   c  d   e  f   g  dp  com
const int SEG_PIN[9] = { 5, 16, 2, 15, 0, 17, 4, 18, 19 };
const int SEG_NUM = 9;
//                          A1  A2  A3  A4  A5  A6  A7  A8  A9  A10 A11
const int ANODE_PIN[11] = { 23, 22, 21, 32, 33, 25, 26, 27, 14, 12, 13 };
const int ANODE_NUM = 11;

//                            a  b  c  d  e  f  g
const bool CHAR[16][7] =   { {1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 0, 0, 0, 0}, {1, 1, 0, 1, 1, 0, 1}, {1, 1, 1, 1, 0, 0, 1},
  {0, 1, 1, 0, 0, 1, 1}, {1, 0, 1, 1, 0, 1, 1}, {1, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 0, 0, 0},
  {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 0, 1, 1}, {1, 1, 1, 0, 1, 1, 1}, {0, 0, 1, 1, 1, 1, 1}, 
  {0, 0, 0, 1, 1, 0, 1}, {0, 1, 1, 1, 1, 0, 1}, {1, 0, 0, 1, 1, 1, 1}, {1, 0, 0, 0, 1, 1, 1},
};

void setup() {
  Serial.begin(115200);
  Serial.println("start");
  for ( int i = 0 ; i < SEG_NUM ; i++)
  {
    pinMode(SEG_PIN[i], OUTPUT);
    digitalWrite(SEG_PIN[i], LOW);
  }
  for ( int i = 0 ; i < ANODE_NUM ; i++)
  {
    pinMode(ANODE_PIN[i], OUTPUT);
    digitalWrite(ANODE_PIN[i], LOW);
  }
}

int scroll = 0;
void loop() {
  for (int wait = 0; wait < 10; wait++)
  {
    for ( int i = 0 ; i < ANODE_NUM ; i++ )
    {
      int rotated_i = (((i + scroll) % ANODE_NUM) + ANODE_NUM) % ANODE_NUM;
      for ( int j = 0 ; j < 7 ; j++ )
      {
        digitalWrite(SEG_PIN[j], CHAR[rotated_i][j]);
      }
      digitalWrite(ANODE_PIN[i], HIGH);

      delay(1);
      for ( int j = 0 ; j < 7 ; j++ )
      {
        digitalWrite(SEG_PIN[j], LOW);
      }
      digitalWrite(ANODE_PIN[i], LOW);
      delayMicroseconds(50);
    }
  }
  scroll--;
}

各桁をダイナミックスキャンするように、プログラムを改良しました。また、数字が左へスクロールするようにしました。

スポンサーリンク

光りました!

ESP32にプログラムを書き込むと...

光りました!!ESP32のピンが足りないため、一番右と一番左の桁は光りませんが、11桁分表示できるようになりました。Canon Canola L1211の表示器、SEPTANIX J4923AをESP32で表示できるようになりました。

プリバイアス回路はありませんが、ゴーストはあまり発生していないようです。電流が少ないからでしょうかね。

さーて時計でも作ろうかな。

2021.4.12 追加 つづきはこちら

追加終わり