高教研理科部会会津支部物理専門部会研修会 2007/12/04
USB入出力インターフェースと温度計の製作
会津高校 高橋善樹
1. 今回の製作に関する概要
(1) USB入出力インターフェース(USB-IO)について
(2) 温度センサーについて … 測定範囲-55〜+125 ℃(精度0.5K at -10〜+85℃)
(3) ActiveBasicによるソフトウェア開発について
2. 準 備
(1) 工具 … ハンダごて,ラジオペンチ,ニッパー,ワイヤストリッパー
(2) 材料
・ USB-IOキット一式,ユニバーサル基板(72×47片面)
・ 素子 … IC:74HC123 + 16ピンソケット,74HC74 + 14ピンソケット
抵抗:5.1kΩ(緑茶黒茶茶)×3,12kΩ(茶赤黒赤茶)×3
コンデンサ:0.01μFマイラー(103),2700pFセラミック(272)
トランジスタ:2SC1815 ×2
ダイオード:1N4148 ×2
温度センサーIC:DS18S20(2Chご要望の方は別途 \800)
・ 結線材料 … ハンダ,被覆線 ×6,被覆3線,
3線チューブ + 熱収縮チューブ(温度センサー絶縁用)
3. 製作の方法
(1) ハンダづけの基本
・ こて先はきれいに。ハンダめっき状態で使うのがよい。
・ 加熱するのはハンダでなく,接続するもの。
・ 熱に弱い素子もあるので,手際よくかつ十分に。大盛り・てんぷらはダメ。
・ より線の接続の場合は,より線を事前にハンダめっきしておく。
(2) USB-IO … キットにつき付属資料参照のこと。30分かからないと思います。
※ できたら単体チェックしますのでお申し出ください。
(3) 基板配線の留意点
・ 片面基板なので,裏の「蛇の目」プリントがはがれないように注意。
・ @ICソケット A抵抗 B コンデンサ C トランジスタ D ダイオード の順に(本来は背の低い素子から順が原則)。
・ 素子のあしを裏で折り曲げて,可能な限りそのまま結線に使う。
(4) USB-IO・温度センサー回路・温度センサーの結線
・ USB-IOと温度センサー回路は「被覆より線」で結線する。
必要に応じて,両基板を両面テープで連結する。
・ 温度センサーICの絶縁用に,短く切った3線チューブ(中のより線を引き出す)をあしに通す。
・ 温度センサー回路と温度センサーICは,フラットケーブル(被覆3線)でつなぐ。ケーブル側に熱収縮チューブを通しておき(結線部に近すぎるとハンダづけのときに収縮するので注意),結線後にかぶせてからこてで加熱する。
4. ソフトウェアと使用法
以下のプログラムはすべてActiveBasicでつくられています。
(1) USB-IOテストプログラム (回路をショートさせないように注意!)
@ 出力テスト
CDの中の実行ファイル \USB-IO\OutTest\LEDTEST.exeを実行させてください。簡易テスター(LEDと200Ω程度の抵抗を直列につないだもの)の+側をVcc,−側をP00〜P14につないで,ポート番号を選択してボタンをクリックすると,LEDが点滅します。
A 入力テスト
CDの中の実行ファイル \USB-IO\InTest\swtest.exe を実行させてください。簡易テスターの−側をGND,+側をP00〜P14につなぐと各ポートの入力データ(を反転したもの)が表示されます。データは16進数表示で「1,2,4,8,10,20,40,80」のいずれかになります。
(2) 温度センサーテストプログラム
CDの中の実行ファイル \USB-IO\thermo\thermo.exe を実行させてください。2.5秒おきに温度が表示されます。Ch0(センサー1つ)のみ使用の場合は,
Ch1の方は「CRC−Err」と表示されます。どちらも「CRC−Err」のみを連発する場合は,センサー回路が正常に機能していません。結線をよく確認してください。
(3) 自記温度計プログラム
CDの中の実行ファイル \USB-IO\logthermo\logthermo1.exe を実行させてください。DドライブTHERMO.CSVというファイルに1分おきの温度が記録されます。EXCELで加工やグラフ化が可能です。測定時間間隔を変更したい場合は,ActiveBasicのプロジェクトファイル\USB-IO\logthermo\thermo.pj を開き,MainWnd.sbpの51行め「SetTimer(hMainWnd,0,60000,0)」の60000のところをミリ秒単位で変更してリリースコンパイルしてください。なお,logthermo.exe の方は2チャンネル用になります。
5. USB-IO のおもな仕様
・ 入出力端子 Port0の8ビット+Port1の4ビットの計12ビット。
・ 全端子はIC内部でプルアップ(+5V)されている。
・ データ入力の際は使用端子に「1」を出力しておく必要がある。
・ 電源はUSB供給。今回の温度センサー回路はそのまま電源を借用しているが,電流許容はあまり大きくないので,回路によっては外部電源を用意する必要がある。
・ 出力に4msec,入力に16msecの時間を要する。
※ その他くわしいことについては,参考文献やインターネットで検索してみてください。
参考文献: 「手作りUSB機器」永島智二(オーム社)
「ActiveBasicオフィシャルユーザーズガイド」
山本大祐(毎日コミュニケーションズ)
写真1:温度センサー基板表面(資料図面とわずかに異なります)

