Hola, necesito rectificar de forma controlada el una línea trifásica, el objetivo es alterar la luminosidad de una bombilla 220v al mover un potenciometro esto consta del cruce por cero (Que ya probé simulado y en montaje físico y funciona) pero tengo problemas con la siguiente etapa al programar el código en Arduino, el código es el siguiente:
int pulso=9; //pin de salida digital para el pulso
const int analogPin=A0;
int position;
int diming;
void setup() {
pinMode(pulso,OUTPUT); //pulso como salida
Serial.begin(9600);
attachInterrupt(0,Zero_Cross,FALLING); //interrupcion con deteccion del cruce por cero flanco de bajada
}
void Zero_Cross(){
int td=8.14*diming; //formula para sacar tiempo de retardo(8.14microsegundos=8333tiemposemiciclo/1023partes)
delayMicroseconds(td); //retado en microsegundos del tiempo de retardo
digitalWrite(pulso, HIGH); //un alto despues de ese tiempode retardo
delayMicroseconds(500); //pulso dura 5 microsegundos
digitalWrite(pulso, LOW); // despues de 5 microsegundos un bajo
}
void loop() {
diming=analogRead(analogPin);
position=map(diming, 0, 1023, 1400, 7500);
Serial.println(diming);
delay(1000);
}
Respecto al circuito compartiré el archivo de simulación PROTEUS por si alguno desea verlo.
Efectivamente la simular se me crea el pulso en cada inicio de semiciclo pero no logro dar con la rectificación usando el ARduino para que detecte todo correctamente con el código si alguno tiene una sugerencia bienvenida es.
int pulso=9; //pin de salida digital para el pulso
const int analogPin=A0;
int position;
int diming;
void setup() {
pinMode(pulso,OUTPUT); //pulso como salida
Serial.begin(9600);
attachInterrupt(0,Zero_Cross,FALLING); //interrupcion con deteccion del cruce por cero flanco de bajada
}
void Zero_Cross(){
int td=8.14*diming; //formula para sacar tiempo de retardo(8.14microsegundos=8333tiemposemiciclo/1023partes)
delayMicroseconds(td); //retado en microsegundos del tiempo de retardo
digitalWrite(pulso, HIGH); //un alto despues de ese tiempode retardo
delayMicroseconds(500); //pulso dura 5 microsegundos
digitalWrite(pulso, LOW); // despues de 5 microsegundos un bajo
}
void loop() {
diming=analogRead(analogPin);
position=map(diming, 0, 1023, 1400, 7500);
Serial.println(diming);
delay(1000);
}
Respecto al circuito compartiré el archivo de simulación PROTEUS por si alguno desea verlo.
Efectivamente la simular se me crea el pulso en cada inicio de semiciclo pero no logro dar con la rectificación usando el ARduino para que detecte todo correctamente con el código si alguno tiene una sugerencia bienvenida es.