bclose

Zero crossing detection

Detectando el paso por cero de una tensión AC

Zero crossing detection

 

 
    • Montar un circuito Zero Crossing detection AC.
    • Introducir algunos conceptos de corriente alterna AC.
    • Presentar un opto acoplador para AC: H11AA1.

 

Material requerido.

Vista principal 

Arduino Nano, aunque un Arduino UNO o equivalente, también sirve

Opto acoplador 

Un opto acoplador integrado H11AA1 o H11AA2.

 R 33 KohmUn par de resistencias de 33kΩ
Img_3_4 Img_3_6Una Protoboard más cables.

 

 

Algunas ideas sobre corriente alterna AC

 

Hasta ahora prácticamente siempre hemos usado DC o continua para nuestros proyectos, pero poder controlar dispositivos de corriente alterna o AC abre todo un nuevo mundo de posibilidades a los Arduineros de corazón valiente y dispuestos a llevarse algún que otro calmbrazo.

Vamos a atacar nuestro primer proyecto de verdad con AC, construyendo un pequeño circuito que se llama detector de paso por cero o Zero Cross Detection en ingles.

Y para eso vamos a necesitar dar un par de vueltas al concepto de la corriente alterna o AC para asegurar que todos tenemos 4 ideas claras antes de seguir.

Para empezar, todos sabemos que la corriente que recibimos en casa es alterna y no continua, pero no creo que nadie que no sea del gremio entienda muy bien que significa eso.

Hay una vaga idea de que es una corriente variable según el momento pero tampoco está muy claro en que consiste esa variabilidad y porque se hace así. Y suele ser mejor no preguntar mucho (Especialmente a las chicas) si quieres que tu vida social continúe siendo con gente normal, lejos del rincón de los freakys.

Siempre me sorprende la cantidad de gente inteligente que se pregunta porque los ingenieros tienen la manía de usar corriente alterna AC en lugar de la más intuitivamente comprensible corriente continua o DC.

Incluso los estudiantes de ingenierías tienden a maldecir repetidamente al señor Tesla (Padre de la criatura alterna) porque la descripción matemática de la misma es bastante más complicada y trabajosa que la de la continua.

Pero claro está, que hay un motivo para usar AC y no DC en el suministro industrial de energía eléctrica, así que este parece un buen momento para hacer un par de comentarios al respecto y tratar de despejar algunas dudas.

Antes de que nadie salga corriendo a hacer algo urgente, voy a tranquilizaros diciendo que por supuesto huiremos como alma que lleva el diablo de presentar ninguna fórmula ni descripción matemática, sino que es suficiente con entender unos pocos conceptos y después hasta es probable que entendáis algunas cosas mejor.

Porque si vais a usar la corriente alterna, necesitáis una base mínima para predecir correctamente su funcionamiento, y a ser posible evitar un par de calambrazos porque con AC, no solo no tienen ninguna gracia sino que pueden llegar a ser muy peligrosos.

 

 

Consideraciones previas sobre AC

 

Para quienes no estéis acostumbrados a la AC y os apetezca cogere un par de ideas de base, os recomiendo la lectura de una introducción que hicimos aquí. pero por si acaso haremos un resumen a continuación

Lo primeros es saber que la corriente alterna se genera mayormente con máquinas rotatorias, sea una turbina en un salto de agua, o un molino de viento o agua. Eso  hace que a medida que gira el rotor  en un campo magnético, la intensidad de la corriente depende del Angulo de la espira con respecto al campo.

Maquina rotativa

Por eso a medida que gira, la intensidad va pasando de un máximo en el punto óptimo a un cero en el punto en que la espira y el campo son paralelos, y a medida que la maquina va rotando se producen ondas eléctricas que son las que recibimos en nuestros enchufes domésticos:

variacion en el tiempo

La amplitud y la frecuencia de esas ondas son cuidadosamente controladas por las compañías eléctricas para mantenerse dentro de unos límites estables, de 220 VAC y 50 Hz en Europa y de 125 VAC y 60 HZ en otras partes del mundo.

Y lo que es más, cuando se arranca una nueva máquina de generación de AC, debe sincronizarse con la fase correspondiente de ese país para que absolutamente todas las maquinas generen exactamente la misma fase, es decir coincidan sus cruces por cero y sus picos, porque si no, habría bastante problemas en los que no quisiera entrar ahora.

