Arduino IDEでRaspberry Pi Pico:PWMでD/A出力してA/D入力を試す
Raspberry Pi Picoの実力試験、まずはA/Dコンバータをば。
RP2040に乗ってるA/Dコンバータの分解能は12bit。
データシートを見ますと、その実力値を示す「ENOB」
(Effective Number of Bits)は「9bit」と記されています。
12bitだとVrefに2.5Vを使うと1bitあたり0.61mVとなります。
A/Dの入力電圧を可変するために、使ったのがPWM出力。
これも12bitに設定できるので、同一のVrefを使うと同じ
スケールにできます。
こんな回路で試しました。
35pinのVrefにシャントレギュレータ「LM4050-2.5」を
つないで安定化。
Picoの内部にはシャント抵抗(R7:200Ω)が入っていますので、
図のような接続で安定化できます。
そのVref をPWM周期で駆動するマルチプレクサを通して、
VrefとAGND電圧を切り替えます。
そして、LPFを通して0V~Vrefの直流に。
オペアンプでバッファしてPicoのA/D入力につなぎます。
PWM→LPF→DC電圧という流れのD/A、誤差要因は
オペアンプの特性。
使ったMCP6072、RR-in/RR-outの低オフセット電圧品。
ただ0V付近は1.0~1.5mVほどの不感帯が生じます。
PWM値と読み出したA/D値の差をグラフにしてみました。
PWM値0~4095を32ステップで可変しています。
※PWM値を0,32,64,92・・・と増加
まずはA/Dの平均値処理やA/D入力にCRフィルタを付けない
素の状態。(赤色線)
それと、回路図内黄色枠のように、A/D入力にCRフィルタを
装着して試してみます。(緑色線)
「CRフィルタ」(1k+0.1uF)を入れた方は、
入力電圧が上がるとA/D値が減少する傾向が見えます。
RP2040のデータシートを見ますと、
「ADC Input Impedance」が「100kΩ」と
出ています。
どうやらこの抵抗で「分圧」されてしまっている
ようです。
ノイズを防ぐために抵抗+コンデンサをいれちゃダメ
というところでしょうか。
次はCRフィルタ無しでA/D値を平均処理してみます。
単純な加算平均です。 16回と64回を試します。
stepは同じで32。
さらに。 A/Dの平均回数を64回にして、stepを4に
してみました。
数値512,1536,2560,3584の4カ所で「段」が
出現しました。
この4カ所の「段」、前後をstep1にして見たのがこれ。
(平均回数は64回)
「差」だと段に見えますが、値の変化で見るとこのように
「上昇が緩やかに」なっているのがわかります。
16stepくらいの間、変化が止まっているように
見えます。
A/D変換直線性の性能ということでしょう。
とりあえずラズパイ・ピコのA/Dの実力ということで。
※テストに使ったスケッチ (.inoではなく.txtにしています)
・ダウンロード - pwm_ad3.txt
※パラメータ入力
PWMを出力するためのパラメータ設定入力、
手抜きしてますので注意を。
・起動時はEnter入力するとタイトルを出して始まる。
電源オン、あるいはリセットとUSB通信開始の具合。
USBがいつつながるのか?
USB接続でPicoはリセット起動しないのか?
このあたりがよくわかりません。
・5つのパラメータ入力、「#Start End Step Avr Wait >」
「strtok」で文字のかたまりを分離して「atoi」で
文字を数値に変えているだけで、数値範囲のチェックは
していません。
※追記
実験の様子。 ブレッドボードを使ってます。
※PWMによる12bit D/Aコンバータ、その精度を確か
めてみました。
0.1mVの計測、自動ではできないので手でメモしてます。
「段」の出現、D/A出力をミスっていたらということで、
0V付近、フルスケール付近、そして「512」付近の値を
調べてみました。
PicoのPWM出力、「0V付近を除いて」ほぼ計算どうり
の値が出ています。
※0V付近はオペアンプの性能。
フルスーケール値「Vref * 4095 / 4096」もちゃんと
出ています。
Arduino UNOのPWMのように「0は0で合っている」けど
「255で256/256」と、おかしなフルスケールにはなってい
ません。
ちゃんとPWMしています。
これぞ正真正銘の「analogWrite」。
※Arduino UNOのは似非のanalogWriteっす。
※参
・Arduino、analogWriteは捨てちゃえ。ちゃんとしたPWMを使おう
※次記事:オペアンプ出力とアナログ入力間に入れた
CRフィルタについて。
・Arduino IDEでRaspberry Pi Pico:A/D入力が…あれっ?
※検索
・macOSからPi Picoを使う - その11 [Pi Pico]
似たようなデータが出現しています。
| 固定リンク
« Arduino IDEでRaspberry Pi Pico:Win7でのUSB問題解決です | トップページ | Arduino IDEでRaspberry Pi Pico:32bitマイコンがバグを生む »
「ラズパイ・ピコ」カテゴリの記事
- トラ技2024年5月号に「3.3/65535」(2024.04.07)
- ラズピコだと1/65535が出現(2024.03.30)
- Help me! ラズピコ、Philhower版だとスケッチをアップロードできない(2023.04.12)
- Arduino IDEでのラズピコ開発環境 Philhower版が正解でしょう(2023.04.04)
- ラズピコのピン:自由になりそうだけど定義で固定されている(2023.04.03)
コメント