ツイート今回は電圧を測定します。PICのアナログ入力と分圧回路を使用して、測定対象の電圧を測定します。電圧の測定範囲は0[V]~10[V]としています。回路図およびプログラムに関する各種詳細は、以下の記事を参考にしてください。温度センサ照度センサシリアル通信(オウム返し)シリアル通信(発光ダイオードの点灯・消灯)7セグメントディスプレイ(3桁)シリアル通信1.今回使用するPICについて今回使用するPICは「PIC12F1822」です。基本的な回路の考え方(AD変換方法)は「温度センサ」を参考にしてください。電源(VDD)について今回、回路を作成しPICで測定した際、測定電圧に大きな誤差(0.2[V]くらい)が発生しました。誤差の原因は電源でした。使い勝手がよく楽ということから、スマホなどの充電に使用するバッテリを電源として利用しています。このようなバッテリは安定して5[V]を出力してくれると思っていたのですが、意外と安定していませんでした。電源が安定していないせいで、AD変換時に誤差が生じてしまい、測定電圧の誤差につながりました。バッテリなどを電源として利用する場合、以上のような問題が発生する可能性があるので、注意してください。そもそもこのようなバッテリを電源にしているのが問題なのでは?という突込みは置いといて、使用する場合、安定しているか確認する、または安定するような回路を追加するようにしてください。電源を変えたところ、誤差は0.02[V]程度になりました。(回路図の左下の抵抗が2つある部分)を通してPICが取得した電圧をもとに入力電圧を求めます。分圧回路の下についている抵抗(グランド側)測定対象のVinの電圧を求めるにはオームの法則を利用し、以下の式を解くことで求めることができます。R2PICが入力した電圧をVoutに代入することでVinを求めることができます。注:抵抗値は使用するマイコンや測定したい電圧により変更する必要があります。3.プログラムプログラムの基本的な部分は以下の記事を参考にしてください。プログラムの説明プログラムを見ながら以下の説明を見てください。ソースコードは次の節にあるので、そちらを参照してください。0;定数の宣言およびグローバル変数の宣言。グローバル変数は7セグメントディスプレイへのシリアル通信でのデータ転送用です。}}シリアル通信でのデータ転送処理です。1;各種初期設定です。周波数、ポート設定、シリアル通信設定などを行っています。ADRESL;AD変換し電圧の取得を行っています。(long)R2_OHM;取得した電圧から入力電圧を求めています。測定した電圧をシリアル通信を使用して7セグメントディスプレイに送信するためのデータを作成しています。ソースコードプログラムの全文を掲載します。(新しいウィンドウで開く)<注意>ファイル名は必要に応じて変更し利用してください。本サイトの注意事項を確認してください。ソースコードや回路図などを使用する場合、上記注意とともに、自己責任でお願いします。電圧の測定対象はニッケル水素充電池を6本直列接続したものです。テスターと比べてみても最大0.02[V]の誤差で収まっています。PM電圧の測定はPIC12F1822で行っています。その出力値を7セグで表示するためにPIC16F1826を使っています。PICの配線」の「シリアル通信(TxD:送信)(補足:7セグメントディスプレイへデータ転送)」がPIC16F1826につなげている配線になります。コメントをキャンセルメールアドレスが公開されることはありません。※サイト上に表示された文字を入力してください。date*日本語が含まれない投稿は無視されますのでご注意ください。reserved.ログイン。