IN-12 ニキシー管8桁表示ユニットキットをリリース

ロシア製ニキシー管 IN-12b を使用した8桁表示キットをリリースします。ニキシー管の表示で 5 文字盤は 2 をひっくり返して再利用されている残念な仕様のものですが、それでも入手は難しさが増してきています。頒布物としてもそんなに数出せるものではありませんがよろしくお願いします。

部品点数が少し多いのと書き込み済みマイコンを準備しないといけないため、公開在庫数少なめで出して売り切れたら補充の繰り返しで対応しようと思っています。ご了承ください。

IN-12b ニキシー管 8桁表示ユニット マイコン側基板の動作確認

2013-10-25 07.15.16

マイコン側の基板がやっと到着しましたので、ブレッドボードで動かしてた部品などをハンダ付けしたいと思います。

2013-10-25 10.00.21

ハンダ付け終った部品面。一番左はニキシー管基板と連結するためのコネクタ部、その隣に 74141 互換の K155ID1 のドライバ IC とトランジスタで組んだアノード側の回路。フォトカプラ使わなかった理由は、頒布品買っていただいた方に少しでも多くハンダ付けしてもらうためですというのは嘘で、4回路入りの耐圧高いフォトカプラが入手しにくいという理由です。中央は MC34063 使った一般的な DC/DC コンバータ。緑色の基板秋月で購入した RTC-8564 のリアルタイムクロックモジュールです。コイン電池でバックアップします。右端の赤い基板は Strawberry Linux Da Vinch ボードで ATMEGA32U4 の AVR マイコンが載っています。

2013-10-25 10.00.13

ニキシー管の基板と、マイコン側の基板はヘッダーピン・ソケットで連結するようにしてます。写真ではボックスコネクタになっていますが、これはブレッドボードの確認時はフラットケーブル接続していた名残です。外すのが面倒だったためこのまま使用

2013-10-25 10.06.46

PC と接続するための USB – シリアル変換を接続して、時刻設定やら、基本的な動作確認を行ないます。ここでは Sparkfun の FTDI 基板の写真を載せていますが、赤フグさんの USBシリアル変換基板も直接刺せます。また秋月のFT232RL基板からTX/RX/GND を接続しても使えます。

2013-10-25 10.05.32

ということで、無事動いてメデタシであります。最初の確認で判明した回路変更必要部分は 5V の受けに使ってる 100μF の電解コンを 470μFくらいにしないと、電源切ったときに、RTC パワーフェールフラグが立ってしまうくらいですかね。今の所みつかった問題はこれだけ。

IN-12B ニキシー管8桁ユニットのテスト

と言いましても、電源入れたまま使用するという簡単な条件なのですが、その後数十秒でハング状況が多発する事象が発生。JTAG でデバッグすれば固まってる場所の特定も出来そうなもんですが Arduino IDE じゃどうにもなりませんわな。というところ。一度、USB CDC(Serial クラス)を使用しているところバッサリ消去して安定するか試してみたいと思っています。

で、USB を使わないようコンパイルするしても下記のように、自分でコーディングしたもの以外にブートローダーとの兼ね合いでしょうが USB 関係のファイルはコピーされてますねぇ。まぁ、これでもハングするようなら Atmel Studio で完全に USB 使用しない形でコンバートかけたいと思います。

C:\...\AppData\Local\Temp\build2719134002796884758.tmp\EEPROM
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\SPI
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\Wire
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\CDC.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\CDC.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\core.a
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\HardwareSerial.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\HardwareSerial.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\HID.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\HID.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\IN_12Control_32u4_rtc8564.cpp
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\IN_12Control_32u4_rtc8564.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\IN_12Control_32u4_rtc8564.cpp.eep
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\IN_12Control_32u4_rtc8564.cpp.elf
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\IN_12Control_32u4_rtc8564.cpp.hex
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\IN_12Control_32u4_rtc8564.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\IPAddress.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\IPAddress.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\main.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\main.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\malloc.c.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\malloc.c.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\new.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\new.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\Print.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\Print.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\realloc.c.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\realloc.c.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\rtc8564.cpp
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\rtc8564.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\rtc8564.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\rtc8564.h
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\Stream.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\Stream.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\Tone.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\Tone.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\USBCore.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\USBCore.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\WInterrupts.c.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\WInterrupts.c.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\wiring.c.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\wiring.c.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\wiring_analog.c.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\wiring_analog.c.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\wiring_digital.c.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\wiring_digital.c.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\wiring_pulse.c.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\wiring_pulse.c.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\wiring_shift.c.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\wiring_shift.c.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\WMath.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\WMath.cpp.o
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\WString.cpp.d
C:\...\AppData\Local\Temp\build2719134002796884758.tmp\WString.cpp.o

