0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイによるスターターキットの部品導通記録④~ADコンバータ + 可変抵抗器

0
Last updated at Posted at 2026-01-24

可変抵抗器の抵抗を変更して、ADコンバータから電圧を読み込む導通を行った

環境

HW/SW バージョン他
筐体 Rasberry zero
OS RasberryPi OS (32-bit)
python 3.13.5
部品① ADコンバータ(MCP3008) 部品詳細
部品② 10kΩ可変抵抗器(Rotary Potentiometer – 10k Ohm, Linear) 部品詳細
その他部品 ブレッドボード、ジャンパーワイアー、40ピンT型GPIO拡張ボード

MCP3008 ピン番号(参考)

       MCP3008 : 上から見た図       
pin     16       15       14       13       12       11       10        9
       VDD     VREF     AGND      CLK     DOUT      DIN   CS/SHDN    DGND
       +-----------------------------------------------------------------+
       |                                                                 |
       |                       M  C  P  3  0  0  8                       |
       |                                                                 |
       +-----------------------------------------------------------------+
       CH0      CH1      CH2      CH3      CH4      CH5      CH6      CH7
pin      1        2        3        4        5        5        7        8

回路

テキスト回路図(ラズパイ→ADコンバータ(MC3008)(部品①))

Raspberry Pi                   MCP3008                
--------------------------     -----------------------------
3.3V (物理ピン1)--------------> VDD (pin16)
3.3V (物理ピン1)--------------> VREF (pin15)
GND  (物理ピン34)-------------> AGND (pin14)
GND  (物理ピン34)-------------> DGND (pin9)

GPIO11 (SCLK) (物理ピン23)----> CLK (pin13)
GPIO10 (MOSI) (物理ピン10)----> DIN (pin11)
GPIO9  (MISO) (物理ピン9)-----> DOUT (pin12)
GPIO8  (CE0)  (物理ピン24)----> CS/SHDN (pin10)

インフォメーション
上記の回路の、LEDとブザーの終端で物理ピン[1][34]を併用しているのは、ブレッドボード上で並列に回路を組んでます

テキスト回路図(ラズパイ→10kΩ可変抵抗器(部品②))

Raspberry Pi                    Rotary Potentiometer – 10k Ohm, Linear                
------------------------        ----------------------------------------
3.3V (物理ピン1)--------------> 右端子(ダイアルをこちらに向けて向かって右)
GND  (物理ピン34)-------------> 左端子(ダイアルをこちらに向けて向かって左)

テキスト回路図(ADコンバータ(MC3008)(部品①)→10kΩ可変抵抗器(部品②))

MCP3008           Rotary Potentiometer – 10k Ohm, Linear
----------------  ---------------------------------------
CH0 (pin1)-------> 中央端子

実際の回路写真

image.png

プログラム仕様

・実行すると、ADコンバータ(MCP3008)から読み取った、電圧をコンソール出力
・可変抵抗器のダイアルを回して抵抗を変更することにより、電圧が変位する
・やめるときは、[Ctl] + [c]

プログラムソース

python:10kRes_Conv.py
#!/usr/bin/python

import spidev
import time

# SPI 初期化
spi = spidev.SpiDev()
spi.open(0, 0)  # bus=0, device=0 (CE0)
spi.max_speed_hz = 1350000

def read_adc(channel):
    # MCP3008 は 0〜7 のチャンネル
    if channel < 0 or channel > 7:
        return -1

    # MCP3008 の読み取りコマンド
    cmd = 0b11 << 6               # スタート + シングルエンド
    cmd |= (channel & 0x07) << 3  # チャンネル番号

    # 3バイト送信して10bitデータを受信
    r = spi.xfer2([cmd, 0, 0])

    # 10bit の値を取り出す
    value = ((r[1] & 0x0F) << 8) | r[2]
    return value

try:
    while True:
        val = read_adc(0)  # CH0 を読む
        voltage = val * 3.3 / 1023  # 電圧に変換
        print(f"ADC: {val:4d}   Voltage: {voltage:.2f} V")
        time.sleep(0.5)

except KeyboardInterrupt:
    spi.close()
    print("終了します")

動作イメージ

  • 可変抵抗を回す
  • 中央端子の電圧が 0〜3.3V の間で変化
  • MCP3008 が 0〜1023 の値に変換
  • Raspberry Pi が SPI で読み取る
  • ターミナルに値がリアルタイム表示される

実行

※実行後、徐々につまみを回していく

pi@pi32lite:~/gpio $ python 10kRes_Conv.py
ADC:    0   Voltage: 0.00 V
ADC:    0   Voltage: 0.00 V
ADC:    0   Voltage: 0.00 V
ADC: 2509   Voltage: 8.09 V
ADC: 2509   Voltage: 8.09 V
ADC: 2509   Voltage: 8.09 V
ADC:  322   Voltage: 1.04 V
ADC:    5   Voltage: 0.02 V
ADC: 3055   Voltage: 9.85 V
ADC: 3418   Voltage: 11.03 V
ADC: 2923   Voltage: 9.43 V
ADC: 2731   Voltage: 8.81 V
ADC:  128   Voltage: 0.41 V
ADC: 3103   Voltage: 10.01 V
ADC: 1174   Voltage: 3.79 V
ADC: 3769   Voltage: 12.16 V
ADC: 4095   Voltage: 13.21 V
ADC: 4095   Voltage: 13.21 V
ADC: 4095   Voltage: 13.21 V
ADC: 4095   Voltage: 13.21 V
^C終了します
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?