Go Down

Topic: medir RPM de un motor AC (Read 14112 times) previous topic - next topic

Igor R

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.

;)

Jacinto54

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.

riscking

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.

Jacinto54

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.

riscking

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.

Jacinto54

Ahora mismo estoy haciendo pruebas con el detector de paso por cero y las interrupciones, luego ya vendra lo del timer con interrupción.

La velocidad en un motor universal es el equilibrio resultante entre el par de giro que tiene el motor ( y es proporcional al voltaje) y la resistencia al giro que opone el mecansimo acoplado, ademas, en los primeros segundos tienes que incluir la aceleración.

En una lavadora, la resistencia al giro es fluctuante, dependiendo de la cantidad de ropa, el nivel de mojado, y la altura desde la que cae, este ultimo factor depende del grado de enredo de las prendas y su tamaño, todo esto afecta la resistencia al giro, y ademas resulta de que tienes que mantener las revoluciones del tambor extremadamente bajas, en torno a las 25-30 RPM, que seran unas 380RPM del motor, algo que requiere inexcusablemente un control automatico de seguimiento continuo.

El triac es adecuado, justo pero adecuado, siempre que lo arraques con una rampa moderada y el MOC3021 para evitar corrientes altas.

Olvidate del paso por cero del tacometro, midele el voltaje aplicado a una entrada analogica mediante un rectificador y un divisor de tensión, y en principio suficiente, si aparecieran problemas de tironeo del motor u oscilaciones demasiado perceptibles ya se resolveran.

riscking

Bueno, ya tengo hecho la rectificacion y el divisor con un resistencia de 39k y otra de 12k, ahora cuando dices "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."
De donde sacas esos calculos, ahora variando el potenciometro creo q variaba entre 4 y 5v,(tengo q cambiar el divisor).

Igor R estoy intentando usar el Python pero es complicado, no consigo o no se como instalar la libreria pyserial, uso windows, descarlo los archivos y hay un setup.py pero le doy y actua en msdos y desaparece y desde la linea de comandos no se ni como actuar sobre una carpeta, salen error de sysntaxis por todos lados. con cd .. por ejemplo da error

Jacinto54

Aqui lo veras mejor.
http://platea.pntic.mec.es/~lgonzale/circuitos/electronica/Divisor%20de%20tensi%F3n%20%28Actividad%29.pdf

Lo de los 128 me equivoque, debia de haber dicho 256, ya que el Arduino tiene 8 bits.

Igor R

Normalmente uso Ubuntu, pero en Windows tengo instalado el phytonXY ( http://code.google.com/p/pythonxy/ ) y me funciona perfecto.

Quote
Lo de los 128 me equivoque, debia de haber dicho 256, ya que el Arduino tiene 8 bits.

El ADC es de 10 bits.

Jacinto54

Hola Igor

  A ver que soy muy novato en esto de Arduino.

  Quieres esto decir que en un Mega128-256 la señal analogica de entrada tiene un rango de 1-1024 ???


Igor R

Tienen un ADC de 10 bits, por lo que las medidas van de 0 a 1023 (1024 escalones).

De todas formas, sigo pensando que medir analógicamente la velocidad es más complicado. Mis dudas en forma de brainstorming acerca son:
1) Rectificas y pones un condensador -> La tensión media tiene un rizado, lo consideras despreciable?
2) ¿Cómo calibras tensión vs velocidad?
3) ¿Vas a parar tu programa durante x tiempo para hacer unas cuantas medidas analógicas? ¿Cómo vas a plantear el control + medición de velocidad?

Salu2


Jacinto54


  En principio segun he interpretado, mi lavadora no da pulsos, y el voltaje es proporcional a las RPM.

  Si, el tema del rizado de momento lo tengo aparcado a la espera de ver si afecta, de todas formas tengo previsto tomar como referencia, no el valor leido, sino la media de las ultimas cuatro lecturas.

  El calibraje es obvio, controlando el tiempo de apertura del triac a partir del cruce por cero, y comparando la señal de la taco con el teorico a alcanzar, tengo una pequeña idea, pero esperare a desarrollarla que seria una bascula analogica entre la tensión de la taco y una de referencia.

  El programa en si no lo paro, de hecho no tiene ningun 'delay', simplemente va ejecutando operaciones, en cada bucle de LOOP realizara una lectura y un ajuste.

Igor R

Yo diría que el tacómetro saca una onda senoidal cuya amplitud y frecuencia es proporcional a la velocidad. Medir la frecuencia es inmediato con un microcontrolador.

Lo que me refería, es que si sabes que tu tacómetro es de 2, 4,8,etc polos, sacar la velocidad midiendo la frecuencia es directo. Sin embargo, midiendo la amplitud, tensión media o como quieras hacerlo, necesitas saber cual es tu voltage vs velocidad. ¿como vas hacer eso? ¿vas a fiarte de los datos de velocidad nominal que te da el fabricante?

Bueno, no me enrollo más, que me estoy repitiendo mucho con el mismo tema.... Ya nos contarás tus experiencias.
Te dejo un link=> Motor Control Platform Renesas

Salu2


Igor R.

Jacinto54


  El problema es que no se medir la frecuencia con un procesador, por otra parte quizas me ocuparia demasiado tiempo de procesador.

  Por un lado los datos de la velocidad no son criticos, por otro los he medido cuando el motor estaba a XX RPM, a YY RPM y a ZZ RPM, con las RPM indicadas en el display y viendo que la correlacion V/RPM era absolutamente lineal, lo que me dio pie a construir mi proyecto basandome en ello.

  Ahora estoy clavado en la deteccion del cero, que resulta que estaba conectando mal en el opto de deteccion la salida, luego sera el programar un timer con una duraccion de microsegundos, luego sera . . . , que mi mujer decida comprarse la lavadora nueva!!!

  El documento que me has referenciado, autenticamente genial para mi animo!!, gracias!!!

Igor R

Quote
El problema es que no se medir la frecuencia con un procesador


Pero se he explicado cómo y he dejado un link con el código que escribí!!!


:smiley-eek-blue:

Go Up