X



トップページ電気・電子
1002コメント367KB

Arduino初心者熱烈大歓迎質問スレ part33

■ このスレッドは過去ログ倉庫に格納されています
0001774ワット発電中さん
垢版 |
2021/12/07(火) 10:52:54.82ID:015O2ewy
http://www.arduino.cc/

【質問者心得】
・スレに一応目を通してから質問しましょう
・回答者はエスパーではありません。状況が分かるように詳しく書きましょう
 詳しく書いてくれないと、答える方も困ってしまいます。答えようがないのです
【回答者心得】
・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう
・節度ある初心者さんには、特に優しくね

前スレ
Arduino初心者熱烈大歓迎質問スレ part31
https://rio2016.5ch.net/test/read.cgi/denki/1623898761/
Arduino初心者熱烈大歓迎質問スレ part32
https://rio2016.5ch.net/test/read.cgi/denki/1633840724/

過去スレ
Arduino初心者熱烈大歓迎質問スレ part30
https://rio2016.5ch.net/test/read.cgi/denki/1613577696/
Arduino初心者熱烈大歓迎質問スレ part29
http://rio2016.5ch.net/test/read.cgi/denki/1601349163/
Arduino初心者熱烈大歓迎質問スレ part28
https://rio2016.5ch.net/test/read.cgi/denki/1591734520/
Arduino初心者熱烈大歓迎質問スレ part27
http://rio2016.5ch.net/test/read.cgi/denki/1585316143/
Arduino初心者熱烈大歓迎質問スレ part26
http://rio2016.5ch.net/test/read.cgi/denki/1579146318/
Arduino初心者熱烈大歓迎質問スレ part25
http://rio2016.5ch.net/test/read.cgi/denki/1568358922/
Arduino初心者熱烈大歓迎質問スレ part24
http://rio2016.5ch.net/test/read.cgi/denki/1554776918/
Arduino初心者熱烈大歓迎質問スレ part23
http://rio2016.5ch.net/test/read.cgi/denki/1541233445/
Arduino初心者熱烈大歓迎質問スレ part22
http://rio2016.5ch.net/test/read.cgi/denki/1534549073/
Arduino初心者熱烈大歓迎質問スレ part21
http://rio2016.5ch.net/test/read.cgi/denki/1527252804/
Arduino初心者熱烈大歓迎質問スレ part20
http://rio2016.5ch.net/test/read.cgi/denki/1514503488/
Arduino初心者熱烈大歓迎質問スレ part19
http://rio2016.2ch.net/test/read.cgi/denki/1500745528/
Arduino初心者熱烈大歓迎質問スレ part18
http://rio2016.2ch.net/test/read.cgi/denki/1485192244/
0647774ワット発電中さん
垢版 |
2022/01/28(金) 19:34:15.84ID:MSkrqMQw
>0から3まで数えられる
>33パーセント
>33パーセント
>33パーセント
>ゼロ
>4種類あるが最初はゼロしか数えられない
>数えられるのは3つしかない
>だから理論的には/3

理論の展開がおかしい。/3を前提にしているから、33%がでてきてる。

>4種類あるが最初はゼロしか数えられない
「最初」が変換値0を表すのだとしたら、だけど、理想の10ビットA/D変換器があるとして
そこに現実的な信号をつないだら、マイナス値でも与えない限り、変換結果0は得られないですね。
0649774ワット発電中さん
垢版 |
2022/01/28(金) 19:38:45.56ID:MSkrqMQw
>2ビットで/4だと0が25パーセントなのでゼロにはならないよ
5Vリファレンスの正電圧入力の2ビットA/Dコンバータに
0V以上の電圧を与えたとき、変換結果として0が得られたら、
入力値は0V〜1.25Vなのだといえるよ。

