medir RPM de un motor AC

Hola de nuevo,
Tengo un motor de AC monofasico de una lavadora vieja que tiene en la parte de atras dos cables que salen para afuera el cual me dan una resistencia de 158 ohmios los cuales se suponen q miden las rpm, cuando se pone a tope me da 15,3v en alterna, habria alguna manera de medirlo con el arduino???
UN saludo.

Hola Risking
Con un puente de diodos puedes pasarlo a continua, y después con dos resistencias, hacer un divisor de tensión para que los valores estén comprendidos entre 0 y 5v.

Yo pondría también un condensador de filtrado a la salida del puente de diodos para que la lectura sea más homogénea, pero debes de tener en cuenta que cada vez que varíes la frecuencia, hasta que el condensador se estabilice, se ralentizará la medición.

Tal vez te sirva de ayuda:
De AC a DC:

Divisor de tensión:
http://picmania.garcia-cuervo.net/electronica_basica_divisor_tension.htm

Saludos

Gracias Inizul, el condensador de que capacidad mas o menos?? por otro lado segun un articulo de internet dice así; "Estos tacómetros se comportan como una especie de mini generadores que proporcionan una señal sinusoidal de unos 30v y una frecuencia que depende de las
revoluciones del tambor".

Por lo que entiendo , si yo convierto esos pulsos a onda cuandrada de 0 a 5v, con pulseIn(pin, HIGH); sabria la duracion entre pulso alto y pulso alto, pero como sacaria las rpm???
Tambien he encontrado un codigo de un tacometro con un sensos de efecto hall. el cual hace estas operaciones para hacer los calculos.

http://www.arduino.cc/playground/Main/ReadingRPM

volatile byte rpmcount;
 unsigned int rpm;
 unsigned long timeold;
 void setup()
 {
   Serial.begin(9600);
   attachInterrupt(0, rpm_fun, RISING);
   rpmcount = 0;
   rpm = 0;
   timeold = 0;
 }
 void loop()
 {
   if (rpmcount >= 20) { 
     //Update RPM every 20 counts, increase this for better RPM resolution,
     //decrease for faster update
     rpm = 30*1000/(millis() - timeold)*rpmcount;
     timeold = millis();
     rpmcount = 0;
     Serial.println(rpm,DEC);
   }
 }
 void rpm_fun()
 {
   rpmcount++;
   //Each rotation, this interrupt function is run twice
 }

Cada 20 ciclos que se pasa de HIGH a LOW, calcula la velocidad, pero no entiendo la operacion que realiza rpm = 30*1000/(millis() - timeold)*rpmcount; me serviria a mi tb esta ecuación??
Un saludo y siento la parrafada.

Como te han comentado con un rectificador y un divisor de tension debes de conseguir un valor comprendido entre 0 y 5V, un motor de lavadora te puede llegar a 14000RPM

Eso equivale a unos 50V alternos, rectificados pueden ser 62V, a partir de hay, segun el factor del divisor que apliques, te quedaran 128 escalones de valor que se corresponderan a 128 niveles de revolución.

Aproximadamente 110 vueltas X el valor que te de la lectura analogica del pin en cuestion.

Por cierto! como controlas el motor?, yo estoy con el problema de controlarle las revoluciones desde el Arduino y no me salgo!

Saludos

Hola risking

el condensador de que capacidad mas o menos??

Te vale cualquier condensador electrolótico de como mínimo 450uF (cuanto mayor sea menos rizado tendrá la señal, pero el tiempo de estabilización también aumentará) y 100v.

pero no entiendo la operacion que realiza rpm = 30*1000/(millis() - timeold)*rpmcount;

Si quieres medir la frecuencia en vez de la tensión, a bote pronto, la formula lo que hace es pasar a segundos los milisegundos (x1000), y pasar a minutos los segundos (x30, debería ser x60, pero como realiza un conteo cada 20 ...), a mi se me escapa un cero ya que como cuenta cada 20, debería multiplicar x3 y no por 30?????

saludos

Hola,

Lo que te interesa para medir la frecuencia de una senoidal, es su "cruce por cero". El circuito mas basico es poner una resistencia muy grande y dos diodos entre la senyal, Vcc y Gnd . Mira esta nota tecnica de atmel --> http://www.atmel.com/dyn/resources/prod_documents/doc2508.pdf (Ahi usan los diodos internos del micro= "clamping").
Lo que te hace ese circuito es convertir la senoidal en una senyal cuadrada, ya que te restringe a que la senyal sea entre Vcc y GND (menos el voltage que cae en el diodo).

