« 2014年2月 | トップページ | 2014年4月 »

2014年3月30日 (日)

「天文屋のためのマイコン入門」LEDの取り付け

やっと、部品が届きました。

1403311

早速、LEDをつけてみましょう。回路図はこれ。

1403301_2 

配線図も出しておきます。(上から見た図です)

1403302

まずは、ICソケットとパスコンを半田付け。

1403312

裏側です。パスコンのリード線をそのまま電源ラインにするのがコツです。

1403313_2

最後に、抵抗、LED、電池ケースをつけて完成。

1403314

裏側はこんな感じ。

1403315

そして、最後にキットの書き込みアダプタを製作します。

1403316

これがキットだったことはものが到着して初めて知りました。大した作業でないので、さくさくと作りました。ただ注意が必要です。基板の設定用にジャンパを半田付けするのですが、ピンヘッダと呼ばれるコネクタをニッパで切るように書かれています。

ピンヘッダを壊さないように切るのはけっこう難儀です。ピンヘッダを余分に買っておくのが良いです。もし壊してしまっても、ジャンパすべて半田付けする必要ありません。当面18PのPICマイコンしか使わないので、下の2つのジャンパの半田付けでOKです。ですから、あわてないで大丈夫です。

次回はプログラムの作成方法、書き込み方法を説明します。

| | コメント (0)

2014年3月29日 (土)

「天文屋のためのマイコン入門」演算命令の設計

やっとマルツパーツから、部品が届きました。そして早速LEDをつけて光らせることに成功しました。明日には記事にできると思います。まだ記事の編集をしているところなので、今日のところは命令設計の話しを続けます。、

さてそれでは、演算命令を設計してみたいと思います。マイコンでいうところの演算とは、算術演算と論理演算があります。まずは算術演算です。次のものがあります。

●加算
●減算
●符号反転

掛け算、割り算はないの?と思われるかもしれません。これらの演算はハードにとって負担が大きいので、PICのような小規模なマイコンにはないのが普通です。必要なときは他の演算を駆使してフトウェアで実現するか、そもそも乗除算を必要としないアルゴリズムを考えます。

符号反転は絶対値は等しく、マイナスをプラスにプラスをマイナスにしますが、0からの減算で代用できるので、なくてもかまいません(よってPICにはない)

さて、論理演算には次のようなものがあります。

●論理和
●論理積
●排他的論理和
●反転

これらについては、ここでの説明は省略します。必要なときに説明します。

さて、例として、加算の命令を設計してみたいと思います。2つのデータを加算して、データメモリやレジスタに格納することを次のような記号で表します。

●A + B → C

A、B、Cがそれぞれ別なものの場合、これを三番地形式といいます。これをそのまま命令とするのは、命令コストが、かかるのが容易に想像できます。したがって、三番地形式はあまり小型のマイコンでは採用されていません。(PowerPCとか一部のマイコン)

また三番地形式は演算のたびに新たな格納領域を必要とするのでたくさんのレジスタやメモリを必要とします。

それでは普通のマイコンは演算で、どのような形式をとっているのでしょうか。それは次のようなものです。

●A + B → A
or
●A + B -> B

つまり、演算の結果を元のデータが入っていた場所のどちらかに再格納します。これは、演算のたびに新たな格納領域を必要としません。

ただし、格納先に選ばれた領域のデータは新たなデータに上書きされてしまいます。

上書きされることは不便な場合もありますが、むしろその方が好都合な場合があります。

たとえば、これから、インタバールシャッターのプログラムを作りますが、当然、残り時間とか撮影枚数のデータを保持しているはすです。それは常に更新されており、更新前のデータを覚えておく必要はありません。次々と上書きされていくほうがむしろ自然です。

さて、演算の基本形式が決まったところで、具体的な命令を設計しましょう。転送の場合と同じく、出てくるのものは次の3つです。

W ワーキングレジスタ
F データメモリ
L 数値

●A + B → AまたはB

にW F Lの可能なすべての組み合わせを入れてみます。ただし、L数値は格納先にはなりませんので、それは除外します。

1403281_2

さて、加算ですが、加算は順序を入れ替えても良いので(可換)たとえば、

W + F
F + W

は同じことです。これを考慮すると上記は

1403282

に絞られます。

ここで、転送命令のときと同じように命令コストを計算します。

1403283_2 

W+F->FはFが2つ出てくるので、コスト2では?と思いますが、A+B->Bの形式で2つのFは同じ番地なので、コストは1です。

ここで、コスト2は許されませんので、除外します。(転送命令では同じ番地の転送は例外でOKでしたが、演算命令ではこの特例はないようです。あっても良いと思うのですが、、、)

そうすると、加算命令で許されるのは次の3つです。

1403284_2

次に実際に命令にしてみます。加算なので、ADDという記号を借りて、対象物の記号WとかLを語尾につけます。

1403285_2

1と2が同じになってしまいました。しかし、これらは第二付帯情報で区別することにします。第一付帯情報は、Fの場合は番地f、Lの場合は数値kでしたね。これらをつけると、以以下のようになります。

1403286

これで加算の命令が完成です。

次回は、加算以外の演算命令を説明します。

| | コメント (0)

2014年3月27日 (木)

「天文屋のためのマイコン入門」転送命令続き

前回転送命令の設計をしました。もう一度出してみましょう。

14032410

これを見ると、数値をデータメモリ(レジスタファイル)に転送(つまり書き込み)することだけができないのがわかります。

数値をデータメモリに書き込むためには、ワークレジスタを仲介させて、2回命令で書き込みます。たとえば、数値12をデータメモリの60番地に書き込みたい場合は、

