ラズベリーパイでデータロガー!電圧測定してグラフにしてみた

本サイトはアフィリエイト広告を利用しています。
ラズベリーパイ(raspberry pi)

ラズベリーパイでデータロガーを格安で自作してみました。

USBで簡単に接続でき、10チャンネル分のアナログ電圧入力を測定可能です。

Pythonでデータ出力、またリアルタイムでグラフにするまでを一から紹介します。

 

スポンサーリンク

ラズベリーパイでデータロガー!電圧測定してグラフにしてみた

ラズベリーパイでデータロガーを自作してみました。

USB接続のAD変換のボードですので簡単に電圧測定が可能です。

 

AD変換のボードで電圧が測定できるため、スイッチ・温度センサーなども接続可能です。

 

ラズパイで測定したデータをタイムスタンプと共にファイル出力できます。

 

Pythonでアナログの電圧値を確認して、データ収集からグラフ化まで対応できます。

 

接続方法からプログラムまで詳細を紹介していきます。

下記動画でも分かりやすく紹介していますので是非一緒にご覧ください。

 

パソコンでもデータロガーにできます

今回はラズベリーパイをデータロガーにしていますが、Windowsのパソコンでも可能です

下記記事で紹介しています。(リンク先はこちら)

データロガーを自作!温度や電圧をUSBから簡単に測定してみた
データロガーを簡単に自作出来ました。値段も1000円程度で格安です。 USB経由でデータを取得でき、簡単に表・グラフ化まで対応可能です。 部品の購入方法からデータの取得方法まで手順を一から紹介します。

 

今回使用したのはUSB接続のAD変換ボードです。値段は1000円程度です。

「温度や電圧などのアナログ値」を「データ用のデジタル値」に変換するボードです。

USBシリアル接続のため、WindowsのソフトでもラズパイのPythonでも対応可能です。

 

データロガーのセンサーを自由に選択可能

今回のデータロガーとするUSBのボードは電圧値を取得します。

端子台形状になっており、ジャンパー線で自由にセンサーを接続できます。

 

ジャンパー線に関しては市販のジャンパー線(オスーオス)です。

端子台とブレットボードを接続しています。下記記事で紹介したものを使用しています。

ラズベリーパイとセットで購入するべき おすすめ部品/パーツ/キット

 

今回は「スイッチ」と「温度センサー」の情報をデータ収集します。

 

データロガーの配線図

今回のデータロガーとしての配線図としては下記形になります。特に難しいことはしていません。

「温度センサー」「10kΩプルダウン+スイッチ」を接続しました。

プルダウンが無いとスイッチ押されていないとき、0Vに固定されないので接続します。

 

測定可能な電圧は3.3Vまで

今回のデータロガーの注意点としては測定可能な最大電圧は3.3Vとなります。

基本的には3.3Vで動作するのセンサーを用意する必要があります。

端子台からAD変換しているCPUに直結しているためだと思われます。

 

Arduinoを使えば5V電圧レベルも可能

5Vの信号・センサーを使いたいという方は下記記事をご参考ください。(リンク先はこちら)

Arduinoとラズパイを連携することで5Vの入力をAD変換をしています。

ラズベリーパイとArduinoを連携!アナログ入力を応用してみた
ラズベリーパイ単体ではアナログ入力がなく、AD変換が出来ません。 しかしArduinoと連携することでアナログ入力を使用可能となります。 ラズパイとArduinoをUSB接続で簡単に連携する方法を紹介します。

 

データロガーのチャンネル数は10ch

今回のAD変換ボードは最大10チャンネルまでまとめて測定可能です。

特に設定など必要なく、自動的に10チャンネル分データが確認できます。

 

データロガーの分解能は12bit

今回のAD変換の精度(分解能)は12bitとなります。

明確なデータシートはありませんが、CPUがSTM32ですので12bit_AD変換のようです。

0~3.3Vまでを12bit(2^12)のため、単純換算で約0.8mV(3.3÷4096)単位の精度です。

 

実際に測定した所、約3.3VをAD変換時には4096付近の値を取っていました。

 

データロガーのサンプリング周期は500ms

今回のデータロガーとしてのサンプリング周期は約500ms(0.5秒)です。

タイムスタンプを入れて実際に確認してみました。

AD変換ボードから約500ms周期で10チャンネル分のデータが送られてきます。

 

Pythonでデータロガーとしてファイル出力

ラズベリーパイでPythonを使い、データロガーとしてファイル出力します。

 

ラズパイにはデフォルトでPythonがインストールされており、誰でも簡単に使用できます。

初心者の方でも大丈夫です。下記記事で使い方を紹介しています。(リンク先はこちら)

ラズベリーパイでプログラミング入門!Pythonの簡単な始め方
プログラミングを始めたい方にラズベリーパイを使った簡単な入門方法を紹介します。 プログラミング言語の中でも初心者にもやさしく、人気なPythonがラズパイならば簡単にスタートできます。 ラズベリーパイでプログラミング入門!Pythonの簡単...

 

Pythonでシリアルデータをそのまま読み出す

まずは単純にAD変換ボードの値をそのまま読み出します。

USBシリアル接続のため「pyserial」というライブラリで簡単にデータ取得可能です。

設定に関しては2行目に記載しているボーレートの115200ぐらいです。

 

Pythonのシリアル通信の詳細については下記記事で紹介しています。(リンク先はこちら)