Acerca de como medir la frecuencia/velocidad, es algo que ha aparecido muchas veces en este foro. Por ejemplo: http://arduino.cc/forum/index.php/topic,68353.0.html
Recuerda que velocidad angular, w, es w=2pif y que 1 rpm son 2*pi/60 rad/s.

En el codigo que has puesto arriba, si te fijas pone dentro de la interrupcion "//Each rotation, this interrupt function is run twice". Esto puede ser porque en su montaje, tiene una rueda con 2 dientes para medir la velocidad, entonces por cada vuelta, tiene 2 pulsos. Por ejemplo, es algo habitual medir la velocidad con una rueda dentada y un sensor inductivo o hall. Por eso puedes encontrarte codigos por la red, que por cada vuelta son x pulsos. Cuando pones un tacometro en la bici, le pones un iman que cada vuelta es un pulso, pero si quisieras mayor resolucion, pondias mas (a lo mejor este ejemplo es mas intuitivo).
Ejemplo:

Saludos

Igor R.

Nota.- estoy en ordenador ingles, ni acentos ni enyes.

Lo del cruce por cero con este taómetro no me sirve, ya lo habia pensado ya q asi trabajan los coches y las bicis como dices.
Ahora estoy haciendo pruebas con un circuito que le quite a una aspiradora rota q tiene un triac y con un potenciometro varias las revoluciones, lo que no se es si se podria manejar ese potenciometro con un potenciometro digital por i2c, es algo q tengo q mirar, de todas formas el circuito de la aspiradora controla un rango pero no desde 0 y es algo que me gustaria y me gustaria mirar a ver que componentes cambiar para podero hacer.
Voy a ver si puedo ir probando as cosas que me comentais, que yo la verdad alterna no he tocado para nada.

pero que tipo de senyal te dan esos dos cables del tacometro? No es una senyal que varia la frecuencia con la velocidad? Lo que te he dicho es para medir la frecuencia que va a ser proporcional a la velocidad...

El problema esque no hay ningun diente que marque el paso por cero, como comentaba antes "Estos tacómetros se comportan como una especie de mini generadores que proporcionan una señal sinusoidal de unos 30v y una frecuencia que depende de las revoluciones del tambor", voy a mirarlo mejor a ver si me estoy liado.

Por otro lado tengo este esquema con el cual puedo variar las revoluciones pero estando el potenciometro al minimo ya el motor va muy rápido y si pongo uno superior a 470k cuando supera los 500k es como si diese a apagar el motor, como podria modificarlo para que empiece con menos vueltas?? Si cambiaria la R1 de 500ohmios por una menos podría valer??

Yo me he perdido un poco acerca de lo que estas preguntando.... Creia que preguntabas como medir la velocidad del tacometro con Arduino, la cual lo puedes medir como te he dicho... :fearful:

Perdona igor, esque quiero hacer dos cosas y creo q me estoy precipiando, me comentas con poner una resistencia muy grande y dos diodos entre la senyal, Vcc y Gnd y segun el esquema de entre los diodos con otra resistencia de un mega medir atraves de un pin digital el paso por cero, no?? por lo que pone en el documento esto no tiene ninguna protecion galvanica para el micro, no creo q pase nada no??
Como diodos podrian valer unos 1n4007??
UN saludo y siento la liada.

Otra cosa que tienes que mirar, es cuantos pulsos da por vuelta (por eso explique anteriormente el tema de entrar 2 veces a la interrupcion del codigo que habias puesto o las veces que sea en tu montaje). Tienes osciloscopio? Si no tienes, puedes usar el propio Arduino + KST.... Tinkering with Electronics...: Arduino ADC: Muestreo alta velocidad

Podrias usar los propios diodos del micro, que como maximo aguantan 1 mA, o le anyades fuera unos por si acaso:

O podrias hacer un montaje con un optoacoplador.

Hola

En el tema de control de revoluciones tengo un problema, por un lado mi circuito difiere levemente del tuyo, por otro, puedo regular las revoluciones con el potenciometro desde 5 RPM o casi hasta 16000RPM, pero solo con el potenciometro!!!.

El problema lo tengo en que quiero controlarlas desde una salida analogica del Arduino y ahi no me salgo, utilizo un optoacoplador, 4N25 pero no me va, otros como el MOC3021 no son validos porque conmutan al cruzar por cero, y como el PMW envia trenes de impulsos no es valido, me queda por explorar la opción de potenciometros digitales, pero por un lado no me convencen como solución y por otro creo que tiene que haber algun modo menos complicado.

Supongo que con un opto detector de cruce por cero, asociado a una interrupcion y una demora de microsegundos y un opto que conmute sin pasar por cero seria una opción, pero que continua resultandome algo compleja.

