SHOW:
|
|
- or go back to the newest paste.
| 1 | /* | |
| 2 | - | Nome do Projeto: Dimmer |
| 2 | + | Project Name: Dimmer |
| 3 | - | Nome do Aquivo: Dimmer_Pot2.ino |
| 3 | + | FileName: Dimmer_Pot2.ino |
| 4 | - | Dependencias: N/A |
| 4 | + | Dependencies: N/A |
| 5 | - | MCU: ATmega |
| 5 | + | Processor: Arduino |
| 6 | - | Board: Arduino Uno/Mega/Mini |
| 6 | + | Compiler: N/A |
| 7 | - | Compilador N/A |
| 7 | + | IDE: Arduino IDE 1.0.6 |
| 8 | - | IDE: Arduino IDE 1.0.6 |
| 8 | + | Hardware: Arduino UNO |
| 9 | - | Hardware: Arduino UNO/MEGA/Mini |
| 9 | + | Autor: Rui Viana |
| 10 | - | Escrito por: Rui Viana |
| 10 | + | Data: 25/06/2015 |
| 11 | - | Data: 25/06/2015 |
| 11 | + | |
| 12 | - | Uso: Didático |
| 12 | + | Description: |
| 13 | - | Desenhos ZeroCross_Triac.jpg |
| 13 | + | |
| 14 | - | Copyright @ N/A |
| 14 | + | Rotina para dimmer. (110v ou 220v) ajustada por um pot |
| 15 | Os valores de brilho da lampada são ajustados por pot no pino A0. | |
| 16 | - | Este programa é software livre; |
| 16 | + | Uso didático |
| 17 | - | e é distribuído na esperança que possa ser útil, mas SEM QUALQUER GARANTIA; |
| 17 | + | Rui 24/06/2015 |
| 18 | - | mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM. |
| 18 | + | |
| 19 | Este code funciona assim: | |
| 20 | - | REVISIONS: (latest entry first) |
| 20 | + | |
| 21 | - | 2015-06-25 - Dimmer_Pot2.ino - First release |
| 21 | + | |
| 22 | Na função map() é feita a relação entre o valor lido e a escala de 0 à 7900. | |
| 23 | - | Descricão: |
| 23 | + | |
| 24 | descontando a duração do pulso de zero cross de +- 250 us e o pulso de disparo do triac | |
| 25 | - | Rotina para dimmer. (110V ou 220V) ajustada por um potenciômetro |
| 25 | + | |
| 26 | - | Os valores de brilho da lampada são ajustados por potenciômetro no pino A0. |
| 26 | + | |
| 27 | O valor do pulso do zerocross vai variar em função dos resistores em serie com a ponte retificadora, | |
| 28 | portanto o valor de 7900, pode ser necessário modificar em função deste valor. | |
| 29 | ||
| 30 | O pulso do zerocross é detectado no pino 2. | |
| 31 | Após pulsar e ficar em LOW, começa-se a contar o tempo para o disparo do triac. | |
| 32 | Este tempo foi calculado em função do valor gerado pelo calculo do ADC. | |
| 33 | Se este valor for zero, o triac disparará no incio do ciclo e a lampada acende com brilho total. | |
| 34 | Se o valor for 7900, o triac dispara no final do ciclo, não sobrando tensão para a lampada, | |
| 35 | e a mesma fica apagada. | |
| 36 | Testei com 110v e 220v. | |
| 37 | */ | |
| 38 | //************ Variaveis e constantes ************ | |
| 39 | int Triac = 3; // Pino de disparo do Triac | |
| 40 | int ZCross = 2; // Pino de entrada do zerocross | |
| 41 | unsigned int pinAnalog = 0; // Pino de entrada do potenciômetro (A0) | |
| 42 | unsigned int dimming = 0; // Variável para tempo de retardo. Valor Inicial Minimo | |
| 43 | //*********************** Setup ******************* | |
| 44 | void setup() // Rotina de setup | |
| 45 | - | Testei com 110V e 220V. |
| 45 | + | |
| 46 | pinMode(pinAnalog, INPUT); // Define o pino(A0) como entrada analógica | |
| 47 | pinMode(Triac, OUTPUT); // Define o pino(D3) Triac como saída | |
| 48 | } | |
| 49 | //*********************** Loop ******************** | |
| 50 | void loop() // Rotina de loop | |
| 51 | {
| |
| 52 | dimming=analogRead(pinAnalog); // Lê valor do potenciômetro | |
| 53 | dimming=map(dimming,0,1023,0,7900); // Calcula 0 = 0 até 1023 = 7900 | |
| 54 | if (digitalRead(ZCross)) // Faça se detectou pulso de zerocross | |
| 55 | {
| |
| 56 | delayMicroseconds(dimming); // Retardo calculado em relação a zerocross | |
| 57 | digitalWrite(Triac, HIGH); // Dispara o Triac | |
| 58 | delayMicroseconds(100); // Duração do pulso de disparo | |
| 59 | digitalWrite(Triac, LOW); // Desliga pulso de disparo | |
| 60 | } | |
| 61 | } |