• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:自動車のECUの電圧をPICに取り込みたいのですが)

自動車のECUからPICに電圧を取り込む方法

このQ&Aのポイント
  • 自動車のスロットルセンサーの電圧をECUからPIC16F873Aに取り込む方法について調査しました。
  • A/Dコンバータのポートに直接電圧を入力すると正常な値が出ず、抵抗を入れても同様の結果となりました。
  • 他のポートに接続したところ正常に動作したため、問題はAN1のポートが開いていない可能性があります。

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

  • ベストアンサー
noname#230359
noname#230359
回答No.4

「A/Dコンバータのポートへ直接入れるとなぜか電圧が下がって」は ?PICをECUに接続するとECUの出力電圧が下がる。 ?PICの出力表示がECUの出力電圧より下がっている。 によって原因が違うと思います。 ところで下がるとは何Vが何V程度になるのでしょうか。また、ECU出力の最高電圧は何Vでしょうか。 チョットPICのデータシートを見てみましたがPICの入力インピーダンスの規格は見つけられませんでした。 ?の場合:PIC16F873AのVDDは4.0~5.5VなのでVDD、VREF共に5Vで使用しているとして、 ECU側の出力インピーダンスが高い、つまりPICの入力インピーダンスが相対的に低いので皆さんがおっしゃっているようにインピーダンス変換が必要。 ?の場合:ECUの出力インピーダンスが高い。しかし、ECUの出力電圧が下がるほどではないが必要なAcquisition timeが短く表示電圧が低い、長くする必要があるのでソフトで対応。A/Dポートの項目でECUの「Recommended Impedance of Analog Voltage Source」がMax.2.5kΩとなっています。 くらいしか考えつきません。 内部回路を見つけました。 http://ww1.microchip.com/downloads/en/devicedoc/33023a.pdf のP23にあります。1kΩで120PFを充電して電圧をホールドしており、バッファーは入っていないようです。 やっぱりAcquisition timeかな。式も出ていますので計算してみてください。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

noname#230359
noname#230359
回答No.3

ECUもPICも具体的には知らないのですが、ADコンバータの入力インピーダンス があまり低いということはめずらしいので、他の可能性も考えました。 電源電圧はどうでしょうか。ECUが5V系で、PICが3.3V系などということは ないでしょうか。つまり、ADにとって信号が過大電圧になっていないで しょうか。

全文を見る
すると、全ての回答が全文表示されます。
noname#230359
noname#230359
回答No.2

内容に責任は持てませんが、技術的にはFET入力のオペアンプで受ければ 電流はほとんど流れませんのでドロップはしません。

全文を見る
すると、全ての回答が全文表示されます。
noname#230359
noname#230359
回答No.1

