2016年10月03日 | 公開。 |
温度プロファイルを決める11個のパラメータと温度プロファイルの名称は、温度制御装置のスケッチ中に書き込まれています。これらのパラメータや名称を編集すると、温度プロファイルを微調整したり、新しい温度プロファイルを作成したりする事ができます。以下にその方法を説明します。
表4に、温度プロファイルを決定する全パラメータと、Pbフリー(GN)プロファイルにおける各パラメータの値を示します。
記号 | 名称 | 画面表示の 際の名称 |
profile 構造体の メンバ |
Pbフリー(GN) での値 |
単位 |
---|---|---|---|---|---|
|
プロファイル名称 |
メイショウ |
name |
Pbフリー(GN) |
|
tch | 加熱チェック時刻 | チェック ジコク | TimeCheck |
120 |
秒 |
Tch | 加熱チェック温度 | チェック オンド | TempCheck |
100 |
℃ |
TP | 予熱時制御温度 | ヨネツ オンド | TempPreheat |
150 |
℃ |
ΔTP | 予熱時温度制御幅 | ヨネツ ハバ | WidthPreheat |
40 |
℃ |
ΔtP1 | 予熱時アイドル時間 | ヨネツ アイドル | IdlePreheat |
16 |
秒 |
ΔtP2 | 予熱時間 | ヨネツ ジカン | TimePreheat |
90 |
秒 |
TR | リフロー時制御温度 | リフロー オンド | TempReflow |
220 |
℃ |
ΔTR | リフロー時温度制御幅 | リフロー ハバ | WidthReflow |
40 |
℃ |
ΔtR1 | リフロー時アイドル時間 | リフロー アイドル | IdleReflow |
9 |
秒 |
ΔtR2 | リフロー時間 | リフロー ジカン | TimeReflow |
35 |
秒 |
TC | 冷却終了温度 | レイキャク オンド | TempCool |
60 |
℃ |
温度制御装置のスケッチ内では、profileという構造体が定義されています。この構造体は、表4に示したパラメータを格納するための構造体です。
struct profile { // プロファイル設定の構造体
const char *name; // プロファイルの名称
uint16_t TimeCheck; // 加熱チェックの時刻[秒]
int16_t TempCheck; // 加熱チェック時の温度の下限[℃]
int16_t TempPreheat; // 予熱温度の中央値[℃]
int16_t WidthPreheat; // 予熱温度の幅[℃]
uint16_t IdlePreheat; // 予熱の初期にヒーターを止める時間[秒]
uint16_t TimePreheat; // 予熱時間[秒]
int16_t TempReflow; // リフロー温度の中央値[℃]
int16_t WidthReflow; // リフロー温度の幅[℃]
uint16_t IdleReflow; // リフローの初期にヒータを止める時間[秒]
uint16_t TimeReflow; // リフロー時間[秒]
int16_t TempCool; // 冷却終了温度[℃]
};
各温度プロファイルは、ProfileListというproflie構造体の配列に記録されています。PROGMEM const修飾子が付いているので、RAMではなく、ROM(フラッシュメモリ)に格納されます。
PROGMEM const profile ProfileList[PROFILE_LIST_LEN] = {
{ // 0
ProfileName0, // name プロファイルの名称
120, // TimeCheck 加熱チェックの時刻[秒]
100, // TempCheck 加熱チェック時の温度の下限[℃]
150, // TempPreheat 予熱温度の中央値[℃]
40, // WidthPreheat 予熱温度の幅[℃]
16, // IdlePreheat 予熱の初期にヒーターを止める時間[秒]
90, // TimePreheat 予熱時間[秒]
220, // TempReflow リフロー温度の中央値[℃]
40, // WidthReflow リフロー温度の幅[℃]
9, // IdleReflow リフローの初期にヒータを止める時間[秒]
35, // TimeReflow リフロー時間[秒]
60, // TempCool 冷却終了温度[℃]
},
// 途中略 //
}; // ProfileList
リスト3を見ると、表4のプロファイル名称以外の全てのパラメータが順に設定されている様子が分かるでしょう。
プロファイル名称については、別の所で設定されています。
// プロファイル名
PROGMEM const char ProfileName0[]="Pbフリー(GN)";
PROGMEM const char ProfileName1[]="Pbフリー(HG)";
PROGMEM const char ProfileName2[]="ユウエン(GN)";
PROGMEM const char ProfileName3[]="ユウエン(HG)";
PROGMEM const char ProfileName4[]="ベーク 120゚C";
PROGMEM const char ProfileName5[]="テスト";
PROGMEM const char ProfileName6[]="プロファイル7";
PROGMEM const char ProfileName7[]="プロファイル8";
これらの設定を編集すれば、温度プロファイルの微調整や追加が行えます。新たな温度プロファイルを追加する場合は、プロファイル7とプロファイル8を上書きしてください。
登録する温度プロファイルの種類の数は、PROFILE_LIST_LENというマクロ定数で指定しています。
#define PROFILE_LIST_LEN 8 // プロファイルの種類
デフォルトでは8を指定していますが、この数を増やし、ProfileList配列に追加する温度プロファイルのパラメータを追加すれば、温度プロファイルを増やすことができます。ROM容量に余裕のある限り、温度プロファイルを追加できます。
なお、TR(リフロー時制御温度)をTP(予熱時制御温度)以下の値に設定すると(普通は0に設定する)、予熱ステージの次に加熱ステージ2には進まず、冷却ステージに進みます。この場合、ΔTR、ΔtR1 、ΔtR2の3つのパラメータの値は無視されます。この機能は、ベーク 120゚Cの温度プロファイルで利用しています。
ホットプレートリフロー用の温度制御装置の2号機では、いくつかの温度プロファイルをプリセットしておき、それらの中から使用するプロファイルを選択できる様になりました。これで、基板のベーキングが気軽にできる様になったのが、うれしいです。
今回は温度プロファイルのパラメータをスケッチ中に直書きしましたが、時間があればパラメータをEEPROMに保存するようにし、キーパッドから編集できる様にしたいと思っています。
温度制御に関しては、今回は簡単なP制御を行いました。予熱ステージとリフローステージの最初にヒーターを止める事により、オーバーシュートを抑える事ができ、ホットプレートリフローを行うには十分な性能が出たと思っています。
最初は本格的なPID制御に切り替えようかとも思っていたのですが、ホットプレートのむだ時間が長い割にはリフローにかけられる時間が短いので、制御は収束せず、PID制御に切り替えたところで、大幅な性能の向上は望めない気がします。
ただし、基板のベーキングを行う場合は、長い時間一定温度を維持する必要があり、この場合はPID制御は有効だと思います。特にI要素(積分要素)があると、温度を完全に目標値に収束させることが可能になります。現状のP制御では、ベーキングする基板の数が多いと温度が下がる傾向にあり、この点ではPID制御により性能の向上が可能だと思われます。
他にも装置を箱に収めて感電しないようにしたいなど、色々と改善したいところはあるのですが、まあ、ぼちぼちと。
商品名 | 128×64モノクログラフィックLCDシールド | |
税抜き小売価格 | 3600円 | |
販売店 | スイッチサイエンス | |
サポートページ | 128×64モノクログラフィックLCDシールドサポートページ |
商品名 | I/Oピン一つで読める4X4キーパッド(完成品) | |
税抜き小売価格 | 1380円 | |
販売店 | スイッチサイエンス | |
サポートページ | I/Oピン一つで読める4X4キーパッド(完成品)サポートページ |
商品名 | I/Oピン一つで読める4X4キーパッドキット | |
税抜き小売価格 | 900円 | |
販売店 | スイッチサイエンス | |
サポートページ | I/Oピン一つで読める4X4キーパッドキットサポートページ |