A/D変換結果が0のときに、入力が0Vだと言うのはそもそもおかしい。
正確には範囲で表現するべきこと。
0650774ワット発電中さん
垢版 |
2022/01/28(金) 19:40:52.93ID:MSkrqMQw
>>648
>理論的にはと前置きしています
いやー。理論になってない、ってことを↓と書いてるんだけど。
>理論の展開がおかしい。/3を前提にしているから、33%がでてきてる。
0651774ワット発電中さん
垢版 |
2022/01/28(金) 19:41:51.67ID:MSkrqMQw
そもそも、なんで4段階のうちのひとつだけを不平等にして考えるんだろう。
>33パーセント
>33パーセント
>33パーセント
>ゼロ
0653774ワット発電中さん
垢版 |
2022/01/28(金) 20:12:06.67ID:tT/m2E+m
整数(int)にアナログ(5V)的な整合性を追及してもキモイことになるだけ
10ビットでアナログ的な辻褄合わせしたいなら
float/double使って1023でオペレーションするべきかな

どうせ量子化ノイズが-60デシベル程度あるんだし
気にしない気にしない
0654774ワット発電中さん
垢版 |
2022/01/28(金) 20:20:56.61ID:LrHT+Scp
1ビットに話を戻します
0はゼロ
0の範囲は0から4.9V
1の範囲は5V
量子化の段階でこうなると思います
1は5Vに達しないと1になりません
確かに0だからといって0Vとは限らないのは分かりました
正確さを帰すなら/1ではないでしょうか?
/2で2.5Vで1とするのは精度的に問題ではないですか?
アナログだからわざと曖昧にするために/2である必要があるのでしょうか
0657774ワット発電中さん
垢版 |
2022/01/28(金) 20:37:52.54ID:LrHT+Scp
>>656
そこまで突っ込む必要があるのでしょうか
桁数が変わるだけで5.00000000000Vで1に達する事には変わりありません
0658774ワット発電中さん
垢版 |
2022/01/28(金) 21:03:52.48ID:1AmMTrBr
>>654

> 1ビットに話を戻します
> 0はゼロ
> 0の範囲は0から4.9V
> 1の範囲は5V

ネタだよな。その仮定だと1の範囲は5以上10未満になるけど10はどっから出てきた?
0664774ワット発電中さん
垢版 |
2022/01/28(金) 22:17:30.31ID:LrHT+Scp
>>663
私はど素人のズブの初心者なので
私の言ってる事が正しいかどうか分かりません
どなたかズバっと答えていただけませんか
0665774ワット発電中さん
垢版 |
2022/01/28(金) 22:38:52.83ID:MSkrqMQw
1ビットは2値。その2値が等しい電圧範囲を持つなら、5Vリファレンスなら
A/D変換値0は0〜2.5V。1は2.5V〜5.0Vですよ。

>/2で2.5Vで1とするのは精度的に問題ではないですか?
上記の電圧範囲であることの、どこに精度の問題があるのでしょうか。
ID:LrHT+Scpさん
「逐次変換A/Dコンバータ」の仕組みはわかりますか?

>1023説の人に聞きたいけど、一般的な、リファレンス5Vの電圧出力D/Aコンバータは、
>デジタル値がNのときに
>Vout = 5V×N/256
>それとも
>Vout = 5V×N/255
↑これについては、どう考えますか?
いくつかの8ビットD/Aコンバータのデータシートを見た上で考えてほしいです。

>>652でも書きましたが、328Pのデータシートに書かれていることと、あなたの説の整合性は
取れていますか?