Pythonでserial(シリアル)通信!Read/Writeの波形を見てみた
uartのシリアル通信でRead/Write・ボーレート変更時の波形をアナライザで確認しました。 Pythonとraspberry piでテストして測定動画を撮っています。 シリアル通信の使い方・基礎を確認したい方におすすめです。 以前はP...

 

プログラムなどは下記に記載していますが、あくまで一例です。

今回のデータロガーの仕様に合わせていますので、参考レベルでお願いします。

(筆者のテストレベルのため、結構いい加減のプログラムです)

 

出力結果は下記結果となり、バイトデータで10ch分のAD変換値を取得できています。

 

Pythonで時間情報含めてファイル出力する

時間情報(タイムスタンプ)含めてデータをPythonでファイル出力します。

出力方法に関しては色々ありますが、今回はテキストベースで出力しています。

AD変換値と電圧値はボードから貰えるため、タイムスタンプを足すだけです。

 

実際のプログラムは下記形です。

1秒間隔で5回分のデータをタイムスタンプと一緒にファイル出力しています。

 

Pythonのプログラムと同じフォルダ場所に「logger.txt」としてファイル出力できました。

 

ラズパイにはLibreOfficeというエクセルのようなフリーソフトもインストールされています。

ファイル出力したテキストデータをエクセル同様に表・グラフ化も可能です。

 

Pythonで電圧測定した値をグラフ化

Pythonで電圧測定した値をリアルタイムでグラフ化してみます。

 

今回のプログラムは下記記事でCPU温度をリアルタイムでプロットした応用版です。

ラズベリーパイのヒートシンクの効果は?ファンまで必要かを検証!

 

今回例ではスイッチの入力電圧(CH5)を測定しました。

スイッチがOFFの場合は0V、ONの場合は約3.3Vが電圧測定されています。

 

冒頭でも紹介しましたが、動画でみると実際のアナログ値の動きが分かりやすいです。

是非一緒にご覧ください。

 

実際のプログラムが下記となります。

CH5の電圧値を10ch分のデータから(結構)無理やり分割して抽出しています。

 

Pythonで温度センサーの値をグラフ化

電圧同様に温度センサーのデータをリアルタイムでグラフ化してみます。

 

センサーから電圧出力されるので、温度換算すれば測定できます。

実際にセンサーを手で温めると温度が上昇することを確認しました。

 

実際のプログラムが下記となります。

内容としては電圧測定のとほぼ同じです。計算・文言など修正したのみです。

 

まとめ

今回はラズパイのデータロガー化に関して紹介させていただきました。

記事をまとめますと下記になります。

ラズパイとAD変換ボードを使えば「簡単」にデータロガーを自作できます。
Pythonを使って測定データをファイル出力可能です
Pythonでリアルタイムでグラフ化まで実施できます

 

ラズベリーパイ(raspberry pi)AD変換ボードを組み合わせて、データロガーにできます。

さらにPythonを使えばファイル出力・グラフ化など多くの対応が可能です。

是非皆さまもデータロガーを試してみて下さい。

コメント

  1. はつりょう より:

    はじめまして。自作抵抗値ロガーを作る方法がないか調べていたときにこちらのサイトを見つけ、アドバイスをいただけないかと思い、書き込みさせていただきました。ラズパイ使用で測定結果まで出力できるという非常に魅力的な物ですごく感動しています。今回は電圧測定ということでしたが抵抗値の測定ログを取ることは可能でしょうか?品質管理の面でリレーの接点抵抗値のログを取りたく、なにかいい方法がないか調べており行き詰まっております。なにかいい方法があれば教えていただけないでしょうか?よろしくお願いします。

    • ミソジ ミソジ より:

      お世話になっております。
      管理人のミソジです。
      >>今回は電圧測定ということでしたが抵抗値の測定ログを取ることは可能でしょうか?
       ⇒難しいと思われます。
        本格的に抵抗測定をしたい場合は、専用の抵抗測定器からアナログ出力してそれを読み取るのが一般的かと考えます。

      今回の記事のように簡易的にテストするならば、抵抗挟んで測定することも考えました。
      ただリレーの接点抵抗だと数Ωの単位だと考えられるので、今回のガジェットレベルの分解能では難しいかと思います。
      (精度良く、熱容量も大きい抵抗をR1に使えば可能かもしれませんが…)

      (例)
      3.3V--抵抗(R1)--リレーa/b接点(R2)--GND
              ↑
      ここの電圧値を読み取れば、一応は抵抗が逆算できる
      仮にR1=100Ω,R2=0Ωとすると電圧値は3.3V
      仮にR1=100Ω,R2=1Ωとすると電圧値は3.3V×R2/(R1+R2)=0.03V
      仮にR1=100Ω,R2=10Ωとすると電圧値は3.3V×R2/(R1+R2)=0.3V

  2. 佐藤孝一 より:

    説明のあったSTM32F103C8T6を載せて
    あるボードを購入し、パソコンで試験をしました。
    最初は、パソコン用ドライバーが不明でしたが、CH34xで通信が出来ました。
    ありがとうございました。

    次に、ボードに付いているRT,TX,GNDを使ってRS232C通信を行おうとしましたが、
    データは、受信出来るようですが、上手く行きませんでした。
    何が悪いのか、ハードの不得意な私にはわかりません。
    もし、分ければお教え下さい。

    他の質問
    1)付いているジャンパーはどんな時、使用しますか
    2)RT,TX,GNDを使ってのRS232C通信の
    ボーレート、データビット長等