Vale, las maquinas giratorias producen corriente variable al girar, parece fácil de entender la idea, pero…. ¿Por qué no convertirla en continua y enviarla así a la red de transporte y nos olvidamos de complicaciones?

La respuesta a esto es un poco menos obvia de lo que podría parecer, Pero la idea básica es que incluso los cables de cobre que se usan para transmitir la electricidad desde los saltos de agua donde se generan (O nucleares o lo que sea) hasta tu casa son tantos cientos de kilómetros que al final, tienen una resistencia apreciable.

Lo que significa que por efecto joule se calentarán y desperdiciarán una parte de la energía que transportan en forma de calor. El porcentaje que esa pérdida representa con respecto al total de energía trasmitida, disminuye sensiblemente cuanta más alta es la tensión que se transmite.

Como la gente tenemos la peculiar costumbre de vivir apiñados en ciudades que normalmente están a 400 km de distancia de donde se produce la electricidad, por ejemplo en un salto de agua de montaña (A donde nos gusta ir, pero solo de visita),  hay que mandar la energía producida allí hasta donde estamos los consumidores que pagan.

La única forma de hacer esto sin que las pérdidas de transporte hagan inviable el negocio de generar electricidad, es elevar fuertemente la tensión para minimizar perdidas. Y por eso el transporte se hace en lo que se llama y habréis oído antes alta tensión.

Las líneas de alta tensión de larga distancia pueden llegar a ser de hasta 220.000 V, aunque en la práctica esto tiene sus propios problemas y por eso hay tres categorías de transporte de energía eléctrica que más o menos pueden ser:

  • Baja tensión:      hasta 1.000 VAC
  • Media tensión:   entre 1000 y 60.000 VAC
  • Alta tensión:      entre 60.000 hasta 220.000 VAC

Y por casualidades de la vida, resulta que es mucho más fácil y barato elevar la tensión AC que la DC. Para cambiar la tensión de una AC basta con un sencillo transformador que es una tecnología que se acabó dominando a principios del siglo 20, mientras que elevar la tensión DC es bastante más complicado y caro.

 
  • La pugna por llevarse el gato al agua, protagonizo una fea competencia entre Tomas Edison a favor de la DC y Nicola Tesla, por la AC, a finales del siglo 19, y a la vista está quien salió ganador.  

 

¿Qué es más peligrosa la AC o la DC?

 

Cualquier amigo o conocido (Las chicas ni de coña) que se entere de que entiendes algo de esto, os preguntaran, de inmediato, si es más peligrosa la corriente continua o la alterna una y otra vez y conviene tener una buena respuesta preparada si quieres conseguir los colgaos de tus conocidos te miren con admiración y respeto.

Así que vamos con ello porque es sorprendente la cantidad de tonterías que se dicen al respecto. Por ejemplo que lo que te mata es la intensidad de la corriente independientemente de que sea continua o alterna, lo que es cierto pero una perogrullada. Es como decir que para ahogarse no importa la profundidad, basta con estés debajo del agua suficiente tiempo.

Nuestra piel tiene una resistencia determinada y naturalmente se opone al paso de la corriente. Haz un experimento sencillo. Coge un tester o voltímetro, pon al máximo la escala de medir resistencias y agarra las puntas de medida con los dedos.

Si tienes las manos secas obtendrás entre 700 y 800 KΩ (O eso me da a mi) y si simplemente te humedeces los dedos con saliva y repites el procedimiento veras que esta baja a 150 KΩ.

 
  • Por eso estar húmedo es tan peligroso para manejar electricidad, porque la conductividad de tu piel se multiplica por 4 o 5, y la probabilidad de freírte en una descarga crece a la par .  

Ahora haz un cálculo sencillo con la ley de Ohm. SI sabes la resistencia de tu piel y tocas unas bornes con 120 VDC, ¿Cuál será la intensidad que atraviese tu piel?

I = V / R = 120 / 750.000 = 0,000016

No será suficiente ni para encender un joído LED y casi no lo notarás. Así que para que te lleves un golpe bueno, vas a necesitar una corriente continua muy alta.

¿Y con la alterna? Aquí la cosa cambia por completo.

