| ホーム | 私の電子工作作品集 |
[ 初公開日:2024年5月10日 ] |
ニキシー管時計の製作に初めて私が挑戦をしたのは今から 18 年も以前のことで、そのときには見事?に失敗( "053. 6桁ニキシー管時計" )に終わりました。 そして、その7年後(すなわち 11 年前)にハードウエア、
ソフトウエアともに見直しをして、ニキシー管時計の製作に再挑戦( "173. 6桁ニキシー管時計(改良版)" )をし、何とか自分の思惑どうりのニキシー管時計に仕上げることができました。 それらを私のホームページ上に公開をしてから早くも 10 年が経とうとしていますが、最近、ホームページをご覧になった方からの質問で久しぶりにニキシー管時計に係わったことと、今なお、私の部品箱内で製作されるのを順番待ちしている、 前作とは異なったニキシー管が存在することから、新たな製作意欲が湧いてきて今回の "6桁ニキシー管時計 III" の製作に至りました。 今回製作のニキシー管時計では、初めに収納するケース有りきで、そのケースに合わせたサイズにプリント基板をカットし、時計全体のサイズもかなりコンパクトに仕上げました。 そのため、製作後半になって多少の無理も生じてきましたが、 何とかケース内に納め切りました。 しかし、タイマースイッチ等のリレー出力を AC 電源等の制御に使用したい方は、私が使用した小型リレーをパワーリレーに取り替えたり、収納ケース自体ももっと大型のものを使用した方が、 本機としての取り扱いは便利になると思います。 また、最近のニキシー管時計などをインターネット上で見ていると、ニキシー管をバックからブルーの LED で照らして、装飾品としての相乗効果を狙った? ようなものをよく見かけるようになり、見ていて単純に奇麗である ― ということから私も真似をしてみました。 ただし、単に LED を点灯させるだけではつまらないので、ニキシー管に表示させる内容によって LED の表示パタンも変化させて、私なりにいろいろと(Lチカのように)遊んでみました。 |
上の回路図をご覧になって不思議に思われた方もいるかもしれないと思いますので、一応、なぜこのような回路になったのか説明(言い訳?)をしておきます。 元々、初めに検討した回路図では、左下に位置する I/O エキスパンダ IC PCF8574/74A から、
右いっぱいに広がっている6個のブルーの LED と、左上辺りに位置しているデジタル温度センサ DS18B20 はどれも存在せず、PIC のポート RA2 には CH3 スイッチが繋がっていて、上図に比べるとずっとシンプルな構成でした。 左側にある CH1 〜 CH3 スイッチと2組のリレー回路は、当初からタイマースイッチ機能、温度スイッチ機能を本機に盛り込む考えがあったので、現在の CH3 スイッチの位置を除いて上図と変更はありません。 そして、メイン基板であるプリント基板(1) に、 6本のニキシー管を取り付けるだけのハードウエアが完成間近になってから、ブルー LED のアイディアが浮かんできたため、急遽、上図のように I/O エキスパンダ IC PCF8574/74A と6個のブルー LED を追加することにしました。 本機には気温を表示させる機能もあるのですが、その温度データを取り出す源に当初は、リアルタイムクロックモジュールに使用されている、RTC IC DS3231 の内蔵温度センサから読み出していました。 ところが、この RTC IC の実装位置が使用したケースでほぼ密閉状態となるため、ケース内の温度に左右されて正確な温度の測定ができないことが分かりました。 この事実に気が付いたのは全体のプログラムもほぼ完成に近づき、季節も冬から春になりかけたころですが、 これでは DS3231 の内蔵温度センサの使用は断念せざるを得ません。 密閉状態の問題は別として、プリント基板(1)パターン図 や ケース外観と内部の様子 などを見ていただければ、空きスペースがほとんどないことが分かるように、本機ではあまり大型のセンサ類を使用することは難しい問題です。 そこで、私の手持ちに TO-92 パッケージの DS18B20 というデジタル温度センサがあったので、それを使用してみることにしました。 DS18B20 は独自の 1-Wire インターフェースを持つ IC ですが、そのための空きポートが PIC 側になかったので、RA2 に収容していた CH3 スイッチには引っ越しをしてもらい、その空いたポートに DS18B20 を収容しました。 そして、CH3 スイッチには I/O エキスパンダ IC PCF8574/74A の空きポート P7 に収容することにしたのです。 このような回りくどいことをしなくても、PIC のポート RA2 には CH3 スイッチ収容のままで、PCF8574/74A の空きポート P7 に DS18B20 を収容すれば ― という案も考えたのですが、PIC とは PCF8574/74A との I2C インターフェース上で、 独自の 1-Wire インターフェースを実行させるのは、プログラマ(私)にとってかなり荷が重くなることでもあるし、たぶん、1-Wire インターフェースでのタイミングで問題が起こるのではないか ― とも思われます。 それに対して、PCF8574/74A の空きポートに CH3 スイッチを収容の場合には、単にスイッチの ON/OFF だけを検知すれば良いので、プログラム作成においても前者に比べればずっと簡単になります。 結果、上の回路図のように、同じスイッチ仲間の CH1、CH2 スイッチとは離れ離れになり、CH3 スイッチは一人ぼっちとなってしまいました。 |
| 回路図 (NixieTubeClockIII3.CE3) | ページトップ |
今回の製作で使用したニキシー管は、本ページの表題にあるように ИH-17(IN-17)という6本のロシア製のニキシー管で、16 〜 17 年も以前に Yahoo!オークションで入手したもので、その頃、特にすぐには使用する予定もなく入札して置いたら落札をしてしまった、
というシロモノで、ようやく今回日の目を見ることになりました。 外観は次の写真群に示すようなもので、写し方が悪く写真では分かりづらいのですが、一番左の側面の写真には ИH-17 9102 というように印字がされているので、たぶん 1991 年製のものと思われます。 6本いずれのニキシー管も同様に、 11 本ある足ピンの所々が腐食して錆が浮き出ているのが写真を拡大してみるとよくわかります。
11 本といえば、今回実際に使用してみて初めて分かったことなのですが、この ИH-17(IN-17)というニキシー管には、足ピンが 0 〜 9 の 10 種の数字電極(カソード)とアノード1本の計 11 本しかありません。 "前作" で使用したニキシー管 CD81 のように小数点(ピリオド)は存在していませんでした。 左上図は、下記 参考サイト の "ニキシー管 IN-17" データのリンクサイトから、ダウンロードした PDF ファイルから抜粋をした足ピン図ですが、この図は理解しにくく誤解を招きやすい図だと思います。 というのも、この図はニキシー管を裏側から見た図ではあるのだけれど、上に掲載した外観写真群の 右端下 の上面写真とは上下が逆になっていて、数字を逆立ちさせた状態を表しています。 逆立ちをさせず通常のように数字を表示させる場合には、ダウンロードした左上図を 180 度上下に回転させて右上図(裏面図)のように見なければなりません。 実物を裏側から見て、1 ピンと 11 ピンの間の 12 ピンに相当(右上図の赤 x 印: 上に掲載した外観写真群の 右から3つ目 の写真を拡大参照)する切れた足ピン位置を目印として、 1 ピンのアノードから時計回りに 2, 3, 4 …… 11 と、カソード 0 〜 カソード 9 までが順序良く並んでいます。
しかし、6本の各ニキシー管をプリント基板に取り付けるときには、それらの高さを揃えるためにはハカマ?があった方が有利となるので、添付のハカマ?の代わりに手元にあった透明のイラックスチューブ(内径Φ1)を、 7 mm 長ほどに切って絶縁を兼ねて各足ピンに通して使用しました。 私が入手をしたこれら6本のニキシー管ですが、実際に通電をしてみると 機能概要と使用法 で使用した各写真のように、各数字文字の輪郭がはっきりせず一見ぼやけたように見えます。 これは IN-17 に特有なもの?のようで、各数字電極よりも最前に位置する細かい格子状の電極(アノードか?)が邪魔をしているせいだと思います。 また、6本の内の最左端桁に使用した管は各数字電極が少し右に、その右隣に使用した管は少し左に傾いて取り付けられていました。(これは愛嬌なのでしょうか? 品質の悪さなのでしょうか?) | ページトップ | |
本機 "ニキシー管時計 III" のクロック源には、既に公開済みの "199. 多機能携帯デジタル時計" で使用した RTC モジュール と同じ "DS3231 For PI" を使用しました。
その詳細についてはそちらで述べている説明を参照して頂くとして、本ページでは外観写真と回路図だけを次に再掲しておきます。 本機で RTC モジュール( DS3231 For PI )を使用するためには、次の写真に示すような少しばかりの改造が必要で、そのためには "はんだ吸取線" なるものが必須となります。
私がこの RTC モジュール( DS3231 For PI )を使用するのは、まだ未公開の作品も含めて3作目となりますが、以前から気になっていたことがありました。 それは前2作では (2) の改造工程だけを実施してこのモジュールを使用してきました。 したがって、ハードウエア的に PIC マイコンとの接続には、モジュール側のピンソケットと本体側のプリント基板に設けたピンヘッダとで行うことになります。 その場合に私が気になっていたということは、モジュール側のピンソケットが四角面積の片側だけに偏っているため、接続をしても簡単にクラクラと動いてしまうのです。 要するに接触不良を起こしてしまうのではないか?、ということです。 そこで今回は、(1) -2 の工程でピンソケットをピンヘッダに取り換え、本体側のプリント基板に直接ハンダ付けをして固定をしてしまう、というものです。 この改造によって接触不良の問題は解消されます。 そして、2つ目の問題点は (1) -1 で述べているように、本モジュールにはコイン電池が直接ハンダ付けされているために、電池の交換が簡単には行えない、という点です。 そこで本機のモジュール使用では、(1) -1 のように当初からモジュールに搭載されているコイン電池を取り除いてしまい、(4) のようにジャンパー線を接続しておいて、モジュールに搭載の電池に代わる外部のコイン電池(CR2032)に 接続ができるように改造を行いました。 3つ目の改造は以前から行っているように、(2) のようにジャンパー線を接続することによって、上に掲載したリアルタイムクロックモジュールの回路図中の、赤線で示した SQW 信号を外部に引き出す改造を行います。 この信号を PIC の外部割込みで検知することにより、プログラムでポーリング処理をするよりも簡単になって有利です。
ところで、この DS3231 という RTC IC にはデジタル温度センサを内蔵しているので、今まで私のプログラムでは使用したことはありませんでしたが、今回はそれを使用してみたいと思います。 ← ← ← ところがこの試みは失敗でした。 プログラム上では何の問題もなく、温度データを取り出してニキシー管に表示をさせることができたのですが、周りの環境に問題がありました。 プリント基板(1)パターン図 (部品面) に示すように、RTC モジュール( DS3231 For PI )を プリント基板上に搭載をして、また、ケース加工図 で示すように、プリント基板をスチロール樹脂ケース内に収納して使用することになるのですが、ケースの蓋を開けたときと閉めたときとでは、 2 〜 3 ℃ ほど(最大時にはそれ以上)の温度差が生じるのです。 そのためにもケースの背面には穴を開けて空気が流動するように考慮はしてあるのですが、ケース加工図で示した程度ではほとんど効果はないようです。 ケースの蓋を開けたときとでは比べ物になりません。 この点については大きな盲点で誤算でした。 "173. 6桁ニキシー管時計(改良版)" のように、温度センサはケース外に出して使用すべきです。 そこで、RTC IC DS3231 の内蔵温度センサを使用することはきっぱり諦めて、別の温度センサを使用することを考えます。 そして、私の手持ちに DS18B20 という デジタル温度センサ があるので、それを使用してみることにしました。 | ページトップ | |
上述したように、本機で最終的に採用したデジタル温度センサは、次の左端の写真のような 3ピンTO-92 パッケージのもので、3年半ほど前にアマゾンで入手をしました。
現在でも1個 150 円程度で入手ができますが、秋月電子通商で購入する場合にはかなり高価になるようです。
上右端の写真のように、ケース左側面にΦ6 の穴を開け温度センサの頭をケース外に出して、ケース内部の温度にはあまり影響がされないように取り付けました。 左端写真の温度センサに 3P のケーブルの取り付けと、ヒシ(熱収縮)チューブで絶縁をして行く 過程の写真を撮るのを忘れてしまいましたが、右端写真がその最終結果です。 右端写真の黒色部分がヒシチューブで、その内部に温度センサとケーブルとの接続部分が隠れています。 そして、中央写真のようなナイロンクリップ NK-2N(商品名か? ずいぶん以前に購入したものでメーカー等は不明)で、右端写真に示すような要領で ケース左側面の外側に温度センサを固定しました。 上の左図は Maxim 社の データシート DS18B20 から抜粋した足ピン図ですが、右図に示した プリント基板(1) と接続をするコネクタのピン並びとは、異なっているので注意をしてください。 これはプリント基板(1) にピンヘッダ 3P を取り付けるときに、自由に選べるような空きスペースがなかったために、仕方なく右図のような配置になってしまいました。 DS18B20 の特徴
| ページトップ | |
以下は外観6面写真です。
以下は一回り大きいケースに入れ替えた後の外観6面写真です。
|
| ページトップ |
本機ではデジタル温度センサ( DS18B20 )を使用しており、12 ビット分解能(最高)を選択して温度値を読み出している。 そのときの読み出しデータのフォーマットは "Figure 2" のように、 水色部分が小数部で4ビットで構成されている。 これらのビットはバイナリ(2進数)データであり、デシマル(10 進数)データに変換をすると、2-1 = 0.5、2-2 = 0.25、2-3 = 0.125、2-4 = 0.0625 となり、 4ビットで構成されるバイナリデータをデシマルデータに変換をしても、小数部4ビットのデータが取りうる値は次のように連続値にはならない。(整数部は常に連続値になる。) (2進数) (10進数) .0000 .0000 .0001 .0625 .0010 .1250 .0011 .1875 .0100 .2500 .0101 .3125 .0110 .3750 .0111 .4375 .1000 .5000 .1001 .5625 .1010 .6250 .1011 .6875 .1100 .7500 .1101 .8125 .1110 .8750 .1111 .9375 |
| ページトップ |
最近の私が製作をする多くのデジタル時計では、その心臓部とも言えるクロック源には、すべてリアルタイムクロック(RTC)モジュールを使用しており、本機でも私が最も信頼のおける RTC IC の "DS3231" を採用しました。 そして、
その "DS3231" のプログラミングについては、"190. I2C IF モジュール + LCD(1602A) 表示時計" の リアルタイムクロックモジュールのプログラミング
で詳述をしているので、そちらをご覧になってください。 また、当初に設計をしたハードウエアで製作をしてきた本機のような作品に、後になってからもっとポート数を増やしたくなっても、今更、ポート数の多い PIC に変更をすることができない ― というような場合に、追加して使用することで 頼りになり力を発揮してくれるのが I/O エキスパンダ IC で、今回も PCF8574/74A のお世話になりました。 これについても "189. ドットマトリクス 8 x 8 LED 表示時計 II ( MAX7219 版)" の I/O エキスパンダ IC(PCF8574/74A)のプログラミング で詳述をしているので、参考にしてください。 本機では、温度センサの変更を本機の完成の間際になってから余儀なくされてしまい、どうしたものか ― と悩んだ末に、私にとっては始めて使用することになるのですが次に述べる "DS18B20" に変更を決めました。 その具体的なプログラミング例についてを、 本プログラムの項にまとめておきたいと思います。 ● デジタル温度センサ( DS18B20 )のプログラミング "DS18B20" は独自の 1-Wire インターフェイスによって通信を行うデジタル温度センサで、その使用には複数の種類の接続方法(詳細はデータシートを参照のこと)がありますが、ここでは 回路図(左上)に示した結線方法での 具体的なプログラミング例を紹介します。(なお、以下の説明で使用している Figure 2 〜 Figure 14 の図は、Maxim Integrated Products 社のデータシート( デジタル温度センサ DS18B20 )から抜粋をし、彩色のあるものは私が施しました。) データシートによると、"DS18B20"、PIC の両者ともに通信に使用するポートには、3−ステート、またはオープンドレインを想定していますが、"DS18B20" はともかく PIC 側にそのような空きポートは今回は望めないため、通常のポートを使用することとします。 ただ、"DS18B20" のポートが出力になる直前には、すかさず PIC 側では入力ポートに切り替えるように、両者の出力同士がぶつからないように注意を払ってプログラミングをします。 初めに、"DS18B20" に内蔵されているメモリの種類ですが、次の Figure 7 に示すようにスクラッチパッドメモリ(RAM)と EEPROM とがあり、他にもこれらとは別に 64 ビットからなるデバイスごとに固有のシリアル番号等の情報を持つ ROM がありますが、 本機では PIC との通信を簡略化するためと 製作に汎用性を持たせるために、シリアル番号等の情報は使用していません。(もし、デバイスに固有のシリアル番号を使用すると、他の方が本機を製作されてもシリアル番号の不一致でプログラムが動作しなくなります。) Figure 7 で最も重要なのは、Byte 0、Byte 1 の温度レジスタ Temperature LSB、MSB で、センサからのデータが A/D 変換されてデジタル値として2バイトに格納されます。 このときの変換データの分解能には4種類あってユーザが選択することができますが、 デフォルトでは最も高い 12 ビット分解能となっており、本機では選択をし直す必要がない( PIC との通信を簡略化するため)のでそのデフォルト値で使用をします。 ただし、分解能が高い分 A/D 変換にかかる時間は多く(750 mS)なります。 もし、分解能を変更したい場合は、Byte 4 の動作設定レジスタ Configuration Register の設定値を変更します。 また、Byte 2、Byte 3 の温度アラーム通知レジスタ TH Register、TL Register についても本機では使用しません。 そして、最後位 Byte 8 の CRC レジスタについては、Byte 0 〜 Byte 7 に対しての CRC 値が付与され、"DS18B20" から送られてきたデータのチェックに使用するためのものですが、これも現在のところ使用していません。
Byte 0、Byte 1 の温度レジスタ Temperature LSB、MSB については、次の Figure 2 に示すようなバイナリのビット配置になっており、上述したようにデフォルトの 12 ビット分解能ではすべてのビットが有効になりますが、本機のニキシー管時計では、 バイナリデータから BCD データに変換する過程で、小数点以下2位までを表示対象として、3位以降は切り捨てて無視をしています。 "DS18B20" で採用されている 1-Wire インターフェイスはタイミング的には結構シビアなようで、次の Figure 13、Figure 14 のように定められています。 そして、これらの2つの図を基にして後述のアセンブラソースリストを作成しました。 PIC と "DS18B20" との通信では Figure 13 のように、まず、1-Wire バス上に PIC が 480 μS 間のリセットパルス Low を送信することから始めます。 それに対して "DS18B20" が 60 〜 240 μS 間の存在パルス Low で応答して、動作する準備ができていることを PIC に知らせます。 これらの両者のパルスのやり取りで初期化手順が終了し、次には PIC からのコマンド送信が可能になります。 コマンドの種類(詳細はデータシートを参照のこと)には、ROM コマンド5種類と機能コマンド6種類がありますが、この内、本機では [SKIP ROM]、[CONVERT T]、[READ SCRATCHPAD] コマンドの3種類だけを使用します。 それぞれのコマンドは8ビット長で、 それらを構成している各ビットは、"DS18B20" に "0" を書き込む タイミング・スロット と、"1" を書き込む タイミング・スロット とで構成されています。 それらの説明図が Figure 14 の上半分が表しています。 また、上に挙げた [READ SCRATCHPAD] コマンドなどでは、そのコマンド送信直後に "DS18B20" からデータ送信ができるように、PIC は 読み込み・タイミング・スロット を用意します。 その説明図が Figure 14 の下半分が表しています。 以上の Figure 13、Figure 14 の各説明図を、具体的なアセンブラソースに、私が書き換えたものが次に示すリストです。 なお、本機では PIC16F886 を使用し、内部クロックを 8 MHzに設定をして動作をさせています。 したがって、次のリストはジャンプ命令等を除いた1命令当たりの実行時間は、0.5 μS であることが前提になっています。 ;========================================================================== ; 1-Wire デジタル温度センサ(DS18B20)制御サブルーチン ;========================================================================== ;#define TRISX TRISA ;例. DATA ポートを PORTA で使用する場合 ;#define PORTX PORTA ;include する側で #define 定義をすること ;_DQ equ 2 ;DS18B20 入出力ポート ;<使用レジスタ> ;temp_1w ;送受信データの一時保存 ;w1_lpcnt ;ループカウンタ ;wt1cnt ;既存レジスタ ;ウェイト用ループカウンタ ;wt2cnt ;既存レジスタ ;ウェイト用ループカウンタ ;========================================================================== ; ウェイト・ルーチン (8 MHz) ;========================================================================== ; 15 μ秒 ウェイト・ルーチン ;; call wait_15us ;(2) wait_15us movlw 4 ;1 movwf wt1cnt ;1 w15u01 goto $+1 ;2 nop ;1 decfsz wt1cnt,F ;1,2 goto w15u01 ;2,0 ; nop ; return ;2 (2)+1+1+(2+1+1+2)*4-1+2=29, 29*0.5=14.5uS ; 45 μ秒 ウェイト・ルーチン ;; call wait_45us ;(2) wait_45us movlw 14 ;1 movwf wt1cnt ;1 w45u01 goto $+1 ;2 nop ;1 decfsz wt1cnt,F ;1,2 goto w45u01 ;2,0 nop ;1 return ;2 (2)+1+1+(2+1+1+2)*14-1+1+2=90, 90*0.5=45uS ; 60 μ秒 ウェイト・ルーチン ;; call wait_60us ;(2) wait_60us movlw 19 ;1 movwf wt1cnt ;1 w60u01 goto $+1 ;2 nop ;1 decfsz wt1cnt,F ;1,2 goto w60u01 ;2,0 nop ;1 return ;2 (2)+1+1+(2+1+1+2)*19-1+1+2=120, 120*0.5=60uS ; 480 μ秒 ウェイト・ルーチン ;; call wait_480us ;(2) wait_480us movlw 8 ;1 movwf wt2cnt ;1 w480u01 call wait_60us ;120 decfsz wt2cnt,F ;1,2 goto w480u01 ;2,0 return ;2 (2)+1+1+(120+1+2)*8-1+2=989, 989*0.5=494.5uS ;========================================================================== ; 1-Wire バスの初期設定 ;========================================================================== Init_1_Wire ; リセットパルスを送信 bsf STATUS,RP0 ;バンク 1 bcf TRISX,_DQ ;_DQ: 出力ポート bcf STATUS,RP0 ;バンク 0 bcf PORTX,_DQ ;1-Wire バスを "L" にする call wait_480us ;480μs 間(最低) bsf PORTX,_DQ ; ; 存在パルスを受信 bsf STATUS,RP0 ;バンク 1 bsf TRISX,_DQ ;_DQ: 入力ポート、バスを開放 bcf STATUS,RP0 ;バンク 0 ; call wait_60us ;15〜60μs 間待つ movlw 4 + 1 ;** movwf w1_lpcnt ;ループカウンタ ini1w01 call wait_60us ;60〜240μs 間待つ btfss PORTX,_DQ ;存在パルス = "L" か? goto ini1w02 ;Yes decfsz w1_lpcnt,F ;ループカウンタ - 1 = 0 か? goto ini1w01 ;No bsf STATUS,C ;Error goto ini1w04 ; タイミング合わせ ini1w02 movlw 4 addwf w1_lpcnt,F ;ループカウンタ ini1w03 call wait_60us ;** から 480μs 間(最低) decfsz w1_lpcnt,F ;ループカウンタ - 1 = 0 か? goto ini1w03 ;No bcf STATUS,C ;OK ini1w04 bsf STATUS,RP0 ;バンク 1 bcf TRISX,_DQ ;_DQ: 出力ポート bcf STATUS,RP0 ;バンク 0 return ;========================================================================== ; コマンドの送信 ;========================================================================== Write_1_Wire movwf temp_1w ;送信データ(コマンド) movlw 8 movwf w1_lpcnt ;ループカウンタ wr1w01 rrf temp_1w,F btfss STATUS,C ;C = 0 か? call Write_0_Slot ;Yes. "0" 書き込み・タイミング・スロット btfsc STATUS,C ;C = 1 か? call Write_1_Slot ;Yes. "1" 書き込み・タイミング・スロット decfsz w1_lpcnt,F ;ループカウンタ - 1 = 0 か? goto wr1w01 ;No return ;-------------------------------------------------------------------------- ; "0" 書き込み・タイミング・スロット Write_0_Slot bcf PORTX,_DQ ;1-Wire バスを "L" にする call wait_15us ;60μs (最低) call wait_45us ; nop bsf PORTX,_DQ ;(バスを開放) ; bsf STATUS,RP0 ;バンク 1 ; bsf TRISX,_DQ ;_DQ: 入力ポート、バスを開放 ; bcf STATUS,RP0 ;バンク 0 return ;-------------------------------------------------------------------------- ; "1" 書き込み・タイミング・スロット Write_1_Slot bcf PORTX,_DQ ;1-Wire バスを "L" にする call wait_15us ;15μs 以内 bsf PORTX,_DQ ;(バスを開放) call wait_45us ;60μs (最低) ; bsf STATUS,RP0 ;バンク 1 ; bsf TRISX,_DQ ;_DQ: 入力ポート、バスを開放 ; bcf STATUS,RP0 ;バンク 0 return ;========================================================================== ; データの受信 ;========================================================================== Read_1_Wire movlw 8 ; movwf w1_lpcnt ;ループカウンタ rd1w01 rrf temp_1w,F call Read_0_1_Slot ;"0" / "1" 読み込み・タイミング・スロット btfss STATUS,C ;C = 0 か? bcf temp_1w,7 ;Yes. "0" ビット btfsc STATUS,C ;C = 1 か? bsf temp_1w,7 ;Yes. "1" ビット decfsz w1_lpcnt,F ;ループカウンタ - 1 = 0 か? goto rd1w01 ;No movf temp_1w,W ;受信データ (1 バイト) return ;-------------------------------------------------------------------------- ; "0" / "1" 読み込み・タイミング・スロット Read_0_1_Slot bcf PORTX,_DQ ;1-Wire バスを "L" にする nop ;1μs (最低) nop ; nop ; bsf PORTX,_DQ ;1 ;** (バスを開放) bsf STATUS,RP0 ;1 ;バンク 1 bsf TRISX,_DQ ;1 ;_DQ: 入力ポート、バスを開放 bcf STATUS,RP0 ;1 ;バンク 0 movlw 4 ;5 ;1 ; movwf wt1cnt ;1 ;ループカウンタ bcf STATUS,C ;1 (7) ;"0" ビット (初期値) ;** (バスを開放)から 15μs以内に読み込み rd01w01 btfsc PORTX,_DQ ;2,1 ;バス = "H" か? bsf STATUS,C ;0,1 ;Yes. "1" ビット decfsz wt1cnt,F ;1,2 ;ループカウンタ - 1 = 0 か? goto rd01w01 ;2,0 ;No call wait_45us ;** から 60μs (最低) bsf STATUS,RP0 ;バンク 1 bcf TRISX,_DQ ;_DQ: 出力ポート bcf STATUS,RP0 ;バンク 0 return ;=============================================================== end ====== 下のリスト中で最右位置のコメント (4) の部分については、既に上述したように、CRC チェック を取り敢えず省略している部分です。 ;========================================================================== ; DS18B20 から温度データの読み出し ;========================================================================== read_temperature btfsc int_flg,2 ;温度変換時間監視中フラグ = 1 か? ;; goto rdtemp04 ;Yes ;; ;; .......... (1) btfsc int_flg,3 ;温度変換時間監視終了フラグ = 1 か? ;; goto rdtemp01 ;Yes ;; call Init_1_Wire ;1-Wire バスの初期設定 btfsc STATUS,C ;Error か? goto rdtemp03 ;Yes movlw h'cc' ; call Write_1_Wire ;[SKIP ROM] コマンドの送信 movlw h'44' ; call Write_1_Wire ;[CONVERT T] コマンドの送信 ;; bcf PCLATH,3 ;ページ 0 ;; ;; call wait_250ms ;750 ms 間(変換時間)待つ ;; .......... (2) ;; call wait_500ms ;分解能 = 12 ビット(デフォルト) ;; ;; bsf PCLATH,3 ;ページ 1 ;; bsf int_flg,2 ;温度変換時間監視中フラグ = 1 ;; movlw tm2_s_val ;=47, 16ms x 47 = 752ms ;; movwf tm2_s_cnt ;ソフトタイマー2カウンタに設定 ;; .......... (3) bsf T2CON,TMR2ON ;タイマー2 ON/OFF 制御 = ON ;; goto rdtemp04 ;; rdtemp01 call Init_1_Wire ;1-Wire バスの初期設定 btfsc STATUS,C ;Error か? goto rdtemp03 ;Yes movlw h'cc' ; call Write_1_Wire ;[SKIP ROM] コマンドの送信 movlw h'be' ; call Write_1_Wire ;[READ SCRATCHPAD] コマンドの送信 movlw low sp_temp_lsb ;スクラッチパッド格納エリア (9 byte 使用) movwf FSR movlw 9 movwf lp_cnt1 ;ループカウンタ rdtemp02 call Read_1_Wire ;データの受信 movwf INDF ;格納エリアに移動 incf FSR,F ;間接アドレス +1 更新 decfsz lp_cnt1,F ;ループカウンタ - 1 = 0 か? goto rdtemp02 ;No ;; call crc8 ;受信データ 9バイトの CRC8 計算チェック ;; ;; btfsc STATUS,C ;Error か? ;; .......... (4) ;; goto rdtemp0x ;Yes ;; goto rdtemp04 ; rdtemp03 movlw h'ff' ;ブルー LED 消灯 call ExpPCF8574_Write ;(PCF8574/74A)のポートへデータを書き込み ; [ 9_.18 20 ] ;DS18B20 エラーメッセージ movlw h'9f' ;"9f" = "Error" movwf temp_hh movlw h'18' ;"18" movwf temp_mm movlw h'20' ;"20" movwf temp_ss call error_disp ;DS18B20 異常時のエラー表示 goto read_temperature rdtemp04 returnコメント (2) の部分についてはこれも上述したように、本機ではデフォルトの 12 ビット分解能を選択しているため、"DS18B20" で A/D 変換にかかる時間は 750 mS 間を必要とします。 [CONVERT T] コマンドを送信後に、次の [READ SCRATCHPAD] コマンドの送信までを休止させるために、当初はコメント (2) のように単純にウェイト・ルーチンで時間消費をさせていました。 しかし、本機でのニキシー管の点灯にはダイナミック方式で点灯をさせているために、A/D 変換をさせる度に 750 mS 間も点灯が途切れるのではとても実用にはなりません。 そのためにリスト中のコメント行にした (2) 部分の前後に (1) と (3) の命令群を追加して、 タイマー2割り込みを使用した 750 mS の時間監視をするように改めました。 このような場合に私は通常タイマー0割り込みを使用するのですが、本機では既にタイマー0割り込みをいろいろな目的で使用しているので競合を避けるため、タイマー2割り込みを使用することにしました。 次のリストは抜粋で分かりづらいかもしれませんが、本機で使用したタイマー2割り込みに関連した設定を次にまとめておきます。 ;========================================================================== ; 定数の定義と変数のレジスタ割付け ;========================================================================== radix dec : : tm2_h_val equ 250 ;ハードタイマー2カウント値(割り込み周期)(4/8Mz*16*8*250=16msec) tm2_s_val equ 47 ;ソフトタイマー2カウント値 (16msec*47=752msec) : cblock h'20' ; (( バンク 0 )) : tm2_s_cnt ;ソフトタイマー2カウンタ : endc : : ;========================================================================== ; 割り込み処理 ;========================================================================== org h'0004' ;割り込みベクタ interrupt : : btfsc PIR1,TMR2IF ;タイマー2割り込み か? goto t2_int ;Yes : ;---------------- タイマー2割り込み処理 ---------------------------------- ;割り込み周期 = 4/8Mz*16*8*250=16msec) t2_int bcf PIR1,TMR2IF ;タイマー2割込みフラグをクリア decfsz tm2_s_cnt,F ;ソフトタイマー2カウンタ - 1 = 0 か? goto int_end ;No ;16ms x 47 = 752ms bcf T2CON,TMR2ON ;タイマー2 ON/OFF 制御 = OFF bcf int_flg,2 ;温度変換時間監視中フラグ = 0 bsf int_flg,3 ;温度変換時間監視終了フラグ = 1 ; goto int_end int_end : retfie ;割り込みからの復帰 : : ;========================================================================== ; 初期化処理 ;========================================================================== initialize : : bsf STATUS,RP0 ;バンク 1 : ; 割り込みの設定 bsf PIE1,TMR2IE ;TMR2IE: タイマー2割り込みを許可 movlw tm2_h_val movwf PR2 ;PR2 に設定 bcf STATUS,RP0 ;バンク 0 : movlw b'00111010' ;bit7: 未使用 ;bit6-3=0111: ポストスケーラのスケール値 1:8 ;bit2(TMR2ON)=0: ;bit1-0=10: プリスケーラのスケール値 1:16 movwf T2CON ;T2CON に設定 : bsf INTCON,PEIE ;PEIE: 周辺機器割り込みを許可 bsf INTCON,GIE ;GIE: グローバル割り込みを許可 : :そして、DS18B20 から温度データの読み出しサブルーチン(read_temperature) の使用法ですが、次の 各種データ読み出しと タイマー & 温度の監視と時報音出力コントロール(xtime_monitor) のようにまとめ、 メインルーチン内でダイナミック方式でニキシー管の点灯をさせるループ(約 13.4 mS 周期)の中に入れています。 したがって、本機では2秒に1度 int_flg フラグの bit 1(温度データの読み出し要求フラグ)が ON になり、その都度、bit 1 = OFF にされるまでループ内で何度も実行され続けることになりますが、 750 mS 経過しないと [READ SCRATCHPAD] コマンドは実行されず、750 mS 経過後に初めて DS18B20 から温度データの読み出しが行われ、続いて、読み出したデータの BCD 変換(temp_cnv2)も済ませた後に、int_flg の温度関連フラグすべてをクリアします。 ;-------------------------------------------------------------------------- ; 各種データ読み出しと タイマー & 温度の監視と時報音出力コントロール ;-------------------------------------------------------------------------- xtime_monitor btfss int_flg,0 ;RTC DS3231 からデータ読み出し要求フラグ = 1(1秒周期) か? goto xtime01 ;03 ;No xRtc_Read_M seconds,7 ;RTC DS3231 から年月日、時分秒を読み出し call buffer_to_counter bcf int_flg,0 ;RTC DS3231 からデータ読み出し要求フラグ = 0 call time_signal ;時報音出力コントロール btfss tmon_flg,0 ;タイマー監視フラグ = 1 か? goto xtime01 ;No bsf PCLATH,3 ;ページ 1 call time_monitor ;タイマー & 温度の監視とその処理 bcf PCLATH,3 ;ページ 0 xtime01 btfss int_flg,1 ;DS18B20 から温度データの読み出し要求フラグ = 1(2 秒周期) か? goto xtime02 ;No #ifdef temp_ds3231 xRtc_Read_M temp_msb,2 ;RTC DS3231 から温度データ 11h,12h を読み出し call temp_cnv ;温度データの BCD 変換 bcf int_flg,1 ;温度データの読み出し要求フラグ = 0 #else bsf PCLATH,3 ;ページ 1 call read_temperature ;DS18B20 から温度データの読み出し btfsc int_flg,3 ;温度変換時間監視終了フラグ = 1 か? call temp_cnv2 ;Yes. 温度データの BCD 変換 bcf PCLATH,3 ;ページ 0 movlw h'01' btfsc int_flg,3 ;温度変換時間監視終了フラグ = 1 か? andwf int_flg,F ;Yes. 温度関連フラグ = 0 #endif movf ch2_cnt,W ; btfsc STATUS,Z ;CH2 メモリカウンタ = 0 か? goto xtime02 ;Yes bsf tmon_flg,1 ;温度監視フラグ = 1 bsf PCLATH,3 ;ページ 1 call time_monitor ;タイマー & 温度の監視とその処理 bcf PCLATH,3 ;ページ 0 xtime02 call alarm_sound ;アラームフラグの監視とアラーム音出力 xtime03 return上のリスト xtime_monitor サブルーチン内で #ifdef と #else 間は機械語に翻訳されることはありません。 温度センサを変更する以前には、RTC DS3231 から温度データの読み出しを行っていたことが分かるように、リスト中に残してあります。 |
現在の最新バージョン: Ver. 1.15a ( 2024/5/24 更新 )
| ページトップ |
使用したプリント基板は、"秋月電子通商" の 155 x 114 mm (通販コード:104708 ) サイズのガラスエポキシ片面ユニバーサル基板ですが、後述の ケース加工図
で示したケース内に収めるためには、プリント基板の切断等の加工が必要です。 ガラスエポキシ基板は丈夫なので私は好んで使用しているのですが、次図に示すように、今回は切断箇所が多いので大変でした。 まず、X1、X2 の横方向 ----- 2か所で切断をします。 次に、Y1、Y2 の縦方向 ----- 2か所で切断をし、 最後に X3 の横方向 ----- を切断すれば切断加工は終了です。 後は、メイン基板となる一番大きな基板の四隅4か所
当初は、ブザー(圧電スピーカー)の取り付け位置に、ケースの左側面の内側を予定していました。 しかし、後述するブルー LED のアイデアが浮かび、その LED 制御用のプリント基板(3) の取り付け位置に困ってしまい、とりあえず、ブザーには移動してもらって その跡地にプリント基板(3) を取り付けることにしたのですが、次にはブザーをどの位置に取り付ければ良いのか悩んだ末、プリント基板(1) の右下にあるコイン電池ホルダの上空を2階建てにして取り付けることにしたのです。 ( この問題について は 大きな変更 があるので、ケース加工図 の後半部分を先にご覧になってください。) そのために右上の写真の赤○印2か所にΦ3.2 の丸穴を追加して、そこに2本のジュラコンスペーサー(M3 x 15 両側メス 六角)を次の写真のように建て、その先にブザーを取り付けることにしたのですが、2本のスペーサーの内の右上のスペーサーの根元部分が、 電池ホルダと接触して無理な力が加わるので 0.5 mm ほど削って対処しました。
また、赤○印2か所の同位置の(プリント基板(1) の)裏側も考えたのですが、プリント基板(1) の裏側のスペース 5 mm に対して使用したブザーの厚さが 5.5 mm あるため、ちょっと無理なので止めにしました。 (裏側のスペース 5 mm を広げることも考えられますが、そうするとまた別の不具合が発生するので、結局ボツにしました。) こうして、コイン電池ホルダの上空を2階建てにして取り付けることに決めたのですが、次にはプリント基板(2) を取り付けるときにまた問題が起こりました。 使用したケースサイズの都合上、ケースには先にプリント基板(1) を取り付けた上で、プリント基板(2) を取り付けなければならないのですが、そのときに、2本のジュラコンスペーサーの内の右上のスペーサーが邪魔をして、プリント基板(2) を(右側面の内側に)取り付けることができなくなってしまいました。 そこで苦肉の策、邪魔になるスペーサーを外したプリント基板(1) を取り付けた上でプリント基板(2) を取り付け、その後で邪魔になったスペーサーを取り付けることにしました。 そのために右上のスペーサー位置の背面に当たる、ケースの底面に丸穴( ケース加工図 を参照、(下箱上面図) の右下のΦ7 丸穴)を開けておき、プリント基板(2) を取り付けた後で、そのケース底面の丸穴からビスを通して、改めて邪魔になった右上のスペーサーをプリント基板(1) に取り付ける方法を採りました。 |
| 部品配置図 (NixieTubeClockIII_1PC0.CE3) | ページトップ |
本機も完成間近になってから、RTC IC DS3231 の内蔵の温度センサから、専用の温度センサ DS18B20 を使用することに仕様変更をしたため、そのコネクタ(ピンヘッダ 3P)の取り付け場所(基板上に空きスペースがほとんどない)に困ってしまい、 下図のように窮屈な位置(三端子レギュレータ TA7805S の上)になってしまった。 なお、このコネクタ 3P の信号並びは、DS18B20 の足ピン 並びとは異なっているので注意をしてください。 |
[ 上図から黒文字を除去して表示 ] | ..... ハンダ面側のパターンが分かりづらいときに参照してください |
| プリント基板(1)パターン図 (部品面) (NixieTubeClockIII_1PC.CE3) | (NixieTubeClockIII_1PC2.CE3) | ページトップ |
正面側 | 背面側 |
ブルー LED 用の配線を次図に示す青線のように、プリント基板(1) のハンダ面側で行ってください。(右上の写真を参照) 各ブルー LED の取り付け向きはハンダ面側から見て → 向きで、左側がアノード、右側がカソードです。 右上の写真では逆に取り付けてしまったため、失敗 !! そのために各 LED ピンの配線がパターン図とは逆になっています(注意)。 すべてパターン図 (部品面)、パターン図 (ハンダ面) の方が正解です。 また、LED ピンの周囲にはニキシー管用の高圧がぎっしりと隣り合わせに取り囲んでいるので、ハンダ付けには十分に注意をして絶縁不良等を起こさないように !! |
| プリント基板(1)パターン図 (ハンダ面) (NixieTubeClockIII_1PC1.CE3) | (NixieTubeClockIII_1PC3.CE3) | ページトップ |
ケースサイズとプリント基板(2) の取り付け位置を、ケース加工図 で述べているように変更をしたため、右下の写真に移っているケーブル長では足らなくなってしまい、変更後はもっと長いケーブルに付け替えてあります。 (ケース外観と内部の様子 の 写真 を参照) |
コネクタ, ケーブルを取り付け後の様子 |
| プリント基板(2)パターン図 (部品面) (NixieTubeClockIII_2PC.CE3) | ページトップ |
コネクタ, ケーブルを取り付け後の様子 |
| プリント基板(2)パターン図 (ハンダ面) (NixieTubeClockIII_2PC1.CE3) | ページトップ |
当初、プリント基板(1) パターン図の設計中には考えにはなかったのですが、そのプリント基板(1) が完成間近になってからブルー LED のアイデアが浮かび、急遽、LED の制御用として 回路図 の変更(追加更新)と、このプリント基板(3) を追加作製することになりました。 そのために完成間近のプリント基板(1) も所々の変更を余儀なくされました。 |
コネクタ, ケーブルを取り付け後の様子 |
| プリント基板(3)パターン図 (部品面) (NixieTubeClockIII_3PC.CE3) | ページトップ |
その後、またまたハードウエアの変更をすることになり、PIC のポート RA2 に収容していた CH3 スイッチ(SW7)を、この I/O エキスパンダ IC PCF8574/74A のポートに引っ越しをすることになりました。 (温度データの取り込みを、RTC IC DS3231 の内蔵の温度センサから、専用の温度センサ DS18B20 に変更をするにあたって、現在、その温度センサを収容するための空きポートが PIC 側にないため、 CH3 スイッチを移動させて空きポートを作ることにしました。) コネクタ, ケーブルも 6P から 7P に変更しました。 |
コネクタ, ケーブルを取り付け後の様子 |
| プリント基板(3)パターン図 (部品面) (NixieTubeClockIII3_3PC.CE3) | ページトップ |
コネクタ, ケーブルを取り付け後の様子 |
| プリント基板(3)パターン図 (ハンダ面) (NixieTubeClockIII_3PC1.CE3) | ページトップ |
コネクタ, ケーブルを取り付け後の様子 |
| プリント基板(3)パターン図 (ハンダ面) (NixieTubeClockIII3_3PC1.CE3) | ページトップ |
本機のようにユニバーサル基板を使用して DC ジャックを取り付けるためには、あらかじめ基板に対して以下の穴あけ加工の処理を行っておかなければなりません。
| ページトップ | |
"時" と "分"、"分" と "秒" との間の区切り記号としてコロン(:)を表示させるために、本機においても前作( "173. 6桁ニキシー管時計(改良版)" )と同様に、
次の写真のような、私の手持ちにある LED とピンヘッダを使用して作製をしました。 どちらも十数年前に入手したものなので、現時点においての入手は難しいと思われます。 ・ LED仕様: Agilent(Hewlett-Packard)、HSMV-A100、オレンジ、3228サイズチップ、("秋月電子" で購入) ・ ピンヘッダ仕様: HRS、型番不明、台座から上部分の実測ピン長さ16.5mm、(Yahoo!オークションで入手)
そのコロン(:)を作製する過程の写真を撮るのを忘れて、プリント基板(1) に取り付けてしまいましたが、まずピンヘッダを 4P ずつに分割をします。 そして、今回使用したニキシー管は次の写真のように文字の表示面が側面ではなく上面にあるため、 LED の取り付けもピンヘッダの側面ではなく上面に向くように先端に取り付けます。 したがって、必ずしも私が使用したような表面実装型の LED と、通常よりも長いピンヘッダを使用して作製をする必要はなく、ごく普通の砲弾型でサイズ的にニキシー管に見合ったオレンジ色の LED があれば、それを使用することができます。 |
| ページトップ |
使用したケースは、100均(セリア)で購入した "ディスプレイボックス M 「和泉化成」" という、スチロール樹脂ケースです。 サイズは、外側(内側)が 95 (89) x 135 (127) x 41 (35) mm で、前面に可動式のフタが付いています。
( 注意. このケースではなく、次の2つ目の加工図のケースを使用することをお勧めします。)
採用ケースとスイッチ配置についての反省点 本機で使用したケースの感想ですが、やはり少しばかり小さかったようで横幅サイズがキツキツでした。 せめて左右にあと+ 5 mm ずつは欲しいところです。 左側面の内側にはプリント基板(3) を取り付け、右側面の内側にはプリント基板(2) を取り付けたのですが、 無理やり ― という感じでまったく余裕がありません。 そして、右側面に取り付けた8個のタクトスイッチについてですが、その操作に十分慣れるまでは操作性はまったく良くありません(はっきり言って悪いです)。 AAA スイッチを押しながら BBB スイッチを押す、という2個のスイッチを ほぼ同時に押す操作があるのですが、この場合に、スイッチを右側面に取り付けたことから、一般的には、左手で本機ケースを支えながら右手では2個のスイッチ操作を強いられます。 この右手だけの2個のスイッチ操作が難しくなります。 ケースの横幅サイズをもう少し大きくすることと、スイッチの操作性を良くするという意味で、私が使用したケースの採用とスイッチ配置は失敗でした。 できればもう少し大きなケースを選択すべきで、スイッチ類も前面に配置をすれば両手操作も可能となり、 また、たとえ片手操作においても右側面に取り付けたときよりもずっと楽になると思います。 そして一転、朗報です このホームページもほとんど完成に近づいたある日のこと、郵便局に用があって外出したときのことです。 郵便局の用も済んで帰り道にフラッと 100 均に入ったところ、良いケースを見つけました。 "ディスプレイボックス L 「和泉化成」" という、 サイズが、外側(内側)が 107 (100) x 155 (148) x 41 (35) mm のスチロール樹脂ケースです。 初めに店でこのケースを見たときには見た目が同じなので、本機で採用したケースと同一のものだと思いましたが、よくよく見てみるとこのケースには "ディスプレイボックス L " と書かれております。 このホームページの ケース加工図 の項の冒頭説明には、確か "ディスプレイボックス M " と書いたような記憶があったのですが、店で他に探してみても "L" サイズのものだけが置いてあり、"M" サイズのものは見当たらないので確信が持てませんでしたが、 どうせ 110 円のことなのでそのまま購入をして帰りました。 帰宅してからさっそく両者を比べてみると、新しく購入した方は間違いなく一回り大きく、以前に購入したケースの兄貴分だったのです。 以前に購入したときには、"L" サイズの兄貴が存在するとは知らずに "M" サイズの弟分の方を購入していたのでした。 ・・・ 何はともあれ、良いケースが見つかりました。 もう一度、本機ケースの作り直しです。
両端の足に挟まれている4個の〇穴はリレーの接点出力の取り出し用もので、コードを繋いだときにケースの座りが悪くなるのを防止するた めのもので、左右に足を取り付けることを考えているが、どのようなものを足とするか ― の具体案が未だ決まっていない。 2つ目の加工図の新ケースと1つ目の旧ケースとで大きく異なっている点は、上の反省点で書いたことを踏まえて、タクトスイッチのプリント基板(2) を前面の右下に取り付けたことです。 ただ、このプリント基板(2) は、 旧ケースの右側面に取り付けることを前提にして作製したものなので、各タクトスイッチ間が若干狭くなっています。 新しく作る場合には、すべて 0.4 インチ間隔にするとより良くなると思います。 そして、右側面が空いたことからその右側面の内側の下位置辺りにブザーを取り付けました。 したがって、部品配置図 で述べた、プリント基板(1) のコイン電池ホルダ上空を2階建てにする構想は取り止めで、 2本のジュラコンスペーサーも廃止です。 プリント基板(1) のブザー接続用のピンヘッダからブザー位置が少しばかり遠退いたために、コード長が足らなくなったので継ぎ足しをして対処しましたが、 新しく作る場合には、ピンヘッダ位置をもっと右方向に移動させると良いと思います。 また、タクトスイッチ関連で、プリント基板(2) に取り付けてあるケーブルとコネクタについては、ケースの蓋を開けた状態ではケーブル長が足らなくなったため新しく作り直しました。 リレー回路に取り付けた2個の動作確認用の LED は、プリント基板(2) が前面に来たことから陰になって、多少は見にくくなりましたが、見る角度を少し変えれば見ることもできるし、正面から見てもプリント基板(2) 越しで周りがボーと赤く光っているので分かります。 他には、プリント基板(1) に直接取り付けたΦ 2.1 DC ジャック(MJ-179P マル信無線電機)については、DC ジャックの取り付け方法 で述べたような面倒な加工は、ケースの横幅が広くなったことから必ずしも必要ではなくなりました。 基板(1) 側に単にピンヘッダ 2P を取り付けておいて、ケース側面には MJ-60 型の DC ジャックを取り付け、両者をコードで結線をするだけでよく簡単になります。 私の場合には、ケースの左側面が DC ジャック(MJ-179P)から遠退いたために、 プラグの太い部分が通るようにケース側面の穴径を通常より大きくする必要が生じました。 |
| ケース加工図 (NixieTubeClockIIICS.CE3) | (NixieTubeClockIIICS2.CE3) | ページトップ |
(主要部品: IC, トランジスタ等) | (データシート) | ||
PICマイコン | .................... | PIC16F886 | |
DC-DC コンバータ | .................... | NJM2360AD | |
三端子レギュレータ | .................... | TA7805S | |
トランジスタ | .................... | 2SA1015 | |
高耐圧 MOS FET トランジスタ | .................... | 2SK3234 | |
ダイオード | .................... | UF2010 | |
ダイオード | .................... | 1N4148 | |
RTCモジュール | .................... | ( DS3231 ) | |
デジタル温度センサ | .................... | DS18B20 | |
I/O エキスパンダ | .................... | PCF8574/74A | |
フォトカプラ | .................... | TLP627-2 | |
TTL ニキシー管ドライバ | .................... | SN74141 | |
ニキシー管 | .................... | IN-17 |
| 部品表
| Excel ファイル (NixieTubeClockIII_parts.xls)
| ページトップ |
PIC16F886 データシート | .......... | https://akizukidenshi.com/goodsaffix/pic16f886.pdf |
ニキシー管 IN-17 データシート | .......... | https://tubehobby.com/datasheets/in17.pdf |
DS3231 データシート | .......... | https://datasheets.maximintegrated.com/en/ds/DS3231.pdf |
DS18B20 データシート | .......... | https://akizukidenshi.com/goodsaffix/DS18B20.pdf |
DS18B20 データシート(日本語訳) | .......... | https://www.ne.jp/asahi/shared/o-family/ElecRoom/AVRMCOM/DS18B20/DS18B20manual.html |
PCF8574/PCF8574A データシート | .......... | https://www.nxp.com/docs/en/data-sheet/PCF8574_PCF8574A.pdf |
DS3231 For PI | .......... | https://www.amazon.co.jp/Rasbee-クロックモジュール-時計モジュール-……(2024年5月現在) |
デジタル温度センサ DS18B20 | .......... | https://www.amazon.co.jp/KKHMF-2PCS-DS18B20-デジタル温度センサ-コントロー/……(2024年5月現在) |
173. 6桁ニキシー管時計(改良版) | .......... | https://xyama.sakura.ne.jp/hp/NixieTubeClockII.html |