写真2:温度センサー基板裏面(左上GNDと右端のVccライン以外は「あし」を使用)

写真3:温度センサー
(外見はトランジスタと同じだが,コマンドに応答して温度データをデジタル出力するすぐれもの。絶縁チューブを失敗(左)そこで防水を兼ねて太いチューブですっぽり(右)。)
写真4:USB-IOと温度センサー基板(上は今回製作のもの。下はKm2Net製USB-IO。)

資料1:実体配線図


資料2:回路図
(略)
資料3:1日(10/20〜21)の気温変化(自記温度計プログラムによる10分おき測定結果)

資料4:光センサーへの応用@(単振り子の周期測定)
プリンタのジャンクからとったフォトカプラ(赤外LEDとフォトダイオードを対置させた位置検出素子)などありあわせのもので光センサーをつくってみました。50msec程度の分解能で心もとないのですが,5回の平均をとるプログラムで約1mの振り子の周期を何とか1/100secまで測定できました。
ビースピのフォトダイオードをそのまま使って,USB‐IO版ビースピも作りましたが,入出力に時間がかかりすぎてよほどのんびりした運動でない限り速度測定は無理でした。残念…。

フォトカプラを流用した光ゲート 単振り子周期測定の様子

ありあわせの材料なのであくまで参考の光ゲート回路図
※ 5.1Kを半固定にすると感度調節可能になります。

無用の長物となったUSB-IO版ビースピ
資料5:光センサーへの応用A(ストロボ遅延装置)
マルチストロボで,外部からの信号で発光をコントロールできるものがありますね。20年ぐらい前に,プリンタ端子を使った入出力でフォトセンサーとリレーによりストロボ発光に遅延をかけて,ミルククラウンを観察したことがありました。そこでUSB-IOの応用のひとつとして再度挑戦してみようと思い,学校にあった古いマルチストロボを引っ張り出したら,これがなかなかの代物でした。Contact端子(短絡により発光)に加え,Signal端子(外部パルスにより発光)があったため,USB-IOの出力に直結することでダイレクトにコントロールできます。資料4のフォトセンサーにストロボへのSignal出力を追加して,ミルククラウンに挑戦です。
USB-IOの動作がおそく遅延時間の精度を十分とれないために,かなりのばらつきが生じましたが,なんとか写真撮影に成功しました。こういうときにデジカメの便利さを痛感させられますね。フィルム撮影では,1本撮って1枚いいものがとれるかどうかの運だめしになって大変です。クラウンらしいきれいなものをつくるには,ミルクの厚さ,滴下の大きさ,高さなどのクリティカルな条件設定が必要なようです。

ごつい!マルチストロボ一式とUSB-IO それらしいものが撮れました


遅延時間をずらして撮影してみました。ただし,同一時間設定でのばらつきによるものが含まれます。