MOVLW     12        12->W
MOVWF     60        W->F(60番地)

1403271

となります。

命令コストを下げるため、数->Fの転送を禁じたのに、2命令使ってしまうなら、結局は同じではないか。と思うかもしれません。

しかし、それでも、これの方が処理が早いのです。マイコンというのは、次から次へと命令を処理していきます。一つの命令を解析している間にも次の命令の読み込みに取り掛かっています。したがって、各命令のコストが一定していた方が処理がしやすいのです。

さて、数値をメモリに書き込むだけで2命令必要なわけですが、確かに面倒であり、プログラムサイズ的にも増えてしまいます。せめて、メモリの初期化など0を書き込むことはよくあるので、それだけでも一命令でできないかと思うでしょう。

これを解決するには、メモリを0クリアする命令を作ればよいのです。つまり数値を転送する命令ではなく、メモリをクリアする命令です。

メモリクリアと0を転送するとはまったく同じことですが、転送する数は0しか許されません。したがって、付帯情報にわざわざ0と指定する必要はなく、命令コストも増えません。

よって、次の2命令をこの転送命令グループに加えることにします。

1403272

ちなみに、

CLRW

MOVLW 0

は、動作的にはまったく同じです。命令コストもまったく同じです。本来必要ない命令ですが、良く見るとフラグ(そのうち説明)の変化だけ異なっています。フラグを変化させたくない場合はMOVLWを使えということでしょうか。いずれにしても上級者編で、初心者は同じものと考えて差し支えありません。

| | コメント (0)

2014年3月26日 (水)

「天文屋のためのマイコン入門」転送命令を設計しよう

それでは、PICの命令表を設計してみたいとおもいます。まずはデータの転送命令です。マイコンの基本構成図を見てください。

マイコンの命令解析機が対象とするのは、主にデータメモリです。PICではレジスタファイルというらしいです。

プログラムはプログラムメモリに格納されていますが、データはデータメモリに格納されています。1403231

さて、この図のようにマイコンの命令解析機は、データメモリからデータをいろいろアクセスしてあれこれします。

ただ、もっと効率よく命令を処理する方式があります。ワーキングレジスタという、データの一時格納領域を用意しておきます。1403232_2

マイコンはメモリ上のデータを直接操作してもいいのですが、ワーキングレジスタにいったん、データをコピーしておき、そこで計算したほうが効率が良いことがあります。

理由は次のとおりです。

1 メモリはマイコンの外部にある場合があり、アクセスが遅い。一方ワーキングレジスタはマイコン内部の、命令解析機の近くにあるので、アクセスが早い。

2 メモリはデータをアクセスするのに、いちいち番地を指定する。特に連続演算の場合は効率が悪い。たとえば、

100番地のデータを3倍する
100番地のデータに2を足す
100番地のデータを100と比較する

などです。一方、ワーキングレジスタは一個しかないので、番地を指定する必要がなく、結果としてプログラムを小さくできる。

さて、このようにマイコンが対象とするものは、メモリとワーキングレジスタと、それともうひとつ、上の例のように、3とか2とか、数そのものがあります。

つまりマイコンの対象とするものは、この3つということになります。さて、この3つを記号で表します。

ワーキングレジスタ Wとします。
データメモリ PICではレジスタファイルというみたいなので、Fとします。
数 PICではリテラルというらしいので、L(エル)とします。

さて、この3つの間の転送ですが、論理的に考えられるものをすべて列挙します。

1403244_2 

1403241_2

最後のF->Fは説明が必要です。これはメモリからメモリへの転送です。たとえば10番地のデータを20番地のメモリへ転送するなどです。

あと、3と5はありえないです。Lは数ですが、数は2とか3とかデータそのもので、データを入れておくものではありません。3という数に5を入れておくことはできません。

よって次の5通りになります。

1403245_2 

1403242

命令コストとは

命令コストという言葉は私の造語ですが、非常に重要な概念なので、理解してください。

●データメモリ(L)
データメモリに関する命令はメモリの番地を付帯情報として必要とするので、命令コストは1です。

●ワーキングレジスタ(W)
ワーキングレジスタは一つしかないので、区別する必要がなく付帯情報もない。したがって、命令コストは0です。

●数(L)
数を扱う命令は、その数(100とか5)自体を付帯情報にする必要があるので、命令コストは1です。

さて、これらの命令コストを先の1~4の組み合わせで計算してみましょう。

1403246_2

4は、命令コストが2です。それで、ここからが重要ですが、PICは命令コストが2は許されません。

なぜ、許されないか、それがPICの設計思想なのです。命令コストを制限することにより、処理速度を高速化する、これがPICの設計なのです。(RISCマイコンといますが)

また、5ですが、違う番地の転送は確かに命令コストが2ですが、同じ番地の転送なら番地指定は一つしかなく命令コストは1です。

したがって、5は同じ番地間の転送という限定条件つきで、OKです。

同じ番地の転送?
たとえば10番地のデータを10番地のメモリへ転送? これに何の意味があるの?と思われるかも知れません。実は、少し意味があるのです。今後機会があれば説明したいと思います。

とうことで、転送命令で許されるのは以下の4つの組み合わせです。

1403247

1403243_2 

さて、それでは、実際に命令を作ってみましょう。

データの転送の命令なので、英語のMOVEを借用して、MOVという記号を作り、上の1から4の組み合わせを語尾につけます。そうすると、

1403248●付帯情報

