はこ

入れる箱を探していたのですが、なかなかちょうどいいのが無く
しょうがなく買ってきました。
ニキシー管が顔を出すところに穴を開け黒のスプレーで塗ります。











ニキシー管の取り付け

基板にニキシー管を取り付けるわけですが、もうエッジングが嫌なのでユニバーサル基板でそのまま取り付けました。
それぞれ同じ数字のカソードを直列で繋げるのですが、足が長かったのでそれぞれ半田でつなげました。










発熱は全然無いので。今回はぴったりとくっつけました。













自作基板と今作った基盤にそれぞれ穴を開け、よくあるニキシー管時計みたいに合体させる。
すんなりといくと思いきや、カソードの配線を間違えていた。仕様書は下から見た番号振りみたい。
下は左から3番目から右下カンマの半田付けを忘れてるため点灯しない。










前回のPICで作ったものとの大きさの比較
やはり、大きいほうが迫力があっていいな・・・。
IN-8-2で作ればよかったか。


ニキシー管が届く

リトアニアのお店で注文していたニキシー管が届きました。
いや、ちっちゃかった。
左がIN-16 中央がIN-8-2 右が単三エネループ













どっちで作ろうか迷いましたが、とりあえずちっちゃいので作ってみます。
5を表示させて見ました。

基板作成

ユニバーサル基板を使って、リード線をこつこつ付けていくのもいいです。これはPIC版のときにやったので、今度はエッジングという作業で、基板を作ってみたいと思い作業開始。
感光基板という便利なものがありますが、持っていないので家にあった基板を使います。配線の部分にシールを貼り付け、エッジング液によりシール以外の銅箔が溶けます。


まず、PCBEというフリーソフトでだいたいの線路図を描きました。
これを反転印刷で印刷して作業に取り掛かります。
(一部間違いなどあります。シールを貼り付けてる時に気が変わって、修正しているところもあります。)










基板をちょうどよい大きさに切断。









シールを貼る










 貼る









ひたすら貼る









完成
途中、飽きという最大の障害がありましたが無事張り終わり。
もうこんな作業はしたくない。







続いて、銅箔を溶かします。これが溶かす液
溶かした後は産業廃棄物となりますので、セメントを用意しておきましょう。








45℃ほどに暖めないといけないので、液をジップロックにいれ、湯煎します。








容器にいれ上を向かせて置いておくのですが、めんどくさいので湯煎したジップロックにぶっこみました。時々ゆすりながら30分くらい確認しながら待ちます。








胴の部分が見えなくなったら水洗いします。








シールを削り落とすとまずは完成。そして、極小ドリルで穴を開けます。穴あけ中の写真は撮ってなかったです。








まずは、導通チェックをテスターで 確認。
そのまま部品を半田付けして、もう一度導通チェックと配線の確認をしました。
そのまま電源を入れたら、問題なく 表示される。
(とりあえず、液晶はニキシー管の接続のところに差し込む。)
拍子抜け。
これで、ブレッドボードとおさらば・・・。

3つの機能をいっぺんに試した

問題なく動作!
加速度は変化値の合計を表示。地震感知として心もとない。使わないかも。

RTC:8564NB
加速度センサ:KXM52-1050モジュール
温度計:LM60
液晶:TC1602E-13T
AVR:Atmega328p

加速度センサ

3軸加速度センサー(KXM52-1050モジュール)を試してみる。
前回、アナログ入力が成功しているので、とても簡単だった。説明書どおりに配線し、アナログ入力端子につなげると、入力値が出る。傾けるとX,Y,Z軸で入力電圧が変わる。おもしろい。
説明書の各ピンの説明と注意書きが食い違っている。どっちも正解なのかな。とりあえず、各ピン説明どおりにつなげました。写真は略

リアルタイムクロック

リアルタイムクロック(RTC-8564NB)をテストした。
これまた難関でした。I2C通信をしたくて参考本のプログラムを改造したが、うまくいかない(参考本のRTCからの時刻取得はソフトI2Cで行ってるのでちゃんとしたものでやりたかった)。改造方が悪いだけでした。まったく理解せずこんな感じだろう的な改造だったのでダメでした。
風呂の中で参考本と仕様書を見る。なんとなくわかったのでやってみたが、秒の表示がおかしい・・・。I2c通信自体はうまくいってるっぽい。
なんども仕様書を見てみるとあることに気がついた。10の位と一の位が別に入力されてる。なるほど。
ということで、これも半日悩み成功した。