>どなたかズバっと答えていただけませんか
2ビットなら4段階なのでVref/4ですよ。
0666774ワット発電中さん
垢版 |
2022/01/28(金) 23:35:42.46ID:kCWxuMB+
>>636
>>ADC結果が0x200...の真値は2.5V±0.5LSB
これは間違いだと思う>632でも書いたがx200(512)を出力する電圧範囲は2.500000〜 2.504882
Vin = ADC * VREF / 1024 で計算してしまうと最大0.004882(1LSB)の誤差が生じる可能性がある
0667774ワット発電中さん
垢版 |
2022/01/28(金) 23:47:15.41ID:hIRs2uDu
>>665
2bit だと
0〜1.25Vで0
1.25〜2.5Vで1
2.5〜3.75Vで2
3.75V〜5Vで3
なので、
変換値x1.25+0.625 ± 0.625 ですかね。
でも、電圧に変換して表示したときに
最低が0Vでなくて0.625Vってのは気持ち悪い。
0668774ワット発電中さん
垢版 |
2022/01/28(金) 23:51:56.77ID:MSkrqMQw
気持ち悪いかどうかで、A/Dコンバータの性質を決めちゃだめです。
0669774ワット発電中さん
垢版 |
2022/01/29(土) 00:03:19.02ID:Q8X5eVOk
ググってグラフを見てきたらなんとなく分かってきた
文字だけ見てると分からない
実験して実際に波形を見てみる
みなさんありがとう
0671774ワット発電中さん
垢版 |
2022/01/29(土) 01:03:20.00ID:wX9UZJyh
ADCの精度に夢見過ぎな奴多いな
例えば10bitADCならよい製品でも諸々込みで±2LSBくらいの変換誤差は有る前提で考えないと、安物だともっと悪化する
実はVrefの精度も検討してなかったりして
0674774ワット発電中さん
垢版 |
2022/01/29(土) 08:45:12.28ID:9mcXJhXe
>>670
元のURL
http://ww1.microchip.com/downloads/en/appnotes/atmel-8456-8-and-32-bit-avr-microcontrollers-avr127-understanding-adc-parameters_application-note.pdf

これを見て昨日のID:MSkrqMQwを修正します。
Figure 2-8. Perfect ADC in Single-ended Mode (Adjusted Quantization)
だと、実際の値に合わせるために、0.5LSBずらしています。

これを2ビットのADCにあてはめると (面倒なのでリファレンス4Vにします)
変換値0:0〜0.5V
変換値0:0.5〜1.5V
変換値0:1.5〜2.5V
変換値0:2.5〜4V
こういうふうに作られているADCもある、ですかね。

https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf
Figure 24-13を見ると、変換値0の部分はアナログ値の範囲が半分になっています。

アナログデバイセズのAD7813だと、この0.5LSBの補正は意図していないように見えます。
https://www.analog.com/media/en/technical-documentation/data-sheets/AD7813.pdf
Figure 7. Transfer Characteristic

A/Dコンバータによってこのあたりの考え方は違うのでしょう。

実際の回路では、オフセットエラーを含め、電源レールに近いところは、ADCをドライブする回路も含めて直線性も
悪くなるので、ここの0.5LSBがどうなっているのか突き詰めても益は少ないと思います。

いずれにしても、分解能は Vref/1024 ですけど。
0675774ワット発電中さん
垢版 |
2022/01/29(土) 09:23:55.37ID:wX9UZJyh
>>674
>これを2ビットのADCにあてはめると >(面倒なのでリファレンス4Vにします)
>変換値0:0〜0.5V
>変換値0:0.5〜1.5V
>変換値0:1.5〜2.5V
>変換値0:2.5〜4V
>こういうふうに作られているADCもある、ですかね。

ねーよ
元の資料をどう解釈したらそんなことになるんだ
0676774ワット発電中さん
垢版 |
2022/01/29(土) 10:09:55.07ID:afD/MXkB
>>674
話が本質に近付いて来たね。ADCのオフセットをどう捉えるかがポイントだと思う。

元のURLとしてリンク貼ってくれた資料で説明すると、
https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf
の Fig24-10 Offset error がそのオフセットに該当すると思うんだけど、

その値はTable 29-15. の Offset error で規定されていて、
スペックでは 2LSB Typ. となっている。(1LSB Typ.となっている資料もある)
つまり。0.5LSBとか言ってる場合じゃないくらい大きなオフセットが現実にはある。

.たぶんこれは前段のアナログ回路も含んだ値だろうから、ADC自体のオフセットでは無さそうだけど
これくらいのオフセットは覚悟しなさいと言うことなんだろう。

そんなことで、正確な入力電圧を推定するためにはゲインとオフセットの補正は必須と言うことだね。

話を戻すと、ADCの感度は Vref/1024で計算すればOK。
これを1023とか言ってる人は、ゲインとオフセットの区別が付いていない人。まあよくいるんだけどね。
0678774ワット発電中さん
垢版 |
2022/01/29(土) 12:11:38.92ID:s3kwM2eJ
UNO(ATMEGA328)のADCを実測してみました

VREF 5000mV
1 > 11.25~16.12
2 > 16.12~21.01
3 > 21.01~25.97
2020 > 4980.16~4985.02
2021 > 4985.02~4990.01
2022 > 4990.01~4995.02

VREF 2000mV
1 > 4.14~6.09
2 > 6.09~8.03
3 > 8.03~10.07
2020 > 1991.15~1993.12
2021 > 1993.12~1995.10
2022 > 1995.10~1997.19
0680774ワット発電中さん
垢版 |
2022/01/29(土) 12:48:48.34ID:KMKi2dYY
難しいことは良くわからないのだけど
328Pのデータシートに書いてある10bitADCの説明だとADC=Vin×1024/Vrefなんで、
誤差とか無視した理想電圧でvinMAX=Vref=5Vってすると、5Vを1024で割った値に
VinとVrefの比率を掛けた値がADCに出てきますってことだよね

で、ADC=1024は10bitじゃ表せないので、ADCに実際に上がってくる値の最大は1023
この値は5V-5V/1024から5V以上の間を表すってことなので、ADCの値1に付き何Vかを
計算するのは5/1024で、値が0なら0から4,88mV、値が1なら4.89mvから9.77mV・・・
値が1023ならば4.99512V以上ってコードで作りこむことになるんだよねぇ?
0681774ワット発電中さん
垢版 |
2022/01/29(土) 12:50:38.97ID:x6ODnAkl
>>678
すごい助かる
ありがとう
つまり0は0Vではなく他と同じように幅があるから/1024ですね
0683774ワット発電中さん
垢版 |
2022/01/29(土) 12:52:58.35ID:x6ODnAkl
市販の測定器とかは厳密な数値が出ると思うんだけど
arduinoとかとはなんか違うの?
0685774ワット発電中さん
垢版 |
2022/01/29(土) 13:04:43.21ID:s3kwM2eJ
>>682
変換後(0-1024) = 変換元(0-100) × ( 1024 / 100 )
出力には小数点が含まれるので整数に直すには四捨五入するのが理想
0688774ワット発電中さん
垢版 |
2022/01/29(土) 13:18:42.66ID:0tDK0vDB
>>686
確かに広いですね
厳密な測定は補正が必要なのでしょう
とりあえず私は1024でざっくり行く事にしました
よほどの時間がないと全部の補正なんてできないし
0691774ワット発電中さん
垢版 |
2022/01/29(土) 14:09:17.74ID:s3kwM2eJ
UNO(atmega328)のanalogRead値から電圧を求めるとして
atmega328の内部で量子化補正が「有り・無し」場合

【量子化補正有り】
Vin = ADC * VREF / 1024 (誤差 小)
Vin = ADC * VREF / 1023 (誤差 大)
Vin = (ADC+0.5) * VREF / 1024 (誤差 中)

【量子化未補正】
Vin = ADC * VREF / 1024 (誤差 大)
Vin = ADC * VREF / 1023 (誤差 中)
Vin = (ADC+0.5) * VREF / 1024 (誤差 小)