USB シリアル変換必須になっちゃいそう…

IN-12b ニキシー管8桁表示ユニットの電流値確認

2013-09-23 14.35.39

普段秋月の 5V/2.3A の AC アダプタ使ってまして、電源のこと完全に忘れてました。急遽確認と。

電源入力に、0.15Ω の抵抗入れまして、その両端の電圧を測定します。測定の結果ピークツーピークが 72mV、平均が 37mV となりました。

0.072[V] / 0.15[Ω] = 0.48[A] と 0.037[V] / 0.15[Ω] = 0.246[A] が、それぞれの電流となります。この値でしたらスマホなどの充電に使う 5V/1A 程度のアダプタでも使用可能な範囲に収まると思われます。

2013-09-23 14.58.03

ということで、iPod touch で使う白い AC アダプタが手の届く範囲にあったのでこれで動くかテスト。30分程度動かしてみてほんのり暖かくなる程度でした。5V/1A 以上のアダプタ 2A 推奨みたいな書き方になるかなぁ。説明書にどう書くかは別途考えましょう。

ここ最近ニキシー管の記事を投稿しておりませんが、基板が来ないので仕方ない

オーダーしている基板来ないとか、郵便局のトラッキング出来ないとか、ある意味時期が悪かったのかよくわからないのですが発送メール来てから2週間荷物来ません。

前の記事に書いたとおり基本部分はほぼ出来ていて、今日は某アニメのダイバージェンスメーター風のエフェクト表示するようにプログラム追記していました。暫定版ですが、https://github.com/ngc6589/IN_12Control_32u4_rtc8564 にて公開しております。まぁ、まだまだ書き換わります。

前回の記事からの進捗は

  • ダイバージェンスメーター風のエフェクトの追加
  • (使わないと思うけど)カソーポイズニング防止用に、全てのセグメント光らせるルーチンを追加

の 2点です。機能的には上記2つ追加で当初予定していたものは全て組み込んだことになります。

[X]RTC-8564NB のクラスをスクラッチ作成
[X]世界変動率?の表示 → 表示フォーマットと既知の数値確認 → Web にあった19個の数値を拾った。
[X]カンマ表示確認
[X]USB ケーブル差されたら Serial を有効にする → 連続データ受信するとハングする課題 → 解決不能 → TX/RX ポート(Serial1)を使用してもらう。
[X]カソードポイズニング防止のために全て表示させる処理
[X]時計の表示方法をまとめる
[X]日時設定の方式 → シリアル経由で、各種設定を行なう。
[X]明さ調整 → ディマー必要? → 時刻範囲を保存するというのはありか? → 昼、夜の設定で対応
[X]一定時間操作されない場合の挙動 → 時計を表示する
[X]プログラム更新の方式 → Arduino IDE から更新する
[X]EEPROM に保存する内容

だいたいこんな感じにおさまりました。

IN-12b ニキシー管8桁表示ユニット 概要部分のまとめ

IN12Nixie_20130908110500

IN-12 ニキシー管を使用した 8桁表示ユニットの製作ですが、ほぼまとまってきたかなという感じです。動作の概要は以下のとおり。

  • 電源投入直後は時計表示モード。
  • Serial, Serial1 から受信した ‘ ‘スペース, ‘.’ ピリオド, ‘0’~’9′ 数字から構成される文字列の場合はニキシー管にそれを表示します。
  • 表示されたユーザーデータは一定時間放置していると最初の時計表示に戻ります。(コマンドで時計表示に戻すことも出来ます)