命令には付帯情報がつき物です。たとえばメモリを操作する命令ならメモリの番地を指定しなければいけません。

たとえば1のMOVWFはワーキングレジスタからメモリへの転送命令ですが、メモリの番地を指定しなければなりません。

したがって、ワーキングレジスタから10番地のメモリへの転送は次のように書かなければなりません。

MOVWF   10

同様に数(L)も付帯情報を必要とします。たとえば数20をワーキングレジスタに転送する命令は次のように付帯情報をつけます。

MOVLW   20

メモリの番地の付帯情報を記号fと書きます。
数の付帯情報を記号kと書きます。

そうすると付帯情報を含めた命令の記法は次のようになります。(小文字のfは番地に置き換えます、kは数値に置き換えます)

1403249

4はメモリからメモリの転送ですが同じ番地なので、付帯情報は一つです。

これでPICの転送命令が完成です。

どうでしょうか、命令というものがほぼ自動的に決まるのがわかると思います。じつは話はこれで終わりではなく、ここがPICの難しいとことですが、実は上の1~4のうち、2と4ですが、

2 MOVFW  f
4 MOVFF  f

PICでは、これを一つ命令にしてしまって、最後のWとFの違いを第二付帯情報として区別するのです。

MOVF  f, w
MOVF  f, f

なんでこんなわかりにくいことするのでしょう。実は第二付帯情報にはデータの格納先の意味合いがあり、後で説明する演算命令で詳しく説明します。いずれのせよわかりずらいことは確かです。

したがって、PICの転送命令は次の4つです。

14032410_5

次回、もうちょと転送命令について説明します。

| | コメント (0)

2014年3月23日 (日)

「天文屋のためのマイコン入門」PICの命令を設計しようその1

ハードの説明が終わったので、今日からすこしプログラムの説明をしたいとおもいます。私も、PICのプログラムは初めてです。で、PICの命令表を見ているのですが、PICの命令は35個しかありません。普通のマイコンは100個以上あるのが相場ですから、かなり少ないです。しかも、まとめられる命令もあるので、実質28個くらいです。

1403230

このようにPICの命令は少ないのですが、反面、わかりにくい、覚えにくいと感じました。

その理由ですが、ワーキングレジスタに対する操作が制限されていることです。普通のマイコンはワーキングレジスタ(アキュームレータともいう)に対する操作は万能で、メモリ操作の方が多くの制約を受けます。

もうひとつは記法がわかりずらいです。命令の対象物(ワーキングレジスタとかレジスタファイル)の記号が、オペランドのほうになく、命令名の語尾についていることです。

ちょと聞きなれない言葉を出してすみません。とにかくわかりずらいことは確かです。

一方で、PICの命令を設計した人の立場に立てば、14ビット固定長命令という強い制約の中では、これしかなかったんだろうということは容易に想像つきます。記法のわかりにくさはありますが、たぶん私が設計しても同じようなものとおもいます。

つまり、PICの命令というのは、

使う人の側から考えると、難しく覚えにくいのですが、
PICを設計する側から言えば、もうこれしかないという最小の命令セット

であり、PICを設計する側から理解するのが、わかりやすいのではないかとおもいます。

ということで、

PICの命令表を天下り的に出して、この命令はこれこれね。

という説明をするのではなく、まったく白紙の状態から、PICの命令を設計するという立場にたって、PICの命令表を作成してみようとおもいます。

PICの命令を見ていると、なんでこの命令があって、この命令はないんだろうとかいろいろ不思議におもうことがあるとおもいますが、これからの説明を聞けば、すべて解決するはずです。

これから数回はPICの命令表をつくるという企画になります。マイコンを本当に理解したい人は読んでください。とりあえず、動くものがほしいという方は、読み飛ばしてもかまいません。

1 転送命令を設計する
2 演算命令を設計する
3 制御命令を設計する

これで、PICの命令表が完成します。

| | コメント (0)

2014年3月22日 (土)

「天文屋のためのマイコン入門」デジタルの3つの状態

マルツパーツより部品が届くのが3月27日だそうです。まだ先なので、理屈の話をします。今日はデジタルの3つの状態についてお話します。

下図はマイコンとかデジタルICとかのデジタル素子をあらわします。

1403221_2

図のようにデジタル素子には普通、入力とか出力があります。今このデジタル素子に電源が投入されていて、動いているとします。そうすると、デジタルの出力は'0'か'1'です。もし電源が5Vなら、0Vか5Vです。

次に入力側を見てみましょう。入力ですから外部から、'0'を入力された状態と'1'を入力された状態の2通りがあります。

実はもう一つの状態があります。「何も接続されていない状態」

これを、ハイインピーダンス状態といいます。インピーダンスとは抵抗です。ハイインピーダンスとは抵抗が無限に高い状態、つまり絶縁状態ということです。

何も接続されていないから、'0'では、と考えるのは間違えです。その違いを体感してみましょう。デジタルテスタを用意して、電圧測定モードにします。

1403222

プローブを何も接続していないと、電圧表示は数mAから数百mAで安定しないと思います。これがハイインピーダンス状態です。

1403223

一方、プラスとマイナスのプローブをショートさせると0Vで安定します。これがデジタルの'0'です。

'0'は、0Vを出力してあるから0なのです。何も接続していない、あるいは何も出力していない状態は、'0'ではありません。

さて、ここからが重要ですが、デジタル回路は「ハイインピーダンス状態」を嫌います。理由は次の通りです。

1 ハイインピーダンス状態は不安定で、周りの環境に影響されやすく、'0'にでも'1'にでもなる。したがって、機械が予期しない動きをする。

