Picの工作(2)


PICを使ったプリント基板露光機

PICを使ったプリント基板露光機の詳細を紹介します。



 自作のプリント基板を作成する場合の露光機を作ってみました。本体は、古いスキャナーを 解体して再利用しました。



  完成作品


 昔のスキャナーは筐体が大きくガラス板と基盤を抑える蓋板があるので、ケースに ブラックライト(蛍光ランプ)2本とPICで作成したタイマーを設置できると思い、 古いスキャナーを使用することにしました。
 捨てないで持っていると何かに使えますね!
 プリント基板の作成については、ポジ感光基板はSunhayatoの片面NZ-P10Kを主に 使用しています。
現像剤は同社のDP-10を使用しています。
 露光時間は、ポジ感光基板の製造年月日によって若干の違いがありますが、およそ 2分~4分ですので製作した露光機は3分に固定してあります。
 将来的には、製造年月日によって、露光時間を可変式にしたいと思っています。
 なお、配線パターンはPCで作成しインクジェットOHPフィルムに印刷しています。




  参考写真


 参考としてケース内外の写真を掲載しておきます。




  回路図


1.下記に回路図を表示しておきます。

2.タイマーには、PIC16F84Aを使用しています。

3.スタートSWを押すとソリッドステートリレー(SSR)を通してブラックライトが点灯し、 3分後に消灯するようにしてあります。

4.消灯と同時にブザーが鳴るようにもしてあります。

5.途中で消灯したいときは、リセットSWを押すとライトが消灯されます。

6.赤色LEDは、電源を入れると点灯します。

7.黄色LEDは、動作中に点灯します。

8.緑色LEDは、動作中1秒間隔で点滅します。

 今後は、少し改良して露光時間を可変できるようにしようと思っています。




  プログラムコード


プリント基板露光機のPICプログラムを掲載しておきます。

//RokoukiTimer.C
//3minuteTaimer

#include <16f84a.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=10000000)

#byte port_a=5
#byte port_b=6

#define COUNTMAX 38

int COUNT;
int sec=0;
int min=0;

#INT_RTCC
rtcc_isr()
{
  COUNT--;
  if(COUNT==0)
  {
    COUNT=COUNTMAX;
    sec++;
    if(sec==60)
    {
      min++;
      sec=0;
      if(min==3)
      {
        port_b=0x04;
        min=0;
      }
    }
  }
}

main()
{
  while(1)
  {
    if(input(PIN_A2)==0)
      break;
  }

  set_tris_a(0x04);
  set_tris_b(0);
  port_a=0;
  port_b=0x01;

  setup_timer_0(RTCC_INTERNAL,RTCC_DIV_256);
  COUNT=COUNTMAX;
  enable_interrupts(INT_RTCC);
  enable_interrupts(GLOBAL);

  while(1)
  {
    port_a=0x02;
    delay_ms(1000);
    port_a=0;
    delay_ms(1000);
  }
}
						



  プログラムの概要


1.TMR0による割込み処理で約3分を作っています。正確ではありませんが、露光時間なので 大雑把です。

2.発振子は10MHzです。したがって内部クロックは,10MHz/4=2.5MHz, 1/2.5MHz=0.4μsecなので オーバフロー割込み信号の周期はプリスケーラを1/256分周の設定にしてあるので、
    0.4μsec x 256 x 256 = 26.214msec
 したがって、1秒を得るのに、1000msec/26.214msec = 約38カウントとなるので、COUNTMAX=38と 設定しています。

3.2つ目のwhileループは、LEDをディレイ関数を使って1秒ごとに点滅させている飾りです。