Autor Tema: control de potenica (pic,keypad,triac,moc,cruze por cero)  (Leído 11826 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mracso

  • PIC10
  • *
  • Mensajes: 11
control de potenica (pic,keypad,triac,moc,cruze por cero)
« en: 12 de Diciembre de 2017, 05:37:29 »
hola soy nuevo en el foro y estoy haciendo un proyecto basicamente lo que quiero es que por medio del pic pueda variar el angulo de disparo, uno ingresa el angulo de disparo en el keypad . pero simulado mi codigo no funciona, y armado funciona pero cuando quiero meter la senal que sale del 3n25 que es mi cruze por cero al rb0 esta desaparece se hace cero, (lo comprobe en el osciloscopio) que podria ser.
« Última modificación: 12 de Diciembre de 2017, 17:03:03 por mracso »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #1 en: 12 de Diciembre de 2017, 14:13:26 »
Citar
armado funciona pero cuando quiero meter la senal que sale del 3n25 que es mi cruze por cero al rb0 esta desaparece se hace cero

Entonces vas a necesitar poner un esquema del circuito.

Desconectado mracso

  • PIC10
  • *
  • Mensajes: 11
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #2 en: 12 de Diciembre de 2017, 14:37:29 »
esta es la connexion que utilizo en proteus pero lo que pasa es el cruce por cero no respornde

Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #3 en: 12 de Diciembre de 2017, 14:52:20 »
Hola

Lo primero que observo es que tenés conectada la masa de tu circuito de baja tensión con la masa de tu circuito de alta... Esto puede ser peligroso y atenta contra la principal ventaja de los optoacopladores que es justamente aislar ambos. Te sugiero que quites la masa que está conectado al triac.

Saludos.
Luis.

Desconectado mracso

  • PIC10
  • *
  • Mensajes: 11
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #4 en: 12 de Diciembre de 2017, 15:26:47 »
listo desacople las tierras pero parece que el 4n25 no funciona cuando la salida del 4n25 la conecto alpic esta no funciona, se hace cero gradualmente

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #5 en: 12 de Diciembre de 2017, 15:46:37 »
listo desacople las tierras pero parece que el 4n25 no funciona cuando la salida del 4n25 la conecto alpic esta no funciona, se hace cero gradualmente

El problema esta en que no se como es que el 4n25 todavia sobrevive... Ya que tiene un voltaje de inversa de 5V maximo, y vos ahi si todo fuera correcto tendrias casi 311V/3 sobre el diodo del 4n25.

Mejor un circuito que sea:

RED F - resistencia ---- opto -> ----- RED N
                            |__ <- diodo __|

De esa forma a la salida tenes una señal cuadrada, el 0 lo vas a tener en cualquier flanco detectado.
cuando F > N el circuito sera resistencia - diodo led del opto
Cuando N > F el circuito sera diodo -- resistencia
Es decir la resistencia conduce todo el ciclo, Y la maxima tension sobre el opto en inversa sera la del diodo 0.7V

Y como dijo luismh si observas el circuito que te digo no necesitas unir el neutro o fase a GND

El valor de la resistencia lo vas a tener que calcular.. Si estas usando 220V ( 311V pico ) con 1k la corriente sobre el diodo led es demasiado grande. son casi 300mA (siendo el maximo de 60mA) en algun punto.
Ademas de la potencia que debe disipar.
« Última modificación: 12 de Diciembre de 2017, 15:48:51 por KILLERJC »

Desconectado mracso

  • PIC10
  • *
  • Mensajes: 11
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #6 en: 12 de Diciembre de 2017, 16:04:17 »
la fuente que esta conectada al puente de diodos 3sd e 12 rms nomas la quiero para calcular el cruce por cero  pero esta no funciona cunado la conecto al pic

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #7 en: 12 de Diciembre de 2017, 21:34:42 »
No veo nada malo en el circuito.

Desconectado mracso

  • PIC10
  • *
  • Mensajes: 11
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #8 en: 13 de Diciembre de 2017, 00:00:08 »
entonces crees que pueda ser el programa

Desconectado uZYNQ

  • PIC16
  • ***
  • Mensajes: 123
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #9 en: 13 de Diciembre de 2017, 00:02:24 »
De que voltaje es la fuente dc en R2? puedes conectar R2 a la misma fuente en donde conectas el pulsador de reset. Probaste a ver el detector sin conectarlo al PIC? deberia funcionar si esta conectada R2 a 5V. Y si cuando la conectas al PIC no funciona puede ser que este RB0 como salida y con 0V.

Desconectado mracso

  • PIC10
  • *
  • Mensajes: 11
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #10 en: 13 de Diciembre de 2017, 00:14:50 »
la fuente r2 es de 5v y rbo esta como estrada
« Última modificación: 13 de Diciembre de 2017, 02:19:26 por mracso »

Desconectado uZYNQ

  • PIC16
  • ***
  • Mensajes: 123
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #11 en: 13 de Diciembre de 2017, 00:23:02 »
Tienes que revisar la rutina de lectura de teclado que usas porque me parece que es para un teclado 4x4 y esa rutina te puede estar cambiando la configuracion del pin RB0

Desconectado mracso

  • PIC10
  • *
  • Mensajes: 11
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #12 en: 13 de Diciembre de 2017, 00:36:50 »
la libreria es 4x3, no se que puede estar pasando

Desconectado uZYNQ

  • PIC16
  • ***
  • Mensajes: 123
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #13 en: 13 de Diciembre de 2017, 00:46:36 »
Publica el codigo de la rutina de lectura a ver!

Desconectado mracso

  • PIC10
  • *
  • Mensajes: 11
Re:control de potenica (pic,keypad,triac,moc,cruze por cero)
« Respuesta #14 en: 13 de Diciembre de 2017, 00:53:28 »
///////////////////////////////////////////////////////////////////////////
////                             KBD.C                                 ////
////                  Generic keypad scan driver                       ////
////                                                                   ////
////  kbd_init()   Must be called before any other function.           ////
////                                                                   ////
////  c = kbd_getc()  Will return a key value if pressed or /0 if not  ////
////                   This function should be called frequently so as ////
////                   not to miss a key press.                        ////
////                                                                   ////
///////////////////////////////////////////////////////////////////////////
////        (C) Copyright 1996,2003 Custom Computer Services           ////
//// This source code may only be used by licensed users of the CCS C  ////
//// compiler.  This source code may only be distributed to other      ////
//// licensed users of the CCS C compiler.  No other use, reproduction ////
//// or distribution is permitted without written permission.          ////
//// Derivative programs created using this software in object code    ////
//// form are not restricted in any way.                               ////
///////////////////////////////////////////////////////////////////////////

////////////////// The following defines the keypad layout on port D

// Un-comment the following define to use port B
// #define use_portb_kbd TRUE

// Make sure the port used has pull-up resistors (or the LCD) on
// the column pins

#if defined use_portb_kbd
   #byte kbd = getenv("SFR:PORTB")
#else
   #byte kbd = getenv("SFR:PORTD")
#endif

#if defined use_portb_kbd
   #define set_tris_kbd(x) set_tris_b(x)
#else
   #define set_tris_kbd(x) set_tris_d(x)
#endif

//Keypad connection:   (for example column 0 is B2)
//                Bx:

#ifdef blue_keypad  ///////////////////////////////////// For the blue keypad
#define COL0 (1 << 2)
#define COL1 (1 << 3)
#define COL2 (1 << 6)

#define ROW0 (1 << 4)
#define ROW1 (1 << 7)
#define ROW2 (1 << 1)
#define ROW3 (1 << 5)

#else ////////////////////////////////////////////////// For the black keypad
#define COL0 (1 << 5)
#define COL1 (1 << 6)
#define COL2 (1 << 7)

#define ROW0 (1 << 1)
#define ROW1 (1 << 2)
#define ROW2 (1 << 3)
#define ROW3 (1 << 4)

#endif

#define ALL_ROWS (ROW0|ROW1|ROW2|ROW3)
#define ALL_PINS (ALL_ROWS|COL0|COL1|COL2)

// Keypad layout:
char const KEYS[4][3] = {{'1','2','3'},
                         {'4','5','6'},
                         {'7','8','9'},
                         {'*','0','#'}};

#define KBD_DEBOUNCE_FACTOR 33    // Set this number to apx n/333 where
                                  // n is the number of times you expect
                                  // to call kbd_getc each second


void kbd_init() {
}

char kbd_getc( ) {
   static BYTE kbd_call_count;
   static int1 kbd_down;
   static char last_key;
   static BYTE col;

   BYTE kchar;
   BYTE row;

   kchar='\0';
   if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) {
       switch (col) {
         case 0   : set_tris_kbd(ALL_PINS&~COL0);
                    kbd=~COL0&ALL_PINS;
                    break;
         case 1   : set_tris_kbd(ALL_PINS&~COL1);
                    kbd=~COL1&ALL_PINS;
                    break;
         case 2   : set_tris_kbd(ALL_PINS&~COL2);
                    kbd=~COL2&ALL_PINS;
                    break;
       }

       if(kbd_down) {
         if((kbd & (ALL_ROWS))==(ALL_ROWS)) {
           kbd_down=FALSE;
           kchar=last_key;
           last_key='\0';
         }
       } else {
          if((kbd & (ALL_ROWS))!=(ALL_ROWS)) {
             if((kbd & ROW0)==0)
               row=0;
             else if((kbd & ROW1)==0)
               row=1;
             else if((kbd & ROW2)==0)
               row=2;
             else if((kbd & ROW3)==0)
               row=3;
             last_key =KEYS[row][col];
             kbd_down = TRUE;
          } else {
             ++col;
             if(col==3)
               col=0;
          }
       }
      kbd_call_count=0;
   }
  set_tris_kbd(ALL_PINS);
  return(kchar);
}