• 締切済み
※ ChatGPTを利用し、要約された質問です(原文:離れたPIC同士のシリアル通信の回路でのPICの…)

離れたPIC同士のシリアル通信の回路でのPICの破損について

noname#230359の回答

noname#230359
noname#230359
回答No.2

添付なさった回路図から読み取れる範囲では、回答(1)さんの回答内容が 最適な対処方法をお示しになっていると思います。 回路図では、PIC_AとPIC_Bとは、5mの接続ケーブル(GND,12V,信号線)で 接続されていますが、GNDが回路図に表記されていないところで、接続されて いるようなことがありませんか? PIC_AとPIC_Bの筐体が金属製であって、双方ともにGNDが回路図に表記されて いないところで接続されているような場合は、PIC_AとPIC_Bの間のコモンモ ード電圧によって、ポートを破壊する可能性がありそうです。 PIC_B側の回路は、PIC_A側から電源が供給される従属回路のようですので、 ケーブル以外の経路でGNDが接続されることがないように、完全に浮かせて しまうことが対策になるかもしれません。 GNDの接続は、筐体の可能性だけではなく、PIC_B側のインターフェース全般 についてチェックする必要がありますのでご注意下さい。 ケーブルの着脱に用いるコネクタは、GNDラインが、接続時には最初に接続 され、解放時には最後に離れるような、GNDピンが指定されているような 品物を使うことが適切と思います。 イベント会場で使う機器であれば、XLRコネクタ(通称キャノン コネクタ) を採用すれば良さそうですね。1ピンがGND用に設定されていて、接続時には 最初に接続され、解放時には最後に離れるような設計になっています。 http://ja.wikipedia.org/wiki/XLR%E3%82%BF%E3%82%A4%E3%83%97%E3%82%B3%E3%83%8D%E3%82%AF%E3%82%BF%E3%83%BC >恐らく、ESDと思う picとRC232Cドライバーの仕様書を比べて眺めてみましたが、 picのI-OポートにはESD耐量の記載がなく、RC232Cドライバーには明確に 記載されているようです。(ほんの一例を検索しただけですが・・・・) このような観点では、RC232Cドライバーを介する方が、ロバスト性が向上 することは間違いないと思います。

noname#230358
質問者

補足

ご助言をありがとうございます。 ケースはどちらも樹脂性で、ケーブル以外でGNDが接続される可能性は無いと思われます。 ご指摘いただきましたように、GNDラインが、接続時には最初に接続され、解放時には最後に離れるようなコネクタを使うべきでした。