2 入力側がハイインピーダンス状態の場合、周りの環境の影響により、一時的に大電流が流れ、ラッチアップという現象を起こし、デジタル素子を壊す恐れがある。

例題

一つ具体例を示します。

次はマイコンの入力ポートにスイッチを付けて状態を読み取る回路です。

1403224

スイッチがONの時は、5Vに接続されますから、入力ポートからは'1'が読まれるはずです。
スイッチがOFFの時は、何も接続されず、ハイインピーダンス状態になります。この場合は不安定です。'0'と読まれる確率の方が高いのは確かですが、'1'と読まれる確率もそう低くはありません。

この状態はまずいので、次のように改良します。1403225

ポート入り口近くに、抵抗を介しGNDに接続します。こうすると、抵抗を介しているとはいえ、GNDに接続されているので、'0'が確定します。このような処置をプルダウンといい、このとき使う抵抗をプルダウン抵抗といいます。

抵抗を間に入れる理由は、抵抗を入れないと、スイッチがONの時、ショートしてしまうからです。抵抗値は数K~10KΩくらいが普通です。

さて、今の例は正論理のスイッチ入力ですが、論理を反転した負論理のスイッチ入力の場合は次のようになります。1403226

スイッチがONの時は、GNDに直結されるので、'0'が読まれます。
スイッチがOFFの時は、抵抗を介し5Vに接続されるの'1'が読まれます。

この場合はプルアップといい、抵抗をプルアップ抵抗と言います。

世の中、デジタル回路を見渡してみると、プルアップの方が圧倒的に多く、プルダウンはあまり見ません。理由の一つには、デジタルの世界では、負論理の方が多いからだと思います。私もマイコンとの付き合いが長いので、負論理の回路の方が普通に見えてしまいますが、一般の人からすると、正論理の方が分かりやすいでしょう。

さて、例題の2つ目です。次の図はマイコンの出力ポートに何かの装置がつながれています。何かの装置は、たとえばモーターとかです。

1403227

実は、多くのマイコンは電源投入直後は、ポートは入力状態になっています。つまりハイインピーダンス状態です。プログラムで初期化して、わざわざ出力状態にするのです。

ということは、電源を入れて、プログラムで出力に設定するまでの、ほんのわずかの時間ですが、ハイインピーダンス状態になってしまいます。

出力先が、LEDとかなら別にいいのですが、モーターとか動く物なら誤動作の原因になりますし、大きな機械なら、最悪、人命にだって影響するかも知れません。

そこで、電源投入直後の不安定状態を解消するために、次のようにプルップしてやるので正解です。1403228

●プルアップ抵抗を内蔵しているものもある

マイコンのポートの中にはプルアップ抵抗を内臓しているものもあります。ただし、この機能を利用するのに、プログラムで初期設定が必要な場合があります。PICがそうです。

この場合、内蔵のプルアップ抵抗を使う場合は注意する必要があります。

1 電源投入から、初期設定は終わるまでは、プルアップがない状態であるので、機械の誤動作に注意する必要がある。
2 重要な装置を作る場合は、マイコンが壊れた場合も想定する。つまりマイコンが壊れてプルアップ機能が使えなくても、装置が不安定な動きをしないようにする。

以上のような理由から、よほどコストを削減したい場合を除き、プルアップ抵抗は外部に付けておいたほうが無難といえます。

最後にマイコンの未使用ピンの処理について話しておきます。マイコンの未使用ピンのうち、入力方向のもの(つまり全ポートも含む)は、ハイインピーダンス状態になっているので、'0'か'1'かに確定させておく必要があります。

1403229_2

5V、GNDどちらでも良いです。半田付けしやすいほうにすればよいでしょう。また抵抗を入れる必要はありません。

今日はここまで、お疲れ様でした。

| | コメント (0)

2014年3月19日 (水)

「天文屋のためのマイコン入門」マルツパーツでお買い物その2

続きです。

●アナログスイッチ MAX323CPA

1403191

アナログスイッチとは、デジタル信号でON/OFFできるスイッチ ICです。カメラのリモートシャッターに使います。

●ロータリースイッチ A6A-10RS

1403192

1~10の状態を指定できるロータリースイッチ(デジタルスイッチ)です。1~16を指定できるものもあります。(16進) 正論理のリアルコードタイプを選択します。

●プッシュスイッチ(タクトスイッチ) TVDP01-9.5

1403193

スタート、ストップスイッチとして使います。

●2.54mmピッチユニバーサル基板 ICB88G 72mm*47mm

1403194

基板です。初心者の方はあまり安物を買わないほうが半田付けしやすいです。私はガラスエポキシ基板が好きでよく使います。

●赤色LED HT333SRD

1403195

インターバルシャッターの動作状態を示すためのLEDです。何でもいいです。

●1/4Wカーボン抵抗 10Kオーム

1403196

後で説明する。プルアップ、プルダウン抵抗に使う抵抗です。たくさん使うのでたくさん買っておきますが、そもそも100本入りしか売ってません。

●1/4Wカーボン抵抗 680オーム

1403197

LEDの電流を調整するための抵抗です。今回電池の電圧が4.5Vなので、抵抗には4.5V-2V=2.5Vの電圧がかかります。(2VはLEDの電圧) 

したがって、流れる電流は

2.5V/680=3.7mAとなります。

消費電流を抑えるため、このくらいの値にしました。昼間なら暗いですが、夜使うので大丈夫でしょう。

●積層セラミックコンデンサー 0.1μF RPEF11H104Z2P1A01B

1403198

