Skip to main content

Raspberry Pi用8チャンネル12ビットADC(STM32F030)

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

ADCはRaspberry Piの一般的なアクセサリです。現在、多くの安価なMCUには内蔵ADCが搭載されているため、コストパフォーマンスが高く低消費電力のARM Cortex M0 MCUであるSTM32F030をベースにした8チャンネルADCを作成しました。このMCUから8チャンネルのADCをブレークアウトし、4つのアナログGroveコネクタを統合しているため、アナログGroveモジュールも使用できます。

特徴

  • CRC計算ユニット
  • 5チャンネルのダイレクトメモリアクセス(DMA)コントローラー
  • アラームと定期的なウェイクアップを備えたカレンダーRTC
  • タイマー
    • 高度制御タイマー
    • 汎用タイマー & 基本タイマー
    • 独立型およびシステムウォッチドッグタイマー
    • SysTickタイマー
  • リアルタイムクロック(RTC)
  • シリアルワイヤデバッグ(SWD)
  • Raspberry Pi 3B/3B+/4をサポート

仕様

項目
動作供給電圧3.3V
ADC解像度12ビット
最大クロック周波数48 MHz
プログラムメモリサイズ16kB
データRAMサイズ4 kB
データバス幅32ビット
動作温度-40~85℃
通信インターフェースI2C
I2Cアドレス0x04(デフォルト)
サイズ長さ: 65mm 幅: 55mm 高さ: 18mm
重量25.9g
パッケージサイズ長さ: 140mm 幅: 75mm 高さ: 25mm
総重量45g

主な用途

  • 温度測定
  • 消費財

ハードウェア概要

ピンアウト

概要

GPIO

Raspberry Piと同じピンアウトです。

SWD

このボードにファームウェアを書き込むためにSWDポートを使用します。また、このセクションではピン9/ピン10/ピン11を見ることができます。これらの3つのピンはGroveポートでは使用されていないため、ピンの競合を心配することなく自由に使用できます。

Groveアナログポート

Raspberry Piには内蔵ADCがないため、STM32ベースのADCボードを使用することで、アナログセンサーをRaspberry Piと連携させることができます。

このボードには4つのGroveアナログソケットがあり、Grove - Universal 4 Pin Buckled 5cm Cableを使用してGroveモジュールと直接接続できます。

アナログセンサーはアナログ電圧を12ビットADCに入力します。ADCがアナログデータをデジタルデータに変換した後、I2Cインターフェースを介してデジタルデータをRaspberry Piに入力します。

メスピンヘッダーポート

Groveアナログポートと同様ですが、Grove - Universal 4 Pin Buckled 5cm Cableの代わりに、Breadboard Jumper Wire Packを使用する必要があります。

8つのアナログ接続ポート、A0 ~ A7。

スクリュー端子

上記と同様ですが、接続方法が異なります。このピンコネクタグループには、アナログピンA0 ~ A7、Vcc、およびGNDが含まれます。

対応プラットフォーム

ArduinoRaspberry Pi

はじめに

ハードウェア

必要な材料

Raspberry PiRaspberry Pi用8チャンネル12ビットADC (STM32F030)
enter image description here
今すぐ購入今すぐ購入
  • ステップ 1. Raspberry Pi用8チャンネル12ビットADC (STM32F030) をRaspberry Piに挿入します。
  • ステップ 2. USBケーブルを使用してRaspberry PiをPCに接続します。

ソフトウェア

caution

Raspberry Pi OS >= Bullseye を使用している場合は、Python3 のみでこのコマンドラインを使用する必要があります。

  • ステップ 1. grove.pyライブラリをクローンしてソースファイルをダウンロードします。
cd ~
git clone https://github.com/Seeed-Studio/grove.py

  • ステップ 2. grove.pyライブラリをインストールします。
cd grove.py
# Python2
sudo pip install .
# Python3
sudo pip3 install .
  • ステップ 3. 以下のコマンドを実行してコードを実行します。
cd grove.py/grove
python3 adc_8chan_12bit.py

以下はadc_8chan_12bit.pyのコードです。


import time
from grove.i2c import Bus

ADC_DEFAULT_IIC_ADDR = 0X04

ADC_CHAN_NUM = 8

REG_RAW_DATA_START = 0X10
REG_VOL_START = 0X20
REG_RTO_START = 0X30

REG_SET_ADDR = 0XC0


class Pi_hat_adc():
def __init__(self,bus_num=1,addr=ADC_DEFAULT_IIC_ADDR):
self.bus=Bus(bus_num)
self.addr=addr


# 全ての生ADCデータを取得します。最大値は4095です(12ビットADCのため)。
def get_all_adc_raw_data(self):
array = []
for i in range(ADC_CHAN_NUM):
data=self.bus.read_i2c_block_data(self.addr,REG_RAW_DATA_START+i,2)
val=data[1]<<8|data[0]
array.append(val)
return array

