Guest User

Untitled

a guest
Jun 18th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.58 KB | None | 0 0
  1. /*
  2. - O Módulo Dimmer Arduino é um equipamento criado com o intuito de proporcionar ao hobista ou projetista a possibilidade de realizar o controle da quantidade de energia que é enviada para a lâmpada incandescente, consecutivamente proporcionando maior ou menor luminosidade.
  3. - Para melhor funcionamento o Módulo Dimmer possui em seu sistema um controlador Triac Q4010 integrado, utilizado comumente para chavear a corrente alternada.
  4. - Com a capacidade de dimerizar uma ou mais lâmpadas incandescentes, o Módulo Dimmer é capaz de controlar eletricamente a intensidade luminosa ou o consumo de uma fonte de luz qualquer, como, por exemplo, uma lâmpada incandescente tradicional.
  5. - Como característica fundamental de funcionamento do Dimmer temos a sua capacidade de interromper o envio de corrente a um dado circuito através de uma regulagem de disparos que é programada através do Arduino, Raspberry Pi, PIC, entre outros.
  6. - Com uma entrada e uma saída específica para corrente de 127V ou 220V (deve ser escolhido no momento da compra) o Módulo Dimmer Arduino proporciona através das portas do microcontrolador uma configuração capaz de controlar a intensidade de lâmpadas incandescentes de uma forma muito mais prática e eficiente, aumentando ou diminuindo a faixa luminosa.
  7. - A porta representada pela entrada ZC (Zero Cross) manda um aviso para o microcontrolador de que a tensão está cruzando o zero. A Platafroma Microcontroladora, por sua vez, manda um pulso de volta para o Módulo Dimmer através da porta DIM que fará com que o módulo controle o brilho das lâmpadas incandescentes instaladas.
  8. - Em uma visão mais ampla o Dimmer Arduino é um dispositivo que possui a capacidade de variar a luminosidade de uma ou mais lâmpadas incandescentes, tornando o ambiente muito mais agradável, de fácil controle, trazendo consigo inclusive o benefício de maior economia de energia.
  9.  
  10.  
  11.  
  12. CARACTERÍSTICAS:
  13. - Módulo Dimmer;
  14. - Possibilita o controle da quantidade de energia que é transmitida às lâmpadas incandescentes;
  15. - Proporciona controle preciso da luminosidade das lâmpadas incandescentes;
  16. - Controlador Triac Q4010 integrado;
  17. - Capacidade de dimerizar uma ou mais lâmpadas incandescentes;
  18. - Luminosidade controlada através de sistemas microcontroladores;
  19. - Porta ZC (Zero Cross) que avisa quanto a tensão estiver cruzando o zero;
  20. - Porta DIM que recebe um pulso de tensão do microcontrolador como resposta ao ZC;
  21. - Torna o ambiente muito mais agradável;
  22. - Diminui o consumo de energia;
  23. - Fácil controle;
  24. - Simples instalação;
  25. - Garantia Legal de 90 dias (contra defeitos de fabricação).
  26.  
  27. ESPECIFICAÇÕES:
  28. - Tensão para lâmpadas incandescentes: 220VAC
  29. - Tensão junto ao Arduino: 5V DC;
  30. - Tensão entrada de disparo: DIM 5V;
  31. - Corrente: 8A (necessário dissipador de calor);
  32. - Dimensões (CxLxA): 62x34x18mm;
  33. - Peso: 21g.
  34. */
  35. #include <TimerOne.h> // inclui biblioteca Timer1
  36.  
  37. #define triacApin 4 // Define que o Dimmer será comandado pelo pino 4
  38. int frequencia = 60;
  39. int stateTriacA = 0;
  40. int power = 0; //inicializa variavel que controla potencia na lampada com 0 (lampada apagada)
  41.  
  42. void setup()
  43. {
  44. Serial.begin(9600);
  45. pinMode(triacApin, OUTPUT);
  46. digitalWrite(triacApin, LOW);
  47. Serial.println("Controle de TRIAC.\r\nDigite o Percentual de Brilho (duas casas) Ex.: 25");
  48. // Initialize the interruption time Timer1
  49. Timer1.initialize(); // Initialize TimerOne library for the freq we need
  50. // Attach the interrupt 0 to pin 2 for the detection of zero crossing (Zero Cross Detection)
  51. attachInterrupt(0, zero_cross_detect, FALLING); // Attach an Interrupt to Pin 2 (Interrupt 0) for Zero Cross Detection
  52. }
  53.  
  54. void loop()
  55. {
  56. int i = 0;
  57. int read_data[2];
  58. while(i<2){
  59. while(Serial.available()){
  60. read_data[i] = Serial.read();
  61. i++;
  62. }
  63. }
  64. power = Concatena_Numeros(read_data[0],read_data[1]);
  65. Serial.println(power);
  66.  
  67. }
  68.  
  69. void zero_cross_detect()
  70. {
  71. if(power > 0){
  72. long dimtime = int(map(power,0,100,8000,150)); // calcula o tempo de delay para o disparo do TRIAC 7950,100
  73. Timer1.attachInterrupt(gateTRIAC, dimtime); //associa a funcao gateTRIAC com Interrupcao do TIMER1
  74. Timer1.start(); // inicia contagem TIMER1
  75. }else{
  76. digitalWrite(triacApin, LOW); // mantem gate do TRIAC desativado.
  77. Timer1.stop();
  78. }
  79. }
  80.  
  81. void gateTRIAC ()
  82. { // trata interrupcao do TIMER1 gerando pulso no gate do TRIAC
  83. digitalWrite(triacApin, HIGH); // dispara o Triac
  84. delayMicroseconds(5); // aguarda 5 microsegundos para garantir disparo do TRIAC
  85. digitalWrite(triacApin, LOW); // desabibilta gate do TRIAC
  86. Timer1.stop();
  87. }
  88.  
  89. int Concatena_Numeros(int variavel1, int variavel2)
  90. {
  91. int resultado;
  92. resultado = ((variavel1-'0')*10)+(variavel2-'0');
  93. return resultado;
  94. }
Add Comment
Please, Sign In to add comment