« 松原 始 著 『鳥マニアックス』 | トップページ | フレデリック・フォーサイス著「シェパード」 »

2022年11月17日 (木)

1023 vs 1024 、255 vs 256 なんでみなさん「2^n-1」が好きなの?

Arduino、analogWriteは捨てちゃえ。ちゃんとしたPWMを使おう
この直前の名なしさんから頂戴したコメント(2022年11月17日  09時28分)。
1/255や1/1023がおかしいと分かってもらうのに、こんな絵を描いてみました。
いかがでしょう。
Ss11_20221117180001
1cmを8bitにしたとき、上位桁がどういうふうに見えるかを
表現してみました。

※定規はほんまもんをスキャン

1cm、2cm・・・とcm単位での区切りのところが、
0x0100、0x0200・・・と8bit単位での桁上がりに
なります。

そこで「分解能」を示すのなら、1cmピッチの定規だと「1/10」。
「1/9」じゃありません。
それを8bitにすると・・・
「1/255」だとアカンのが見えてくるかと。

※コメントした所をコピペしておきます。
~~~~~~~~~~~~~~~~~~~~
1mmごとに目盛が刻まれた定規。
この定規の分解能は1mmで、(基点の0mmにも目盛を
入れるとして)11本目が10mm = 1cm。

目盛0~9の10本、1桁の数字で表現できるのは0~9mm。
0/10cm~9/10cmが計測範囲。
分解能は1/10cm = 1mm。
  1/9cmではありません。
10mm=11本目になると桁が増えます。

ADCだとこの10mmが基準電圧。
「基準電圧 - 1LSB」の入力電圧が最大値です。
~~~~~~~~~~~~~~~~~~~~


※追記 4cmを1023にしたら (2022-11-19)
Ss12
1mm目盛の定規、4cmでの分解能は「1/40」。
「1/39」ではありません。


※さらに追記 1cmフルスケールで
Ss2_20221126092001
定規の読みでも「-1LSB」が値が得られる最大値です。
これで、ADCによる測定が基準電圧を越えられない
ことがわかるでしょう。

|

« 松原 始 著 『鳥マニアックス』 | トップページ | フレデリック・フォーサイス著「シェパード」 »

Arduino」カテゴリの記事

1023 vs 1024」カテゴリの記事

コメント

再三指摘してくれている一連の問題点がとても分かりやすくて良いです。

それまでアナログ処理だったものをデジタル化する時には特に注意必要ですね。

投稿: mytoshi | 2022年11月18日 (金) 13時02分

0x000~0x3FFと、10bitまで伸ばした絵(数値)も
いっしょに描いてみますわ。

定規だと4cm=40mmで分解能は1/40に。
1/39ではないということで、1/1023が
おかしいと分かっていただけるかと。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2022年11月18日 (金) 17時59分

定規の比喩はかえって混乱するかもしれません。

ミリ単位で読むとしたら、40mmなら0から40の41種の読み値が得られます。
41種の読み値で分解能が1/40である、ということは、
>0~255までの「0」を含めた256レベルなので分解能は1/256ではなく1/255です。
と一致しえます。

定規にたとえるなら、
「リファレンスが40mmのA/Dコンバータで、読み値が0~39を得る。
ほら、この場合、分解能が1/40ですね」
ということを説明しないといけないのですが、どうしたものか。

結局のところ比喩なしに、A/Dコンバータは、リファレンスの端から端までを
読み値のmin-maxにしているのではない、ということを彼らが理解しないと
いけないのだと思います。

投稿: | 2022年11月20日 (日) 01時31分

定規の話、続けてみます。
◆1cmの時
(1) 長辺1cmちょっきしの紙片があります。
   ※フルスケールの定義
(2) 1mmごとの目盛を書き込むとき、全部で何本に
  なりますか?
   ※両端(0cmと1cmの位置)は切断されているので
    目盛は書き込めません
(3) 半分に折る場所は何mmの位置。
   ※半値の問題
(4) 半分の位置ちょうどに1mm目盛はありますか?
  それとも、1mm目盛の中間ですか?
(5) 1cmのあいだに1mmで区切られたスペースはいくつ
  ありますか?

◆4cmの時
(1) 長辺4cmちょっきしの紙片があります。
(2) 1mmごとの目盛を書き込むとき、何本?
(3) 半分に折る場所は何mmの位置?
(4) 4つに分けたいときは2回折り。
  それぞれ何mmの位置?
(5) 4つ折りの位置に1mm目盛はあるか?
  それとも目盛からずれてる?
(6) 4cmのあいだに1mmのスペースはいくつ?

これで定規の長さと1mm分解能の関係が「目に見える」
でしょう。
記事の定規、4cmを書き加えたのは1cm目盛がきっちりの
数字(8bitでの)になることを示したかったから。
みなさんの好きな「1/1023」では中途半端な値に
なりますんで。

この話と、
  ・ArduinoのanalogWriteの異常さ
     0で全L、255で全H なぜ?
  ・Arduinoのmap関数、例題のミス
  ・割り込みでのアトミック処理の重要性
が理解できなければ、マイコンとは遊ぶだけにして
くださいな。仕事にしないで。
  割り込みの話は洒落にならん結果を生む可能性が
  あるんで。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2022年11月22日 (火) 09時03分

コメントを書く



(ウェブ上には掲載しません)




« 松原 始 著 『鳥マニアックス』 | トップページ | フレデリック・フォーサイス著「シェパード」 »