Aviso

El foro está en modo de sólo lectura.

Hacer un contador de cruce por cero con Arduino

Más
5 años 11 meses antes - 5 años 11 meses antes #1332 por Meta
Hola:

Viendo este vídeo.


Quiero hacer un programa con Arduino que me muestre la cantidad de pulsos que puede recoger en una corriente alterna. No tiene que ser desde la red prncipal, es decir, los 230 Vac con 50 Hz que hay en España que también.

Con el optoacopaldor quehizo en el vídeo de arriba nuestro amigo, en el que usa H11AA1.


En un tacómetro o taco genrador de un motor de lavadora, puede proporcionar o generar hasta 35 Vac en su velocidad máxima. Si mueves el motor, el rotor con la mano, haces funcionar un poco el tacogenerador en el cual recoge pulsos y lo pasas al https://docs-emea.rs-online.com/webdocs/1465/0900766b81465d36.pdfH11AA1 .

¿Hay algún ejemplo de ello?

Mi idea principal es hacer pruebas. Ver que Arduino y no se programarlo aún, lea los pulzos que recoge desde el taco generador otacómetro. Hacer un programa que cuente los pulsos.

¿Alguna idea?

Un cordial saludos.
Última Edición: 5 años 11 meses antes por Meta.
Más
5 años 11 meses antes #1336 por Jose Luis
Te cuento, yo ya he empezado a investigar el tema, de hehco lo tengo muy adelantado. Como bien dices una de las formas es medir la tension en la salida del tacometro. Mas voltios, las rpm. Pero yo no voy a hacer asi. Hay itra forma que a mi me parece mas fiable que es las siguiente. El tacometro hace una onda senoidal. Esa onda senoildar tiene el valor que va reciendo con las rpm, pero la frecuencai no es constante, tambien mas frecuencia en la taco cuantas las rpm. Resumiendo, mi intencion es utilizas el h11aa1 para contar las veces que pasa por cero. Obviamente como no soy un especialista en motores de lavadora, no se cuantos pulsos de por rpm, pero midiendo la tension tampoco sacareis direntamente las rmp si antes no las verificais con un tacometro.

Os contare avances.
Más
5 años 11 meses antes - 5 años 11 meses antes #1337 por Meta
Hola:

Como dice Jack el destripador. Vayamos por parte.

Intentaremos hacer varias pruebas.

Prueba 1:
Lo más básico y importante, trabajar con el H11AA1 . Contar los pulsos y mostrar dicha cantidad en Arduino. Es verdad que el tacómetro, en mi caso va de 0 Vac a 35 Vac, tengo otro que es de 0 Vac hasta 98 Vac. Se que es por frecuencia, da igual la tensión, el rollo es que cuente los pulsos, desde que empiece a generar una mínima corriente, el optoacoplador lo detecta.

Dejo código Arduino que he encontado por ahí.
const int inputPin = 2;
 
int value = 0;
 
void setup() {
  Serial.begin(9600);
  pinMode(inputPin, INPUT);
}
 
void loop(){
  value = digitalRead(inputPin);  //lectura digital de pin
 
  //mandar mensaje a puerto serie en función del valor leido
  if (value == HIGH) {
      Serial.println("Encendido");
  }
  else {
      Serial.println("Apagado");
  }
  delay(1000);
}


Prueba 2:
La segunda prueba, si decides hacerlo, puede ser el que quieras, en este caso, se trata calcular la frecuencia gracias a los datos obtenidos desde la primera prueba.

Medir la frecuencia con interrupción.
// period of pulse accumulation and serial output, milliseconds
const int MainPeriod = 100;
long previousMillis = 0; // will store last time of the cycle end
 
volatile unsigned long previousMicros=0;
volatile unsigned long duration=0; // accumulates pulse width
volatile unsigned int pulsecount=0;
 
// interrupt handler
void freqCounterCallback()
{
  unsigned long currentMicros = micros();
  duration += currentMicros - previousMicros;
  previousMicros = currentMicros;
  pulsecount++;
}
 
void reportFrequency()
{
    float freq = 1e6 / float(duration) * (float)pulsecount;
    Serial.print("Frec:");
    Serial.print(freq);
    Serial.println(" Hz");
 
     // clear counters
    duration = 0;
    pulsecount = 0;
}
 
void setup()
{
  Serial.begin(19200);
  attachInterrupt(0, freqCounterCallback, RISING);
}
 
void loop()
{
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= MainPeriod)
  {
    previousMillis = currentMillis;   
    reportFrequency();
  }
}

Ver más información sobre attachInterrupt().
manueldelgadocrespo.blogspot.com.es/p/de...gital-pins-with.html

Prueba 3:
Cuando lleguemos, lo que se nos ocurra. ;)

Normalmente el tacómetro, también llamado taco generador, suele tener dos polos.



Mientras recojas la cantidad de pulsos, puedes controlar el motor, es decir, haces girar el motor, pero lo quieres a una cierta velocidad, con el tacómetro, haces que el motor tenga una velocidad constante con cierto grado de precisión. Sipongamos que el tacómetro lee como 0, significa que el motor está dentenido, si lee hasta 1023 pulsos, tiene su velocidad máxima.

No ponemos su velocidad máxima, si no hasta como velocidad máxima, unas 700. Si pasa de 700 o llegue hasta los 1023 de pulsos, pues puedes hacer que ocurra un evento como me pasa con mi lavadora que tenía antes, el motor se detiene. Suele pasar cuando se rompe o se suelta la correa del motor y tambor de la lavadora. Si el motor no tiene carga, gira más rápido de la cuenta, el microcontrolador lo detecta, detiene la lavadora y da aviso un led parpadeando que hay un fallo.

Para mantener una velocidad constante o casi, tiene que cumplir unos requisitos de programación, esto funciona así hasta en los vídeos de antes de VHS, llamado PLL, en mi época de estudiante. Por si el motor gira más de lo normal, lo reduce, si gira demasiado lento lo acelera así sucesivamente logrando una velocidad constante.

Te pongo código de ejemplo una idea de como funciona.
// Variable.
int pulsos = 0;

// ¿Pulso distinto o menos que 0?
if (pulsos =< 0)
{
    // Mostrar mensaje:
    // Motor detenido.
}

// ¿Pulsos igual o mayor a 200?
if (pulsos => 200)
{
    // Motor en marcha.
}

// ¿Pulsos menor o igual a 700?
if (pulsos =< 700)
{
    // Motor detenido.
}

if (pulsos => 1023)
{
    // Como sobre pasa el valor.
    // Motor trabajando en vacío porque
    // se rompió o se soltó la correa del
    // tambor.
    // Se detiene el motor.
}

¿Se entiende como funciona?

Cualquier duda de concepto, pregunten.

De todas maneras, si el método del código no es así, hay que mejorarlo antes de hacer un proyecto.

Pruebas que hice para saber cuanto proporciona el tacómetro. 35 Vac como máximo.


Un cordial saludo. ;)
Última Edición: 5 años 11 meses antes por Meta.
Más
5 años 11 meses antes - 5 años 11 meses antes #1338 por Jose Luis
Creo que no nos estamos entendiendo. Yo trabajo a diario con mas de 300 motores de todo tipo.
Motores de corriente continua de hasta 2000 amperios ( si 2000 amperios ), corriente alterna, imanes permanentes, brussless, servomotores, paso a paso .. tambien trabajo con tacometros (analogicos), encoders (ya digitales), resolvers, etc,,, Me hizo gracia que me pusieras la foto del tacometro, jajajjajaaja.

Se lo que tengo que hacer y como lo tengo que hacer. También tengo mi propio código ya creado, solo necesito tiempo y ganas de hacerlo.


Lo que yo queria decir, que si tu vas por otro camino, siempre podemos acabar encontrandonos y comparar lo que hiciste tu y lo que hice yo. Y ver pros y contras de cada cosa.


Un saludo.
Última Edición: 5 años 11 meses antes por Jose Luis.
Más
5 años 11 meses antes #1339 por Meta
Buenas:

La foto del tacómetro no pienses solo en nosotros, se que lo sabes, hay más visitantes que nos leen. ;)

Si sabes de motores, mejor que mejor. Prefiero ver el camino que escojes, los códigos que puse son de internet. Para dejarlo más claro.

¿Qué camino vas a coger?

Saludos.
Más
5 años 11 meses antes #1341 por Jose Luis
A ver, hay un detalle muy importante que te daras cuenta si has visto los dos videos que dedique al motor de la lavadora. Y es mi motor no tenia absolutamente ninguna placa de características. Todos aquellos que tengáis un motor donde se pueda leer los datos, el problema esta casi arreglado. Por que? Por que sabréis las rpm del motor. Sabiendo eso, lo pones a máxima velocidad y lees los pulsos con un h1aa1, divides pulsos por rpm y ya sabes cuantos ciclos por revolución tiene el motor. De esa forma ya sabes medir, fielmente, todo el régimen de rpm del motor.

Al no tener ningún dato, yo lo primero que hice fue ponerlo a tope de rpm y medir las rpm con un tacómetro. Ahora se que que da 24500 rpm.
Mi idea ahora es, poner a funcionar el motor y con un osciloscopio ver la onda, mas que nada que para el que nunca la vio poder hacer un video,.

Lo siguiente es ponerlo a máxima velocidad y ver cuantas ondas hace por segundo, midiéndolas con el osciloscopio. Y medir la tensión de pico para calcular las resistencias del h11aa1.

Y por ultimo, montar el h1aa1 con el Arduino y ver si mide los pulsos con la precisión que hace el osciloscopio.


Básicamente mi idea es esa,

Otra idea podría ser ponerle un puente rectificador al taco y pedir la tensión de pico de la taco, o cinluso filtrala un poco y medir continua pura.


Pero mi idea es la primera.
Tiempo de carga de la página: 0.105 segundos
Gracias a Foro Kunena