C言語マイコンで物体の時間差計測システムを作る方法

このQ&Aのポイント
  • C言語マイコンを使用して、物体の時間差計測システムを作成する方法を解説します。
  • フォトダイオードとオペアンプを使ってレーザー光をマイコンに送信し、物体がレーザーを横切る時間差を計測します。
  • マイコンからのクロックを使用して正確な計測を行い、結果をパソコン上で表示する方法も解説します。
回答を見る
  • ベストアンサー

C言語 マイコン

図に示すようなシステムを考えています。 物体を発射させ、物体がレーザーを横切った時を記録して、時間差を計測するというシステムです。 クロックはマイコンからのものを考えています。 レーザーからのレーザー光をフォトダイオード、オペアンプを経由してマイコンにデータ送信しようと考えています。 そこで最初に物体の自由落下でのの時間差を測定しようと思い http://toragi.cqpub.co.jp/tabid/284/Default.aspxのマイコンを購入しました。 ソフトウェアとしてHEWを使用しているのですが、C言語のプログラムをどのように書けばいいのかわかりませんでした。 上記の条件を満たすプログラム例があれば回答お願いします。 また、パソコン上にどのように結果を表示させればいいのかも本を読んでも良くわかりませんでした。それについても解説などあればお願いします。 回答・解説・指摘お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

以前お勧めしたフォトインタラプタは使わずに、フォトダイオードとオペアンプで回路を君だという訳なのですね。 いや、フォトインタラプタなら、マイコンにとって非常に取り扱いの簡単な出力(マイコンにとっては入力)をもらえる訳なのですが、そのあたりを検討されたのか、検討してわからなかったのか謎ですが。 さて、お使いの基板に乗っている、H8SX/1655 は、USB を内蔵しているようなので、マイコン側の設定プログラムを書いて、パソコン側にデバイスドライバをインストールする必要がありそうです。 そのあたりは、ちゃんとしたデータシートを参照する必要があるのですが、最低限、 http://shop.cqpub.co.jp/hanbai/books/MTR/MTRZ201010.html の記事は一通り理解する必要があると思います。 USB であれば、 第6章 無償ツールGDBでプログラムのデバッグ環境を作る  無償ツールGDBによるデバッグの原理  付属基板(MB)とUSB通信するためのUSBドライバをインストール  EclipseからGDBを制御してデバッグする 第7章 USB経由でパソコンと通信する  Windows標準のソフトウェアで通信する  オリジナル・ソフトウェアを作ってバイナリ・データを転送する に書かれているようですが。 フォトインタラプタなら、デジタル信号として処理できるので、H8SX/1655なら、「インプットキャプチャ」という機能を使えば、入力信号が変化した時点のタイマカウント値を取得することができます。 このあたりも、まずは、データシートを理解する必要があります。

ibayama
質問者

お礼

前回の質問に引き続き回答ありがとうございます。 まずはデータシートを読み込んでみたいと思います。 とりあえずは、フォトダイオードでやってみます。 だめだな遥でしたらお勧めのフォトインタラプタを購入しようと思います。

その他の回答 (2)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.3

フォトインタラプタというのは私は初めて知りましたが、確かにこちらの方がかなり楽に組めそうですね。 まぁそれはさておきますが、本の内容で出来ることは本の中身で完結しているはずです。 つまり、USB-シリアル変換ドライバが添付CDの中にあるはず。 あるいは、記事をよく読めば「ここからダウンロードしてください」という記述があるでしょう。 あとは#2でも言われている通り、各記事を理解することを最優先にしてください。 そこをすっ飛ばしていきなり目的にたどり着こうとしても碌な事になりませんから。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

まず、表示系はUARTを使ってUSB経由でシリアルコンソール(TeraTerm等)で受けることが可能になっているかと思います。 H8のUARTサンプルは探せば簡単に見つかるはずですし、ルネサスのアプリケーションノートにもあったような気がします。 で、本体の方ですが、方針的には ・フリーランタイマーを走らせておく ・オペアンプからの入力を一定間隔でA/D変換する ・A/D値が定常状態から動いていたら、「レーザーが遮られた」ということなのでそのタイミングでフリーランタイマーのカウンタを取得する という感じでしょうか。 通過しきったところでカウンタを取りたいなら、定常状態から動いた瞬間にフラグを立てて定常状態に戻った時にフラグが立っていたらカウンタを取るようにすればいいでしょう。 差分についてはオペアンプごとにカウンタ値を持っておけば簡単に取れます。 差分を取るタイミングはカウンタを取得した瞬間でいいでしょう。

ibayama
質問者

お礼

回答ありがとうございます。 早速Tera Termをインストールして、サイトの使い方を見て、Tera Termを使おうとしたのですが、Tera Termがマイコンを認識してくれません。 マイコンとPCはUSB経由で通信しているのですがポート先をSerialのポート1にしたのですが認識しませんでした。 何故認識しないのかわかりません。どのようにしたら認証されるのか教えてください。素人質問で申し訳ないです。

関連するQ&A

  • マイコンについての質問です。

    マイコンについての質問です。 図に示すようなシステムを考えています。 物体を発射させ、物体がレーザーを横切った時を記録して、時間差を計測するというシステムです。 クロックはマイコンからのものを考えています。 レーザーからのレーザー光をフォトダイオード、オペアンプを経由して、 http://toragi.cqpub.co.jp/tabid/284/Default.aspxのマイコンにデータ送信はできるのでしょうか? 回答・解説・指摘お願いします。 宜しかったら参考になるサイトの紹介もお願いします。

  • マイコンについての質問です。(H8SX/1655)

    マイコンについての質問です。 図に示すようなシステムを考えています。 物体を発射させ、物体がレーザーを横切った時を記録して、時間差を計測するというシステムです。 また、クロックはマイコンからのものを考えています。 レーザーからのレーザー光をフォトダイオード、オペアンプを経由してマイコンにデータ送信しようと考えています。 そこで最初に物体の自由落下でのの時間差を測定しようと思い http://toragi.cqpub.co.jp/tabid/284/Default.aspxのマイコンを拡張基盤なしで購入したのですが I/Oポートがどこかわかりません。 拡張基盤を購入しないとだめなのでしょうか? また、パソコン上にどのように結果を表示させればいいのかも本を読んでも良くわかりませんでした。それについても解説などあればお願いします。 宜しかったら上記の実験条件を満たし素人にもお勧めのマイコンボードなどがあれば紹介お願いします。 回答・解説・指摘お願いします。

  • マイコンのソースについて

    マイコンのC言語プログラムのソースについての質問です。 マイコンを使い自由落下の時間差を測定しようと考えています。使用するマイコンはH8SX/1655です。ソフトウェアとしてHEWを使用しています。 システムとしてはマイコンのクロックを使い 、マイコンに2箇所から光の信号を入力して、物体を自由落下させ、物体が光を遮ったときを参考にして、その差分から時間を計測するというシステムを考えています。 具体的には (1)フリーランタイマーを走らせるプログラム (2)オペアンプからの入力を一定間隔でA/D変換するプログラム (3)A/D値が定常状態から動いていたら、「レーザーが遮られた」ということなのでそのタイミングでフリーランタイマーのカウンタを取得するプログラムを 作ればいいということを教えていただいたのですが、プログラムの書き方がわかりませんでした。 この3つのプログラムのソースの書き方について解答・解説・指摘お願いします。 また、参考になるサイトがあれば紹介お願いします。

  • お勧めのマイコンボード

    お勧めのマイコンボード教えてください。 マイコンを使って図のようなシステムを考えています。 物体を発射させ、物体がレーザーを横切った時を記録して、時間差を計測するというシステムです。クロックはマイコンからのものを考えています。 最初は物体の自由落下の測定から始めたいと考えています。 そこでマイコン初心者でも上記のシステムが構築できるような、できればやさしめのマイコンボード教えてください。(条件を満たせば学習キットで) マイコンボードには外部入力の出来る割り込みのポート、マイコンボード上には結果を見ることができる液晶がほしいと思っています。また、USBなどを通してパソコンとの通信が出来るもので。 回答お願いします。

  • H8マイコンを用いたある計算について

    H8-3052マイコンを使用してある計算をしたいです。 たとえば、1VをDAポートに入力し、数マイクロ秒後にまた1VをDAポートに入力します。その時間差を読み取り計算をすることは可能でしょうか?具体的にどのような計算かというと、はじめに入ってきたレーザ光の入力と、後から入ってきたレーザ光の入力の時間差を用いて距離を求める計算をしようと思っています。光の速度は一定なので、その伝播時間さえわかれば距離を算出することが出来るというわけです。 マイコンやプログラムについては初心者なのでわかる方教えてください。 出来ればサンプルプログラムも添えていただけるとありがたいです。 よろしくお願いします。

  • マイコンのステート数

    こんばんわ。今、マイコンを勉強しています。 使用しているマイコンはATC-80ZIIです。 マイコンでプログラムを組んで実行した時にかかる時間(実行時間)を計算で求める方法を調べています。実行時間を求める方法はステート数にクロック周期(クロック周波数の逆数)をかけるという事は知っているのですが、各命令に対してかかるステート数がわかりません。例えば00HをAレジスタに転送する場合、(LD A,00H)のステート数は7らしいです。本に載っていると思って調べてみたんですが見つからなかったのでここに質問しました。どこかに表とかに一覧で載っていないでしょうか? よろしくお願いします。

  • H8/3052マイコンについて

    H8/3052マイコンを使って時間差を読み取ることはできないでしょうか? たとえば、どこかのポートに時間t=0secのとき外部から入力をして、t=1msecでまた外部から入力をしΔt=1msecを使用してマイコンに掛け算なり割り算なり計算をさせるようなことは可能でしょうか? マイコンにはC言語を使用しています。サンプルプログラムなども載せてもらうとありがたいです! よろしくお願いします!

  • H8マイコンでの開発について

    秋月電子通商でH8用のUSBでの開発ボード http://akizukidenshi.com/catalog/g/gK-00171/ を買おうと思っているのですが(マイコンはH8/3048Fを持っています)、 買う前に気になったことがいくつかあります。 (1)これはUSBでプログラムを書き込めるということですよね? (2)USBには色々な形の種類(Aタイプ、Bタイプなど)がありますが、パソコンとマイコンをつなぐのはどれを買えばいいのでしょうか? (3)電源は3048Fの場合、12Vで合っているでしょうか?また、電流は商品によって違う(1A、1.5Aなど)のですがどうすればいいのでしょうか?  現在、http://akizukidenshi.com/catalog/g/gM-00031/  を買おうと思っていますが大丈夫でしょうか?  (または、パソコンにつないだUSBから電圧が送られてきて付属のMAX662をつけることでプログラムを書き込め、電源は必要ないのでしょうか?) (4)パソコンとシリアル通信をする場合はUSBで出来るのでしょうか?また、もし違う場合はやり方を教えてください。 (5)HEW4を用いてプログラムを書き込もうと思うのですが大丈夫でしょうか?(開発環境はWindows7です) 以上です。質問が多くて申し訳ありません。 回答よろしくお願いします。

  • PICマイコンを使った分解能1μsの時間差測定とPCへのデータ取込み方

    PICマイコンを使った分解能1μsの時間差測定とPCへのデータ取込み方法について PICマイコンを使って、レベル0-5Vの2つの信号A、Bの立ち上がり時間の差を、分解能1μs・最大時間100ms程度で測定し、USBコネクタでPCに時間差データを転送する方法を教えてください。 信号A、B は通常はLレベルで、Hレベルのパルス幅が10μsから1ms程度の単発パルスです。信号A、B のパルス幅は同じですが、Bのほうが数μs から数10msの遅延があります。 マイコンのクロックに10MHzとか20MHzなどの切りのいい周波数を使い、PICマイコンの割り込みを使う方法があるようなのですが、適切なPICマイコンの型番とプログラミング法、PCとインターフェースの方法などが書かれたサイトなど紹介して頂けると助かります。

  • PICマイコンを使った分解能1μsの時間差測定とPCへのデータ取込み方

    PICマイコンを使った分解能1μsの時間差測定とPCへのデータ取込み方法について PICマイコンを使って、レベル0-5Vの2つの信号A、Bの立ち上がり時間の差を、分解能1μs・最大時間100ms程度で測定し、USBコネクタでPCに時間差データを転送する方法を教えてください。 信号A、B は通常はLレベルで、Hレベルのパルス幅が10μsから1ms程度の単発パルスです。信号A、B のパルス幅は同じですが、Bのほうが数μs から数十msの遅延があります。 マイコンのクロックに10MHzとか20MHzなどの切りのいい周波数を使い、PICマイコンの割り込みを使う方法があるようなのですが、適切なPICマイコンの型番とプログラミング法、PCとインターフェースの方法などが書かれたサイトなど紹介して頂けると助かります。

専門家に質問してみよう