デジタル回路では、それぞれのICの近くのプラス電源ラインとマイナス電源ラインの間をショートさせるようにコンデンサを入れます。コンデンサは直流成分は通しませんが、交流成分は流れるので、交流成分をショートさせることにより電源ラインのノイズを取ることができます。このようなコンデンサをパスコンといいます。0.1μFがよく使われます。コンデンサ表面には104と書かれていますので、覚えておきましょう。

プルアップ・ダウン抵抗と同じようにたくさん使いますので、たくさん買っておきましょう。

「パスコンなんていらねぇ~」と豪語するような人がいますが、私は昔、そのような人に仕事を依頼してひどい目にあったことがあります。パスコンさえ手抜きするような人は、ほかでも手抜きしている可能性が高いので要注意です。

以上で部品の説明は終わりです。

まだ部品が届いていません(納期すら確定していないようです。)届き次第LEDを光らせたいと思います。

| | コメント (0)

2014年3月18日 (火)

「天文屋のためのマイコン入門」マルツパーツでお買い物その1

今日は「ハイインピーダンス状態」について説明する予定でしたが、説明ばかりではつまらないし、せっかく前回LEDのつなぎ方を説明したので、実際につなげて光らせてみようと思います。

ということで、急遽、マルツパーツでインターバルシャッターに必要な部品を購入することにしました。

購入したリストはこの通り。

1403181

合計金額は9千円ちょっと。安価にマイコンを始められるのもPICマイコンの魅力です。

一つ一つ説明していきたいと思います。

●PICマイコン本体、PIC 16F88-I/P(L)

1403182

マイコン本体です。予備のため2個購入しました。

●ICソケット 18P  ICC05-018-360T-F

1403183

ICを挿すICソケットです。PICマイコンにプログラムを書き込む時、基板から外すので、ICソケットは絶対に必要です。16F88と同じ18PのICソケットを買います。

●PICマイコンプログラム書込みツール PICKit3 PG164130

1403184

PICマイコンにプログラムを書き込むツールです。パソコンとUSB接続するタイプです。

●PICマイコン書込みアダプタ MPIC-DPPA

1403185

PICマイコンを基板から外し、このアダプタに接続してプログラムを書き込みます。PICマイコンを基板から外すことにより書き込み時のトラブルを避けることができます。最初のうちはこのツールを使ったほうが良いでしょう。

●7セグメントLED 赤色 カソード KW1391CSB

1403186

おなじみ7セグメントLEDです。正論理('1'の状態でアクティブ)でLEDを光らせるためには、カソードコモンというタイプのものを購入してください。

●電池ケース SBH331 AS

1403187

このPICマイコンの動作電圧範囲は4.0V-5.5Vです。従って、今回電池3本(電圧4.5V)で動作させることにしました。従って、単三電池3本用です。電源スイッチが付いていて便利です。

残りのパーツについては次回説明します。

| | コメント (0)

2014年3月17日 (月)

「天文屋のためのマイコン入門」LEDを付けよう

インターバルシャッターの構成が決まったところで、実際の回路図を書きたいところですが、マイコン回路を理解する重要な2つのこと最初に書いておきたいと思います。

一つは、LEDの接続方法について、もう一つは「ハイインピーダンス状態」についてです。この2つのことを理解していれば、だいたいマイコン回路を理解できるのではないでしょうか?

今日はLEDの接続方法について説明します。マイコン(のポート)にLEDを付けて光らせる回路は簡単です。このような回路で大丈夫です。1403171

この回路ですが、ポートの状態がデジタルの'1'の状態、あるいは'H'の状態ともいいます。この場合、ポートに電源電圧と同じ電圧がかかります。仮に5Vとします。そうするとLEDの両端に電位差が発生し、LEDが光ります。

このように、ポートの状態が'1'の時、何かがアクティブになる(今の場合LEDが光る)論理のことを正論理と言います。

出力ポートに何かを接続する場合は電流制限に十分注意する必要があります。

LEDに流す電流は通常20mAくらいです。この電流はどこから来ているかというと、図を見れば分かるとおり、ポートから流れ出しています。しかし、ポートからどれだけの電流が取り出せるのでしょうか?調べてみるとPICマイコンの場合25mA取り出せるようです。

これはマイコンの中ではかなり大きな値です。2mAくらいしか取り出せないマイコンはいっぱいあります。この25mAという値もおそらくLEDを意識していて、LEDを外付け部品なしで光らせようとするPICの設計思想だと思います。

ですから、もし電流制限に引っかかるようなら、間にトランジスタを入れたり、ドライバICを入れたりする必要があります。

もう一つ、制限があります。一つ一つのポートに25mAという制限がありますが、RAとかRBとかのポートグループごとにトータルの制限があります。たとえば16F88の場合、一つのポートグループでトータル100mAの制限があります。したがって、20mAのLEDなら5つしか接続できないことになります。(ただ後で説明するように20mAも流す必要はない)

1403174

さて、正論理のLED接続について説明したので、今度は負論理のLED接続です。この図の場合、ポートの状態が'0'、あるいは'L'あるいは0Vの時、電位差が発生し、LEDが光ります。1403172電流の向きに注意してください。ポートに電流が流れ込んでいる状態です。ポートに電流が流れ込んでいるので、ポートの方向が入力と勘違いしてはいけません。ポートの方向と電流は関係ありません。ポートはあくまでも電圧0Vを出力しているのであって、その結果、電流が流れ込んでいるのです。