def get_nchan_adc_raw_data(self,n):
data=self.bus.read_i2c_block_data(self.addr,REG_RAW_DATA_START+n,2)
val =data[1]<<8|data[0]
return val
# 単位がミリボルトの全データを取得します。
def get_all_vol_milli_data(self):
array = []
for i in range(ADC_CHAN_NUM):
data=self.bus.read_i2c_block_data(self.addr,REG_VOL_START+i,2)
val=data[1]<<8|data[0]
array.append(val)
return array

def get_nchan_vol_milli_data(self,n):
data=self.bus.read_i2c_block_data(self.addr,REG_VOL_START+n,2)
val =data[1]<<8|data[0]
return val

# 単位が0.1%の全データ比率を取得します。
def get_all_ratio_0_1_data(self):
array = []
for i in range(ADC_CHAN_NUM):
data=self.bus.read_i2c_block_data(self.addr,REG_RTO_START+i,2)
val=data[1]<<8|data[0]
array.append(val)
return array

def get_nchan_ratio_0_1_data(self,n):
data=self.bus.read_i2c_block_data(self.addr,REG_RTO_START+n,2)
val =data[1]<<8|data[0]
return val



ADC = Pi_hat_adc()
def main():
raw_data=ADC.get_all_adc_raw_data()
vol_data=ADC.get_all_vol_milli_data()
ratio_data=ADC.get_all_ratio_0_1_data()
print("各チャンネルの生データ:(1-8チャンネル)(12ビット-最大値=4096):")
print(raw_data)
print("各チャンネルの電圧:(単位:mv, 最大値=3300mv):")
print(vol_data)
print ("各チャンネルの比率:(単位:0.1%, 最大値=100.0%):")
print(ratio_data)

print(" ")
print("注意!!!:")
print("ADC PINのデフォルト設定はfloating_inputです。")
print(" ")

if __name__ == '__main__':
main()


success
すべてが正常に動作すれば、以下の結果が表示されます。

pi@raspberrypi:~/grove.py/grove $ python3 adc_8chan_12bit.py
各チャンネルの生データ:(1-8チャンネル)(12ビット-最大値=4096):
[2177, 2098, 2064, 2038, 2127, 2066, 2172, 2145]
各チャンネルの電圧:(単位:mv, 最大値=3300mv):
[1599, 1741, 1668, 1658, 1644, 1787, 1694, 1677]
各チャンネルの比率:(単位:0.1%, 最大値=100.0%):
[521, 544, 514, 504, 500, 559, 524, 505]

注意!!!:
ADC PINのデフォルト設定はfloating_inputです。



caution

Raspberry Pi OS >= Bullseye を使用している場合は、Python3 のみでこのコマンドラインを使用する必要があります。

Grove - Sound Sensor を例に、このボードの使用方法を紹介します。

ハードウェア接続

  • ステップ 1. 8-Channel 12-Bit ADC for Raspberry Pi (STM32F030) を Raspberry Pi に接続します。
  • ステップ 2. Grove - Sound Sensor を ADC モジュールの A0 ポートに接続します。
  • ステップ 3. Raspberry Pi を USB ケーブルを使用して PC に接続します。

ハードウェア接続図

以下のコマンドをコマンドラインインターフェースで入力します:
++python grove_sound_sensor.py 0++

pi@raspberrypi:~/grove.py/grove $ python3 grove_sound_sensor.py 0
Detecting sound...
Sound value: 433
Sound value: 342
Sound value: 443
Sound value: 300
Sound value: 632
Sound value: 258
Sound value: 591
Sound value: 267
Sound value: 871
^CTraceback (most recent call last):
File "grove_sound_sensor.py", line 67, in <module>
main()
File "grove_sound_sensor.py", line 64, in main
time.sleep(.3)
KeyboardInterrupt

このプログラムを終了するには、ctrl+c を押すだけです。

オンライン回路図ビューア


製品変更のお知らせ:

ST32シリーズのチップが世界的に在庫切れとなり、価格が数倍に上昇し、明確な納期がないため、MM32チップに切り替えることを余儀なくされました。具体的な交換モデルは以下の通りです:STM32F030F4P6TR は MM32F031F6P6 に置き換えられます。チップが交換された後も、製品の機能、特徴、使用方法、コードは変更されません。ただし、ファームウェアのバージョンが変更され、異なるチップに応じて工場出荷時のファームウェアが調整されています。ファームウェアを再書き込みする必要がある場合は、チップに対応するファームウェアをダウンロードしてください。

リソース

技術サポート & 製品ディスカッション

弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。

Loading Comments...