Temporizador para insoladora UV

Hola a todos,

Estoy preparando un temporizador para la insoladora que me he fabricado. Adjunto pongo una imagen con el esquema del circuito. La idea es que al conectar el interruptor de entrada "sw7" quede todo preparado para que en cuanto actúe sobre el pulsador "sw3" se enciendan los fluorescentes durante el tiempo definido para la temporización, finalizado el cual se "dispare" el buzzer que ya me encargaría de apagar pulsando el reset "sw2". Para el zumbador he incluido un biestable RS.

El problema es que nada más conectar el circuito, a veces sí y otras no ya empieza a sonar el zumbador y yo quiero que lo haga sólo cuando finalice la temporización. Sé que ese problema lo tiene de por sí el RS pero traté de solucionarlo incluyendo el condensador en paralelo con el pulsador de reset, pero al realizar la simulación, no funciona, el buzzer sigue entrando a veces nada más conectar la alimentacion.

Otra cosa es que alguien me dijo que la salida del 555 debía conectarla a un transistor, pero yo creo que esa salida es capaz de dar intensidad suficiente para excitar la bobina del relé, me equivoco?

Bueno... espero que alguien me pueda ayudar...
muchas gracias de antemano!
 

Adjuntos

  • 2012-02-27 20.46.12.jpg
    2012-02-27 20.46.12.jpg
    89.8 KB · Visitas: 112
haber pásate un rato la simulacion...
me parece que usas un latch con NANDs para saturar en transistor cierto??si intentas poner algun FF
pero que cosas estoy viendo, una fase de la linea de 220V comun para al alimentacion del 555??
 
Hola, Bkar... lo de la conexión a 220 se me ha escapado, supongo que se ha colado mientras "cableaba". He utilizado un latch en lugar de FlipFlop porque no necesito ninguna entrada de reloj, sino que el pulso de entrada para cambiar el estado de la salida hacia el buzzer lo produce el propio pulsador de inicio de la temporización "sw3", que por cierto, también se me ha olvidado unirlo en paralelo con el "set" del latch. la cosa es que aunque haya "seteado" el latch, éste no excitará el buzzer hasta que no conmute el relé...

por cierto, muchas gracias por contestar, Bkar
 
Vuelvo a subir el esquema corregido y con el pulsador de marcha que activa también el set del latch... Cuando cierro el interruptor de entrada, se pone a sonar el buzzer hasta que acciono el pulsador de encendido de las lámparas y eso es lo que no sé cómo evitar: sólo quiero que suene cuando termine la temporización

Sigo esperando ayuda...
Gracias!
 

Adjuntos

  • 2012-03-01 16.37.10.jpg
    2012-03-01 16.37.10.jpg
    89 KB · Visitas: 71
Hi All,
Below is Timer, you can use this timer for UV - PCB, below code write with MikroC.

I hope this help for everyone are looking for this project.

Hola a todos,
A continuación se muestra el temporizador, puede usar este temporizador para UV - PCB, debajo de escribir código con MikroC.

Espero que esta ayuda para todos esté buscando este proyecto.

Código:
 // Asengleem Indonesia - Bandung
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;

sbit SET at RA0_bit;
sbit SPS at RA1_bit;
sbit CLR at RA2_bit;
sbit MS at RA3_bit;


// Variabel
int hitung;
short detik, menit;
char ff;
char psn [22];
bit mulai, pt, ptn, selesai, oldstate;

char * CopyConst2Ram (char * dest, const char * src) {
  char * d;
  d = dest;
  for (; * dest ++ = * src ++;) asm clrwdt;
  return d;
  }


void tunda () {
Delay_ms (2500);
}

void Tone1 () {
Sound_Play (659, 250);
}

void Tone2 () {
Sound_Play (698, 250);
}

void Tone3 () {
Sound_Play (784, 250);
}

void Melody () {
Tone1 (); Tone2 (); Tone3 (); Tone3 ();
Tone1 (); Tone2 (); Tone3 (); Tone3 ();
Tone1 (); Tone2 (); Tone3 ();
Tone1 (); Tone2 (); Tone3 (); Tone3 ();
Tone1 (); Tone2 (); Tone3 ();
Tone3 (); Tone3 (); Tone2 (); Tone2 (); Tone1 ();

}

