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

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

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

ニキシー管8桁表示キット、リリースの目処がたってきました。

ニキシー管8桁表示キットのリリース準備中。回路図と部品ピッキングリストの突き合せなどの確認作業中です。これが出来れば出荷準備は整います。今回は一般的な部品を梱包するだけでは無く、部品の事前動作確認も増えています。

  • マイコンボードのはんだ付けと改造
  • マイコンボードへプログラム書き込み
  • 表示ユニットに差してプログラムが動作するか確認
  • ニキシー管(8個)の点灯チェック(0~9と,)
  • K155ID1 のチェック

これらの追加作業があるため準備に必要な時間が大幅に延びることを確認しています。ショッピングカート的には、数個づつ在庫出す感じの運用になります。ご了承下さい。

2013-11-04 16.27.47

現在は5セット分の部品をパッキングしているところです。あとは、点灯確認したニキシー管包めばOKかな

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-シリアル変換を取り付けて使う場合は、上記の問題は発生しません。

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

IN-12b ニキシー管8桁表示ユニット ユーザーデータの表示はでけた

Stwrawberry Linux の Da Vinci マイコンボード。Arduino IDE で開発中です。とりあえず表示フォーマットは決めんといかんのですが時計表示の基本部分は実装済み。今回はユーザーデータの表示を追加です。テストでは、awk スクリプトで乱数をテキストファイルに出力したものを編集して準備。Tera Term からファイルの送信でマイコンへ流し込みして表示させました。

ATmega32u4 の USB-シリアルもしくは I/O ポートのシリアルから受信したデータのうち、’0′ ~ ‘9’ 数字, ‘ ‘ スペース, ‘.’ ピリオド, だけで構成されるデータの場合はニキシー管に表示させます。その後一定時間放置すると時計表示に戻る仕様です。

20130902101000

Tera Term のシリアルポートの設定で、送信遅延 1ms で動作は確認(別途マイコンから連続送信のテストは予定)。ニキシー管のダイナミック点灯に 1 管あたり 1ms 使うので 8桁表示に 8ms かかります。なので実際にデータ送信していただく際には送信後の表示待ちディレイを 10ms 程度空けていただくような感じで説明書に記載かなと。というところです。

lN-12b ニキシー管8桁表示ユニットの頒布準備1

2013-08-31 15.50.43

午前中にお医者さんと髪切りに、そのついでに午後から日本橋へ行くことにしました。目的は、IN-12b ニキシー管8桁表示ユニットの頒布に備えて部材集めです。

  • Strawberry Linux さんとこの Da Vinci 32U/ATMEGA32U4 のボード 10 枚(Arduino 互換とそうじゃないのが混ざってますが… 購入)
  • 抵抗、コンデンサ類

を中心に購入。RTC-8564 のリアルタイムクロックモジュールと、ピンヘッダ、ピンソケットを秋月で、半導体関係は RS の通販で購入。あと足りないのは、11mm のジュラコンスペーサー 1袋くらいですかね。とりあえず 10 セット分の部材確保は出来そうです。

2013-08-31 21.04.17

買い忘れがあると痛いので買い物メモなるものを作成するわけですが、今回の手順は以下のとおり

  • KiCad の回路エディタから部品表を CSV 出力する
  • CSV ファイルをエクセルで読み込んで、体裁整える
  • エクセルのセルを必要な分コピーして、Evernote のノートに貼る
  • Evernote のノート画面で CTRL+SHIFT+C でチェックボックスを付けてサーバー同期させる
  • スマホの Evernote も同期させる

あとは、スマホでチェック付けたらいいので安心です。

IN-12b ニキシー管8桁表示ユニット目先の Todo

[X]RTC-8564NB のクラスをスクラッチ作成
[ ]世界変動率?の表示 → 表示フォーマットと既知の数値確認
[X]カンマ表示確認
[X]USB ケーブル差されたら Serial を有効にする
[ ]カソードポイズニング防止のために全て表示させる処理
[ ]時計の表示方法をまとめる
[X]日時設定の方式 → シリアル経由、単体でも設定出来る必要性 → マイコン基板にボタン無し
[ ]明さ調整 → ディマー必要? → 時刻範囲を保存するというのはありか?
[X]一定時間操作されない場合の挙動 → 時計を表示する
[ ]プログラム更新の方式
[ ]EEPROM に保存する内容

他にもありますが、仕様が決まってません。というステータスですね。がんばります。