関連するQ&A

  • pic-パソコン間のシリアル通信

    PCからあるいはPICから操作を行って何かやりたいと思い、USART機能を持ったPICを使ってPICとPC間でシリアル通信を行いたいと思っているのですが、回路設計で悩んでいます。 PCのRS232Cシリアルインターフェースとの接続をするために変換回路を作りたいのですが、PIC関連の書籍のほとんどが変換用の専用ICを用いているのですが、なるべく安価な部品(抵抗、ダイオード等)で実現できないか考えています。 PIC→PC への方向の通信 PC→PIC への方向の通信 PIC⇔PC への双方向の通信 以上の3パターンでICを用いないでできる定番の回路、もしくは実現可能だと思われる回路などがありましたら教えていただけないでしょうか。

  • PICを用いてシリアル通信

    PIC制御でシリアル通信を行いたいです。 以下の条件にマッチする製品が分かれば教えてくれませんか? ・シリアル通信は通信ポートが2つで両者の通信が行える ・半田付けなどは行わずにモジュールを組み合わせて動作するボード 以上、宜しくお願いします。

  • PICでシリアル通信

    温度センサーLM35DZからの情報をPIC、ADM232,を経てシリアル通信でパソコンに表示するというのがあって、本で読んだとうりに、組んでみましたらうまくいきました。これは外付けオシレータ10MHzで動いています。 今度はこれを内蔵オシレータ4MHzで動かしたいんですが、その場合、どのような設定にしたらいいんでしょうか。 現在は OSC 10MHz 9600bps 非同期 高速モード SPBRG  D’64’ TXSTA  B’00100100’ で動いてます。 とりあえずは、SPBRGの数をかえてためしてみたんですが、一応情報は送っているみたいなんですが、文字化けしてうまくいきませんでした。

  • PIC16F88を使ったV/Fコンバータ回路

    車にデジタルメーターを付けたいのですが、燃料計がデジタル入力になり、標準のアナログ入力からV/Fコンバーターを使ってデジタル出力回路を組みたいと思っております。 PICのプログラムはほぼ解決出来ていまして、あとは回路を組むだけですが プルアップ回路をどのように組んだらよいのか(入力信号2.0mV~2.5V変移)に組むのか PIC電源の5V(Vdd)に組むのか良くわかりません。 添付の回路図で良いのかアドバイスをお願い出来ますでしょうか? 回路図中の可変抵抗というのは、燃料計のフロートセンサーです。 宜しくお願いいたします。

  • PICのシリアル通信のWIN_APIプログラムについて

    PICとPCとのシリアル通信の WIN_APIプログラムについてどなたかご存知の方は教えてください. 現状,API関数を用いて,シリアル通信をできるようにプログラムを作成したのですが,送信はできるのですが,受信データが"C0"をPICから送付しているのに,"FFFFFFFC0"と受信されてしまいます. 先の"FFFFFFF"をとるにはどうしたらいいでしょうか? 現状:受信プログラム // シリアルポートに対する書き込み(PICに送信命令) WriteFile(hCom, w_com_Buf,lstrlen(w_com_Buf), &n, 0 ); // シリアルポートに対する読み込み ReadFile(hCom, s_com_Buf,1, &n, 0 ); mikroC上のUSARTターミナルでは送受信は適正で, 上記のプログラマで 送信はPIC側で受信していることは7SEGを使って確認しています. しかし,PC側では, s_com_Buf[0]には,"C0"が入ったり,"FFFFFFC0"が入ったりします. PICは現状,多チャンネルAD変換をしているため, 送信に対する受信データのやり取りができなくて困っています. どなたか先生教えてください.

  • PICのシリアル通信について

    現在PICで電子工作を勉強中です。 PIC16f628Aを使ってパソコンとのシリアル通信をしようと思っています。 しかし、PICから"Hit some key for test"という文字列をおくったところ、 文字化けして"ソ3!・ソ)5"といった感じで出力されてしまいました。 文字化けが起きる原因としては何が考えられるのでしょうか? なお、パソコン側の端末にはTera Termを使用しています。 どなたかご教授お願いします。 以下にソースコードを示します。 #include <pic.h> __CONFIG(MCLRDIS & PWRTEN & BORDIS & UNPROTECT & WDTDIS & LVPDIS & HS); __IDLOC(628A); unsigned char getchr(void) { while(RCIF == 0); return (RCREG); } void putchr(unsigned char c) { while(TXIF == 0); TXREG = c; } void puts(const unsigned char *s) { while(*s) putchr(*s++); } void main(void) { PORTB = 0; TRISB = 0b00000010; SPBRG = 129; TXSTA = 0b00100100; RCSTA = 0b10010000; puts("Hit some key for test\n"); puts("\n"); while(1) putchr(getchr()); }

  • 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秒ごとに出力電圧に反応があるかと思いますが、無反応です。 説明がややこしくなりましたが、わかる方がおられましたらよろしくお願いします。

  • PICの汎用IOを使った無線モジュールの電源ON/OFF

    電子回路初心者ですが、PIC(PICは送信→スリープ→ウォッチドグタイマで決まった周期で起きる→リセット→最初に戻って送信、を繰り返してます)と無線モジュールの接続を行って通信を行ってます。消費電力を下げたいため、送信が必要な時だけ、PICの汎用IOを使って無線モジュールの電源ラインをONにしたいと考えています。無線モジュールは、送信の時に50mA程度消費するのが最大のようです。PIC、無線モジュール共に5Vで動作させています。この場合に、汎用IOと電源ラインの間にどのような回路を構成すれば良いのか、どういったものを、どういった基準で選べばいいのかわかりません。どなたか、アドバイスいただけませんでしょうか。よろしくお願いします。RSなどで小ロットで注文できるもので構成できるとありがたいです。

  • シリアル通信の電圧変換

    シリアル通信に関する質問です。 出力が3.3Vのマイコンから入力電圧が5V必要なサーボコントローラの間で、シリアル通信をしたいのですが、どうやったらいいのでしょうか? 信号の方向は、 マイコン(3.3V)→サーボコントローラ(5V)です。 昇圧回路?とかを通すのでしょうか?その辺はよくわかってませんが。。

  • シリアル通信の通信・検証方法とは?

    Visual C++ 6.0(MFC)でプログラミングを行っています. VB 6.0でPCから値を入力し,PICへRS232Cケーブルを用いて値を送り,モータコントロールするプログラムは既に存在しており,現在はVBで書かれていた部分(インターフェイス部)をVC++に書き換えようとしています. サンプルプログラムを参考にシリアル通信に関するVC++のプログラムは完成し,PCからモータの制御を行おうと思ったのですが,うまくいきません. こういった際,どこに問題があるのかを検証したいのですがどうすればいいでしょうか? 現状, 1,シリアル通信ができていない 2,シリアル通信はできているが,PICへ値がうまく格納されていない 3,それ以外 問題があるのは分かるのですが,プログラマーのほうに原因がフィードバックされないため困っています. 明確な答えでなくても,アドバイスのようなものがいただけたら幸いです.