void ToneA () {
Sound_Play (880, 50);
}

void ToneC () {
Sound_Play (1046, 50);
}

void ToneE () {
Sound_Play (1318, 650);
}

void Melody2 () {
unsigned short i;
for (i = 9; i> 0; i--) {
ToneA (); ToneC (); ToneE ();
}
}

// Definisikan Karakter Yang Akan Ditampilkan
const char rdf [] = "ASENGLEEM";
const char tmr [] = "Timer";
const char stt [] = "Version_1_FRW";
const char sttmr [] = "Exposure Time";
const char sset [] = "Set";
const char ss [] = "Remaining";
const char strm [] = "Exposure On";
const char bersihkan [] = "";
const char bersihkan1 [] = "";
const char sls [] = "Finish";
const char info [] = "----> Open Box RW";


void interrupt ()
{
TMR0 = 255; // Atur Timer 255
hitung ++; // Tambahkan Nilai
INTCON.TMR0IF = 0; // Bersihkan Interrupt Flag
INTCON.T0IF = 0;
}

void main ()
  {
  oldstate = 0;
  CMCON = 155;
  ADCON1 = 0xFF; // Bila Ini di aktifkan maka tidak counting
  OPTION_REG = 0b00001000;
  INTCON.PEIE = 0;
  INTCON.TMR0IE = 0;
  TMR0 = 255;
       
// Lcd_Out (1,1, CopyConst2Ram (psn, rdf));
     Sound_Init (& PORTD, 5);
  // Sound_Play (880, 1000);

  TRISA = 0b11111111;
  TRISB = 0b00000000; // Definisi Semua PORTB Untuk Output, Ke LCD 2 * 16
  TRISD = 0b11000000; // Definisi PORTD 4-5 Untuk Output Dan Lain Nya Off, Ke Led 2 * Untuk Indikator, Ke External Lampu Atau Perangkat Yg Akan Di Kontrol
  TRISE = 0b00000000; // Definis Semua PORTE Untuk Output
  PORTE = 0b00000100; // PORTE RE2 Untuk Menyalakan Indikator Power Led
  PORTD = 0; // Bersihkan PORTD to 0 Standby

  detik = 0; // Definisi variabel detik
  menit = 0; // Definisi variabel menit

  mulai = 0; // Mulai Dari NOL
  pt = 0;
  ptn = 0;
  selesai = 0;

  awal:

  Lcd_Init ();
  Lcd_Cmd (_LCD_CLEAR);
  Lcd_Cmd (_LCD_CURSOR_OFF);
  Lcd_Out (1,1, CopyConst2Ram (psn, rdf));
  Lcd_Out (2,6, CopyConst2Ram (psn, tmr));

spanking();

  Lcd_Cmd (_LCD_CLEAR);
  Lcd_Cmd (_LCD_CURSOR_OFF);
  Lcd_Out (1,2, CopyConst2Ram (psn, stt));

  delay_ms (200);

  Lcd_Cmd (_LCD_CLEAR);
  Lcd_Cmd (_LCD_CURSOR_OFF);
// PORTE = 0b00000100; // Power Led RE3

Lcd_Out (1,1, CopyConst2Ram (psn, sttmr));
Lcd_Out (2,1, CopyConst2Ram (psn, sset));

  while (1)

    {
    Lcd_Chr (2, 12, menit / 10 + '0'); // Tempatkan "MENIT" Pada Baris 2 Dan Kolom # .12
    Lcd_Chr_CP (menit% 10 + '0');
    Lcd_Chr_CP (':');
    Lcd_Chr_CP (detik / 10 + '0');
    Lcd_Chr_CP (detik% 10 + '0');


  {
          if (hitung> = 2294.999)
         {
         hitung = 0; // Reset Variabel Ke NOL
         if (mulai+1)
         {
         detik--;
         if (detik <0) // Jika Detik Lebih Kecil Dari NOL
         {
         detik = 59; // Detik
            menit--;
              if (menit <1)
              {



                Lcd_Out (1,1, CopyConst2Ram (psn, sls));
                Lcd_Out (2,1, CopyConst2Ram (psn, bersihkan));
                                                            // Lcd_Chr (2,15,0);


                PORTD.F2 = 1;
                PORTD.F5 = 1;
                PORTD.F0 = 0;
                PORTD.F1 = 0;
                 Delay_ms (200);
               
            Lcd_Out (2,1, CopyConst2Ram (psn, bersihkan));
            Lcd_Out (2,1, CopyConst2Ram (psn, info));

             
                   Melody (); // Play Melody
                // Melody2 ();
               // ToneE ();
               
                  menit = 0;
                  detik = 0;
                  mulai = 0;

                goto awal;
                 
            Delay_ms (511125000);
             
             }
           }
          }
         }


        if (! MS) // Jika Swith DIP, Dipilih Ke Menit Atau Detik, Maka Atur Posisi Digit Tersebut

        {

         if (SET) // Jika Switch DIP Terpilih Pada Detik, Maka Atur Untuk Menit

         {

          pt = 1;
         }
         if (! SET && pt)
         {

                pt = 0;
                detik ++; // Naikkan Nilai Plus 1 Setiap Penekanan Push Button Dalam Digit Detik
                if (detik == 60) detik = 0; // Jika Push Button Detik Hingga 60, Maka Detik Kembali Ke NOL, Nilai 60 Adalah Maksimal 1 Menit SAMA DENG 60 Detik
       
        PORTD = 0b00000000;
                Delay_ms (50);
         if (SET) oldstate = 1; // Setiap Kali Tekan LED Detik Berdkedip

         
        }

          PORTD.F4 = 1; // Led Untuk Detik
          PORTD.F3 = 0;

        }
         


        else // Bila DIP Switch Bukan Posisi Detik, Maka Digit Pada Menit
        {
          // PORTD.F3 = 1; // Led Untuk Menit
           //PORTD.F4 = 0;

           // if (SET)
         if (SET) // Jika Switch DIP Terpilih Pada Menit, Maka Atur Untuk Menit
             // Delay_ms (100);
         // if (! SET) // Kalau seperti ini menghitung sendiri


         {

          pt = 0;


        }
         if (SET && 1)


         {

         
          pt = 0;
          menit ++; // Naikkan Nilai Plus 1 Setiap Penekanan Push Button Dalam Digit Menit
          if (menit == 60) menit = 0; // Jika Push Button Menit Hingga 60, Maka Menit Kembali Ke NOL, Nilai 60 Adalah Maksimal 1Jam SAMA DENG 60 Menit
          PORTD = 0b00000000;
         
                  Delay_ms (50);
         if (SET) oldstate = 1;
         }
       
         PORTD.F3 = 1; // Led Untuk Menit
         PORTD.F4 = 0;
       
        }
        if (!SPS) // Tekan Maka Akan Memulai Menghitung Mundur Dari Waktu Yang Telah Diatur
           

                 
        {

           ptn = 1;
                            // Here is Start Timing
                          Delay_ms (62);
                          Lcd_Out (1,1, CopyConst2Ram (psn, strm));
                          Lcd_Out (2,1, CopyConst2Ram (psn, bersihkan1));
                          Lcd_Out (2,1, CopyConst2Ram (psn, ss));
                             

                             
                           PORTD.F0 = 1;
                           PORTD.F1 = 1;

                           Delay_ms (60);

                         
        }
      if (SPS && 1) // Bila Di Tekan Kembali, Maka Penghitungan Diberhentikan Sementara, Hingga Ada Penekanan Kembali
        {
       ptn = 0;
       
         mulai = ~ mulai; // Membalikkan Status


       }
     

       


      Delay_ms (52); // Bantu atur timer


    }

        }

       }
      //} [/ CODE]
 
Última edición por un moderador:
¡ Gracias por la contribución !

Dentro de tus posibilidades trata de escribir en español

¡ Thanks for the contribution !

Within your possibilities try to write in Spanish
 
Atrás
Arriba