なんでわざわざ負論理の接続方法を採用するか、理由があります。マイコンの中には、ポートから電流を吐き出す場合と、流し込む場合で、電流制限に差があり、流し込む場合の方が制限値が大きい場合があるからです。(ちなみにPICの場合両方とも25mA)

さて、最後に回路図の抵抗の値を計算しておきましょう。先ほどLEDには通常20mA流すと書きましたが、最近のLEDはもっと少なくても明るく光るものがあります。また、天文用途の場合、夜間に使うので、それほど流さなくても大丈夫です。私はいつも5mAで計算しています。これだと、7セグメントLEDを全部つけても35mAなので、トータルの電流制限にも引っかかりません。1403173

さて、抵抗値の計算です。LEDの両端の電圧は固定でだいたい2Vです。ですから、電源電圧が仮に5Vなら、LEDの両端に3Vかかります。したがって、オームの法則により、抵抗値Rは

R = 3V / 5mA = 600Ω

ということになります。ただ、電源電圧はまだ未定です。

今日はここまで。

| | コメント (0)

2014年3月14日 (金)

「天文屋のためのマイコン入門」インターバルシャッターの構成

少し、時間が空いてしまいましたが、インターバルシャッターについて、その構成、基本設計をしてみましょう。

ここで重要なのは、万能機能にこだわる必要はないと言うことです。たとえば、インターバルシャッターなら、露出時間が1~99分まで設定でき、インターバル時間や繰り返し回数が設定できるなどです。

こんな機能なら市販品を買えばいいのです。自作の良いところ機能を自分にとって必要なものだけに絞り、そのかわり、思いっきり使いやすくします。

たとえば、インターバル時間ですが、私はこの7年間、ずっと10秒です。ですから、インターバル時間を設定するスイッチなど必要ありません。また露出時間が10分を超えることもありません。

それでは実際に構成を考えてみますが、ここで重要なのはポートは16本しかないということです。

シャッターの信号にポートを一本使うでしょう。また、動作中であることを示すLEDでポートを一本使います。またスタート、ストップのスイッチでポートを1本使います。これだけでポートを3本使ってしまいます。残りは13本です。1403141 インターバルシャッターで一番重要なのは、露出時間や繰り返し回数などの数値の設定方法です。良くある方法はアップスイッチとダウンスイッチで数値を設定する方法です。これでもいいのですが、使うのけっこう面倒ですよこれ。また電源を切ると前の設定は消えてしまいますし。

私が推薦したいのは、ダイヤルスイッチです。(デジタルスイッチ)1403145_3

たとえばこのスイッチは1~10の値を設定できます。(正確には0~9)

ただし、ポートを4本使ってしまいます。なぜなら2の3乗は8で10通りを指定できませんが、2の4乗なら16通りを指定できるからです。(したがって、1~16を指定できるスイッチもある)

このスイッチを露出時間、インターバル時間、繰り返し回数にそれぞれ使用すれば16本のポートに納まります。1403142

ここで、このスイッチは1~10までしか指定できないから、露出10分までしか使えないと思うのは早計です。ここが自作の良いとこです。何も1~10をそのまま露出時間に割り振る必要はまったくないということです。たとえば、2の倍数で

2,4,6,8,10。。。

と割り振れば、20分まで設定できますし、何も比例関係にする必要も、昇順に割り振る必要もまったくありません。たとえば一番良く使う露出時間を1番に割り振っても良いわけです。ここが、自作、あるいはマイコンの良いとこです。割り振りを変えたい場合はいつでもできます。

さて、このスイッチ3つの構成だと、表示機能がまったくないので、のこり露出時間も、撮影枚数も表示させることができず、実際に使用すると不便です。(実際私は以前使っていた)

そこで、7セグメントLEDを一つ付けてみます。ただし、ポートを7本も使ってしまうので、スイッチは一個だけで、インターバル時間は固定、繰り返し回数は設定できず、ストップボタンを押すまで永遠に繰り返すという仕様になってしまいます。1403143だけと私はこれで十分と思います。この構成を採用することにします。

ちなみに、7セグメンントLEDは表示パターンが10通りあるので、論理的にはポート4本ですべて表示できるはずです。(2の4乗=16)

実際、7セグメントデコーダーというICを間に入れれば、4ポートで表示できダイヤルスイッチを一個増やすことができます。1403144

ただ、外付け部品が増えてしまい、PICの良さがなくなるので、今回はこの構成は見送ることにします。最後余裕があれば作ってみますけど。

今日はここまで。

| | コメント (0)

2014年3月 8日 (土)

「天文屋のためのマイコン入門」ピン機能図について

ここでPIC16F88のピン機能図について少し説明しておきたいと思います。というのはピン機能図を見れば、そのマイコンのだいたいの機能がわかります。

1403064

いろんな記号がごちゃごちゃ、書いてあります。実はひとつのピンに複数の機能が割り当ててある場合はこのようにごちゃごちゃしてきます。

たとえば、1番ピンはRA2、AN2、CVref、Vref-の4つの機能が割り当ててあります。記号の意味ですが、正確にはマニュアルで調べますが、だいたい記号の相場は決まっていて、これを見る限る、このマイコンには次のような機能があることがわかります。

ポート RA0 RA1 RA2 RA3 RA4 RA5 RA6 RA7 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7
外部割込み INT
シリアル通信 RX TX CK DT
アナログ入力 AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7
などなど

ポートというのは、マイコンとデータのやり取りをする基本的な機能で、ポートから0か1のデータ(つまり0Vか5V)を出力したり、逆にポートに0か1のデータを入力してやったりします。

