Advertisement
tiodocomputador

Dimmer no Arduino

Jun 22nd, 2015
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.12 KB | None | 0 0
  1. /*
  2. Este codigo faz a leitura de um sensor de corrente (optoacoplador)
  3. no pino 2, e por meio de um potenciometro em A0
  4. controla um Dimmer no pino 13.
  5. Desenvolvido por https://cyberohm.com
  6. com apoio de www.labdegaragem.com.br
  7. Fique a vontade para baixar, usar e melhorar, mas nao esqueca de
  8. compartilhar!
  9. 22 de junho de 2015.
  10. */
  11. int sensor = A0;
  12.  
  13. int opto = 2;    // Pino de leitura do opto
  14. int controle = 13;       // Pino ligado ao circuito do Triac
  15. //este pino tem que disparar em [To+T/16] para que o motor tenha 7T/8 da potencia total
  16.  
  17. // Variables will change:
  18. int optoState = 0;       // Estado do opto. Se estiver HIGH, tensao diferente de zero.
  19. //Se estiver em LOW, tensao = zero. Presisamente o que queremos.
  20. int lastOptoState = 0;     // O estado anterior do sensor.
  21. long lastMillis;     //define a contagem do tempo.
  22. float period;
  23. float frequency;
  24.  
  25. void setup()
  26. {
  27.   pinMode(opto, INPUT);  // inicializa o pino do opto de leitura como inpput
  28.   //    pinMode(sensor, INPUT); //inicializa o pino do sensor analogico como input
  29.   pinMode(controle, OUTPUT);  // inicializa o pino do MOC-3031 como output
  30.   Serial.begin(9600);
  31. }
  32.  
  33.  
  34. void loop()
  35. {
  36.   digitalWrite(controle, HIGH);
  37.   optoState = digitalRead(opto);      
  38.   // compare the buttonState to its previous state
  39.   if ((optoState != lastOptoState) && (optoState == HIGH))
  40.   {
  41.     int D = map(analogRead(sensor), 0, 1023, 0, 8); // o delay de controle
  42.     period = millis() - lastMillis;
  43.     digitalWrite(controle, LOW);
  44.     delay(D);
  45.     digitalWrite(controle, HIGH);
  46.     Serial.println(period);
  47.     lastMillis = millis();
  48.  
  49.  // !!! coloque uma regra
  50.     // marcando o tempo a cada vez que optoState=LOW.
  51.     //jogue este tempo para determinar o tempo de map (tempo no lugar de 8)
  52. // por exemplo, troque 8 (no comando map) por period e rode o arquivo no proteus.
  53. // veja entao a saida no osciloscopio.
  54.     //faca uma leitura com aproximacao de 2 casas decimais
  55.     //assim vc vai medir precisamente o periodo e a frequencia e sincronizar
  56.    // com o controle do tempo q o triac leva para disparar (por exemplo 23%)
  57.   }
  58.   lastOptoState = optoState;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement