top of page

Lesson. 11 入力デバイス §8. 磁界近接センサ

  • ahedgehogchase
  • 2019年4月3日
  • 読了時間: 8分

●磁界近接センサ

OK。お次は磁界近接センサだ。ここに センサ がある。そして、こちらは永久磁石だ。ここで、僕が測定しようとしていることは磁界に近接しているかどうかだ。 このセンサには方向を示す記号が印字されている。そしてこの近接センサをひっくり返すと、磁界が逆方向になる。そしてそれは秩序立ったものだ。 磁石を取り除いてみよう。その上で、センサを戻してひっくり返してみたらどうなるだろうか?今、数値が変化したのがお分かりだろう。実際のところ、最も高感度な状態においては、君たちは地球の磁場を測定することもできる。地球から見て、君たちが遠ざかったのか近づいたのかを測定することができるんだ。 OK。このセンサは1ドル程度のコストで、磁界を測定するものだ。 方向の測定に用いることもできるが、一般的には近接センサとして用いられる。例えば、フタがあって、それが閉まるとフタに設けられた磁石とセンサが近づくんだ。磁石の存在によってフタが閉まったことを検知するんだ。これが一般的な使い方だ。

●近接センサの基板

それで、 この基板 には磁界センサが搭載されていて、電源があって、グランドがあって、これは出力の電圧を生み出す。これで僕は出力することができる。 そしてこれが 磁界センサを搭載した基板 だ。 ●近接センサ用のC言語プログラム で、こちらが C言語のプログラム だ。ここで僕たちが行うのは、アナログ-デジタルコンバータの値を読み取ることだ。 A/Dコンバータでは、多くの事象が一度に起こる。もう一度説明しておこう。 (データシート参照) 君たちはFree Runしながら変換し続けることができる。これは最後まで値を読み込んだとき、変換することができる。変換が完了したとき、これは中断して完了したことを知らせるようにすることができるし、もしくは君たちがチェックし続けるというやり方も可能だ。 ●変換値を読み込むときの裏ワザ A/Dコンバータは単サイクルでは変換を行わない。14サイクルくらいで変換するようになっていたと思う。変換のサイクルはどのような方法で値を読み込んでいるかに依存する。いずれにせよ、A/D変換するには数クロックかかるのだ。 さらに、僕はかなり微小な変化を読み込みたいと思うので、一回だけ読み込むのではなく何回も読み込みたい。そういう訳で、僕は100回にセットしている。このやり方で僕は電圧を100回読み込み、ノイズにより各時間でそれがわずかに変化するのを検知しようとしている。そして、それらの値を足し合わせて分解能を向上させているんだ。

複数回値を読み込むことにより、これらの基板はもう一桁高い分解能を得る (コードを見ながら)ここで変換を開始する。僕はA/Dコンバータに変換するように命令している。 そして、ここで僕は確認する。いつ変換が終わったのかを。 読み込みが終わったとき、A/Dコンバータを読みに行って、演算の結果を一時的に記憶する。 この累算器(アキュミュレータ)には僕は32ビットの数字を用いている。 僕は次々と読み込まれる変換値を累算するのに十分な容量を確保してやるためにこの数字を用いている。 そういう訳で、僕がCコンパイラ内で値を読み込んでいるとき、A/Dコンバータは十分に賢いのだ。それが意味するところは、高位バイトと下位バイトを読み込むということだ。そして、この32ビットの数字の中で累算する。 それが完了すると僕はフレーミングを送信する。そして、3バイトのデータを送信する。なぜならば、僕はアキュミュレータから下位バイト、中位バイト、そして高位バイトを送信しようとしているからだ。これが僕の読み込んでいるものだ。 ●近接センサ用のpythonプログラム そして、pythonのプログラムにおいても、先ほどのものと非常に似た過程を辿る。 僕はユーザインタフェースを設定して、フレーミングを探し出し、低位(ちっこい)、中位(そこそこの)、高位(でっかい)バイトを読み込み、プロットアウトする。 繰り返しになるけれども、これにより磁石への近接を検知することごできる。というか、高い分解能で磁界を測定することができるんだ。

●累算と平均

受講者:先生は高位バイトの中に低位バイトを与えているんだと思うんですけれども、それって単に32ビットの数字が現れているだけじゃないんでしょうか? いや、それらは実際には4バイトなんだ。僕は4バイトのデータを送信しているんだ。なぜならば、僕は決して最後まで使い切らないからだ。だから4バイトの数字なんだ。32ビットの数字として定義はしているけれどもね。 受講者:それは平均したら4バイトってことでしょうか? 平均ではない。これは累算されたものなんだ。つまり、もう一度説明するけれども、コンパイラは非常に賢くて、アキュミュレータは4バイトの数字だ。だからこれは2から32まで表現することができる。 僕がここに書き込んでいるものは、それらを平均したものじゃない。ある意味において、それは平均と言えなくはないけれども、必ずしも平均し続ける必要はないんだ。 ここで行なっているのは累算であり、全ての値を積み上げている。全体が算出されて、それを100で分割すると、それは平均になるよね。でも、100の数字を足し合わせることにより得られたポイント全体は、より高い分解能を得ることができるんだ。 (プログラムに戻って)僕がハイライトしている部分(accum += ADC)は明白ではない。 ADCというのはコンパイラによって定義されたマクロで、これは「ADCに行って低位バイトをと高位バイトを取得するように!」、と命令しているんだ。 16ビットの数字が加算されて32ビットの数字になるので、これはそれを加算して累算していることを認識している。 内部的にはプロセッサには8ビットの抵抗しか内蔵されていない。でも、コンパイラはどうやればそれを用いて32ビットの数字を作り出すのかを知っているんだ。