実測値をみてると量子化未補正に思えるけど、データシート見てもその項目が発見できてない(俺の馬鹿!)
PICとかのデータシートはわかりやすいのに・・・( https://i.imgur.com/JOZ6gsx.png
0698774ワット発電中さん
垢版 |
2022/01/30(日) 22:30:04.01ID:T/0Ov2wp
>>678さんがやっているような実測をもって、この0.5LSBの補正がなされているかどうかの
検証をすることには、ほぼ意味がないと思う。それ以上のオフセットエラーがある。

それに入力電圧が0Vのときに変換値が0にならないようなオフセットエラーはハードでも
ソフトでも補正が効かないので、素子自体は変換値0となる電圧範囲は広く取られることが
多いのでは。
0699774ワット発電中さん
垢版 |
2022/01/30(日) 22:38:12.87ID:T/0Ov2wp
>>696
DeepLをGoogle検索するぐらいはやったうえで、分からん、って言ってるのかな?
0700774ワット発電中さん
垢版 |
2022/01/30(日) 23:06:10.09ID:txn2jw73
>>698
最初の質問(>>585)の結論を出すことが目的だとして
現状結論を出せていない
0.5LSBの補正が「有る・無し」が答えのカギとなると思う
0701774ワット発電中さん
垢版 |
2022/01/30(日) 23:33:00.47ID:T/0Ov2wp
>>700

>結論:ADCからVinへのスケーリングは「1/1024」で計算しなけ
>   ればならない。
>   「1/1023」は間違いである。

これは、明白なことなので、ここでやっているような議論をする意味がない。

誤差のある現実世界のデバイスを実測してみても、あまり意味はない。
様々なエラーを含んだデバイスを、誤差のある測定を行って、仮に
「得られた結果は1LSBは1/1023に近いものだ」
となったとしても、1LSBが1/1024であることに変わりはない。

>>698の主旨は、実験で判断してはいけない、ということなのは理解してもらってるだろか?

こういうことはデータシートかメーカーの公式資料を引用して議論するか、
個人的に納得したいなら、メーカーか公式フォーラムに尋ねるのがいい。

実測で判断したいなら、誤差のないデバイスを持ってくるべき。(数を増やして平均してもだめだよ)
0703774ワット発電中さん
垢版 |
2022/01/31(月) 03:00:15.95ID:E7gZb1Um
UNO(atmega328)の場合
Vin = ( ADC + Offset Error ) * VREF / ( Resolution -1 + Gain Error )
※Gain Error = 2LSB Typ , Offset Error = 2LSB Typ
つまり
Vin = ( ADC + 2 ) * VREF / 1025
これかもしれない・・・(;´・ω・)

詳しい人助けて( ;∀;)
0705774ワット発電中さん
垢版 |
2022/01/31(月) 09:47:52.81ID:l2DVNjYE
>>701のまとめに同意だな。

>>678 が測定してくれたVref5000mVの場合で説明すると、
近似直線は、Vin = 4.8776 * ADC + 7.4907 となっている。

傾きの理論値は 5000/1024=4.8828 なので、実際には少し小さな値で計算しないといけない
ことが判る。そこで、コードは、

#define KA 0.998932 // 感度補正係数
#define KB 7.4907 // オフセット補正量

Vin = KA * ADC * 5.0 / 1024.0 + KB; // 電圧の計算式 (mV)

と書くのが判り易くて良いと思う。
なお、式の中で定数になる部分はコンパイラがあらかじめ計算してくれるので、実際には何度も
計算が必要になる訳では無い。
0706774ワット発電中さん
垢版 |
2022/01/31(月) 09:53:47.24ID:l2DVNjYE
あと、オフセットの話だけど、
片電源のオペアンプは入力電圧ゼロ付近に30mVくらいの不感帯、つまりオフセットがある。
それに比べるとATmaga328Pのアナログ回路は優秀だと思うよ。
0708774ワット発電中さん
垢版 |
2022/01/31(月) 11:06:58.11ID:gQGTB04O
正確な実測データがあるならそれ使って校正するのは測定器なら普通のことだしなぁ。個体のクセは実測データでしか補正できないし。まぁ、正確な実測データを得るのが難しいんだけど。
0709774ワット発電中さん
垢版 |
2022/01/31(月) 11:25:26.04ID:PJAGwFnj
Vref=5Vのとき
1LSB=5/1024=0.0048828125[V]
(Vrefー1LSB)が1023(0x3ff)になるのだから
5-0.0048828125=4.995117188[v]が0x3ff

最大値が3ffだから1023で割るのかな?と思っちゃった人は
「植木算」を思い出そうず(^p^)
(1〜3ffじゃなくて)0起算だから1024段階、という単純なハナシかとおもいきや、
なんかみんなえらく難しそうなこと話してるなぁ・・・
0710774ワット発電中さん
垢版 |
2022/01/31(月) 12:04:45.71ID:oDin7+3l
1bit DAC は、0Vと2.5Vを出すのだろうか?
0Vと5Vを出すのが自然ではないか。
0712774ワット発電中さん
垢版 |
2022/01/31(月) 12:25:51.58ID:AKCqNZYY
デジタルとアナログの区別がつかないからDACが成立しないのでは?
1chステレオサウンドといってるようなもの
0713774ワット発電中さん
垢版 |
2022/01/31(月) 12:46:55.04ID:PJAGwFnj
>>710
だがしかしラダー抵抗で解説されているページが検索でヒットしたので
ざっと拝読したところ三ビット出力111で4.375Vだそうですよん(5Vではなかった)。
http://mitt.la.coocan.jp/pic/pic7_16.html
0714774ワット発電中さん
垢版 |
2022/01/31(月) 13:05:13.94ID:gQGTB04O
DACでもvrefがどの値に対応してるかによる。秋月で売ってるやつ何個か見てみたけど
vrefと2^n(nはビット分解能)
が対応。出力は2^n―1までってのが多かった。microchipとLTだけだから他のところのまではわからんけど。
0715774ワット発電中さん
垢版 |
2022/01/31(月) 14:39:52.29ID:P78s3xoV
>>710
どういう回路構成のD/Aを想定してる?
今、話題になっている逐次変換型A/Dの場合は、ラダーD/A+コンパレータの構成をとるものが
多いので、必然的に1LSBの電圧がどうなのかについてはラダーD/Aを前提に考えることになる。
ところが、1ビットD/AだとラダーD/Aにする意味がほぼない。

ラダーを1ビットにすると、単なる分圧になるので2.5V。
でも意味が乏しいからラダーにしないので1ビットなら0-5Vとなると思う。
0716774ワット発電中さん
垢版 |
2022/01/31(月) 20:09:30.40ID:QeEdevin
10ビットA/DでVref/1023考えると精度が要らないから2ビット無視して
8ビットA/Dとして使うときVref/255になるのかVref*4/1023になのかと
考えると1023というのがおかしいことが分かる。
10ビットでVref/1024
8ビットでVref/256
となるのが自然な考え。
0717774ワット発電中さん
垢版 |
2022/02/01(火) 02:24:04.53ID:O6NLGNsN
◆Offset
The deviation of the first transition (0x000 to 0x001) compared to the ideal transition (at 0.5 LSB). Ideal value: 0 LSB.
0>1に変化する理想の場所は0.5LSBの位置と有るのでこの説明だと量子化補正の有る理想ADCとの比較が前提となってる

◆Gain error:
After adjusting for offset, the gain error is found as the deviation of the last transition (0x3FE to0x3FF) compared to the ideal transition (at 1.5 LSB below maximum). Ideal value: 0 LSB
1022>1023に変化する理想の位置は最大値(VREF)から-1.5LSBの位置と有るので量子化補正の有る理想ADCとの比較が前提となってる

データシート読むとゲインエラーはオフセット補償をした後の値と有るので

Arduino(UNO)はこれが正解じゃないだろうか・・・
Vin = ( ADC + Offset ) * Vref / ( 1024 + Offset + ( Offset - Gain error ) )
Vin = ( ADC + 2 ) * Vref / ( 1024 + 2 + 2 - 2 )
Vin = ( ADC + 2 ) * Vref / 1026
(※オフセット・ゲインエラーはデータシートの標準値を適応)

参考資料
ATmega48A/PA/88A/PA/168A/PA/328/P(Data Sheet)
AVR120: Characterization and Calibration of the ADC on an AVR (APPLICATION NOTE)
AVR127: Understanding ADC Parameters (APPLICATION NOTE)
0718774ワット発電中さん
垢版 |
2022/02/01(火) 08:13:01.81ID:nFKWdBwL
>>717
328PのデータシートのADCのエラーは、2LSBって書いてあったら、それは±2LSBだよ。(おそらく常識的に)

あと、実回路ではA/D変換に入るまでの回路の誤差もついてくる。
Vref/1024は理屈での話にすぎない。(理屈の話において、Vref/1023は誤り)

オフセットもゲインも実際のセットではリテラル値ではなく、ファームまたは
ハードウェアで作られる変数にするわけだしね。
(ファームならEEPROM、ハードウェアなら半固定抵抗などですね)

入力電圧がいくらなのか、って話をするときに、理屈の話なのか、実際の電圧を知りたいんだ、なのかは
切り分けないといけない。

Vref/1023かVref/1024かは、結果的にはゲインエラーとして効いてくるけど、1024と1023とを取り違えた
ところで、ここで発生する誤差は0.1%にすぎない。でもそのもとのVrefの誤差のほうがはるかにでかい(ことが多い)。

議論の中でVref=5Vがたびたび出てきたけれど、回路内で完結する何かの電圧が同じ5Vから分圧して得られている
ケースをのぞけば、この5Vの誤差がそのままゲインエラーにつながる。
7805みたいなレギュレータで作った5Vなら、数%の誤差があるよね。

328Pには1.1V内蔵リファレンスもある。こっちは正確かなw
0722774ワット発電中さん
垢版 |
2022/02/01(火) 22:53:01.40ID:TBK58kUv
使わないボードを選択する一覧から消したいのですが、どこを消せばいいのでしょうか?
promicro,promini5v,promini3.3v
この3つを頻繁に切り替えるので他のやつを非表示にしたいです。
0723774ワット発電中さん
垢版 |
2022/02/02(水) 11:04:00.47ID:rgOmbtSk
>>718
最初は自分もデータシートの誤差は±2LSBって意味だと思ってた
でもデータシートでは数値は以下の様に明確に区別されてるので±ではないと思われる(たぶん・・・)
https://i.imgur.com/SyzxuYu.png
もう一つの理由としてオフセット誤差・ゲイン誤差の数値がMaxではなくTypとして表記されてる事もある
±2等の誤差で有ればTypではなくMaxの方に記載されてるもしくは(Min>-2LSB MAX +2LSB)の様な表記になるはず

以上の事から自分は±ではなく2LSBの誤差を標準値として考慮する必要があると判断した

議論の中心はanalogReadから入力電圧を求める正しい式は何か?だと思ってる
機種の話は直接的には出てないけどArduino UNO(atmega328)を前提に考えてる
個体差での誤差は考慮出来ないので標準的な誤差はデータシートのTypを元に補償する場合での正しい式を求めようとしてる

ついでに混乱の原因としてAVRのデータシートでも2種類の計算式が記載されてる
https://i.imgur.com/sWKwOtU.png
https://i.imgur.com/GvoiOZ4.png (ATmega4809)
UNO(ATmega328) -> 1024
Micro,Leonardo,(ATmega32U4) -> 1023
Nano Every(ATmega4809) ->1023
0724774ワット発電中さん
垢版 |
2022/02/02(水) 12:22:20.17ID:BHVVT3Oa
>>723
もし標準的に+2LSBになるようにデバイスを製造できるのなら、標準的に0LSBに合わせて製造すればいいのに
なんでそうしなかったんでしょね。

>議論の中心はanalogReadから入力電圧を求める正しい式は何か?だと思ってる
現実の入力電圧を求めるのはハードウェアかソフトウェアの個別チューニングですよ。あくまで理屈の話でしかありません。

「Vref/1024で計算しているから」あるいは「データシートに書かれた標準誤差を含めた計算をしているから」という根拠で
「この装置は正しい入力電圧を得ている」と言えることなんてないです。

それより、>723で興味深いのは、1023と書いているデータシートです。

https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf
これの310ページで、たしかにADC=VIN*1023/VREFとなっています。
でも差動チャンネル(10ビットを±9ビットで使う)だと511ではなくて、512なんですね。

一方で、307ページには、
An n-bit single-ended ADC converts a voltage linearly between GND and VREF in 2^n steps (LSBs).
「シングルエンドの10ビットのADコンバータは、GNDからVREFを1024ステップで直線的に変換する」とあります。
また、1023と書かれている310ページにも
0x000 represents analog ground, and 0x3FF represents the selected reference voltage minus one LSB.
変換値0は、アナロググランド、変換値1023は、[選択したリファレンス電圧]-[1LSBの電圧]
となっています。記述に矛盾がありますので、どこかが間違っている可能性が高いと思います。
0725774ワット発電中さん
垢版 |
2022/02/02(水) 13:48:50.67ID:eUN5HOQU
電池駆動のとき電源電圧が変動すると思うんですが、
例えば、4.8V-3.3Vに変動したとき、処理速度とかAD変換とか
何か弊害が出ることはありますか?
0728774ワット発電中さん
垢版 |
2022/02/02(水) 20:18:05.72ID:BHVVT3Oa
>>725
A/D変換のリファレンス電圧が電源電圧からとられたものだったら、その分狂うね。

ただし、たとえば電源電圧とGNDをサーミスタと抵抗で分圧して温度を測るような
しくみだったら、実害は小さいだろうね。
0730774ワット発電中さん
垢版 |
2022/02/04(金) 10:06:17.57ID:m1hjy2FD
>>722
ttps://programresource.net/2020/02/28/3015.html

boards.txt を編集して、非表示にしたいボードに .hide=true を設定すればおk
0732774ワット発電中さん
垢版 |
2022/02/06(日) 17:50:35.59ID:Qv5lIRJJ
int raw = analogRead(A0);
map(raw, 0, 1024, 0,5000);

ってするとえわわわに届かない
0733774ワット発電中さん
垢版 |
2022/02/06(日) 18:11:13.26ID:x0TYMLvF
アドバイス求む
Arduino Pro miniをピンヘッダーを設置と同時に「ヒューズビット」及び
「.hex」ファイルの書換えを行いました。
ユニバーサル基板に「Arduino Pro mini」「USB to TTL converter」「ICSP端子」「その他必要配線」を設置したので
動作確認の為、AVRライターでPro miniと通信しようとしたが、何故かエラーで通信できない?
◆試した事
・デジタルマルチメーターでの導通test -> 問題無し
・ポリウレタン銅線を2度の取替 -> 改善せず
・配線ミスの確認
・本体「Arduino Pri mini」は問題無く動作確認済
●先人の方に何か見落とし等がありましたらアドバイス願います。
0735733
垢版 |
2022/02/06(日) 19:59:14.34ID:x0TYMLvF
お騒がせ致しました。
PCのUSB端子口を変えたら問題無く通信出来ました。
0737774ワット発電中さん
垢版 |
2022/02/07(月) 08:08:40.07ID:3tV6KbeJ
∧_∧  / ̄ ̄ ̄ ̄ ̄
( ´∀`)< オマエモナー
(    )  \_____
| | |
(__)_)
0740774ワット発電中さん
垢版 |
2022/02/07(月) 20:10:43.00ID:qgM8WVyT
「変ちきなジジイがおりましてさ、百二十畳敷きの紙に大達磨を描いてみたり、かと思えば米一粒に雀を二羽描いてみたり」
0741774ワット発電中さん
垢版 |
2022/02/08(火) 08:38:11.40ID:hWyYAG00
nanoにUSBコネクタに繋いで
5Vピンからも5V注入したら壊れる?
0744774ワット発電中さん
垢版 |
2022/02/08(火) 12:11:28.73ID:5LhPVNwx
電池駆動だとどこから電源供給するのが良いの?
VINだと6Vから12V
余分な電圧は熱になるが5Vは安定しそう
5Vから入力だと5Vピッタリじゃないとダメなので電池の電圧が瞬間的にちょっと下がっても無理そうだし
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況