Básicamente porque con la alterna no solo cuenta la resistencia de tu piel, sino que lamentablemente nuestra piel se porta como un condensador, que bloquea las corrientes DC, pero es transparente para las AC, lo que hace que las crucen casi sin oposición, y una vez dentro nuestros nervios que son eléctricos los saturan con rapidez impidiéndonos usar los músculos (Porque la señal de control está escondida con el ruido eléctrico externo).

Por eso los que reciben un choque eléctrico y viven para contarlo dicen que es como si se quedaran pegados a los cables, porque de hecho es lo que ocurre y empeora el problema.

Si cambiamos los 120VDC por 120VAC, la cosa cambia radical y poca gente es capaz de soportar un toque así, sin salir aullando.

Así que como resumen. La corriente alterna es en general mucho más peligrosa que la continua para el mismo voltaje.

Os recomiendo este vídeo para que os hagáis una idea, está en ingles pero creo que no necesitareis mucho dominio del idioma para entender perfectamente el asunto:

 

 

Zero Cross detection

 

Para convenceros de que no os engaño cuando os digo que la frecuencia de la corriente alterna de vuestros enchufes es de 50 HZ (O 60 Hz según el caso) os propongo un pequeño experimento para comprobarlo con nuestros Arduinos.

Vamos a montar un circuito que detecte esa frecuencia y el sistema más fácil es construir lo que en la jerga electrónica de AC se denomina circuito de Zero Cross Detection, o detección del paso por cero, y afortunadamente es un circuito bastante sencillo, porque como esto es tan común, muchos fabricantes producen estos detectores mediante opto acopladores (Sorpresa)

En concreto vamos a utilizar un H11AA2, porque es el que tengo a mano, pero también serviría cualquiera de su familia, y para los que encontrareis con facilidad su hoja de normas en Internet:

Opto acoplador

Se trata de un opto acoplador con dos emisores de luz en oposición, de modo que uno se activa en la fase positiva y el otro en la negativa y se acoplan con el foto transistor que está en la salida, permitiendo o cortando la conducción.

 
  • Ya os decía con anterioridad que en cuanto tocas la AC los opto acopladores surgen como las setas al chaparrón. Son cómodos y prácticos y además no os olvidéis de que aísla los 220VAC de nuestro circuito de control con Arduino, lo que siempre es de agradecer.  

Los circuitos de detección de paso por cero o Zero Crossing son de lo más comunes en cuanto te acercas a la AC y por eso vamos a provechar para ver cómo se monta uno con 4 componentes de lo más sencillos. La idea básica de todo esto es montar un circuito como este:

Opto acoplador H11AA1

En la entrada recibimos los 220VAC mediante un par de resistencias, para limitar la intensidad de corriente, ya que solo queremos detectar el paso por cero de la tensión. (En mi caso como no tengo resistencias de 33K voy a usar de 100K para R1 y R2, pero cuidado con usar menos de 33K, porque se pondrán al rojo con rapidez).

Cuando la tensión de entrada cae a 0, los diodos se apagan ambos y el transistor entra en corte lo que eleva a 5V (Por la resistencia de pullup R3) la pata 5. En cuanto la tensión de entrada alcance un valor mínimo un diodo hará que el transistor entre en conducción y la señal de la pata 5 caerá a 0V, y obtendremos algo asi:

pulse triggering

Podemos usar esta señal para disparar una interrupción en nuestro Arduino de forma que detecte este paso por 0.

 
  • Recordar que no hay ninguna razón para temer a las interrupciones. Son un mecanismo más de sacar partido a nuestros programas y Arduinos.  

Como la corriente alterna en Europa es de 50HZ, eso significa que un ciclo completo dura:

1/50 = 20 ms (1/60 = 8.5 ms en América)

Tendremos un paso por cero cada 10 ms, que para nosotros es un tiempo inapreciable, pero nuestro esforzado Arduino, puede hacer cantidad de cosas interesantes en ese plazo que para eso es un rapidillo, como por ejemplo decidir cuándo disparar la puerta de un TRIAC o SSR transcurridos unos ms.

Por ejemplo si disparamos la puerta 5 ms después de pasar por cero será un Duty Cycle del 50% y si fuese a los 3 ms, el Duty Cycle será del 30% (Las matemáticas se alían con los 50 Hz europeos)

Como yo sé que aunque lo neguéis, cada vez que mentamos las interrupciones se oye el entrechocar de rodillas entre nuestras huestes, vamos a empezar por un circuito sencillo que nos permita comprobar el montaje y hacer repaso de las interrupciones para tranquilizar a los espíritus menos aguerridos.

