macsbug

Just another WordPress.com site

Analog to Digital Converter MCP3002 in ESP8266

with 3 comments

ESP8266 で AD Converter MCP3002 を使い電圧を OLED に表示しました。       2016.01.26
MCP3002 は、SPI 10bit 2ch AD Converter です。

oled

ESP8266 ボード の 3.3V電源 と 5V 電源を測定。超簡単なテスターが直ぐできました。
フォントは ArialMT_Plain_10, 16、Roboto_Black_Plain_24、Roboto_Mono_Thin_Plain_24

データーの取得は、1行の命令でできます。
価格は、1個180円と超お手頃な値段です。


NodeMCU + MCP3002 + OLED


準備:
ハード:
_ MCP3002:3.3Vで使用。1個180円。秋月電子通商データーシート
_ ESP8266(ESP-WROOM-02):秋月電子通商で 550円。
_ OLED 128×64 Display:ebay で650円程度。
_ USB Serial Converter  :ebay で250円程度。
_ 他、抵抗、コンデンサー、ダイオード。(参照:AUTO UART Download Mode of ESP8266)
_ 合計:約1800円。(NodeMCUの場合は 約1460円)。

ソフト:
_ SPI ドライバー:MetalPhreak / ESP8266_SPI_DriverDavid Ogilvy(MetalPhreak)氏に感謝
_         誤記:GPIO12 = DIN,GPIO13=DOUTは逆です。
_         階層:Library>ESP8266_SPI_Driver>spi_register.h,spi.c,spi.h
_ OLED ドライバー:squix78/esp8266-oled-ssd1306Dani Eichhorn(squix78)氏に感謝
_ OLED 用の幾つかのフォントを作る為に以下の Font Converter を使用しました。
_ SSD1306 Tools:Font ConverterDani Eichhorn(squix78)氏に感謝。これは 素晴らしい。
_  作成したフォントは、OLED ドライバー( esp8266-oled-ssd1306-master )の中にある
_  SSD1306Fonts.h に追加保存する事により使えます。


配線:


メモ:
ピンアサイン:ESP8266 SPI と MCP3002。

MCP3002:
_ サンプリング:電源5V=200ksps。電源3.3V=75ksps。
_ データー取得方法:SPI 接続により取得する。
_ SPI ドライバー:MetalPhreak / ESP8266_SPI_Driver:参照の事。
_ データー取得   :パラメーターは複雑ですが、以下の1命令で読み込める。
_         spi_transaction(spi_no, cmd_bits, cmd_data, addr_bits,
_         addr_data,dout_bits,dout_data,din_bits, dummy_bits)
_ 今回の記述:float v0 = spi_transaction ( 1 , 0 , 0 , 0 , 0 , 4 , 0b1100 , 11 , 0)/c;   // CH0
_ パラメーター:
_  [ 1 ] : HSPI(1) 取り込みを示します。他にSPI(0) がある。
_  [ 4 ] : COMMAND_LENGTH(dout_dataの長さ) 。ここでは 0b1100 を送る為 4 bit
_  [ 0b1100 ] :start bit=1, SGL/DIFF=1, Channel(0/1),MSBF=0。
_        CH0=0b1100。CH1=0b1110。
_  [ 11 ] : MCP3002 の RESPONSE_LENGTHは 10 bit + 1 = 11 となります。
_  [ 0 ] : dummy_bits = 0

ESP8266 割り込み:割り込み方法により高度な使い方が可能です。
じわじわ進む」さんの解説によると ESP8266は ticker命令で msec 又は usec の制御可能。
_ usec 使用時は setup の最初に system_timer_reinit() を宣言する。
フォント:計測表示には等幅フォントでないと奇麗に見えません。
トラブルシュート:上記の回路は基本回路で電源回路は省いて書いてあります。
_ つまりMCPの電源が充分である事が前提です。ESPの基板は多数ありますので基板に
_ よっては正しく表示しない場合があります。対策として MCPの電源にLDOを取り付け
_ てみるのも方法です。ありがちなコンデンサーを付けましょうとか他の部品が原因だ
_ とかは問題を余計に混乱させます。
_ 原因の詳細を分析する場合は オシロスコープでMCPの波形を観測する必要があります。


感想:
SPIの制御:複雑ですが読み込みが1行で済みました。パラメータの理解が必要ですね。
_ アナログ信号を気楽に使えるようになると楽しくなります。
チャンネル数: MCP3208 は 8チャンネルで多数のアナログセンサーを接続する事が可能。
最大入力:MCP3002の電源電圧以下。今回は入力に抵抗分割を入れ 5V も測定できました。
校正:テスターで測定し 単純にソフトで割り算。ここでは 測定値の28.05分の1。
波形表示:今回の内容でオシロスコープもどきを作るが波形表示は遅く速度不充分(msec)。
NodeMCU:約90mA。10kΩは不要。PROG,RST SWは無く自動書込み。ebayで600円程度。
使用例:ソーラーパネルの電圧をモニターし ThingSpeak へ送信しグラフで見る。