OK。君たちはこれを用いて多くのことを行うことができる。1つ以上の磁力計を加えることでね。実際のところ、磁界の方向なんかも測定することができる。そして、君たちはこれらのインターフェースデバイスの類のものを全て利用することができる。 ●Web上でセンサを動かす さて、ここで 2つ目の例 をお見せしよう。 この例は、一見先ほどと同じように見えるよね。でも、これはWebページ上で実行されているんだ。つまり、これは先ほどの例と同じ動きをしているんだけれども、今お見せしているのはpythonプログラムじゃなくてJavaScriptプログラムなんだ。Webページの中にアクセスしているってわけだ。 そういう訳で、この例がどうやって作動しているかっていうと、まずここにWebページがあるとしよう。でも、これは機能しない。だって、これらは何にも繋がっていないのだからね。だから、このウェイページに僕は棒グラフを設定して、ウェブソケットと呼ばれるものを用いようと思う。 USBと通信可能なWebページの標準が出現しつつあるけれども、それらはまだ通信することはできない。なぜならば、これはセキュリティ上の問題だからだ。 なので、僕たちが行うやり方はこういうやり方になる。まず、Webページはインターネットと通信することができるよね。そして、そうするにはソケットを用いる。そして僕たちはローカルサーバを動かす。で、このローカルサーバがJavaScriptプログラムで動いているってわけだ。 そして、このJavaScriptプログラムは node と通信する。node.jsはブラウザ内のJavaScriptだけれども、ブラウザの外部で実行している。そしてそれは許可を得て処理を実行している。 で、 npm はnodeのためのパッケージだ。特に、npmシリアルポートパッケージによってJavaScriptはシリアルポートと通信することが可能となる。 そして、このちょっとしたJavaScriptのプログラムがpythonプログラムと同じように機能するんだ。 

しかし、異なる点はこのシリアルポートへのSocketを用いている点だ。さらに言うと、これはWeb Socketと通信するので、ちょっとしたnose プログラムがシリアルポートと通信し、Webページもまた、このSocketと通信して、センサからデータを読み込むことを要求する。 つまり、これはまさにクライアントサーバアーキテクチャなんだ。これらは同じコンピュータにあるかも知れないし、Webページ上にあるかもしれないし、nodeにあるのかも知れない。でも、異なるコンピュータ上にあるということもあり得るんだ。 ここで、君たちはコンピュータをひとつ用いてWeb上のデバイスと通信する。言ってみれば、モバイルデバイスを用いてもサーバと通信してデバイスと通信することができる。 そして、それによりシリアルインターフェースをWebページに、そしてクライアントサーバアーキテクチャにも実装することができるんだ。 Chromeにはシリアル拡張性がある。でも、他のブラウザベンダーにはこの機能は搭載れていない(2016年には)。そして、Web上からUSBと通信するための標準規格が出現しつつあるけれども、まだまだ成熟していない。そういう訳で、ブラウザから通信するという技術はまさに黎明期にあるんだ。 以上が磁界についてだ。 

( つづく ) 講義の目次は 【和訳版】FabAcademy 2016  からご覧ください。 ※この記事は FabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。          

最新記事

すべて表示
Lesson 13. 出力デバイス §4. LEDマトリックス

●LEDマトリックス 次に紹介するのはLEDマトリックスだ。 動作しているのを見てみると、ディスプレイの一部分が表示されているのが見えるだろ? 僕はディスプレイの一部分を用いてラスタリング(画像を色のついた格子状のドットで表現すること)を行なっているんだ。 ...

 
 
 
Lesson 13. 出力デバイス §3. 調光LED

●調光LED さあ、ここから僕は多くのデバイスを紹介していこう。 最初に紹介するのは、色調を変化させることのできるLEDだ。色を周期的に変えることができるんだ。 これが、その部品だ。 この部品には赤と緑の、青のLEDが1つのパッケージに含まれている。大量購入す...

 
 
 
Lesson 13. 出力デバイス §2. 電源

●電源 今回の課題のゴールはたくさんのバッテリーを使うことじゃない。モバイルにしなくちゃならない場合を除いてバッテリーを使うのはお勧めしない。一般的には各Labは各種電源を取り揃えているはずだ。 今から紹介するベンダーMARLIN P. JONES & ASSOC....

 
 
 

Commentaires


© 2017 by A HEDGEHOG CHASE created with Wix.com

  • Grey Facebook Icon
  • Grey Twitter Icon
  • Grey Google+ Icon
bottom of page