
PIC16F88のAN4のアナログ/デジタル変換について教えてください?
PIC16F88にて以下のピンアサインでCCS社のCコンパイラで作成しました。AN2の温度AN3の湿度は正常にLCDに表示するのですがAN4の電圧がAN3の湿度の変化に追従してくるんです。ピンアサインが間違っているのか、PIC16F88に制限があるのか英語の説明書見てもチンプンかんぷんで。どなたかよろしくご教授お願いします。(現在AN4の電圧測定はオープン状態で0.245V 湿度計を触ると0.443vに変化します)
RB7(13ピン) LCD DB7(14ピン)
RB6(12ピン) LCD DB6(13ピン)
RB5(11ピン) LCD DB5(12ピン)
RB4(10ピン) LCD DB4(11ピン)
RB2(8ピン) LCD RS (4ピン)
RB3(9ピン) LCD STB (6ピン)
LCD R/W(5ピン)→GND
LCD VSS(1ピン)→GND****LCDタイプによりVSSとVDDが逆****
LCD VDD(2ピン)→+5V****LCDタイプによりVSSとVDDが逆****
RA2(1ピン)AN2LMC662CN 温度電圧入力
RA3(2ピン)AN3LMC662CN 湿度電圧入力
RA4(3ピン)AN4電圧測定
RA0(17ピン)右SW(B_sw)MAX and MIN クリア
RA1(18ピン)左SW (A_sw)MAX and MIN and 電圧 表示
関係ありそうなプログラム抜粋
#include<16f88.h>
#fuses HS,NOWDT,PUT,NOPROTECT,NOLVP,NOBROWNOUT,
#device ADC=10 //アナログ/デジタル変換10ビットモード
#usedelay(clock=4000000)//4Mzクロック
#usefast_io(b)//ポートB出力設定
途中省略
set_adc_channel(2);//A/D変換チャンネル設定
delay_us(116);//変換にかかる時間96μs+19.72μs
ondo = read_adc();//A/D変換レジスタリードしondoへ
ondo = (ondo * 50.0) / 1024;//ondo値を実数に変換
途中省略
set_adc_channel(3);//A/D変換チャンネル設定
delay_us(116);//変換にかかる時間96μs+19.72μs
shitsudo = read_adc();//A/D変換レジスタリードしshitsudoへ
shitsudo = (shitsudo * 100.0) / 1024;//shitsudo値を実数に変換
途中省略
set_adc_channel(4);//A/D変換チャンネル設定
delay_us(116);//変換にかかる時間96μs+19.72μs+α
v = read_adc();//A/D変換レジスタリードしvへ
v = (v * 0.5) / 1024;//v値を実数に変換
途中省略
main()
{
////////////////////////温度計湿度計電圧計の設定///////////////////
setup_adc_ports(sAN2 | sAN3 | sAN4 | VSS_VDD);//アナログポート設定
setup_adc(ADC_CLOCK_DIV_32);//アナログ変換クロック設定
No.1ベストアンサー
- 回答日時:
オープンにしているからです。
インピーダンスが非常に高いため、アナログマルチプレクサの浮遊容量等の影響で、隣の信号レベルが誘導されます。このピンに限らず、入力ピンをオープンにしておいてはだめです。このような誘導や、入力レベルが中間値になると電源に大電流が流れたり、いろいろ不都合が出ます。
オープンピンは出力モードにするか、入力モードなら、10KΩ程度の抵抗でGNDか電源につなぐようにしなければなりません。これは CMOS IC を使う上での常識です。
P0O9Iさま
今日パーツショップで10KΩの抵抗4つと10KΩの半固定可変抵抗4つを購入し実験回路を作って早速試してみました。AN1,AN2,AN3に回路を接続しAN4のみオープンとしました。
結果おっしゃる通りでオープン状態だと隣の端子に電圧が引っ張られます。抵抗と半固定の回路をAN4に接続するとVRの変化に比例して電圧測定出来ました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB 6 を VS 2012に変換するには?
-
Mac 乗数の入力方法
-
COMP-3
-
中国語が文字コード変換で、一...
-
VB6からVB2010への変換について
-
ハフ変換の原理をわかりやすく...
-
文字コードの変換
-
緯度、経度の 10進法と 60進法...
-
アセンブラ言語の数字を数値に...
-
.sb3のファイルを.sb2に変換す...
-
シフト演算の結果の型
-
家電製品の電力周波数を変える機械
-
Macターミナルで実行中のプログ...
-
TCP/IP通信時のサーバーからの受信
-
Excel(VBA)でSetTimer関数を使...
-
AIXでのプロセス使用メモリの最...
-
C# シリアル通信でデータ受信...
-
FOM出版の公認テキスト&問題集...
-
メッセージボックスのボタン名変更
-
powershell を使いカレントディ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
家電製品の電力周波数を変える機械
-
逆コンパイルと逆アセンブルの...
-
エクセルVBAの自動変換機能?
-
10進数をBCDに変換する方法
-
VB6からVB2010への変換について
-
緯度、経度の 10進法と 60進法...
-
分を時間に変換するプログラム
-
C#で漢字→ローマ字を変換
-
なぜ通信には16進数文字列が使...
-
vb.netの型変換について
-
正規表現でルビを小書きに変換...
-
マンセル⇔XYZ,RGB変換式或いは...
-
C#で漢数字をアラビア数字に変...
-
VB6から.NETへアップグレード時...
-
php
-
VB 6 を VS 2012に変換するには?
-
3のつく数字と3の倍数のみを表...
-
C++からCへのソース変換について
-
エクセルのvbaで検索ボタンを作る
-
tex 郵便記号のだしかた
おすすめ情報