ひとつのピンに複数の機能が割りついている場合は、それらの機能は同時には利用できません。たとえばシリアル通信を利用するなら、ポートのRB2やRB5などは利用できません。設計上注意してください。

また矢印が書いてありますが、この向きが重要です。主に、ポートとして使用する場合のデータの向きを表します。

●矢印が両方向の場合
 このポートは双方向どちらでも設定できます。つまり、LEDでもスイッチでもどちらでもつけられます。

●矢印がマイコンから外側の向いている場合
 データの向きはマイコンから外部です。つまり出力方向です。LEDはつけられますが、スイッチはつけられません。

●矢印が外側からマイコンに向いている場合
 データの向きは外部からマイコンです。つまり入力方向です。スイッチはつけられますが、LEDをつけても光らすことはできません。

このマイコンの例で言えば、RA5が入力専用ポートですね。したがって、ここにLEDとか、モータとかをつけないようにします。スイッチならいいです。

また、RA7 RA6も片方の矢印ですが、これたぶん間違えですね。双方向が正しいと思います。

さて、この連載ではしばらくはポートの機能しか使用しないので、ポート以外の記号を省略してみましょう。

1403081

すっきりしました。ポートは全部で16本あるのがわかります。そしてRAという8本のグループと、RBという8本のグループがあるのがわかります。

VssとVddは電源です。

次回は、インターバルシャッターの機能設計をしてみます。

補足
ポートという言葉は、私がここで使っている意味よりももっと広い意味で使われる場合があります。たとえばシリアルポートとか、もっと厳密に言うなら、I/Oポートという言葉がいいのかもしれませんが、ポートと簡略化しています。ポートといったらIOポートのことと思ってください。

| | コメント (4)

2014年3月 6日 (木)

「天文屋のためのマイコン入門」PICマイコンの選択

さて、さて、マイコン入門、始めましょう。

まずは、PICマイコンの機種の選択です。普通はですね。要求仕様があって、それを満たす一番低コストのマイコンを選択するのが定石ですが、学習目的ですので、毎回機種が異なるのも覚えにくいので、何かひとつ機種を決め、これで何ができるかという逆の発想でやってみたいと思います。

それで、私もいろいろ調べたのですが、16F84Aという機種が定番中の定番らしいです。これでも良いと思ったのですが、この上位互換に16F88というクロック内蔵の機種があります。クロック内蔵なら部品点数も減るので、これがいいんではないでしょうか。

ということで、16F88にきまり。

1403061

ちなみにマイコンの選択方法ですが、もっとも初歩的な決め方は、まずはポートの数です。ポートというのは後で詳しく説明しますが、今のところマイコンのピン数と思っていただいてもさほど間違えではありません。
たとえば、7セグメントLEDを使うなら、それだけで、ポートを7本も使ってしまいます。したがって、ピン数の多いマイコンを選択するようにします。

ポートの数が決まったら、必要な機能、たとえば正確な時間間隔を必要とするようなアプリケーションなら、タイマー機能が必要とか、アナログ入力が必要ならADコンバーター内蔵とか、という具合に選択していきます。

ちなみにこれが、16F88のピン機能図です。

1403064

16F88のピン数は18本ですが、2本は電源なので、ポート数は16です。(単純にピン数-2がポート数とは限りませんのあしからず)

さて、マイコンのプログラムを作ったら、それをパソコンからマイコンに書き込むためのハードが必要です。これをPICライターといいます。

PICライターには、2つの方式があります。

ひとつは、PICマイコンを基板から取り外して、ライターに挿入して書き込む方式です。プログラム開発中はプログラムの書き換えは頻繁におこります。そのたびにマイコンを基板からはずしたり、さしたりするは、考えただけでもめんどくさそうです。

一方、マイコンを基板に挿入したまま書き込む方法を「オンボード」といいます。当然オンボードの方がよさそうです。

ということで、PICマイコンと同じメーカーが出している次のPicKit3というライターを購入すればオンボードで書き込みできます。

1403062_2

ところがですね。この「オンボード」ですが、よくよく考えてみるとですね。プログラムを書き込むためのICのピンがですね。他の機能と独立でないんです。これはピン数の少ないPICならでは問題ですね。つまり書き込むときに、PICマイコンにつながれた他の装置と干渉するおそれがあるし、最悪その装置あるいはPICマイコンを壊します。

ですから、そのへんはよく注意して設計する必要があります。

それを考えると、最初のうちは余計なトラブルを避けるため、面倒ですが、いちいちマイコンを基板から外し、書き込みしたほうがよさそうです。

ということで、上記PicKit3に以下のマルツパーツのアダプタも一緒に購入すれば、この方式で書き込むことができます。

1403063

さて、次回からは、いよいよ、インターバルシャッターを作ってみましょう。次回はマルツパーツで必要な部品の購入です。

| | コメント (0)

2014年3月 3日 (月)

「理想のポタ赤を作る」2軸駆動

今日は3つのキーワードの2番目、2軸駆動について説明したいと思います。2軸駆動というのは、もちろん2軸モーター駆動です。

さて、2軸駆動というと、オートガイドや自動導入かと連想されると思います。しかし、その前にもっと重要なことがあります。

私は、スカイキャンサーを2軸駆動に改造したのですが、これで一番良かったと思うことは、オートガイドできることではなく、「電動微動」が使えるようになったことです。ほんとこれは便利。今まで手動で、もうちょっと、とか、あっ行き過ぎたとか、構図合せに苦労していたのですが、電動微動のおかげで、楽になりました。特に、モザイクのような微妙な構図合せが必要な時は重宝します。

