• 締切済み

超音波センサーのシリアル通信機能が使えません。

初めまして、電気工学科の学生です。最近超音波センサーを使う実験があり、しかし手元の物がうまく動きません、どこに問題があるか教えていただきたいです。どうぞよろしくお願いします。 使用する物: 超音波センサ:LV-MAXSONAR-EZシリーズ画像の物 パソコンとの接続:USB-シリアルコンバータ経由 ソフト:ハイパーターミナル 現状:LV-MAXSONAR-EZセンサーは電圧、パルス、シリアル出力に対応しています。 http://www.maxbotix.com/uploads/LV-MaxSonar-EZ0-Datasheet.pdf <ー此方のデータシートを参考にRXを5Vと短絡入れたらTXはオシロスコープ使って距離相当の電圧値を測定できました。しかしシリアル通信が上手く行きません。 GND +5 TX RX AN PW BWをそれぞれUSBシリアルコンバータのGND +5 TX RX(5とRXを短絡)に直結して、パソコンのハイパーターミナルでどうさ確認をしたいのですが何も反応がありません。 ハイパーターミナルの設定は9600,N,8,1,Nです。 どこに問題がありそうでしょうか?よろしくお願いします。かなり急いでいます。

みんなの回答

noname#194317
noname#194317
回答No.1

センサ側のTXが232Cのデータ出力ですよね。と言うことは、こいつはPCの232CへはTxではなく、Rxにつながないと出力同士をつないだことになるので、データが入ってきませんが、そういう単純な問題ではない?

