下手の横好きのスクラップブック!!

下手の横好きの、いろいろな記録です。
電子工作・PIC・Arduino・太陽光発電・写真などetc

Arduinoを使って気圧計を作る

2012-02-29 | Arduino

以前に、SCP1000気圧センサーで気圧と温度を測定しましたが、秋月電子で比較的安価な気圧センサーが手に入りましたのでArduinoで使ってみました。
その気圧センサーはMPL115A2で概要は「デジタル気圧計・キットの製作」に記載した通りですが、今回はMPL115A2使用大気圧センサーモジュールキットを使います。
ピンヘッダーの半田付けが必要ですがその分若干お安くなっております。

キットの内訳と組み立てた状況
  

MPL115A2周辺の組み立て
簡単なブレッドボードシールドを作り、その上に気圧センサーとその周辺の回路を組み立て、さらにLCDシールドを使って表示することとしました。
 

全体の回路図

組み立て状況

 

スケッチ(Arduino-1.0使用)
気圧を表示するスケッチはArduinoで遊ぶ」の大気圧センサーを参考にさせて頂き、それにLCD表示部分を加えております。
I2Cで読み取ったデータは、気圧表示にするために換算が必要です。その検算をするためにスケッチの後半に校正データを表示する項目を追加しております。
   //Serial.println(Padc);
    //Serial.println(Tadc);
    //Serial.println(Pcomp);
    //Serial.println(a0);
    //Serial.println(b1);
    //Serial.println(c11);
    //Serial.println(c12);
    //Serial.println(b2);
    //Serial.println(c22); 


換算するための式
float Pcomp = a0 + (b1 + c11 * Padc + c12 * Tadc) * Padc + (b2 + c22 * Tadc) * Tadc;
    float Pha = Pcomp * 650 / 1023 + 500;

スケッチ
#include <Wire.h>
#include <LiquidCrystal.h>

const int address = 0x60;

float read_coefficients(int total_bits, int fractional_bits, int zero_pad) {
  unsigned char msb, lsb;
 
  msb = Wire.read();
  lsb = Wire.read();
 
  return ((float) ((msb << 8) + lsb) / ((long)1 << 16 - total_bits + fractional_bits + zero_pad));
}