日時設定や明さの設定などはリシアル経由でコマンドを送って設定する。(Serial, Serial1 はジャンパ切り替え) 以下は主なコマンド

  • 日時設定コマンド(RTC 書き込み)
  • 時刻表示フォーマット ’99, 99, 99′ か ‘ 999999 ‘
  • 日付 ’20YYMMDD’ を表示する秒間隔
  • 日付 ’20YYMMDD’ を表示させる秒数
  • ニキシー管輝度(日中)
  • ニキシー管輝度(夜間)
  • 日中の開始時
  • 夜間の開始時
  • 12/24時間表示の切り替え
  • ユーザーデータ表示後、時計表示に戻るまでの秒数
  • 設定状況表示
  • EEPROM へセーブ

問題点としては、Da Vinci マイコンボードの USBポートを PC に接続する時は、USB ケーブル抜き差ししないと,PC 側の仮想 COM ポートとうまく通信出来ないことです。Arduino の公式サイトに掲載されているシリアルポートのコーディング例は以下のようになっています。

  Serial.begin(9600);
  while(!Serial) {
    ;
  }

これは、while ループで PC 側のアプリやターミナルソフトが COMn: をオープンするまで待つというコーディングです。これでは、マイコンボードと USB ケーブルを必ず差して PC と連携しない限り動きません。言いかえると単体動作出来なくなります。マイコン側は while ループの接続確立チェックを無視して先に進めるようにし、USB ケーブルが差さっていなくても単体動作可能としていますが、それの弊害で USB の抜き差しが必要です。

I/O ポートを使う Serial1 に、USB-シリアル変換を取り付けて使う場合は、上記の問題は発生しません。

あとは基板来てから、最後の試作と説明書まわりの整理が出来れば無事リリース出来そうなところまで来ました。某アニメーションである表示のエフェクトのようなものは今のところ組み込んでません。(シリアル経由で好きなようにデータ流してもらったら表示出来るしいいかなと思い初めてるところ)

ダイソーのコレクションボックス ミニが役に立ちそう

左側に写っているのはニキシー菅時計です。いつぞや工作中の動画をアップロードしたような記憶もございます。が、作ってから何年も経過するのに裸のまま稼動し続けておりましてさすがにマズイと。ということで箱に入れることにいたしました。

今回はダイソーで売っていた コレクションボックスミニ・フラット台座というものを買いまして、お値段105円です。幅169mm がギリギリ入りますので選びました。マイコンの基板とニキシーの基板2枚あるのでどのようにマウントするかは考えないといけないのですが、なんとかしましょう。

100円ショップもじっくり見ると、工作ネタで使えそうな掘り出し物って以外とありますねぇ。


2012年11月27日追記

ということで、時計ユニットをケースに入れてみました。幅なんとか行けましたね。アクリルケースのきれいなケースに入れてあげるがいいかとは思いますがアクリル用接着剤も持っていない状態なので練習してからかな。少しスッキリした感じになって良かった。

ニキシー管時計キットの電源とIN-14の半田付けだけした。

ニキシー管時計のキットです。なので、プリント基板に部品乗っけて半田付けするだけなので、間違えなければ組立られます。なお、このキットは nIxIe-tUbE.com の通販で買ったものです。
点灯確認で電圧かけただけなのでいきなり隣りの管にゴースト出てます。これはショートとかじゃなくて、たまった電荷のせいでボーっと光っているだけなのでちゃんと逃してやるとか光らない程度にバイアスかけるとかで防げます。

とりあえず、途中少しビデオカメラでも撮っているので余裕があればYoutubeかNicovideoにでもアップしたいと思いますが、いかんせケースを全然考えていないので、頓挫するかも知れません。が、とりあえず作業風景の動画はアップしました。

なんだかんだで半田付けは完了いたしました。DVテープ2本ぴったりだったので、上の写真状態までで2時間かかりました。
素材をカット アンド カットしまくって5分以内を目指しましたが編集は難しいです。とりあえずなんとかUPした動画は下のところを見てください。

[nicodo]sm14432258[/nicodo]

アクリル板が無いので、そこらへんにあったフニャフニャのプラ板に仮止めしてみてちょっと様子見てみることに。とりあえず、今の所順調に動いてます。