リフロー温度制御装置2号機製作中(2) – 配線と部品の動作試験

先日、リフロー温度制御装置2号機の部品をプラスチックトレー上に実装しましたが、今日は各部品を配線しました。半田付けは最小限にして、ピンヘッダやピンソケットにブレッドボード用のジャンパ線を差し込む形で配線を行いました。

配線の終わった温度制御装置

使った部品は以下の通りです。(プラスチックトレー、ねじ、スペーサ、配線材などは除く)

以前作った温度制御装置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号機を作ったときに温度制御のアルゴリズムは完成しているので、既に温度制御ができた気分になっています。

今後は、温度制御ソフトウェアを実装したうえで、新たに接続したキーパッドと、広くなった液晶画面を活かして、温度のグラフ表示をより詳細にしたり、プリセットしたいくつかの温度プロファイルから必要なプロファイルを選択する機能を実装する予定です。

関連ページ
広告

投稿者: しなぷす

電子工作サイトしなぷすのハード製作記の管理人です。フリーランスのエンジニアですが、大学の非常勤講師もやっています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

認証コード(計算結果を半角数字で入力してください) *