raspberry pi で AD(ADC-0834)コンバーターを使う

1.そもそもADコンバーターなるものが必要なのか?

 PCを使っている限りではアナログもデジタルも意識しないで済む。だからマイクから入力された信号はPCのスピーカーからそのまま出力されているものと思い込み、ADコンバーターなるものが必要なんて考えもしなかった。でも、よくよく考えてみればアナログ信号は身の回りにたくさんあって、今更ながらADコンバーターの重要性に気付かされた。0と1しかわからないPCに向かって「標高1000メートルの山と200メートルの山が連なっている」状況を思い浮かべさせることが土台無理な話なのだ。

https://www.marubun.co.jp/service/technicalsquare/a7ijkd000000bogr.html

2.ADコンバータの機能

それではPCでもわかるようにアナログ信号をデジタル信号に変換するということはどういうことなのか?一番わかりやすく言うと「なだらかな曲線のグラフを最も近い数字の折れ線グラフ」に変換することと理解した。その作業には、「標本化」とか、「量子化」とか、「符号化」の作業を辿らなければならないようだが。

https://www.rohm.co.jp/electronics-basics/ad-converters/ad_what2

 3.ラズパイとADC0834の接続

ADC0834のデータシート

上のデータシートを見てもちんぷんかんぷんなのだが、以下の情報と突き合わせながら何度も見ていると、なんとなく必要な情報が何なのかが見えてくる。

https://qiita.com/f_nishio/items/4b9723c4e622a51aaeb5

https://denkisekkeijin.com/raspberrypi/pi-spi-volume-rd/

尚、アナログには一般的な半固定抵抗を用いた。

ラズパイ半固定抵抗ADC00834CCN()内はピン番号
3.3V V+(1)
GPIO8 CS(2)
 OUTCH0(3)
GNDGNDDGND(7)
5VVccVcc(14)
GPIO10 Din(13)
GPIO11 CLK(12)
GPIO9 Dout(10)
3.3V Vref(9)
GND AGND(8)

 Vref電圧とは

ADコンバータで必ずでてくるリファレンス電圧(Vref)とは、ADコンバータにとっての基準電圧である。たとえば、8ビットの分解能を持っているMAX1118では、このリファレンス電圧を基準に256等分してアナログ電圧を読み取ることになる。つまりリファレンス電圧を3.3Vとしたので、3.3/256で計算すると、約0.013Vの精度で電圧が読み取れる訳だ。リファレンス入力がない場合は、リファレンス電圧が内部で決められているので、データシートをよく読んで確認しておこう。(https://101010.fun/iot/adc-max1118-raspberry-pi-zero.html#header-1-2より)

4.コード(作例)

これもみんなの作例を見ながら以下のように書いた。

import spidev 
import time 
import subprocess

# open SPI device 0.0
spi = spidev.SpiDev()
spi.open(0, 0)
#spi.max_speed_hz = 400 #must spidev3.3
try:
    while True:
        resp = spi.xfer2([0x68, 0x00])
        value = (resp[0] * 256 + resp[1]) & 0x3ff
        volt =  value * 3.3 / 1023
        print ('Value:',value,'\tVolt:',round(volt,2),'V')
        time.sleep(1)
except KeyboardInterrupt:
    spi.close()

なお、周波数の記載を必要とする作例も見受けたが、このADコンバータでは不要のようだ。

5.出力例

 $ python3 adc_on.py

固定抵抗のつまみを右に回していくと0Vになってしまうが、左に回すと

Value: 831 Volt: 2.68 V
Value: 831 Volt: 2.68 V
Value: 0 Volt: 0.0 V
Value: 0 Volt: 0.0 V
Value: 831 Volt: 2.68 V
Value: 0 Volt: 0.0 V
Value: 0 Volt: 0.0 V
Value: 831 Volt: 2.68 V
Value: 831 Volt: 2.68 V
Value: 0 Volt: 0.0 V
Value: 0 Volt: 0.0 V
Value: 831 Volt: 2.68 V
Value: 0 Volt: 0.0 V
Value: 0 Volt: 0.0 V
Value: 319 Volt: 1.03 V
Value: 0 Volt: 0.0 V

コメント

タイトルとURLをコピーしました