こんにちは。よろしくお願いします。 ECU直接は何かあっても良くないですので、やめた方がよろしいでしょう。 小さい値の直列抵抗やダイオードなどによる保護が必要と考えます。 電圧が落ちてしまう原因ですが、ADCの入力抵抗がさほど高くないからだと思います。それで、OPAMPを1段入れてヴォルテージフォロワを作るよろしいかと思います。 頑張ってください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PICを3.3Vで動作させるには?

    PIC初心者です。PIC16F873AというPICを3.3Vで動作させたいのですがうまくいきません。同じ回路で電源電圧を5Vにし、動作することを確認しているので回路やプログラムには問題ないと思われます。 データシートでは2.0V~で動作するようになっていると思うのですが、電源電圧5Vで動作させるときとどこか変更しなければならない個所があるのでしょうか?それとも3.3Vでは動作しないのでしょうか? ちなみにクロックは外部クロック10MHzを使用しています。 PICに詳しい方、よろしくお願いいたします。

  • PICを用いた電圧制御について

    16F84AのPICを用いて電圧を1Vから13Vまで出力を可変させる回路を製作したいと思っています。 現状では 抵抗を1kΩの抵抗を13本繋ぎ分圧し、トランジスタのスイッチング作用を用いて1~13Vまで出力を変化させようとしているのですが、うまくいきません。 ヘタな質問になってしまいましたが、どなたか改善案についてアドバイスいただけたら幸いです。 よろしくお願いします。

  • PIC LFタイプの動作電圧は?

    PICの低電圧動作タイプ(LF)の動作電圧範囲はどのくらいでしょうか?通常タイプ同様クロック周波数に影響するのでしょうか? データシートに書いてあるらしいのですがどの辺に書いてあるのでしょうか。(PICは16LF873Aです) よろしくお願いします。

  • 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とリレー

    超音波センサで障害物を検知し、それをPICで処理してリレーを動作させたいのですがPICの出力ってどれくらいなんですか? 動作させたいリレーの操作部は定格電圧が5V、定格電流が150mAなのですがこれはPICで制御可能なのでしょうか? どなたかアドバイスお願いします。

  • PICの出力できる電圧について

    PIC(16F88)のキャプチャモジュールを使い、対象物の周波数を得て、それをLCDに表示する工作をしています。SIMやstimulusでプログラムにはとくに問題がないことを確認しました。 つぎに、別なPIC(16F84A)で100Hzの実験用信号を先の16F88のCCP1(RB3)に入れて、16F88のプログラムの確認をしようと思ったのですが、うまくいきません。LCDには、ただ0Hzとだけ表示されます。なお、ここでもSIM等を使って、プログラム上での100Hzの出力は確認しました。 16F84Aからは、RB0とRB1から100Hzの出力をし、RB0を16F88のCCP1に直接入力し、RB1にはLEDにて出力の視覚での確認をしようとしています。 ここで使用する両PICには、それぞれ別々にTA4805Sで5Vをかけ、アースは共通にしました。 手持ちのアナログ電圧計で、16F84AのRB0とRB1の出力電圧を測ってみると、RB0はほとんど0Vであり、RB1はおおよそ4.5Vあり、LEDはちゃんと光ります。また、RB1のLEDをそのままに、RB0を開放すると、RB0は4.5Vありました。16F88側のCCP1(RB3)は入力に設定してあります。 PICの出力する電圧は、5Vくらいだとおもっていたのですが、どうしてこのようなことになるのでしょうか?どうすれば、CCP1に100Hzの実験用信号を送れるようにできるのでしょうか?電気にはまったく疎いので現在勉強中なのですが、どなたかよろしくおねがいいたします。

  • ECUに出来ること

    ECUの学習機能について詳しい方、おられましたら宜しくお願いします。現在、ホンダ・フィットにECUの学習機能キャンセルのユニットを装着しており、マフラー、エアクリーナー、ビッグスロットル等のチューニングに伴うパワーアップをじゅうぶんに堪能しております。しかしながら、ECUおよびECUキャンセラーが実際にどのような仕組みで、何をどう制御しているのか、本当のところでは非常にあやふやです。たとえば、以下のような事柄について、お教えいただけますでしょうか? 『吸気量の多寡は、何を根拠に判断しているのか?もし気圧が低いのに酸素量は十分に確保できるような状態(気圧を下げるかわりに空気中の酸素の含有率をあげる等)を人為的に作るような意地悪をした場合、クルマはだまされるのか?』 『吸気量の制御はスロットルボディのバタフライで行っているが、それはアクセルペダルに直結したスロットルワイヤーの伸縮という原始的かつメカ的な動作にのみ依存しているはずである。では、吸気に関するECUの学習結果(吸気量の微増や微減)は、そこにどうやって盛り込むことができるのか?』 『最も理想的な空燃比においては、完全燃焼にともなう最大限のパワーの抽出と、それに比較して最小限度の燃料の消費が可能となるはである。しかし実際にはエンジン保護の観点から燃焼温度を下げるために、それよりも濃い目の方向にシフトするようにECUが制御しているはずである。ということは、ECU学習機能キャンセルによるパワーアップとは、吸気量を増やすことである、と言い換えても構わないか?また、それはサブコンを用いる方法と、何が違うのか?』 以上、宜しくおねがいします。

  • PIC16F627Aを低電圧で動かすには

    PIC16F627Aです 電池で駆動するプログラムを書いていてうまく動かないので 5V安定化電源につないだら動きました。 確かめるために BポーがをHIにするところでストップするようにして確かめました。 4.4Vでは動作しません。5Vでは動作します。 プログラムは下記です。 このPICは3Vから動作すると思いますが低電圧で 動かすために特別な設定が必要なのでしょうか。 あるいは小生の設定に問題があるのでしょうか。 ご教授ください。   TRISA = 0xFF;   TRISB = 0x01; CCP1CON = 0x0C; PR2 = 0x19; CCPR1L = 0x0C; CCP1CON = PWM_STOP;   T2CON = 0x0C; T1CON = 0x01; TMR1L = 0; TMR1H = 0; TMR1IF = 0; TMR1IE = 1; PORTA = 0x00; PORTB = 0xFF;   ここで4.4V(電池)ではPORTB がHIになりません。   5V電源ではHIになります。   電圧チェックおよびダイオード発光で確認しました while(1) {;}; 以下省略

  • picを使った温度計

    picと温度センサーを使ってLCDに温度を表示するようなものを作ろうと思っています。 温度センサーはS-8100Bというものを使って直接picに接続しており、picに内蔵された10bitのAD変換器を使って温度を測定しようと思っています。 AD変換の基準電圧を5Vにしてうまくフルスケールになるようにと思っているのですがどう計算したらいいのかわからなく困っています。 センサーの温度特性は-8mV/℃で30℃の時1.508V、80℃の時1.095Vを出力します。 精度としては室内の温度を測定したいので、小数点以下は四捨五入して0~80℃(実際は80℃もいりませんが)の範囲で考えています。 また、部品数を少なくしたいので電圧値がらみの計算は全てプログラム上でやろうと思っています。 フルスケールでかつプログラム上で処理しやすくするにはどのように電圧値を考えたらよいのでしょうか。

  • PICで小数点の演算

    PIC16F877Aを使ってプログラムを作っています。その内容がセンサー(例えば温度センサー等)から取り入れた電圧をPICのA/D変換(10bit)を行って、その値を使ってpicで計算し、その結果を液晶に表示するといった内容なのですが、その計算過程で小数を扱わなければならないのですが、その計算がうまくいきません。A/D変換後の値をxとし具体的に式で書くと、 v = x * 5 / 1023  ・・・(1) ここでvはセンサーから取り込んだ電圧値(値の範囲は0.935~1.748)です。 y = 218.5 - v / 0.008  ・・・(2) 又は y = 218.5 - 125 * v  ・・・(3) 上記の式はA/D変換後の値xを一度アナログ電圧値vに変換し(1)、そこから(2)又は(3)へ代入して得たい情報yを算出するといった少々面倒なものなのですが、これをアセンブラで書きたいのですが、このPICには乗除命令がないことや小数点の演算方法、16bitの乗除等の部分が引っかかってどうもうまくかけません。小数部分は固定小数点形式で考えて最終的にyは少数第二位を四捨五入したいと思っています。 どのようにプログラムを作ればよいのでしょうか。実際にソースを書いていただけると大変理解しやすいです。