<

![endif]-->

fc2ブログ

Arduinoのバニラシールドで回路追加

パネルヒーターとのインターフェース開発の続き。

前回のプロトコルデコーダーのソフトを仕上げつつ、Arduinoのバニラシールド(ユニバーサル基板)を使って外付け回路を追加した。追加した回路はスイッチ操作送信部と温度センサー。スイッチ操作は、パネルヒーター側のタイミングに合わせてスイッチのON/OFF信号を送信する。温度センサーは室温を計測する。

元々パネルヒーターには温度センサーは無かったので、室温が上がり暑くなるとボイラーの水温を下げ、室温が下がって寒くなるとボイラーの水温を上げるという作業を手動で行っていた。この温度センサーにより、遠隔操作機能以外にも、オートエアコンのように設定した目標室温を維持するよう、ボイラーの水温を自動制御することができる(はず)。



使った温度センサーは秋月電子で買ったS-8120C。5個で200円なので1個40円。安い。外付け回路が不要で、電源電圧が範囲が広く、温度変化のリニアリティが高いのでこれを選んだ。

ArduinoへはA/Dコンバーター端子のA0へ接続した。但し、A/Dコンバーターの分解能を上げるため、リファレンスを3.3Vに接続している。Arduinoには3.3Vが出力されているので、ARefを3.3Vに接続。そのためソフトも、

 analogReference(EXTERNAL);

と宣言する必要がある。これにより、3.3Vの変化が1024段階の変化となって読むことができる。後は温度センサーのデータシートに従って温度を計算。今回は室温がそれなりに計測できれば良いので、+30℃を基準に計算している。もっと誤差があるかと思ったが、室内にあるデジタル温度計とほぼ一緒であった。あと温度変化に対する反応が非常に早くてちょっと感動。

下記は1秒毎に温度を表示するスケッチ(Arduinoの世界ではプログラムのことをスケッチと呼ぶらしい)。
#define TEMP30       30
#define VOLTATTEMP30 1474
#define TEMPDELTA 8.2
#define AREFVOLT 3300
#define RESOLUTION 1024

const int PinAnalog = 0;

void setup()
{
analogReference(EXTERNAL);
Serial.begin(9600);
}

void loop()
{
int aval;
float temp,volt;

aval = analogRead(PinAnalog);
volt = ((long)aval * AREFVOLT) / RESOLUTION;

temp = TEMP30 + ((VOLTATTEMP30 - volt) / TEMPDELTA);

Serial.print("Temp ");
Serial.println(temp);

delay(1000);
}
近日、安曇野の自宅へ帰る予定なので、いよいよ実機デバッグを行う。

comment

管理者にだけメッセージを送る

プロフィール

hashiken

Author:hashiken
基本的に自分で作る、直す、メンテする。東京と安曇野の二重生活。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
Photoscope∀
different version
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
検索フォーム