Vamos a utilizar la salida del circuito de arriba para disparar una interrupción en nuestro Arduino por el  Digital PIN 2, y por pura comodidad en mi caos voy a usar un Arduino Nano, y hacer un montaje limpio en la protoboard.

 
  • Desde luego cualquier otro Arduino es perfectamente válido. SI tenéis un UNO podéis usar igualmente el pin D2.
  • En mi caso ademas voy a prescindir de la resistencia R3 de pull up y en su lugar usare la resistencia interna de arduino mediante INPUT_PULLUP, al definir el pin de entrada  

Aquí os dejo un ejemplo de montaje:

esquema protoboard

Programa de control

 

Una vez que hemos montado el circuito de paso por cero, es de lo más sencillo, usar una interrupción con Arduino para detectarlo. Bastará con hacer algo así: Prog_89_1

void setup()
   {   pinMode(2, INPUT_PULLUP);
       Serial.begin(115200);
       attachInterrupt(0, Zero_Cross, FALLING) ;
   }

Metemos la señal del detector de paso por cero a la puerta digital 2 de Arduino y hacemos un attach de la interrupción 0 (O sea el pin 2, recordar que Arduino tiene sus manías). Como el Pull up R3 nos mantiene la tensión alta hasta que detecta el paso por cero, vamos a usar un FALLING como trigger de la interrupción y llamamos a una función CallBack llamada Zero_cross.

Lo que va a hacer la función de servicio de la interrupción es simplemente incrementar un contador para controlar el número de disparos:

void Zero_Cross()
   {    contador++ ;    }

Y ahora solo tenemos que controlar el número de pasos por cero en digamos un segundo por ejemplo:

void loop()
   { if ( millis()-t >= 1000)
        { Serial.println(contador) ;
          t = millis() ;
          contador =0 ;
        }
   }

El resultado, es el esperado (En Europa):

Salida detector zero crossing

Como en cada ciclo la tensión pasa por 2 ceros, a 50 Hz, nuestro contador deberá marcar 100 pasos por cero, y 120 si la frecuencia de nuestra tensión es de 60 Hz.

 
  • En mi caso ha marcado 50 durante un día antes de darme cuenta que no podía ser salvo que tuviera dañado uno de los LED internos del opto acoplador, y así era en efecto, lo fundí probando con resistencias de 10K en el detector.
  • El sistema que estamos usando no es muy preciso, especialmente con un Arduino Nano o UNO, que no son muy rápidos que digamos y por eso, en más de una ocasión perderéis algún pulso y lecturas de 99 o 101 no serán raras.
  • Para garantizar que esto no ocurra hay que definir al menos un Timer hardware cuya precisión es muy superior a la medida a bulto que hacemos aquí del tiempo, pero no quisiera abusar de vuestra paciencia.

.  

Hay multitud de casos en los que vas a necesitar detectar el paso por cero de una señal de alterna AC, por ejemplo para regular el brillo de una lámpara doméstica, o para controlar un calefactor eléctrico.

Un detector de paso por cero es de lo más útil también como sistema para calcular la frecuencia de una señal armónica y en algún momento tendremos que meternos con el audio y la música y seguro de que enseguida saldrán a relucir.

Sería bastante fácil montar un reloj exacto, sin más que poner un display a nuestro circuito  Zero Cross, sin necesidad de usar CTRs exactos ni Timers internos, simplemente contando el número de pasos por cero que la señal eléctrica de vuestros hogares provoca.

Sería un reloj de lo más preciso, porque las compañías eléctricas son muy cuidadosas con este tema e incluso añaden pulsos de más o de menos si al cabo de un tiempo ha habido diferencias.

Como esta sesión ha quedado un pelín más larga de lo que pretendía, no me voy a meter con ese reloj, pero os animo a que lo hagáis vosotros y lo publicamos como proyecto si os parece.

 

Resumen de la sesión

 

 
    • Presentamos algunos conceptos básicos sobre AC.
    • Presentamos un opto acoplador pensado para AC: H11AA1.
    • Montamos un circuito de Zero Cross Detection .
    • Hicimos un sencillo programa Arduino para  comprobar la frecuencia de nuestra corriente, en base a ese Zero Cross detector.