前回に引き続き、次はロータリーエンコーダーとLCD 1602を組付け確認していきます。
まずは、パネルの動作確認を行った様子です。
紫外線露光機のお仕事は露光だけですので、入力系は、ローターリーエンコーダーと、メニュー表示用のLCDがあれば事足ります。ローターリーエンコーダーで、メニューや数値を選択するだけのオペレーションにしています。
露光用の液晶は危ないので極力使わないようにしています。
また、使う場合も紫外線の影響を最小限とするために、赤のみで表示するなどするので、可視性がよくないので、メニューには使わない方向で考えています。
■ ローターリーエンコーダーの制御
ローターリーエンコーダーは、GPIO経由でRasberry PIに接続しています。
制御に必要な信号は、CLK、DT、ボタンの3つです。
色々なサイトで基本的な仕組み、信号の味方は説明されていると思いますので、ここでは割愛します。
ただ、自分の使用しているローターリーエンコーダーには、癖があり、違和感なく使うにはちょっとコツがあるように自分は思います。
探せばRasberry PI(linux用)のロータリーエンコーダーのデバドラがあると思いますが、今回は、ハマりたくなかったので、ベアメタル用に自作していたモジュールをLinux用デバドラとして移植しました。
デバイスをリードすると、キーコードとして下図のように、ノブの回転、ノブのプッシュが読み取れる単純なデバイスドライバです。
コードは、恥ずかしいので今回は割愛します。気が向いたら後ほどの載せるかもしれません。
■ 1602 LCDの制御
今回は、1602にI2Cインターフェースモジュールを装着して使用しています。
一番の理由は配線が少なくて済むからです。
直接1602を制御する場合、ニブルデータ転送用に配線が必要でRaspberry PIのGPIOを多量に使用してしまいます。
しかし、I2Cであれば、GPIOを2本消費するだけですので、GPIOと配線の節約ができます。
色々なライブラリ等ありますが、今回は、自作のモノを使用しました。
理由は、メニューを表示させるのに、自前のライブラリの方が都合がよかったからです。
こちらも、コードは少々恥ずかしいので、今回は割愛します。
こちらも気が向いたら、後ほど載せるかもしれません。
■ メニュー
今週、一番苦しんだのは、メニュー(機能)です。
いざメニューを作ろうとしたときに、「キャリブレーションは何すればいいんだろう」「そもそも露光データどうするの?」と、機能仕様面の問題で悩んでしまいました。
ある程度は考えていたのですが、方式や機能ですこしつまずきました。
何時ものことではあるのですが、いい加減な設計をしているので仕方ない感じです。
とはいっても、決めないと、次以降困ってしまうので今回ざっとですが整理してみました。
〇 露光データ
私は回路、基板設計にEAGLEを使用しています。
このソフトでマスクや基板データを取り出す方法として、以下の2つの方法が考えられます。
a. ガーバー(基板制作データ)を使う
b. 印刷データ(PDF)を使う
a.は基板制作データなので確実ですが、私自身がデータに不慣れなで手持ちの技術で何とかなりそうにありません。
b.は、普段レジデントマスクを制作する際にも使用しています。さらには、様々なレンダリングも可能ですので、今回は、安易にできそうな、bを採用することにしました。
〇 露光位置あわせ方法
PDFで露光データを入力するにしても、画像の中から、必要な個所を抜き出してHDMI出力しなければなりません。当然ですが、私に高度な技術はないので、簡単な方法で何とかするしかないです。
苦し紛れに導き出した方式を下記に記載します。
◇ HDMI表示位置の限定
PDF上の画像をうまく切り抜くために、まずは、露光機:HDMI上のレジデントマスク表示位置を下記のように限定しました。理由は、「PDF上の印刷位置の限定」を説明する際に説明させていただきますが、一口に言えば処理を簡単にするためです。
◇ PDF印刷位置の限定
PDF印刷イメージもHDMI同様に下記のように表面、裏面毎に印刷位置を限定します。
このようなルールにしておけば、画像の取得位置は右下、またはは左下に限定されます。
例えば、基板表面を露光する場合には、HDMI上の基板表面原点とPDF印刷イメージ上の基板表面座標原点を合わせるように回転表示させれば、基板に表面を露光できます。
この方法であれば、原点位置だけ気にしていればよく、PDFの印刷サイズ、基板サイズは特に気にせずHDMI上に表示すればよいだけになります。
ただし、PDFはあくまで印刷イメージなので、左右上下にマージンが付加されます。
マージンは印刷ソフトに依存するので、原点位置だけは、調整が必要になります。
◇ キャリブレーション項目
この方式の場合、PDF生成ソフトや露光装置の組付け精度に依存する項目として以下があります。
a. PDFマージン(原点位置)設定
b. 基板固定具の組付け誤差設定
c. 露光時間
a、bについては、PDF生成毎や基板生成毎に変動するわけではないので、一度何らかの方法で設定すればよさそうです。bについては、設定方法だけでなくジグを作る必要がありそうです。実際に露光できる状態になったところで、ジグの設計を行おうと思います。(ここでは、一旦保留。)
cについては、実際に露光してみてパラメータを探るしかなさそうですが、露光時間を設定できるようにしておけば、ことは足りそうです。
〇 メニュー階層
上記の検討から、メニュー階層を以下のように決定しました。
メニューは単純化するため、階層構造(最大3階層)としました。
階層1(メインメニュー) | 階層2 | 階層3 | 機能 |
exposure top | レジデントマスクファイル(PDF)を選択し、基板表面を露光する。 | ||
exposure bottom | レジデントマスクファイル(PDF)を選択し、基板裏面を露光する。 | ||
exposure fix | レジデントマスクを完全硬化する。 | ||
configure time | 露光時間の設定を行う。 | ||
pcb exposure | PCBレジデントマスクの露光時間を設定する。 | ||
fix exposure | レジデントマスクの完全硬化時間を設定する。 | ||
adjust position | 基板固定器具の組付け調整を行う。 | ||
portrait top | 縦長基板イメージの基板表面露光位置を調整する。 | ||
portrait bottom | 縦長基板イメージの基板裏面露光位置を調整する。 | ||
landscape top | 横長基板イメージの基板表面露光位置を調整する。 | ||
landscape bottom | 横長基板イメージの基板裏面露光位置を調整する。 | ||
adjust x | X方向の位置調整を行う。 | ||
adjust y | Y方向の位置調整を行う。 | ||
adjust degree | 露光イメージの傾き調整を行う。 | ||
adjust PDF | PDFの余白調整(画像原点位置調整)を行う。 | ||
origin x | X方向の画像原点位置調整を行う。 | ||
origin y | Y方向の画像原点位置調整を行う。 | ||
save setting | 現在の調整結果を不揮発性情報として保存する。 |
■ 次回
今回は、少々苦しんでしまったこともあり、いささか見せ所のない内容でした。
次回からは、メニュー項目を実装していこうと思います。
またよかったら、のぞいていただけるとありがたいです。