Arduino初心者熱烈大歓迎質問スレ part22at DENKI
Arduino初心者熱烈大歓迎質問スレ part22 - 暇つぶし2ch109:774ワット発電中さん
18/08/27 12:05:14.07 JrLIHxIO.net
長文ですみません。複数のアナログ値の読み込み時の動作ついて教えてください。
今作っている装置では、ArduinoNanoのA0,A1,A2,A3,A6のポートに合計5つのセンサーが取り付けられています。(4と5はI2C)
AD変換完了割り込みベクタを使って、ADMUX書込み(チャネル変更)→ADSRAのADSCをセット(変換開始)して最速で回しているのですが
これで全5つセンサーのデータを正しく読み込めているんでしょうか?動きはしますが、他のポートに繋いだセンサの影響が出ています。
(例えばA0のセンサを外して1kΩ経由で5Vに繋いだりGNDに繋いだりすると、関係ないA1やA2の値が引き摺られて変わります。)
サンプルプログラムを掲載している先人のウェブサイト(ArduinoだけでなくAVRマイコンの物も含む)を見ると
『ADMUXレジスタに書き込んで、マルチプレクサが安定するまで待つ』と言った記述をしているサイトが見受けられます。
これは経験則から来るものでしょうか?または、どこか公式の文献に記載されている所がありますか?
ATmega328Pのデータシートや、Atmel(今はMicrochip?)が発行しているADコンバーターに関する応用記述を読むと
基準電圧を切り変えた場合は最初のAD変換の結果は不正確なためこれを破棄することが推奨されていますが
マルチプレクサを(シングルエンド入力チャネル内において)切り変えた場合については特に言及されていませんでした。
ADコンバーターの設定はArduinoデフォルトのままなので16MHzが1/128されて125kHzが変換クロックですよね。
ADMUXに書き込んだ後ADSCが上がって即変換クロックのタイミングだった場合、マルチプレクサ変更から即ADCが始まったとして
データシートの仕様を見ると通常変換モードで、ADSC立ち上がり認識からサンプルホールド開始まで1.5変換クロックとあるので
この今のスケッチだと、マルチプレクサのレジスタが書き換えられてから、最速の場合でおよそ12μ秒後にサンプルホールドが始まっています。
この時間はマルチプレクサの切り替えに十分でないのでしょうか?(切り替えに10秒も掛かるマルチプレクサ...?)切り替えに必要な動作時間の記述が見つけられませんでした。
AD変換周期をカット&トライで伸ばして行けば、今回の結果が前回の結果に引き摺られる量が減ることを確認したので
値の引き摺りが我慢できるところまでサンプリング周期をテキトウに伸ばしちゃっていますが、サンプリング周期を設定する根拠が欲しいのです。
出来ればサンプリング周期は下げたくないので、もし、そもそも自分が何かミスをしていて上記問題を解決できる方法があれば教えてください。
サンプルホールド回路の入力インピーダンスに対してセンサーの出力インピーダンスが高いのかと思いましたがそうでもないようでした。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch