先日、リフロー温度制御装置2号機の部品をプラスチックトレー上に実装しましたが、今日は各部品を配線しました。半田付けは最小限にして、ピンヘッダやピンソケットにブレッドボード用のジャンパ線を差し込む形で配線を行いました。
使った部品は以下の通りです。(プラスチックトレー、ねじ、スペーサ、配線材などは除く)
- Amazonで買った激安Arduino Uno互換機
- 128×64モノクログラフィックLCDシールド
- I/Oピン一つで読める4X4キーパッド
- 秋月電子で買ったMAX31855のブレークアウト基板
- 秋月電子で買った大電流大型リレーモジュール
- 詳細不明の他励式圧電ブザー
以前作った温度制御装置1号機と比較すると、Arduinoで制御すべき周辺装置が多いので、ピンをどう割り当てしようかと悩みましたが、結局次の様にしました。
Arduinoのピン | 接続先 |
---|---|
0 | RX(プログラミング用) |
1 | TX(プログラミング用) |
2 | |
3 | MAX31855のDO |
4 | MAX31855のCS |
5 | MAX31855のSCLK |
6 | 圧電ブザー |
7 | 圧電ブザー |
8 | |
9 | LCDのC/D |
10 | LCDの/CS |
11 | LCDのMOSI(ICSPヘッダで接続) |
12 | |
13 | LCDのSCK(ICSPヘッダで接続) |
A0 | リレーの制御端子 |
A1 | キーパッドの出力端子 |
A2 | |
A3 | |
A4 | |
A5 | |
Vin | リレー |
GND | リレー、LCD、キーパッド、MAX31855ブレークアウト基板 |
5V | LCD、キーパッド、MAX31855ブレークアウト基板 |
3.3V |
広告
次の様なサンプルスケッチを作って、動作試験をしました。
#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秒間に1回温度測定を行い、画面に測定結果を表示します。また、1秒に1回、リレーのONとOFFを切り替えます。温度測定およびリレーの制御の時は、圧電ブザーが0.1秒鳴ります。キーパッドのキーを押すと、温度やリレーの状態の表示に割り込む形で、押したキーが画面に表示されます。
これで、Arduinoに接続された全周辺装置の動作試験は無事終わりました。まだ温度制御のスケッチを動かしたわけではありませんが、1号機を作ったときに温度制御のアルゴリズムは完成しているので、既に温度制御ができた気分になっています。
今後は、温度制御ソフトウェアを実装したうえで、新たに接続したキーパッドと、広くなった液晶画面を活かして、温度のグラフ表示をより詳細にしたり、プリセットしたいくつかの温度プロファイルから必要なプロファイルを選択する機能を実装する予定です。
関連ページ
- リフロー温度制御装置2号機製作中(1) – 部品をトレーに取り付け
- リフロー温度制御装置2号機製作中(3) – 温度制御の試験
- リフロー温度制御装置2号機製作中(4) – グラフの大型化
- リフロー温度制御装置2号機製作中(5) – 温度プロファイル選択機能
- Arduinoとホットプレートを使ったリフロー装置(2号機)の製作
- AdafruitのMAX31855基板を使った温度測定
- 128×64モノクログラフィックLCDシールドサポートページ
- I/Oピン一つで読める4X4キーパッド(完成品)サポートページ
広告