Control de velocidad retroalimentado para motor universal AC con arduino

Construí una centrífuga a partir de un motor universal AC de licuadora y un bloque de aluminio de 1 Kg para portar tubos de 12 ml.

Utilicé un Dimmer comercial SCR de potenciómetro para regular la velocidad del motor y por separado implementé un Tacómetro infrarrojo con un sensor seguidor de línea y un arduino nano que muestra el valor de velocidad en una pantalla LCD de 16 x 2 a través del módulo I2C.

Sucede que el control del dimmer es muy inestable y hay que regular el valor constantemente (Oscila entre 4000 y 5000 rpm). No estoy conforme con el resultado...

¿Sería posible implementar un control integrado retroalimentado para todo el proceso en un sólo Arduino?

Me gustaría poder ingresar la velocidad con un encoder o botones en la pantalla y que el Arduino regule la velocidad con un circuito de potencia (un TRIAC, por ejemplo) y añadirle el tacómetro infrarrojo para medir la velocidad, mostrarla en la pantalla y usar ese valor como retroalimentación para el control del circuito de potencia y poder mantener una velocidad estable y constante.

PD1: Ya sé que podría usar un motor brushless con controlador ESC de manera más práctica, pero la verdad que no quisiera empezar de cero con esto y el costo de un motor brushless lo bastante potente para mover el pesado portatubos que ya tengo construido sería elevado.
PD2: No tengo acceso a las bobinas del motor, sólo lleva 2 cables de alimentación.

Código del tacómetro usado:

#include  <Wire.h>
#include  <LiquidCrystal_I2C.h>
 
// Constructor de la librería de LCD 16x2
// Aqui se configuran los pines asignados a la pantalla del PCF8574
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
float value=0;
float rev=0;
int rpm;
int oldtime=0;
int time;

void isr() //interrupt service routine
{
rev++;
}

void setup()
{
lcd.begin(16,2);                //initialize LCD
attachInterrupt(0,isr,RISING);  //attaching the interrupt
}

void loop()
{
delay(1000);
detachInterrupt(0);           //detaches the interrupt
time=millis()-oldtime;        //finds the time 
rpm=(rev/time)*60000;         //calculates rpm
oldtime=millis();             //saves the current time
rev=0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("___TACHOMETER___");
lcd.setCursor(0,1);
lcd.print(     rpm);
lcd.print(" RPM");
lcd.print("   ");
attachInterrupt(0,isr,RISING);

}

ESQUEMA DEL ESTADO ACTUAL DEL PROYECTO:

Creo que es justo lo que necesitas

Saludos

1 Like

Comprate un variador de velocidad monofásico que tenga entrada 0-10V o 4-20mA y tienes resuelto todo. Ponerte a fabricar un control de velocidad sin conocimientos electrónicos es un proyecto destinado a fallar.

Hi,
Adjunto foto de uno que pude controlar luces y motores. Tambien el link donde se puede comprar en EBAY pero si usas la description puedes comprarlo en diferentes vendedores. Este se controla usando PWM.

[AC Light Dimmer Module 1 Channel 3.3V/5V Logic 400V 8A AC 50/60hz 28.5x57mm | eBay]

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.