Autor Tema: Regular Intesidad de un FOCO "Proyecto de con 18f4550"  (Leído 2342 veces)

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

Desconectado Macko77

  • PIC10
  • *
  • Mensajes: 6
Regular Intesidad de un FOCO "Proyecto de con 18f4550"
« en: 06 de Diciembre de 2013, 11:14:26 »
Buenas, ando realizando un sistema de control luminoso como una integración de matlab y una tarjeta de adquisición con un 18F4550, por medio de matlab la idea es enviar un carácter y que el pic haga la parte de control, la tarjeta realiza 3 acciones apagado y encendido de dos recintos y control luminoso de uno de los recintos, las dos primeras cosas ya están hechas pero no logro realizar la acción de la regulación de luz, el codigo que llevo es el siguiente:

#include <18F4550.h>
#fuses HSPLL,MCLR,NOWDT,NOPROTECT,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN,NOLVP
#use delay(clock=20000000)
#use fast_io(A)
#use standard_io(B)
#include "usb_cdc.h" // Descripción de funciones del USB, entre comillas es porque esta trabajando sobre la misma carpeta
#include "usb_desc_cdc.h" // Descriptores del dispositivo USB.

void main() {
   int sal1, sal2;
   unsigned char datoIN;
   usb_cdc_init(); // Configuramos al puerto virtual.
   usb_init(); // Inicializamos el stack USB.
   set_tris_A(0xFF); // Configuro el puerto A como entradas
   set_tris_B(0x00); // Configuro el puerto b salida
    
   while(!usb_cdc_connected())
   {
      OUTPUT_HIGH(PIN_E0);
      OUTPUT_LOW(PIN_E1);
      DELAY_MS(500);
      OUTPUT_HIGH(PIN_E1);
      OUTPUT_LOW(PIN_E0);
   }
   // espera a detectar una transmisión de la PC (Set_Line_Coding).
  
   OUTPUT_HIGH(PIN_E0);
   OUTPUT_LOW(PIN_E1);
  
   sal1=0; //Inicializo Variables alternativas
   sal2=0; //Inicializo Variables alternativas
  
  do{
      usb_task();
         //////////////////////////////////////////////////////
            
      if (usb_enumerated())
      {  // Espera a que el dispositivo sea enumerado por el host.
         OUTPUT_LOW(PIN_E0);
         OUTPUT_HIGH(PIN_E1);
         if(usb_cdc_kbhit())
         { // En espera de nuevos caracteres en el buffer de recepción.
            datoIN = usb_cdc_getc();
            if(datoIN == 'a')
            { //¿lo que llegó fué el caracter a = hay movimiento en el salon 1 y esta en la intesidad mas alta?
            OUTPUT_HIGH(PIN_B0);
            sal1=1; //si, entonces se prenden las luces del salon 1
            }
            if(datoIN == 'b')
            { val=8;
            }
            if(datoIN == 'c')
            { val=7;
            }
            if(datoIN == 'd')
            { val=6;
            }
            if(datoIN == 'e')
            { val=5;
            }
            if(datoIN == 'f')
            { val=4;
            }
            if(datoIN == 'g')
            { val=3;
            }
            if(datoIN == 'h')
            { val=2;
             }
            if(datoIN == 'i')
            { //¿lo que llegó fué el caracter b = no hay movimiento en el salon 1?
            OUTPUT_LOW(PIN_B0);
            }
            if(datoIN == 'j')
            { //¿lo que llegó fué el caracter c = = hay movimiento en el salon 2?
            OUTPUT_HIGH(PIN_B1);
            sal2=1; //si, entonces se prenden las luces del salon 2
             }
            if(datoIN == 'k')
            { //¿lo que llegó fué el caracter d = no hay movimiento en el salon 2?
            OUTPUT_LOW(PIN_B1);
            }

            if (sal1==1 || sal2==1) // Pregunto por variable del salon
            {
            OUTPUT_HIGH(PIN_B2); // Prende Led Indicador
            }
            else
            {
            OUTPUT_LOW(PIN_B2); // Prende Led Indicador
            }
           dato=datoIN;
           }
      }
  }while (TRUE); // bucle infinito.
}


La idea es q cuando llegue el dato b la intensidad sea del 90% en el pin B0, cuando llegue c la intensidad sea del 80% en el pin B0, cuando llegue d la intensidad sea del 70% en el pin B0, cuando llegue e la intensidad sea del 60% en el pin B0, cuando llegue f la intensidad sea del 50% en el pin B0, cuando llegue g la intensidad sea del 40% en el pin B0, cuando llegue h la intensidad sea del 30% en el pin B0.


Les escribo porq he probado muchas cosas pero no me sale lo que quiero, y esto es parte de mi tesis de grado para optar por el titulo de ingeniero en telecomunicaciones, y lo necesito, no se si alguien podria colaborarme o ayudarme para poder implementarlo.

Este es el cto de manera general, los moc que utilizo el 3020 q cruzan por cero y el triac bt136
https://drive.google.com/file/d/0Bw7-Do2OdLyGbDdLVHQ1WG01anRCRlF6cFZBOFVXX05KS25v/edit?usp=sharing

Agradeceria una pronta respuesta

Saludos Fabio
maverick77.fabio@gmail.com

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Regular Intesidad de un FOCO "Proyecto de con 18f4550"
« Respuesta #1 en: 06 de Diciembre de 2013, 12:04:21 »
Para realizar lo que quieres necesitas un moc que no tenga cruce por cero, ya que la deteccion del cruce la tienes que detectar con el pic
"Nada es imposible, no si puedes imaginarlo"

Desconectado Macko77

  • PIC10
  • *
  • Mensajes: 6
Re: Regular Intesidad de un FOCO "Proyecto de con 18f4550"
« Respuesta #2 en: 06 de Diciembre de 2013, 12:51:59 »
Para realizar lo que quieres necesitas un moc que no tenga cruce por cero, ya que la deteccion del cruce la tienes que detectar con el pic


Tambien lo probé con el moc 3011 que no cruza por cero y tampoco lo realiza!!!!!

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Regular Intesidad de un FOCO "Proyecto de con 18f4550"
« Respuesta #3 en: 06 de Diciembre de 2013, 13:12:50 »
En tu circuito veo que te falta detectar el cruce por cero, hay varias formas para meter la señal al pic, usando un amplificador o poniendo una resistencia de algunos megas directamente al pic
"Nada es imposible, no si puedes imaginarlo"

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: Regular Intesidad de un FOCO "Proyecto de con 18f4550"
« Respuesta #4 en: 06 de Diciembre de 2013, 13:28:02 »
Aqui puedes ver algunos detectores de ruce por cero   :mrgreen:

Saludos