参考本のMP3プレイヤーでI2C通信でEEPROMを読んでる関数をRTC用に改造。改造といってもほぼ一緒。
void i2c_2_write(
    unsigned long addr,
    unsigned char* data,
    unsigned char bytecnt)
{
    i2c_start();
    i2c_writebyte(0xa2);     // SLA + W
    i2c_writebyte(addr);
    while(bytecnt > 0){
        i2c_writebyte(*data++);
        bytecnt--;
    }
    i2c_stop();
}

void i2c_2_read(
    unsigned long addr,
    unsigned char* data, unsigned char bytecnt)
{
    i2c_start();
    i2c_writebyte(0xa2);      // SLA + W
    i2c_writebyte(addr);
    i2c_start();
    i2c_writebyte(0xa2 | 0x01);  // SLA + R
    while(bytecnt > 0){
        *data++ = i2c_readbyte(bytecnt == 1);
        bytecnt--;
    }
    i2c_stop();
}












その後、タイマー割込みに挑戦するが一日中格闘するも挫折。割り込みが一回しか入らない。オープンドレイン端子ということを見つけるが良くわからずプルアップしてもダメ。0x01のコントロール2アドレスのTI/TPに書き込んでも読み込むとなくなってる。よくわからん。
ということで、1Hz周波数を貰うことにする。怒りが有頂天。
-追記 ポインタアドレスに実値を入れていた、ソースを修正してタイマー割り込みに戻す。カイバー
 *今後はwarningを無視してはいけない・・・

    unsigned char datw[0x10] ={0x20,0x00,0x00,0x57,0x12,0x28,0x01,0x07,0x10,0x80,0x80,0x80,0x80
                            ,0x83,0x00,0x00};
    unsigned char stset[0x03] ={0x00,0x11,0x00};
    i2c_2_write(0, datw ,0xf);
    i2c_2_write(0, stset ,2);



    // 外部割込み初期化
    EICRA = 1;
    EIMSK = 1;  // INT0割り込み許可
    sei();


ISR (INT0_vect){
    i2c_2_read( 0 , datw2 ,9);
    lcd_position(8,1);
    printf("%1d%1d:%1d%1d:%1d%1d"
    ,(datw2[4] >> 4)& 0x03,(int)(datw2[4]& 0x0f)
    ,(datw2[3] >> 4)& 0x07,(int)(datw2[3]& 0x0f)
    ,(datw2[2] >> 4)& 0x07,(int)(datw2[2]& 0x0f)
);
}

温度計

LM60(TO-92)という温度計を秋月で購入。
-40℃~125℃も計れる高性能。ここに騙された。ここまで機能いらなかったな。温度によって電圧が変わる仕様なのだが、-40℃:+174mV  0℃:+428mV +125℃:+1205mV流れるらしい。一度ごとに+6.25V変わる。
範囲狭すぎだったなぁ。マイコンのアナログ入力が1023段階で入力されるわけだが、これは0~5Vの範囲なわけだから5を1023で割った数が入力のレベルなる。なので、だいたい計れるのはちょっとなわけで、微妙な温度の変化は無理。小数点以下の数はずばり切り捨てになる。まぁしょうがないか。
最初に基板に載せた時にプラマイ間違えました。見事に白い煙が上がった・・・・。あるんだね、こんなの。でも、まだ使えそう。

入力はアナログ信号でよく判らんかったが参考の本の電圧計を丸々写して 、表示の時に温度計算用の式の答えを表示させました。

value =  ((double)(adc) * 5000.0/1024.0) / 6.25 - 65;


「わかるマイコン電子工作 AVRマイコン活用ブック」

注文しておいた本が届いたのでみたが、うんサンプルがいい感じ。
これを手本にテスト用の液晶(TC1602E-13T)をつなげてみたが、うまくいかない。何も設定していない状態だと、上半分黒くなるのにそれさえもならない。液晶の濃さを制御する線は可変抵抗がいいのだがそれがなかったので、抵抗で入力側に入れてたのが間違い。GNDに落とすと見事最初の画面だけ。
それ以外はこの本に載っているとおりに配線・プログラムをそのままにしたんだけど 、うんともすんとも言わない。これに半日は費やす。PICの時に1ピンだけ出力できないことがあって、そこには設定が必要だったことがあり、ググりまくるがどうしようもない。
一度全部外して、LEDで点検してみると3つほど光らない。そりゃだめだわな。予備のAVRと交換すると今度は1ピン光らない。初期不良は考えないこととすると、たんなる接触不良?PORTBに全部接続し直すと、あらHelloWorld!くっ、これもシュタインズゲートの選択か。
気を取り直して、AVRをぎゅうぎゅう押し付けPORTDでやり直すと、見事できました。
これで、いろいろな値を見ながら実験できる。


AVRISP MK2

AVRISP MK2が秋月から届いた。とりあえず、ISP(基板にのせたままプログラムを書き込める)を試すためテストしてみた。
参考:http://physicom.digick.jp/?tag=avrisp-mkii
このページとまったく同じミスをおかした。こんなミスしねーよと思いながら、配線を間違え小一時間悩む。その間に電源確認のために2VのLEDを5Vに挿し破裂させた。電気って怖い。
そんなこんなで、プログラムをうまく書き込めた。(もちろんAVR StudioとWINAVRを使用)
配線の仕方はAVRピンの名前のカッコ内に書いてある名前と対応するものを繋げ、VCCとGNDは直に繋げる。参考ページを見ればたぶんわかる。
PORTD0,1からLEDにつなぎLEDからGNDにつないでLEDをパカパカしようと思ったらできない。どうやらPORTD0は出力で使えないみたい(接触不良でした)。それと、for文で時間稼ごうと思ったらぜんぜんできないみたい。なんか最適されてるのかな。しょうがなく初DELAY関数を使った。


int main( void ){
    DDRD=0B00000110;        /* PD1,2を出力に設定する */
    for (;;) {                /* 無限ループ */
         PORTD=0B00000010;
        _delay_ms(1000);
         PORTD=0B00000100;
        _delay_ms(1000);

    }
}
これを実行して見事パカパカになり、AVRISPとAVRのテストが終了。他のポートもやらないとPORTD0のようなことがあるかもしれないが、そのときはそのとき。






ニキシー管について

数字表示のニキシー管は12本以上足があります。
一つはプラスにつなげ、他は数値ごとにマイナスになります。ものすごい小学生的な言い方ですがこんな感じです。言い方がわかりません。
前回の回路図で言うと惑星みたいなところから5V流れてきて、そしてGNDと書いてあるところに流れていきます。
数値の足がGNDに繋がると光り、全部つなげれば全部光ってしまいます。
そこで回路図では74141となってますが完全互換のニキシー管用ドライバー IC K155ID1を使います。これは、そこに繋がってる線を指定することでGNDとを繋げたり離したりします。そんなこんなで4つの信号で10個のスイッチを行いますが、残念ながらドットは選択できないので、自分で指定します。
ニキシー管を発光させるには、170V必要とされていますが、こいつをつけたり消したりもしないといけません。それにはフォトカプラというものを使います。こいつの1,2番ピンに電圧がかかると3,4番ピンが導通します。
なぜ、電気を切ったりするかはダイナミック点灯方式というものを使うためです。ぐぐってください。


ロシア語

ポートの行き先

今回使うAtmega168のポート説明の図












PAx~PDxがいろいろいじれる所だと思ってる。ただ、アナログ入力と割り込みの場所が決まってる。このため変な配線になってしまっている。
秒毎に割り込みがほしいく調べると、割り込みを受けるところはINT0らしい。そこにリアルタイムクロックモジュール(RTC)から一秒おきの信号をもらって時刻を設定する。
また、通信にI2Cというものを使うらしい。RTCから出る 5 SDA  6 SCLの線をどこに繋ぐかというと、
アナログのところ。配線のカッコ内にADCと名前が付いてるからアナログなんだろう・・・。

(参考:http://blog.goo.ne.jp/sim00/e/2bcaa7747888544a870033e63c9ef5b5


これを見るとたぶん正解
http://arms22.blog91.fc2.com/blog-entry-232.html
ここに出てくるArduinoとは、AVRマイコンが基板に乗っててすでにいろいろ装備されているものみたい。すごいな。

あと、温度センサもアナログで貰わないとダメ。0か1なんて今がない。
これで後は大丈夫かなと思ってたら、加速度センサもアナログ入力か。
回路図を次回修正しないと。前の画像を修正した。


追記
どうやら、PORTD0,1はシリアル通信専用みたい。使っていいのか?
特に問題ないみたい

PC6(RESET)は書き込みに使うので使えない・・・

だいたいの回路図

参考ページをパクリ書いてみた
書いたツールはBSch3v
書き方とかわからないけど、こんな感じかなぁ












・一回修正

・だいぶ変更しました。そのうち機会があれば書き直します。

材料1

後々、足りないものなどがでてくると思いますが、
思いつく主な必要材料です。


基板:うちにあった基板を使います。エッチング液とレタリングシールと終わった後に塗るやつを買いました(サトー電気)。1500円くらい。初めてやるのでどうなるか。感光基板でやるのが普通っぽいけど金がかかりそう。

リード線:廃棄基板から取ってもいい。しかしサトー電気にせっかく行ったので買った。

ニキシー菅 IN-8-2 * 8:2と5の数字が綺麗でドットがある管です。本当は両サイドほしいのですが、これは右のみドットがあります。ただ、4の数字が残念。日本製のがほしいです。
http://www.youtube.com/watch?v=Vbrj_E3YRIc
安いところも他の海外であるみたいだけど 、有名どころなのでtubehobby.comで購入


ニキシー管用ドライバー IC K155ID1 * 1:マイコンの足4本で数字10個のどれかを光らせるか選択できるもの。SN74141Nを使うらしいのですが完全互換なのでtubehobby.comであわせて買いました。

$5.5 × 8 + $2 + 送料保険 $27.5 = $73.5


フォトカプラ TFP627 TLP627 * 8: 電圧で他の線の電流を通すか通さないか選択できるらしい(抵抗値が変わるだけ?)。4個セットを二つと2個を一つ使う(左右ドット使う時のため)。これで、どの管を光らせるか選択する。マルツパーツ館 
535円 × 2 +  315円 + 送料

電源:ニキシー菅に150V程度とマイコン等に5Vの電圧が必要。電源を作るのはレベルが高すぎ、あと怖いのでnixie-tube.comの電源キットを使用。
2000円 + 送料

リアルタイムクロックモジュール:クロックを使ってカウントして時間を表示すればいいのですが、全部計算してくれてる便利なものがあるみたい。たぶんどうにかして使えるだろう。秋月電子
500円

3軸加速度センサモジュール:遊びで使ってみたかっただけです。本当はメール送信電波を拾ってメーターを起動させたかったのですが、最近の携帯電話は無理っぽい。ですのでこいつを使って地震検知して起動とかどうかな。秋月電子
1000円
 
温度センサ:よく時計表示に温度表示させてるのがあるので買ってみた。アナログ出力だけどへいきなのかわからない。秋月電子
100円

マイコン ATMEGA328P:マイコンに関してよくわからないがPICとそう変わらないだろう。PICで時計が作れたんだ。秋月電子
250円

AVRライター AVRISPmkII:純正品。これでマイコンに書き込める。なんと基板に実装しながら書き込める。すごい。高い。
4000円

他:スイッチ、抵抗各種、ICなどをのせるソケット、参考書など

以上、ものすごいお金がかかった。 計算したくない。だがやめられない。


--------------------
tubehobby.comのNCV2.1-14キットが欲しい人いるかな?
頼んでキットは届いたけど、全部自作しちゃったんでいらなくなった。

参考ページ

こちらのページの回路図を参考に組み立てるつもりです。
http://www.mars.dti.ne.jp/~ogura/e_hobby/nixie_clock.html
今思ったけど、マイコンの足の数足りてるのかな。
マイコンの足は28本のを買いました。それぐらいがちょうどよいと思い。
マイコン自体の電源など 5本
ニキシー管点灯 8本
数字制御 4本
ドット制御 2本
時刻取得 3本(http://www.epsontoyocom.co.jp/product/RTC/set03/rtc8564je_nb/index.html 2本で通信してるみたいだけど、1秒割り込みもほしいので)
温度計 1本(http://brown.ap.teacup.com/nekosan0/203.html 1本でいいみたい)
加速度センサ 3本(http://physicom.digick.jp/?tag=kxm52-1050 3本繋がってる)
スイッチ 3本

計29本 うん、どうにかすれば何とかいける・・・・やはり40本のほうが良かったのか。

はじめに

とりあえず、PICで時計作成ができたので、今度はAVRで作ってみようと思います。

作者のスペックは、
・中学生程度の電気知識
・ググることができる
・パクることができる
・半田付ができる
・C言語 が少々わかる
程度です。

ですので、危険な配線になっても本人気づきません。
家が燃えていたらDメールでも送ります。


PIC版


実際資料本がでないとメーターがどんなものなのかわからない。
ぜんぜん違うものになってるかもしれないけど、泣かない。