番外編:ESP8266 GPIO のプルアップ抵抗は幾つがいいか?
Getting Started with ESP8266 での幾つかの要点を以下に書き出しました。
FTDI提供のFT232ドライバは問題ない。
FT232クローンは、PC上の問題を引き起こす可能性がある。
CH340GまたはCP2102チップのベースモジュールは、この問題は発生しません。
3.3VのVCCラインは一般的に300ミリアンペアである。
WiFi操作中にESPチップを実行するのに十分な電力を供給すること。
プルアップ・プルダウン抵抗は、1kΩ 又は 2.2KΩ である。

思案:CH340G は問題ありそうでもないよという感じ。CP2102は調査の為、オーダー中
_  CP2102調査結果:USBtoUARTBridgeVCPDrivers をインストールし問題なし。(2016.01.31)
_ プルアップ・プルダウンの抵抗値は、1KΩ ですね。


参考:
ESP8266 Community Forum:HARDWARE SPI (HSPI) DRIVER CODE / LIBRARY:SPI波形
D.av.id.[AU]:ESP8266 Hardware SPI (HSPI) General Info and Pinout:ピンアウト(誤記?)
D.av.id.[AU]:Hardware SPI (HSPI) Command & Data Registers:命令の詳細
Teemu Leskinen:ESP8266 MCP3002 Driver
exabugs:ESP8266 (ESP-WROOM-02) でセンサーを扱
exabugs:ESP8266 (ESP-WROOM-02) の便利ライブラリまとめ (Ticker編)
じわじわ進む:ESP-WROOM-02でSPI接続のADCから取得したデータをUDPで送出
olduino:MCP3002 Analog to Digital Converter
こばさんのwakuwaku山歩き:ESP8266 割り込み使って Lチカ


スケッチ:

#include <Wire.h>
#include "SSD1306.h"                                      // OLED
#include "SSD1306Ui.h"                                    // OLED
extern "C"{
#include <spi.h>                                          // MCP3002
#include <spi_register.h>                                 // MCP3002
#include "user_interface.h"
}
float c = 28.05;                                          // Calibration
SSD1306 display(0x3c, 4, 5);                              // OLED:ADRS,SDA,SCL

void setup() {
  spi_init(HSPI);                                         // MCP3002
  display.init();                                         // OLED
  display.flipScreenVertically();                         // OLED
  display.displayOn();                                    // OLED
  display.clear();                                        // OLED
}

void loop(){
  // MCP3002 Reading
  float v0 = spi_transaction(1,0,0,0,0,4,0b1100,11,0)/c;  // CH0 READ
  float v1 = spi_transaction(1,0,0,0,0,4,0b1110,11,0)/c;  // CH1 READ
  // OLED Display
  display.clear();
  display.setFont(ArialMT_Plain_10);
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.drawString( 0, 16, "ch 0 : ");
  display.drawString( 0, 32, "ch 1 : ");
  display.setFont(ArialMT_Plain_16);
  display.setTextAlignment(TEXT_ALIGN_RIGHT);
  display.drawString( 127, 10, "vdc ");
  display.drawString( 127, 32, "vdc ");
  display.setFont(Roboto_Black_Plain_24);
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.drawString( 32,  6, String(v0,2));
  display.setFont(Roboto_Mono_Thin_Plain_24);
  display.setTextAlignment(TEXT_ALIGN_LEFT);
  display.drawString( 32, 28, String(v1,2));
  display.display();
}


		

Written by macsbug

1月 26, 2016 @ 4:02 am

カテゴリー: ESP8266

コメント / トラックバック3件

Subscribe to comments with RSS.

  1. 詳細なデータが記載されていて、いつも参考になります。
    ブロック図がかなり綺麗なのですが、どういうツールで作成されているのでしょうか。差し支えなければ教えていただきたいと思います。

    7of9

    1月 30, 2016 at 10:15 pm

    • 7of9 さん、OmniGraffle もしくは OmniGraffle Professional というアプリがあります。
      「シャドウ」という機能を使用すると「陰」の設定ができ 画面上で奇麗に見えます。
      イラストレータも画像や線に「陰」を付けられます。
      アプリは価格にもよりますので、他のアプリで工夫して「陰」の効果を付けても良いかも知れません。
      「影付きの画像作成やミラー効果画像作成ならdropshad」
      http://apple-relationship.com/mac-app/convenience-mac-app/macで影付きの画像作成やミラー効果画像作成ならdropshad/
      最近は、背景が透明になる「透明効果」も使用しています。
      アプリで透明効果を出すには、PhotoshopやIllustratorが有名ですね。
      「透過型画像」:簡単には「Mac OS X のプレビューで PNG 形式の透過画像を作る」とかありますね。
      http://tokyo.secret.jp/macs/preview_tools.html
      回路理論の不十分さを奇麗さで補おうかと面もありますし、奇麗だと楽しくなるかとも思っています。
      一度、投稿した図面を満足するまで何度も変更する場合がありますのでお許しください。

      macsbug

      1月 31, 2016 at 4:45 am

      • macsbug様
        ソフトの情報ありがとうございます。
        OmnigGraffle(とそのProfessional版)を使われているのですね。また、効果画像作成の関連情報もありがとうございます。

        回路図作成専用ソフトを使われていると思っていました。

        ESP8266を使い始めの時に色々な回路図の情報を探しているうちにこちらのサイトを見つけました。
        最初は画像がきれいな点に惹かれて、次は詳細なデータが記載されている点に惹かれました。

        7of9

        1月 31, 2016 at 7:21 am


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。