Si alguien pudiera orientarme me seria muy util, pues la electronica no es mi campo y no encuentro información suficientemente comprensible para mi en el tema de control de motores AC.

El circuito que uso es este:

Problema, no se como poner la imagen :-(((

Circuit.png

El problema esque no hay ningun diente que marque el paso por cero

He leido otra vez lo que habias escrito, y creo que se donde viene la confusion. Lo de cruce por cero, es detectar cuando la senoidal generada del tacometro pasa por cero, nada que ver con que le falte un diente a una rueda fonica para detectar una posicion concreta...je,je,je

La entrada del micro, detecta un "1" logico cuando es mayor de 2.5v y un "0" logico cuando es menor. Entonces el micro "ve" la senoidal como una onda cuadrada (que cambia de "1" a "0" a 2.5v) que usas para medir la frecuencia. Los diodos de "clamping" son para restringir que la senyal no sea mayor/menor que Vcc y Gnd (mas lo que cae en el diodo).

:wink:

Igor por eso me habia liado si, lo del programa ese KST tiene una pinta tremenda para analizar cosas, tengo q estudiarlo, esto es un mundo.
Lo que no tengo claro del todo es lo de los diodos clamping q no se como son y en google no me queda claro, luego si se usa el atmega como realizo la conexion?? el de 30v o 15v ac o los q de el tacometro a VCC pero q vcc?? el atmega tiene 2 el de 5v o el AVcc q es el pin 20 que he mirado en el duevilanove y esta conectado con el Vcc, o esto es para usar solo un atmega para esto y medirlo con otro, o se puede hacer usando el 328 pero sin la placa duevilanove porque asi no estan unidos?? la salida sería en la PD2/EXT INT0 q supongo q sera el pin 2???, joer q lio demasiadas dudas.

Jacinto54 casi sin querer me he encontrado con un proyecto para controlar una bombilla o ventilador de 220 con un atmega 8, muy bien explicado con mando a distancia y todo, lo que no se es hasta q potencia aguantaria pero podria valer, en tu esquema los condensadores C1 y C2 pone 47k y 100k/400v que valores concretos son??? si lo puedes regular desde 5rpm menuda gozada, eso si manual.

Vcc y GND son los 5V y masa de Arduino. Los diodos, cualquiera (que sean rápidos).

La entrada de Arduino, puedes usar el pin 2 de Arduino y usar el código que puse por el foro.

:wink:

Hola riscking

El articulo de ExtremeElectronics que me indicas aparenta ser apropiado para lo que pretendo, hoy intentare montarlo y comprobar que finura tiene, en el video se ve correcto, intentare reproducir el circuito y te comentare como va, lo que necesito es eso exactamente, luego ya hare el control, cosa que en este momento me preocupa menos.

En mi caso necesito como revoluciones minimas de motor unas 400, y trabajar con la taco, ya que al ser un motor universal las revoluciones varian con la carga y en una lavadora, por debajo de las 800 vueltas, la carga es intermitentemente irregular, aparte de que se acelera que da gusto y tienes que estar reajustando en continuo automaticamente, de ahi la necesidad de la taco.

A la tarde comento algo.

Jacinto54, ya me contaras tus progresos cuando lo montes, yo es que a mano no tengo todos los componentes para probar, a mi tb me interesa mucho ya que tb me gustaria maneter una velocidad de 400 en el arranque y luego subir a unas 800 y se mantenga estable, para luego volver a bajar a 400 antes de llegar a final de carrera, todavía no he probado a usar el motor con carga. Asique mas o menos los dos buscamos lo mismo.
Cuando dices a trabajar con la taco a que te refieres a trabajar con el tacometro supongo.
Un saludo.

Hola

El circuito que me referenciaste trabaja al modo de la opcion que intentaba eludir, detectando el paso por cero, interrupcion y tiempo de apertura del triac.

Si es un motor universal no conseguiras mantenerlo estable en revoluciones, tendras que estar reajustando la corriente de continuo y para eso es la taco, que si, es el tacometro.

El arranque no lo tienes que hacer subito, tienes que implementar una minima rampa de aceleración hasta llegar al valor prefijado.

Si que lo has montado rapido, yo para probarlo me faltaria el MOC3021 Opto Triac Driver o similar, como lo has montado tu?, a parte en el codigo esque con los timers me pierdo, pero segun creo en el codigo dependiendo del programa que tenga va a una velocidad de la tabla que tiene, si tu pones 400 no se mantiene?? tengo un bta12 600b como triac supongo q me valdria no?

Yo tengo el tacometro, a ver si consigo medir los pasos por 0 y con eso actuar en el motor pero todavia no se como jeje, a ver si conseguimos algo.