Advertisement
Villalba2006

POST_53

Jan 10th, 2017
14,024
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.01 KB | None | 0 0
  1. /*  TITULO: Control del brillo de una bombilla a través de un Dimmer AC
  2.  
  3.     AUTOR:
  4.    
  5.     MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
  6.     - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
  7.     - TWITTER: https://twitter.com/MarianoCampoGa
  8.     - CORREO: marianodc83@gmail.com
  9.    
  10.    
  11.     DESCRIPCIÓN DEL PROGRAMA
  12.    
  13.     Con este programa regulamos el brillo de una bombilla de 60W/220VAC a través de un Dimmer AC,
  14.     enviándole pulsos PWM, de un valor comprendido entre 15 y 90, desde el monitor serie del IDE
  15.     de nuestro Arduino.
  16.    
  17.    
  18.     ESQUEMA DE CONEXION
  19.    
  20.                                       +-----+
  21.          +----[PWR]-------------------| USB |--+
  22.          |                            +-----+  |
  23.          |         GND/RST2  [ ][ ]            |
  24.          |       MOSI2/SCK2  [ ][ ]  A5/SCL[ ] |    
  25.          |          5V/MISO2 [ ][ ]  A4/SDA[ ] |    
  26.          |                             AREF[ ] |
  27.          |                              GND[ ] |
  28.          | [ ]N/C                    SCK/13[ ] |  
  29.          | [ ]IOREF                 MISO/12[ ] |  
  30.          | [ ]RST                   MOSI/11[ ]~|  
  31.          | [ ]3V3    +---+               10[ ]~|  
  32.          | [ ]5v    -| A |-               9[ ]~|   Pin PWM del Dimmer AC
  33.          | [ ]GND   -| R |-               8[ ] |  
  34.          | [ ]GND   -| D |-                    |
  35.          | [ ]Vin   -| U |-               7[ ] |  
  36.          |          -| I |-               6[ ]~|  
  37.          | [ ]A0    -| N |-               5[ ]~|  
  38.          | [ ]A1    -| O |-               4[ ] |  
  39.          | [ ]A2     +---+           INT1/3[ ]~|  
  40.          | [ ]A3                     INT0/2[ ] |  
  41.          | [ ]A4/SDA  RST SCK MISO     TX>1[ ] |  
  42.          | [ ]A5/SCL  [ ] [ ] [ ]      RX<0[ ] |  
  43.          |            [ ] [ ] [ ]              |
  44.          |  UNO_R3    GND MOSI 5V  ____________/
  45.           \_______________________/
  46.  
  47.   NOTAS:
  48.  
  49.    - Más conexiones del Dimmer AC.
  50.        - Pin 5V --> +5V de Arduino
  51.        - Pin GND --> GND de Arduino
  52.        - Pin MODE --> +5V de Arduino (Para modo PWM del Dimmer AC)
  53.        - Conector AC IN --> 220VAC
  54.        - Conector AC LOAD --> Bombilla de 60W/220VAC
  55. */
  56.  
  57.   // Variables del programa
  58.   const int Pin_PWM = 9; // Pin digital para el pin PWM del Dimmer
  59.   String entrada_PWM = ""; // Cadena para guardar el valor numérico que introducimos en el monitor serie
  60.   char caracterEntrada; // Variable para almacenar un carácter leído del monitor serie
  61.   boolean entradaCompleta = false;  // Variable que comprueba el estado de la entrada por el monitor serie
  62.   int salida_PWM = 0; // Variable que almacena el valor del PWM que aplicamos en el Dimmer
  63.  
  64.   void setup()
  65.   {
  66.     Serial.begin(9600); // Comienzo de la comunicación serie
  67.   }
  68.  
  69.   void loop()
  70.   {
  71.     // Mandamos el valor del PWM al Dimmer
  72.     analogWrite(Pin_PWM, salida_PWM);  
  73.     // Si tenemos una entrada completa (valor entre 15 y 90)
  74.     if (entradaCompleta)
  75.     {
  76.       Serial.print("Dimmer activado al ");
  77.       Serial.print(entrada_PWM);
  78.       Serial.println("%");
  79.       salida_PWM = entrada_PWM.toInt();
  80.       // La salida nunca puede valer 0
  81.       if (salida_PWM == 0)
  82.       {
  83.         salida_PWM = 1;
  84.       }
  85.       // Vaciamos la cadena de entrada
  86.       entrada_PWM = "";
  87.       // Cambiamos el estado de la entrada
  88.       entradaCompleta = false;
  89.     }
  90.   }
  91.  
  92.   // Función que se ejecuta cada vez que se envían datos a través del monitor serie.
  93.   void serialEvent()
  94.   {
  95.     while (Serial.available())
  96.     {
  97.       // Se lee el carácter de entrada del monitor serie
  98.       caracterEntrada = (char)Serial.read();
  99.       // Se añade el carácter a la cadena de entrada
  100.       if (caracterEntrada != '\n')
  101.       {
  102.         entrada_PWM += caracterEntrada;
  103.       }
  104.       // La cadena se recibe cuando pulsamos "enter" desde el  monitor serie
  105.       if (caracterEntrada == '\n')
  106.       {
  107.         entradaCompleta = true;
  108.       }
  109.     }
  110.   }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement