おまけ,タイム自動計測
マイクロマウスのタイム自動計測用回路を作製します.始めに,シリアル通信の実験.
可能な限り簡単にシリアル通信で外部基板からPCに信号を取り込みたいと思って PICを使ったシリアル通信をやってみました.
使用したのは,PIC16F84A,USARTは付いてません. なので,シリアル通信のパターンをプログラムで作成して送信します.
回路図は,こんな感じ.
レベル変換用のMAX232などは使用せず,トランジスタと抵抗分割で, 0±約5V(電源電圧に依存)の信号をつくりましたが,PC側がうまく受信して くれました.(なぜなら,手持ちが無かったし安くすませたいから)
![DSC00794.JPG](https://cpu4edu.net/imageR/img73a8c612zikczj.jpeg)
回路をブレッドボードで作成したところ.
![DSC00791.JPG](https://cpu4edu.net/imageR/imgd704e700zik6zj.jpeg)
信号の波形例
![Copy_3.JPG](https://cpu4edu.net/imageR/img2831c0cbzik2zj.jpeg)
PCに接続して,ターミナルアプリを起動します.
![DSC00786.JPG](https://cpu4edu.net/imageR/imgbc610820zikfzj.jpeg)
通信速度は,19200bps,バイナリモードで信号を取り込むとこのように, スイッチのON-OFFで読み込まれるデータが変化しました.
![DSC00789.JPG](https://cpu4edu.net/imageR/img0b1194e7zik2zj.jpeg)
プログラムはこの位です. MPLAB上でC言語による開発,コンパイラはPICC-LITEです.
![DSC00797.JPG](https://cpu4edu.net/imageR/img313e0da0zikczj.jpeg)
マイクロマウス大会の時間計測に使うのですが,PCでストップウォッチのプロ グラムを組んで,シリアルポートからスタート・ストップの信号を取り込むとして, どの位の精度で計測できるのか・・・?
やってみないとわからないので,とりあえずやってみます.
赤外線センサの実験
次は赤外線センサの実験. 指向性のある赤外線フォトダイオードとフォトトランジスタでは 長距離まで検出可能なようですが,調整が難しそうなので, 指向性があまりないフォトダイオードを使ってみました.最初は感度調整のボリュームを入れていましたが,固定倍率でも ON-OFFだけなら検出できそうです. 別に迷路をライトで照らすつもりもないですし.
あとは,ON-OFFを昨日作ったシリアル通信でPCに送って, VBでプログラムを組めば,低コストで自動計測ができそうです. 問題は,応答速度と時間の確度ですが,相対的に不公平がなければ 問題ないのでは,と思っています.
たぶん,人がストップウォッチで測るよりはましでしょう.
![DSC00803.JPG](https://cpu4edu.net/imageR/img60dd32cfzik9zj.jpeg)
センサを支柱に仕込みます. こんな感じで支柱の加工とセンサ取り付けをしました. 注文した卓上ボール盤がくるまでは,手回しドリルでがんばります.
![DSC00805.JPG](https://cpu4edu.net/imageR/img12446658zikazj.jpeg)
横から穴を開けて,
![DSC00808.JPG](https://cpu4edu.net/imageR/imgc7ddc5e7zik3zj.jpeg)
下からも穴を開けて,
![DSC00809.JPG](https://cpu4edu.net/imageR/img48e261bfzik9zj.jpeg)
こんな風に配線を通して,
![DSC00810.JPG](https://cpu4edu.net/imageR/img1e4df935zik5zj.jpeg)
先に赤外線LEDを取り付けます.
![DSC00811.JPG](https://cpu4edu.net/imageR/imgee349269zik0zj.jpeg)
表面の赤外LED.
![DSC00813.JPG](https://cpu4edu.net/imageR/img141ec7dczik6zj.jpeg)
裏面は紙を貼って穴を塞ぎ,
![DSC00814.JPG](https://cpu4edu.net/imageR/img2e0daad4zikezj.jpeg)
赤外線フォトトランジスタも仕込んでワンペア完成.
![DSC00816.JPG](https://cpu4edu.net/imageR/img990cb13bzikczj.jpeg)
3ペア作っておけば,スタートとゴール2箇所はセンスできます.
![DSC00817.JPG](https://cpu4edu.net/imageR/img79e1124czik1zj.jpeg)
心配なのは,赤外LEDの光軸の広がりと裏からのわずかな漏れがマウスの走行に 悪影響を与えないか?
回路の製作
とりあえずテスト用に,9V電池とセンサ1ペアを直付け.![DSC00818.JPG](https://cpu4edu.net/imageR/imgec9f0f46zikczj.jpeg)
シリアル信号が出ていることを確認.
![DSC00820.JPG](https://cpu4edu.net/imageR/imgb8453653zik1zj.jpeg)
光を受けると1ビット分反転してます.
![DSC00819.JPG](https://cpu4edu.net/imageR/img4dcf0542zik7zj.jpeg)
プログラム
こんな感じでプログラムを組んでみました. あと2日くらいかければ完成しそうです.持ち時間内で5回走行して,タイムを記録し,ランキングを出すプログラム.
![mousekeisoku.JPG](https://cpu4edu.net/imageR/img66971aeczik0zj.jpeg)
その後いろいろ手直しして動作しました. あとは,迷路の組み込んで,プログラムの作り込みと, 計測に失敗したときの対処をすれば完成.
最後まで行かないうちに本業の論文の修正を要求されたので, 次はそっちにかかりっきりになりそうです...
初期画面
![DSC00821.JPG](https://cpu4edu.net/imageR/img1c501173zikdzj.jpeg)
スタートセンサを横切ったところ.
![DSC00823.JPG](https://cpu4edu.net/imageR/imgf778aa7azik0zj.jpeg)
ゴールセンサを横切ったところ.
![DSC00824.JPG](https://cpu4edu.net/imageR/img50513763zik1zj.jpeg)
一度スタート・ゴールしたら,また自動計測を再セットしないといけないように つくってあります.
動画はこちら
![]() ESP32 Wifi Bluetooth開発ボード |
![]() Arduino Nano Every |
![]() Raspberry Pi pico |
![]() FPGA XILINX Artix-7 |