2016年09月15日 | 公開。 |
2016年09月16日 | スケッチが動作するArduino IDEのバージョンの説明を追加。 |
これから、トレー上に固定された部品に、配線をしていきます。
今回製作した温度制御装置(2号機)のブロック図は図4の様になります。
グラフィックLCDシールドとArduino Uno互換機の間には6本の配線がありますが、実際にはシールドをArduinoのピンソケットに差し込むだけで配線は完了します。
圧電ブザー、キーパッド、熱電対モジュール、リレーモジュールの4つについては、便宜上Arduinoに直接配線している様に書いてありますが、実際にはグラフィックLCDシールドのピンソケットに配線しています。
配線は、写真28に示す様に、片方にオス、片方にメスのコネクタが付いた、ブレッドボード用のジャンパ線を主に使用します。差し込むだけで配線ができるので、この線を使って配線する部分は、半田付けをせずに配線ができます。半田付けが必要な部分もありますが、後で説明します。
また、グラフィックLCDシールド周辺の配線の様子を写真29に示します。
1ページでも説明しましたが、圧電ブザーには、マイコンの保護用の1kΩの直列抵抗を入れておく方がいいので、図5の様に、配線の間に1/6Wの1kΩの抵抗を半田付けし、外側を熱収縮チューブで保護して絶縁しました。熱収縮チューブの使い方に関しては、Arduinoで電子オルガンを作るの記事で説明していますので、参考にしてください。
Arduinoのピンソケットに差し込むだけで5Vが給電されるグラフィックLCDシールドは除いても、キーパッドと熱電対モジュールの2つに5Vを供給する必要があります。Arduinoのピンソケットには、5Vのピンはひとつしかありませんので、図6の様に分岐ケーブルを作りました。
リレーモジュールは、ブレッドボードのジャンパ線でも配線できるのですが、グラフィックLCDモジュールの手前の配線がすっきりする様に、写真30の様なケーブルを作りました。L字型のピンヘッダと被覆付きより線を半田付けし、熱収縮チューブで半田付けした部分を保護しています。
熱電対の配線の方法については、AdafruitのMAX31855基板を使った温度測定の記事を参照してください。また、リレーモジュールとAC100V用のケーブルの接続については、Arduinoとホットプレートを使ったリフロー装置(1号機)の製作(6)を参照してください。なお、AC100V用のケーブルに付いては、15A以上流せる太いケーブルを使う必要があります。細いケーブルを使うと火災の原因になります。
配線が完成すると写真31の様になります。この時点で、各部品が正常に動作するかどうか、試験しておく方がよいでしょう。ブログの方でも説明しましたが、リスト1のスケッチを実行すると、使う部品全部の動作試験ができます。
#include <SPI.h> // 128×64 LCDシールドとThermocouple Amplifier MAX31855 breakout boardで使用
#include <MGLCD.h> // 128×64 LCDシールドで使用
#include <MGLCD_SPI.h> // 128×64 LCDシールドで使用
#include <ResKeypad.h> // I/Oピン一つで読める4X4キーパッドで使用
#include <Adafruit_MAX31855.h> // Thermocouple Amplifier MAX31855 breakout boardで使用
// 128×64 LCDシールド関係の宣言
#define CS_PIN 10
#define DI_PIN 9
#define MAX_FREQ (7400*1000UL)
MGLCD_GH12864_20_SPI MGLCD(MGLCD_SpiPin2(CS_PIN, DI_PIN), MAX_FREQ);
// I/Oピン一つで読める4X4キーパッド関係の宣言
ResKeypad keypad(A1,16,RESKEYPAD_4X4,RESKEYPAD_4X4_SIDE_B);
// 温度測定用のThermocouple Amplifier MAX31855 breakout board関係の宣言
#define MAXDO 3
#define MAXCS 4
#define MAXCLK 5
Adafruit_MAX31855 thermocouple(MAXCLK, MAXCS, MAXDO);
void setup() {
// リレー制御用ピンの初期化
pinMode(A0,OUTPUT);
digitalWrite(A0,LOW);
// 他励式圧電ブザー用ピンの初期化
pinMode(6,OUTPUT);
digitalWrite(6,LOW); // D6はずっとLOWにしてGNDの代わりに使う(配線をしやすくするため)
pinMode(7,OUTPUT);
digitalWrite(7,LOW); // D7に信号を送ってブザーを鳴らす
// LCDの初期化
MGLCD.Reset();
if(strlen("ア")!=1) MGLCD.SetCodeMode(MGLCD_CODE_UTF8); // 半角カナの表示の有効化
}
void loop() {
static uint32_t LastMillis=millis(); // 経過時間測定用
static int RelayState=LOW; // 最後のリレーへの出力
// キーパッドからの入力の処理
char c=keypad.GetChar(); // キーを取得
if(c) { // キーが押されていた
MGLCD.println(c); // LCDに押されたキーを表示
} // if
// 温度の読み取りとリレー・ブザーの制御
uint32_t m=millis();
if(m-LastMillis>1000) { // 前回から1秒経った
LastMillis=m;
// 温度の測定結果を表示
MGLCD.print(thermocouple.readCelsius());
MGLCD.print("゚C ");
// リレーの状態の表示と制御
RelayState=(RelayState==LOW) ? HIGH : LOW;
MGLCD.println((RelayState==LOW) ? "OFF" : "ON");
digitalWrite(A0,RelayState);
// ブザーを鳴らす
tone(7,2000,100);
} // if
}
リスト1を動かすには、Arduino IDEにMGLCDライブラリのVer. 0.41以上と、ResKeypadライブラリのVer. 1.00以上、およびAdafruitのMAX31855用ライブラリをインストールしておく必要があります。なお、MAX31855用ライブラリのインストール法については、AdafruitのMAX31855基板を使った温度測定の記事に説明が載っています。
リスト1は、Arduino IDE 1.6.11と1.7.10で動作確認しました。Arduino 1.0.X(Xは任意の数字)では動作しませんので注意してください。
また、リスト1を実行するためには、Arduinoに12VのACアダプタを接続しておく必要があります。USBからの給電ではリレーが動作しませんので、ご注意ください。
リスト1を実行すると、1秒間に1回温度測定を行い、画面に測定結果を表示します。また、1秒に1回、リレーのONとOFFを切り替えます。温度測定およびリレーの制御の際に、圧電ブザーが0.1秒鳴ります。キーパッドのキーを押すと、温度やリレーの状態の表示に割り込む形で、押したキーが画面に表示されます。動作時は、写真32の様な画面表示になります。
次のページでは、温度制御装置のスケッチのダウンロードの方法や、画面構成の説明を行います。
商品名 | 128×64モノクログラフィックLCDシールド | |
税抜き小売価格 | 3600円 | |
販売店 | スイッチサイエンス | |
サポートページ | 128×64モノクログラフィックLCDシールドサポートページ |
商品名 | I/Oピン一つで読める4X4キーパッド(完成品) | |
税抜き小売価格 | 1380円 | |
販売店 | スイッチサイエンス | |
サポートページ | I/Oピン一つで読める4X4キーパッド(完成品)サポートページ |
商品名 | I/Oピン一つで読める4X4キーパッドキット | |
税抜き小売価格 | 900円 | |
販売店 | スイッチサイエンス | |
サポートページ | I/Oピン一つで読める4X4キーパッドキットサポートページ |