関連するQ&A

  • RS232によるPC間の通信について

    自作でRS232ケーブルを作りました このケーブルがちゃんと通信できるか確認したいです 作成したのは2(Rx)、3(Tx)、5(GND)のみのストレートケーブルです ハイパーターミナルを立ち上げていろんなサイトを見て、それらしい設定にしたのですがさっぱり通信できません どなたかご教授いただけたら幸いです そもそも PC間ということはそれぞれハイパーターミナルを立ち上げると思っていますがあっていますか? 以上よろしくお願いします

  • USBシリアル通信での電源への疑問

    USBには+5VとGNDと信号線がありますが、 USBによる通信機器を触っていて、疑問があります。 通信機器の双方が+5Vを持っていて、ショートとかしないのでしょうか? 違う電源同士のGNDは厳密に言えばくっつけても良いものなのでしょうか? http://www.alles.or.jp/~thisida/mycpu207.html 上記通信機器のようにFT232RLを介して、パソコン側のUSBに接続したいのですが、 お互いの+5V電源というのは干渉しないように作られているんでしょうか。 FT232RLを駆動する+5V電源は通信機器のどちら側から4Pinと20pinに供給すれば良いか、決まっているのでしょうか? それと関連して、今FT232Rが乗ったUSBコードの電圧を計測しているのですが、4pinにすでに+5VがPC(USB)側から供給されています。この場合、非PC側からはTXとRXだけ送れば良いのでしょうか。TXとRXの信号の電圧は5Vとか3.3Vとか決まっているのでしょうか???

  • シリアル通信について。

    PICからPCにデータ(電圧:最大値5)を受信させようとしています。 受信には C++を用いたプログラムを自作したいのですが、 どうしてもうまくいかなかったため投稿させていただきました。 症状としては、まずポートを開く事すら出来ていません。 RS232c {USBで変換) が接続されているポートはCOM1です。 ポートが開くか確かめるプログラムとしては、次のようなソースを使いました。 #include<windows.h> #include<iostream> using namespace std; int main(void){ HANDLE hCom; hCom = CreateFile( (LPCWSTR)"COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hCom == INVALID_HANDLE_VALUE) { cout<<"シリアルポートを開くことが出来ませんでした。\n"<<endl; return false; } CloseHandle( hCom ); return 0; } これを実行すると「シリアルポートを開くことが出来ませんでした。」としかなりません。 ( (LPCWSTR)"COM1"となっているのは、「'CreateFileW' : 1 番目の引数を 'const char [5]' から 'LPCWSTR' に変換できません。」  と出てしまったためです。) ハイパーターミナルを用いてCOM1からデータを受信できていることは確認しましたので、 通信が出来ていないわけではないようなのです。 ありふれた質問である事は重々承知の上ですが、 このソースでシリアルポートが開けない理由を教えていただければ幸いです。 環境:Visual C++ 2008 Express Edition Microsoft Windows XP Version 2002 Service Pack 3

  • picのADコンバータとコンパレータの違いが分かりません。

    picのADコンバータとコンパレータの違いが分かりません。 どちらも、電圧リファレンスで、電圧の違いを判別する機能ですよね? 例えば超音波センサや、圧電センサからの信号を受信する場合は、どちらの機能を使えばいいのでしょうか?センサによって違うのでしょうか? 質問が大雑把ですが、どうかよろしくお願い致します。

  • 6in1カードリーダーの接続先について

    6in1カードリーダーを買ったのですが、4ピンコネクタ(VDD,TX,RX,GND)をマザーボードの何処に接続して良いのかわかりません。マザーボードはUX4SG-1394-(2)で、AOPEN製ベアボーンキットEZ65-(2)についていたものです。ご存知の方、ご回答をお願いします。

  • 離れたPIC同士のシリアル通信の回路でのPICの…

    離れたPIC同士のシリアル通信の回路でのPICの破損について 5m離れた2つのPIC間でシリアル通信(9600bps)をする回路を作りました。 単にそれぞれのPICの内蔵モジュールのTXとRXをたすきがけしただけの回路です。 また、メインの電源は12Vで、それぞれのPICの近くにそれぞれ専用の7805を配置してPICに5Vを供給しています。 また、2つのPIC間のケーブルはコネクターで取り外せるようになっており、同ケーブルにはシリアル通信(送信、受信)、+12V、GNDの計4本の線で構成されています。 この状態で特に問題無く通信はできているのですが、ふとしたことでPICの内蔵モジュールが破損することがあります。 同じ回路を2セット作りましたが、同様に破損してしまいました。 多分、コネクタを抜き差しするか、或は電源を投入、切断のタイミングではないかと予測しています。 (詳しくは、参考URLの図をご覧ください。  図には電源のコンデンサなどは記載していませんが、それぞれ適宜、配置してあります。) 尚、2つのPIC付近の7805には、PIC以外にそれぞれ違う消費電流の負荷が接続されています。 そのため、5Vに安定するまでの時間に違いが出てしまい、結果、内蔵モジュールの規格外の電圧がかかってしまうのかと予測しています。 ここで質問です。 ・このような状況の場合、PICが破損する原因はどのようなことが考えられるでしょうか? ・解決策はどうしたら宜しいでしょうか? まだ試していませんが、MIDIのようにフォトカプラを使用するか、RS-232Cトランシーバを使用するか等を考えておりますが、なるべく簡易で確実な方法をとりたいです。 宜しくお願いいたします。 http://box.c.yimg.jp/res/box-s-vboqi4x6dy2zfrx7fyns5aqghq-1001?uid=5c9c0a84-d898-45e4-8d4b-df319ca25f24&etag=5c2f1b99137520886935391

  • 超音波センサについて教えてください

    超音波センサについてなのですが、パラレルポートを使って制御しようとしているのですがなかなかうまくいきません。 浅草ギ研さんからでているPING)))を使っているのですが、サンプルプログラムがPICを使用してのもので、 トリガをうってやれば、350マイクロ秒ホールドオフした後、音波を出して帰ってきた時の時間で距離を出すというものです。 プログラム全文 #include <12F675.h> #fuses INTRC_IO,NOWDT,NOPROTECT,NOMCLR,BROWNOUT //内部4MHzクロック指定 #use delay(clock=4000000) //delayを使えるようにする #use rs232(baud=9600,xmit=PIN_A5,rcv=PIN_A3,parity=N,bits=8) //シリアル設定 //(上の行説明)GP5を送信、GP3を受信に設定。 //12F675の場合は初期値がADCモードになっているので、デジタル入力を使う場合は事前にADCなどを切る必要がある。 //16F84などのPICはこの処理は不要。(初期値がデジタルIOだったり、ADCが無かったりする。) //コンパレータとADCを切るために特殊レジスタを操作します。とりあえずアドレスを割り当て。(アドレスはデータシートに書いてある) #byte CMCON=0x19 #byte GPIO=0x05 #byte ANSEL=0x9F void main(void){  set_tris_a(0x00); output_low(PIN_A0); //GP0をLowに(とりあえず。) //コンパレータなどを切って、デジタルIOピンにする処理 GPIO=0x00; //以下3行はデジタルIOに切り替える手順 CMCON=0x07; ANSEL=0x00; //タイマ0を設定(内部クロック使用の場合は4クロックで1カウントなので注意) setup_timer_0(RTCC_INTERNAL | RTCC_DIV_128); delay_ms(1000); //PINGが正常に立ち上がるまで待つ printf("START\r\n"); while(1){ set_tris_a(0x00); //GP0を出力に //トリガパルス出力 output_high(PIN_A0); //トリガパルス立ち上げ delay_us(5); output_low(PIN_A0); //トリガパルス立ち下げ //GP0を入力に切り替え set_tris_a(0x01); //GP0を入力に //パルス幅測定 while (!(input(PIN_A0))); //パルス立ち上がりまで待つ set_timer0(0); //タイマーをリセット(カウント開始) while (input(PIN_A0)); //パルスの立下りまで待つ printf("Dist=%u\r\n\r\n",get_timer0()); //結果出力 delay_ms(500); //0.5mSウェイト } } こんな感じです。 全体的にわからないんですが、 特に while (!(input(PIN_A0))); //パルス立ち上がりまで待つ set_timer0(0); //タイマーをリセット(カウント開始) while (input(PIN_A0)); //パルスの立下りまで待つ この部分のlinuxのC言語への書き換え方がわからなくて苦労しています。 どなたか教えてもらえないでしょうか? OSはVine linuxです。言語はC言語です。

  • PIC12F683からパソコンへのシリアル通信

    PIC12F683 を使って、簡単な電圧ロガーを作ろうとしているのですが、 パソコンへの送信が正常に行われません、わかる方がおられたらどこが悪いのかご指摘願います。 PICの書き込み、PICからのデータ受信に用いているパソコン(のマザーボード)は、G45GCMX-S2です。 参考にさせていただいているサイトは、 http://www8.plala.or.jp/InHisTime/page005.html#PIC-002 なのですが、上記サイトのソースプログラム http://www8.plala.or.jp/InHisTime/PIC-001/DataLogger2.c には何の手も加えず、動作させております。 また、PIC->PCへの接続端子の接続が正常である事も、テスターで確認しております。 (回路から、PCのCOM1(DSUB-9pin)へ接続。) コンパイル(MikroC 8.88)、hexの書き込み(RCDライタ)までうまくいくのですが、 ブレッドボードに組んで、電源を入れてもGP5の電圧に変化が無い、という状況です。 (LEDを点滅させるプログラムを書き込んだ場合は問題なく動作しています。) 実際の各端子は Vdd 1pin : 5V GP5 2pin : open (※ この端子の電圧に変化が無い) GP4 3pin : open GP3 4pin : 5V CPP1 5pin : open AN1 6pin CH1 : open AN0 7pin CH0 : open Vss 8pin : GND となっています。テスターで測ると 2pinは2.3Vで一定、 レベル変換用のトランジスタのコレクタは3.4V一定です。 念のためレベル変換回路 (http://www8.plala.or.jp/InHisTime/img2022.jpg の右上、C1815の部分。) 単体の動作確認はしています。 ハイパーターミナルその他のソフトで通信しようと試みたのですが、 反応が無いため、ピンの電圧を測ってみたところ、パソコンへの送信出力ピンの電圧が 変化していないので、これは正常じゃないのでは無いか?と思い、 詳しい方のアドバイスをいただこうと投稿しました。 上記のソースであれば、1秒ごとに出力電圧に反応があるかと思いますが、無反応です。 説明がややこしくなりましたが、わかる方がおられましたらよろしくお願いします。

  • H8/3069 SCIについて

    H8/3069のシリアル通信機能についての質問です。 SCI0を調歩同期式に設定して、パソコン上のハイパーターミナルと通信しています。SCI1とSCI2をクロック同期式に設定して、tx1とrx2,tx2とrx1,sck1とsck2を配線接続した状態です。 このとき、PC(ハイパーターミナル)からの送信データ⇒SCI0で受信⇒SCI1から送信⇒SCI2で受信⇒SCI0からパソコンに対してデータ送信したいと思っています。 ところが、SCI1のクロック同期式でのデータ送信がまずできません。データもクロックも出せていないです。 そこで、SCI0,SCI1,SCI2のすべてを調歩同期式に設定した場合は、上記のデータの送受信は成功しています。 H8/3069において、SCI0,SCI1,SCI2のシリアル通信方式の設定を上記のように、1つのH8に対してクロック同期と調歩同期を混在させた場合、何かうまく動作しない原因は考えられますでしょうか。 プログラムでのSCI0とSCI1,SCI2の初期設定の違いは、SCI1とSCI2は、SMRレジスタC/Aビットを1(SCI0は0)にして、SCI2については、SCRレジスタのCKE1ビットを1(SCI0,SCI1は0)にした状態にしています。 よろしくお願いいたします。

  • 自動車のECUの電圧をPICに取り込みたいのですが

    自動車のスロットルセンサーの電圧をECUからPIC16F873Aに取り込みたいのですが、 A/Dコンバータのポートへ直接入れるとなぜか電圧が下がって正常な値が出ません。 抵抗を入れてみたのですが、同じような結果になってしまいました。 温度センサーやGセンサーなどの電圧は正常に取り込めているのでプログラムでは無いと思っています。 ECUから電圧を取るには特別な方法が必要なのでしょうか? よろしくお願いします。 詳しい説明をしていただきありがとうございます。 電圧が下がるというのはECUより0.5~3.8Vが出ているはずなのですが、 実際測ると200mV程度しか出ていません。(直接GNDに落とすとちゃんと出ています) 本日、別のポートにつないでみたところ問題なく動作しました。 ECU --- 10KΩ --- PICとつなぎました。 AN0のポートは問題なく動作してAN1のポートでは動作しないので、AN1のポートが開いていないようです。 プログラムの問題のようなのでもう少し調べてみます。 プログラムに問題は無いと言っておきながら、プログラムが間違っているという 結果で大変申し訳ございません。

専門家に質問してみよう