ポタ赤までに2軸駆動というと大げさなようですが、ポタ赤にマンフロットの微動雲台載せてる人もいるくらいですから、ありがたいことは確かです。

さらにもっと発展させて、「ステップ微動」というのを考えています。つまり、ボタンを一度押すと、1度回転するとか、5度回転するとか。これがあればですね。モザイクなんか楽勝なわけです。
 さらに次回説明するオールイワンでインターバルシャッターを内蔵することにしていますが、これと連動せれば、設定枚数を撮影したら自動的に写野を回転させることも可能で、完全自動モザイク撮影も可能です。
(このポタ赤はセカンド機材としての使用を想定していますので、撮影者ができるだけ、メインの機材に集中できるような配慮は考えたいと思います。)

また、このステップ微動を使えば、暗い撮影対象を導入するとき、近くの明るい星からの離角を事前に調べておくか、あるいは機械にプリセットさせておけば、セミ自動導入もできてしまいます。自動導入ソフトも要らないわけです。

どうでしょうか、2軸駆動にするだけで、これだけの恩恵があるわけです。確かに価格や大きさは大きくなりますが、恩恵も大きいと思います。

もちろん、2軸駆動にするわけですから、オートガイドできない理由はありません。オートガイドできるようにします。

このオートガイドですが、近年オートガイド革命が起こっていると思います。

昔は、ガイド鏡の負担も大きかったです。6cmクラスの鏡筒を重いガイドマウントに載せて、ガイドする。しかし、最近は、ガイドカメラが高感度化したおかげで、小さなガイド鏡にガイドマウントなしで、搭載できるようになりました。こうなると、ポタ赤でオートガイド化してもさほど、システムの重量化にはならないと思います。

後は、パソコンを使う煩わしさはありますね。まだ私は知りませんが、スマフォや、タブレットでオートガイドできればいいですね。(もうある?)
そのときのためにBluetoothなどの無線端末を搭載する予定です。Bluetooth搭載自体は、大きさ的にも、技術的にも、金額的にもそれほど負担にはなりません。最終的には車の中で何でもできるようにしたいですね。

最後に自動導入です。2軸駆動にするわけですから、当然、自動導入も考えています。ただ難しいのは、小型化のため、大きなモーターを使えないので、高速でのトルク不足が考えられます。

これに関しては、何百倍とかの高速回転はあきらめています。確かに眼視観望では、遅いとイライラしますが、撮影メインと考え、さらに基準星を撮影対象の近くに選べば、それほど高速でなくてもいいかなと思っています。いずれにせよ、自動導入はできるようにしたいと思います。

いかがでしょうか2軸駆動。ほしくなったでしょ。

次回は最後のキーワード、オールインワンについて。

| | コメント (4)

2014年3月 2日 (日)

「理想のポタ赤を作る」3つのキーワード

さて、さて理想のポタ赤づくり。どんなポタ赤になるか、3つのキーワードで説明したいと思います。3つのキーワードは結論を先に言ってしまえば。

1 ドイツ式
2 2軸駆動
3 オールインワン

今日は、1のドイツ式について語ってみたいと思います。

ポタ赤といえば、赤経軸しかなく、それに自由雲台をつけたイメージが強いと思います。しかし、天体写真ベテランの方はもう常識と思いますが、この自由雲台が実に使いずらい。

「自由雲台は不自由雲台」という名句?もありましたね。

私は自由雲台は完全否定するつもりはありませんが、広角撮影や、地上を入れた撮影にはいいのではないかと思います。しかし、それ以外ではやはり使いにくいものと思います。

自由雲台の使いにくさですが、

1 構図を決めるのに両手を使う、しかもロックするまで手が離せない
2 バランスがとりにくい
3 ロックすると構図がずれる
4 構図の再現性がない(モザイクやコンポに不利)
5 構図を赤経、赤緯線に合わせにくい

最後の5ですが、意外と注目されませんが、天体写真って縦横が赤経、赤緯線に合ってないと、同じ写真でも下手くそに見えるんですよね。まぁ、慣れの問題なのですが、ぎゃくに合ってると、同じ写真でもうまく見えるんです。

私も以前は自由雲台を使っていましたが、これで一年は無駄に過ごしたと思っています。自由雲台をやめてから、ほんと天体写真のレベルが上がったと思ってます。

さて、それでは自由雲台は良くないとすれば、どうすればよいか。

私は、あらゆる赤道儀の中で、ドイツ式が一番良いと思ってます。まず、バランスが最高にいいです。クランプフリーでも動かない。ほんと構図合わせが楽です。

バランスだけで言えば、フォーク式も良いのですが、ただフォーク式は北側が覗きにくい。カメラのファインダーを使用しないなら、問題ないですが、ファインダーを覗くなら、フォーク式は万能ではないと思います。

ドイツ式の欠点は。

1 余計なウエイトを必要とする。
2 大きさのわりにかさばる。

これ、けっこう重要なんですよね。私はスカイキャンサーという小型の赤道儀を使っているんですが、これがすっぽり収まるケースを作るとなるとけっこう大きくなるんです。だからポタ赤向きではないんですね。

でも、今回私はなんとか、すっきり納まる形状にまとめたいと思っています。これさえ解決できれば、ドイツ式赤道のメリットははかり知れないです。

世の中いろんなポタ赤が販売されていますが、

結局、メーカやサードパーティーからドイツ式ユニットが販売されんですよね。

だったら、最初から「ドイツ式で設計」と思うんです。

| | コメント (6)

« 2014年2月 | トップページ | 2014年4月 »