unsigned int read_adc() {
  unsigned char msb, lsb;
  msb = Wire.read();
  lsb = Wire.read();
 
  return (((unsigned int)msb << 8) + lsb) >> 6;

float a0, b1, b2, c12, c11, c22;

LiquidCrystal lcd(12,11,5,4,3,2);

void setup () {
  Wire.begin();
  Serial.begin(9600);
  lcd.begin(16,2);
 
  Wire.beginTransmission(address);
  Wire.write(0x04);        // Read coefficient data
  Wire.endTransmission();
 
  Wire.requestFrom(address, 12);  // Request 12 bytes
  if (Wire.available()) {
    a0 = read_coefficients(16, 3, 0);
    b1 = read_coefficients(16, 13, 0);
    b2 = read_coefficients(16, 14, 0);
    c12 = read_coefficients(14, 13, 9);
    c11 = read_coefficients(11, 10, 11);
    c22 = read_coefficients(11, 10, 15);
  }
}

void loop () {
  Wire.beginTransmission(address);
  Wire.write(0x12);      // Start both conversions(Pressure and Temperature)
  Wire.write(0x01);
  Wire.endTransmission();
 
  lcd.clear();

  delay(5);

  Wire.beginTransmission(address);
  Wire.write((uint8_t)0x00);  // Read pressure and temperature
  Wire.endTransmission();

  Wire.requestFrom(address, 4); // Request 4 bytes

  if(Wire.available()) {
    unsigned int Padc = read_adc();
    unsigned int Tadc = read_adc();
 
    float Pcomp = a0 + (b1 + c11 * Padc + c12 * Tadc) * Padc + (b2 + c22 * Tadc) * Tadc;
    float Pha = Pcomp * 650 / 1023 + 500;
    Serial.println(Pha);
   
    lcd.print("Barometer ");
    lcd.setCursor(5, 1);
    lcd.print(Pha);
    lcd.print(" hpa");

   //Serial.println(Padc);
    //Serial.println(Tadc);
    //Serial.println(Pcomp);
    //Serial.println(a0);
    //Serial.println(b1);
    //Serial.println(c11);
    //Serial.println(c12);
    //Serial.println(b2);
    //Serial.println(c22); 
  }
 
  delay(1000);
}

Arduinoのシリアルデータ表示

全体の組み立て状況と気圧の表示

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「産技短展」見学してきました。

2012-02-27 | 電子工作・PIC

岩手県立産業技術短期大学校の卒業研究作品展示会「産技短展」の最終日を見学してきました。
日曜日の午後で多くの見学者で賑わっておりました。時々見学をしておりましたが、今年も数多くの力作が展示されておりました。
興味のある分野の展示も多くあり、電子技術関係・情報技術関係・メカトロニクス技術関係をを重点的に見て回りました。
Arduino・PIC・Bluetooth・X-Bee等を使った製作も多く大変参考になりました。


EVバイク
 

エコマイレッジチャレンジ 2012参戦予定車

Bluetoothを使ったリモコン走行車
 

太陽光パネル自動追尾装置
 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

デジタル気圧計・キットの製作

2012-02-12 | 電子工作・PIC

秋月電子通商で販売されているデジタル気圧計・キットを製作しました。

気圧計の概要
CPU:PIC18F2550
気圧センサー:MPL1152A2 デジタル気圧センサーモジュール
            連続した絶対圧と温度のデータを出力
            I2Cインターフェースース 

気圧センサーの詳細はhttp://strawberry-linux.com/pub/mpl115a2-manual.pdf

気圧計測:hPa(ヘクトパスカル)、mmHg(ミリメートル水銀柱)、inHg(インチ水銀柱)
高度計測:M(メートル)、f(フィート)スイッチでゼロリセット可
簡易トレンド:1時間前と現在に気圧を比較して、上昇、下降、変化なしを矢印とLEDで表示
シリアル通信:マイクロチップUSB
                 コマンドレスポンスで計測データ出力
気圧計指示値修正:オフセット値設定可能
リレー接点出力:気圧の上下限値設定で警報出力等で利用可能
測定値表示:16桁2行ブルーバックLCD
電源:DC7~12V 120mA

部品一覧

このキットはICや抵抗等はすでに実装済みですので、それ以外の部品を取り付けます。
両面ガラス・スルホール基板ですので、半田付け後に部品を取り外すのが困難ですので、よく確認の上組み立てることが必要です。
基本的には背の低い部品から順番に取り付け半田付けします。

基本実体図(デジタル気圧計・キットのマニュアルより抜粋)

電源投入(デジタル気圧計・きっとのマニュアルより抜粋)


 

USBによるコマンド・レスポンスモード通信
PCにUSB経由で接続し、コマンド・レスポンスモードで通信ができます。
デジタル気圧計のドライバーは(有)トライステートの
http://www.tristate.ne.jp/tsjob007-2.htmよりダウンロードして使用します。

PC側のターミナルソフトはフリーソフトのrs232cを使いました。

コマンド・レスポンス一覧(マニュアルより抜粋)

rs232cによるデータ取り込み

エクセルへ取り込み
rs232cで取り込まれたデータは、rs232cのBAKUPフォルダーにデータのテキストファイルが生成されるので、それをエクセルにインポートします。

グラフの作成
エクセルでグラフを作成します。


地元のアメダスデータに合わせて、コマンド・レスポンスのOFSTを使い18.0hp高くしました。

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

我が家の太陽光発電 2012年1月の発電量

2012-02-04 | 太陽光発電

1月の発電量は以下の通りです。
日射時間が前年比123%で発電量も前年より増加していますが、太陽電池の設置規模からみると大幅に低下しています。
太陽電池の劣化に間違いないようで、現在メーカーと取り換えを折衝中です。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする