PWM y motor lavadora.

Hola de nuevo:

Acabo de probar el motor dentro de la lavadora, ya publicaré vídeos que tardan en subirse en youtube. Mi experiencia me dice cosas que ahora comento y no me esperaba, si cuando el motor trabaja en vacío.

beko-1351270.jpg


He probado el motor con ropa de mi lavadora Beko, tiene ropa en su interior, mucha, si nagua. El motor como que le cuesta arrancar si lo dejo en baja potencia, si le pongo un poco más de vlocidad, empeiza lento, acaba aumentando de velocidad poco a poco y con fuerza. Está claro que de esa manera no es una manera adecuada.

Mi lavadora en modo normal, trabaja desde que arranca y se acabe el ciclo a una velocidad constante, por ejemplo, se pega diez minuto haciendo este ciclo, y tiene 3 de 10 minuto cada uno.

Empieza con velocidad normal a lavar durante 15 segundos.
Se detiene durante dos segundos.
Cambia de sentido y lava 15 segundos.
Se detiene 2 seg.
Lava cambiando el sentido de giro otra vez durante 15 seg.
Así en un total de 10 minutos.
Lo que he conseguido y de forma manual, es cuando pasa 15 segundos, como siempre, le cuesta arrancar, va cogiendo velocidad, desconecto el motor de la toma corriente y tarda en pararse unos 6 segundos.

La ropa puede lavar de esa manera, pero no me gusta, está como el motor forzado y no es forma.

He hecho prueba adrede, de arrancar mucho a velocidad rápida, quito el cable cuando pase dos o tres segundos, lo vuelvo a enchufar, así al estilo PWM con mis manos, me he dado cuanta que casi mantengo la velocidad de inicio como la final de los 15 seg, activos, así que...

...a probar el microcontrolador que haga ese tipo de secuencias. Hago notas de como se comporta incluyendo vídeos para estudiarlo mejor y lo programo al estilo PWM. Eso si, no tiene el mismo resultado sin ropa, sin agua que con agua y ropa, la velocidad del motor varía, ya que no uso el tacómetro.

Esto del tacómetro es muy importante. Habrá que averiguar como controlo el tacómetro de pasar señal alterna al microcontrolador, aún así, intentaré controlar el motor dependiento de la ropa que tenga y el peso calculando un promedio, el arranque tiene que ser fuerte, justo antes de que coja inercia y más velocidad, lo pongo a baja pontencia, esto con un microcontrolador se hace de forma rápida, como dije, al estilo PWM.

Les pongo un vídeo a lo que me refiero.

¿Alguna experiencia o opinión respecto a ello?

Saludos.


Edito
:

Haciendo pruebas de todo tipo, si se me ocurre usar el control del motor sin tacómetro, siempre le cuesta arrancar o se embala, no es estable. Así que no me queda más remedio que montar el TDA1085C, de paso también usar el potenciómetro digital si el caso fuera necesario, llamado X9C104P.

Esquema.
3webMxyr9ywsM-hYWuRrV5OD0FVoGy7UJe2g4fU9vgkggCV0YmQdZd_BEydGJQIvf6dxDZmLPvT2QlQ=w1886-h801

Potenciómetro digital.
x9c104p-potenciometro-digital-100k-ohm-de-intersil-7815-MLM5283680464_102013-O.jpg

Aquí uno lo ha hecho.

Saludos.
 
Última edición:
Hola:

Estoy intentado hacer una prueba rápida con Arduino, motor de escobillas para hacer el cambio de giro. En esta ocasión, quiero controlar el cambio de giro con relés y una pantalla LCD. El ejemplo que quiero hacer es sencillo.

Quiero lograr este funcionamiento para Arduino:


  1. Enciende Arduino.
  2. Muestra mensaje en el LCD.
  3. Aparece un contador cuenta atrás que dura 10 segundos antes de iniciar el proceso.
  4. Se activan los relés en el cual actúa el cambio de giro.
  5. Se detiene 15 segundos.
  6. Cambio de giro con los relés durante 15 segundos.
  7. Se vuelve a detener durante 15 segundos.
  8. Así son 11 procesos repetitivos el cambio de giro.

Se usa dos salidas digitales para cada relés.

Por ahora he hecho un código base no funcional, hay que mejorarlo. Antes de conectar nada, quiero programar el código para que no de problemas y queme el motor, eso si, prbaré con una bombilla primero por si acaso.
Código:
// include el código de la librería.
#include <LiquidCrystal.h>

// Inicializa la librería con sus pines indicados.
// RS, RW, Enable, D4, D5, D6, D7.
LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);

unsigned long inicio, fin, transcurrido;
long Veces = 0;

int LuzFondo = 10; // Pin 10 para saber que es luz de fondo.

void setup()
{
   // Formato de pantalla.
  lcd.begin(16, 2);
  lcd.print("Foro ELECTRONICA");


  pinMode(3,OUTPUT);
  pinMode(2,OUTPUT);
  pinMode(LuzFondo,OUTPUT);

  digitalWrite(LuzFondo, HIGH);
  //digitalWrite(2, !LOW); // !LOW es HIGH.
  //digitalWrite(3, !LOW);
  Serial.begin(115200);
}

void loop()
{
  lcd.setCursor(0,1);
  lcd.print(inicio=millis()/15000); // 15 seg. antes de empezar.

     for (int i=0; i <= 10; i++)
   {
   
  digitalWrite(2, !LOW);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 OFF");
  digitalWrite(3, !LOW);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 OFF");
  delay(2000);

  digitalWrite(2, !HIGH);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 ON ");
  delay(2000);

  digitalWrite(2, !LOW);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 OFF");
  delay(2000);

  digitalWrite(3, !HIGH);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 ON ");
  delay(2000);

  digitalWrite(3, !LOW);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 OFF");
  delay(2000);

Veces++;
 lcd.setCursor(0,1);
 lcd.print(Veces);
  
  }

  delay(1000000);

     // Cuando llegue aquí, tiene que pararse el motor siempre.
     // No se que instrucciones darle para que lo haga.
}
Quiero hacer eso, con el LCD y cambio de giro del motor. Sólo eso.

Ver esquema.

¿Alguna ayuda sobre la programación?

Que muestre el tiempo cuentra atrás cada 15 segundos en el LCD.
Los pasos escrito arriba tienen que cumplir.

Feliz año nuevo. ;)
 
Última edición:
Nooooo, noooooooo, noooooooooo. Delays noooooooooo, delays nooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo.
Delay= equipo muerto. Eso significa, por ejemplo, que NO PUEDES PARAR LA LAVADORA, cosa absolutamente imprescindible.
Hay una librería chulisima para usar los timers.

Como ahora tienes toooooodo el tiempo del mundo puedes hacer el pwm a mano, indicar en el display cuanto tiempo falta, controlar la temperatura etc.
Si compras un micro de 16MHz y luego lo pones a dormir 16s, eso no es absurdo, es mucho más que absurdo. Ya que lo tienes, que trabaje!!. En todo caso échate tu a dormir, no el micro.

Por cierto feliz delay nuevo.

Perdón año nuevo.


Edito: He estado releyendo el código con detenimiento y es terrible la adicción a los delays.
Lo del delay un millón del final me mata más aún que los demás...
Has de poner un control de usuario, un botón para iniciar y parar el lavado. Como está a la media hora de acabar se enciende sola y vuelve a lavar aunque no haga falta.
Si tienes mucho que lavar, la lavadora pasa de tu cara; cuando acabas un lavado te toca esperar el delay un millón porque la lavadora quiere.
Si te das cuenta de que has puesto una prenda que no toca no puedes parar. Te aguantas a que la lavadora lave porque ella quiere.
Luego que hace, ¿lava diez veces ella sola si o si y luego tiras la lavadora?¿o la tienes que desenchufar y enchufar de nuevo?
Tienes que poner un control de usuario, más incluso que el display. Las lavadoras siempre han tenido mandos, display sólo últimamente.
Quita todos los delays y usa timers. Como mal menor, se pueden poner bucles de delays muy cortos y dentro del bucle se verifica si se pulsa un botón, se actualiza el display etc. Lo malo de este cutre-método es que el código adicional distorsiona el tiempo, aunque para lavar lo mismo dará que sean 15" que 15 y un cuarto, la verdad.
En serio, usa timers e interrupciones, algún día tendrás que aprender a usarlos. Los delays son una plaga.
 
Última edición:
Hola:

Entendido lo de los relés, eso si, estaba probando. Aquí hay consejos por el cual no hay que usar los delay como dices, exceptuando los microrebotes de los pulsadores a uno 100 ms, o lo que es lo mismo 0.1 seg.

http://www.educachip.com/razones-no-usar-funcion-delay-en-arduino/

Estoy indignado de una cosa con este proyecto de pruebas, se me bajaron las palancas de la casa y no me fucniona el relé K2, pesnaba que era el transistor, pero no, porque me enciende el Led rojo pero no activa el relé, rompí el diodo D2 para sustituirlo, no es el diodo, probé el relé directamente y funciona, solo el relé, claro. Así que tiene que ser el optoacoplador.

Por mucho que encienda el Led D2, opté por el relé K3 del INT 3, al rato de apagarse y encender la bombilla, se vuelve a bajar las palancas de mi casa, el magnetotérmico, no el digerencial, sin chispas o estampido de algo.

El optoacoplador le pasó lo mismo del INT 3 que al INT 2, se acabó máspruebas. Dentro de un rato pongo mis experiencias en mi blog sobre este proyecto. Deja ver si venden estos optoacopladores a parte en mi local habitual. En este mismo momento me quedan unos minutos para subir un vídeo qu esubiré aquí para que vean la idea del proyecto.

Dejo claro que aún no he puesto el motor, primero uan bombilla de 100 W a 230 VAC 50 Hz en España. A lo mejor de apagar y encender la bolbilla cada dos segundos, se bajaron las palancas, aunque no entiendo, porqué se fastidian los optoacopladores.

Estoy un poco desmotivado por tonterías como estas. Dejo una imagen como curiosidad.
000000000000000000000-1586145.png



Vídeo.

Saludo.
 
Última edición:
Pon un esquema a ver por que salta "la palanca" ¿es diferencial o magnetotérmico, no me ha quedado claro?
Cuando quites los delays podrás hacer el control de fase por software sin muchos dramas, ahorrarás bastante y ganarás flexibilidad.
No se para que lleva esa placa optoacopladores y relés, es como aislar dos veces. Hay placas de relés sólo con transistores, es más lógico.
 
Hola:

He editado arriba de color rojo la palanca que es.

Los módulos con optoacopladores lo hicieron después porque tiene mayor protección y la gente lo pedía.

Esquema:
retretyry.png
Ver zoom.

De entrada cuando lo probé funciona bien, lo que al rato salta el magnetotérmico y se fastidia el optoacoplador, y no estoy seguro del todo que sea eso, debería, ya que es lo que es. He etsado probado el los relés todo el rato sin carga, es decir, sin bombilla y no le pasa nada.
 
Última edición:
Un motor ac no cambia de sentido así, cambia si inviertes el inductor respecto al inducido. Usa un sólo relé de dos circuitos así seguro que aciertas y te ahorras un pin. O sus dos relés.en el mismo pin conectados al revés.
Lo del opto que se rompe me resulta extraño. No le veo sentido.
El control de fase lo puedes hacer con el arduino, tendrás más control y gastarás menos.
 
Hola mimuy distinguido amigo:

Hay que suar los dos relés, al menos mi lavadora es así. El tercero es para la resistencia del calentador, el cuarto relé va en serie con la corriente principal, si se recaliente el motor o pasa algo, se activa, abre el ciercuito y el motor no gira como seguridad.

Así funciona mi lavadora.

9423727dff3d3d582d792555ee3d71f5o.jpg


Para cambiar de sentido el motor universal, tienes que cambiar de escobillas dejando el STATOR como está, así se cambia el sentido, tal como indica abajo.

aaaaaaaaaaaaaaaaaa.bmp


Poco a poco se diseñará elmejor circuito para la lavadora, ahora estamos todo el rato conpruebas y más pruebas, campeón. ;)

Sigo con ello.
 
R1 y R2 se pueden sustituir sin problemas por uno de dos circuitos. Aunque supongo que saldrán más baratos dos de un circuito, porque los módulos chinos esos son casi gratis.
Para la resistencia de caldeo yo pondría un triac;.menos chispas y desgastes y es una carga resistiva con la que los triacs se llevan muy bien. Además podrás controlar la potencia, por control de fase irá regular porque suelen ser muchos vátios, pero por ciclos enteros irá muy bien.
 
Hola:

Las lavadoras que veo por todas partes cuando los voy a reparar, todas, pero todos los motores universales que he visto, usan como mínino en la placa dos relés y son el cambio de sentido del motor.

Mi lavadora usa triac para el blocapuerta, dos triacs más para las electroválvulas entrada de agua, y un triac más para el motor bomba de agua. Son triac pequeños, tiene uno grande que es el BT139 de 16 A para el motor principal.

De todas maneras, cuando en mi casa esté completamente solo, probaré el motor, digo solo porque tuve bronca mi familia al bajar dos veces el magnetotérmico.

Felices fiestas.
 
Serán más baratos dos relés de un contacto que uno de dos, y además permiten desconectar llegado le caso, supongo que es por eso.
 
Hola:

¿Te refieres usar un relés con dos conmutadores dentro como este?

esquema-giro-con-relay.jpg


Pues no, mi lavadora no funciona así y así no debo usarlo, fiujándome como se comporta, hace lo siguiente:


  1. Se activa un relé.
  2. A los 2 seg. el AVR activa o da pulso a la puerta o Gate del triac principal del motor y el motor gira.
  3. Dura 15 seg. el motor dando vueltas.
  4. Se detiene el motor durante 1.5 seg.
  5. Se apaga un relé.
  6. Espera 1 seg.
  7. Se enciendo el otro relé.
  8. Espera 1 seg.
  9. Se activa el motor en el otro sentido durante 15 seg.
  10. Así sucesivamente.
Como es algo que tengo muy en cuenta, tu método no funciona en mi la vadora como crees.

Lo cuento por experiencia y quiero imitar mi lavadora su comportamiento al menos casi idéntico respetando hasta los tiempos.

Hay que usar este método de dos relés como hacen muchas lavadoras que he visto a lo lardo de mi vida.
reles_motor.gif


Eso si, en AC.

Hacerlo con AC como pone aquí abajo no, porque cambia los conmuta los conmutadores al mismo tiempo si usas solo un relé y tiene que cambiar primero uno, luego en unos segundos otro.

Motor-y-rele.png



Saludos.
 
Última edición:
Hola:

Mejoré un poco el ejemplo, aunque con retardos. No se me da bien losmillis, como que no funcionan.

Código:
// include el código de la librería.
#include <LiquidCrystal.h>

// Inicializa la librería con sus pines indicados.
// RS, RW, Enable, D4, D5, D6, D7.
LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);

unsigned long inicio, fin, transcurrido;
long Veces = 0;

int LuzFondo = 10; // Pin 10 para saber que es luz de fondo.

void setup()
{
   // Formato de pantalla.
  lcd.begin(16, 2);
  lcd.print("Foro ELECTRONICA");
 
  /*
  delay(2000);
  lcd.setCursor(0,0);
  lcd.print("Cambio de giro  ");
  lcd.setCursor(0,1);
  lcd.print("motor lavadora. ");
  delay(2000);
  lcd.clear(); // Limpia la pantalla.
  lcd.setCursor(0,0); // En el primer carácter y primera fila.
*/

  pinMode(3,OUTPUT);
  pinMode(2,OUTPUT);
  pinMode(LuzFondo,OUTPUT);

  digitalWrite(LuzFondo, HIGH);
  //digitalWrite(2, !LOW); // !LOW es HIGH.
  //digitalWrite(3, !LOW);
  Serial.begin(115200);
}

void loop()
{
  lcd.setCursor(0,1);
  lcd.print(inicio=millis()/15000); // 15 seg. antes de empezar.

  digitalWrite(2, !LOW);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 OFF");
  digitalWrite(3, !LOW);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 OFF");
  delay(2000);

     for (int i=0; i <= 10; i++)
   {

  digitalWrite(2, !HIGH);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 ON ");
  delay(2000);

  digitalWrite(2, !LOW);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 OFF");
  delay(2000);

  digitalWrite(3, !HIGH);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 ON ");
  delay(2000);

  digitalWrite(3, !LOW);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 OFF");
  delay(2000);

Veces++;
 lcd.setCursor(0,1);
 lcd.print(Veces);
  
  }

  while (true);

     // Cuando llegue aquí, tiene que pararse el motor siempre.
     // No se que instrucciones darle para que lo haga.
}
Tiene que haber un corto cada vez que cambia de bombilla.

Esquema%2BLavadora.gif


Ver zoom.

Saludos.
 
Última edición:
Perdona por insistir, olvida los retardos, es en serio. Nada bueno puede salir de ahí sólo códigos y funcionamientos mediocres.
Los retardos no van bien porque además del retardo hay que contar lo que tardas en escribir el LCD etc...
Busca que hay una librería fantástica para usar los timers. Ahora no estoy en casa y no me acuerdo del nombre. Luego te diré cual és.

Al final en lugar de un bucle vacío y eterno verifica si se pulsa el botón de inicio/paro
Y durante el ciclo lo mismo.
Como está ahora tienes que resetear o desenchufar la lavadora para volver a lavar y eso no tiene sentido.

Otra cuestión es que deberías de ir grabando en la EEPROM por donde va el lavado; si se va la luz y vuelve las lavadoras suelen acabar el ciclo, no empiezan de nuevo o se quedan paradas.


Si que funciona un relé de dos contactos, pero es que estás poniendo esquemas que no corresponden.
Seguramente se usen dos por varios motivos: Que sea más barato dos de uno que uno de dos, que puedes poner un tiempo entre que activas uno y otro y que puedes desconectar el motor porque con un relé de dos contactos siempre está conectado en un sentido o en otro.
 
Última edición:
En google tan sólo poniendo "arduino timer" salen varias opciones.
En alguna librería sale explicado "a cucharaditas" el motivo y el uso de los timers.

PD. No entiendo por qué el maldito delay forma parte del "core" arduino y algo más normal y eficiente resulta ser "opcional".


Deberías de cambiar el título del hilo: no se puede hacer PWM con un triac, es control de fase o control de ángulo de disparo.
El control de fase se hace fácilmente con un par de recursos que son las interrupciones externas y... Los timers. Así te ahorras el potenciómetro, el diac y un montón de cosas. Sólo necesitas un detector de paso por cero y un timer que dispare el triac. Eso prácticamente no supone tiempo de CPU.
 
Última edición:
No, eso lo hacen los relés. Eso no se puede quitar fácilmente.
Hablo de quitar el control de fase, hacerlo con el micro para tener más control sobre esa parte.
 
Hola:

Gracias por los consejos y lo de la EEPORM, cosa que tengo clara, recuerdo que estamos de pruebas todo el rato paso a paso, ya llegaremos a la EEPROM con el programa completo. Me dicen que se usan millis. Ya se verá más adelante. Para hacer pequeñas pruebas con los delay, no pasa nada, solo son pruebas. Miraré las librerías que dices, incluido los millis.

Según me han comentado, como uso una bombilla de 100 W, se calienta los casquillos y produce corto, lo que nadie entiende es porqué falla el optoacoplador, está fundido por decirlo de alguna manera. Se que están por seguridad. Mañana pruebo con una de bajo consumo, espero que no se me baje nada.

No me deja cambiar el título, por eso está como está, del primer post.

El esquema que he puesto arriba sobre los dos relés, es como lo tiene muchas lavadoras, es lo que he visto y seguiré viendo, así lo haré, como un campeón. ;)

No niego que las demás sugerencias sea buenas.

Dije mañana, en realidad el lunes, cuando estoy solo por la mañana y haré pruebas de la bombilla de bajo consumo. Como muestar en el
, me funciona bien.

Antes de seguir con el programa más avanzado, debo probar el esquema con la bombilla, si todo anda bien durante buenos minutos, lo prueno con el motor al alire libre, más adelante, con mi lavadora en el cual no quiero quemar. Por eso voy lento, con precausión.

En realidad, como esto es una prueba, se activa el motor cuando se activa el relé, en mi lavadora no funciona tal como lo estoy haciendo, porque lo que hago ahora es una prueba.

El motor tiene su propio triac de 16 A. Cuando se activa el relé, sigue unos segundos sin moverse el motor, es el microcontrolador que hace mover el motor, el que le da la orden, claro. Luego el µC detiene el motor, cuando se pare del todo guiado por el tacómetro, se apaga el relé 1 y se activa el Relé 2 en un segundo o más, el motor sigue detenido, al rato con un total de casi 3 segundos por ahí y no llega, se vuelve activar el motor. Esto lo dejo claro desde el principio.

Saludos.
 
Última edición:
Con una lámpara de bajo consumo no irá el dimmer.
A no ser que estés usando un casquillo de pésima calidad no debería de pasar lo que cuentas, y aunque fuese malísimo el portalámparas debería de aguantar unas horas.
Me huele a mala conexión, a que los relés no están bien y estás haciendo una conmutada prohibida sin querer o algo así.
 

Meta, ya pude detectar el problema por el cual se te disparan los disyuntores, a veces.

Si miras bien el diagrama de origen de la lavadora:

9423727dff3d3d582d792555ee3d71f5o.jpg


y lo comparas con el segundo, que entiendo es el que estás utilizando, podrás darte cuenta que, aparentemente funcionan igual, pero no es así.

Esquema%2BLavadora.gif


En este diagrama, cuando los dos relay caen, el rotor del motor queda cortocircuitado, mientras que en el otro esquema, esto nunca sucede.
El cortocircuito del rotor, en los motores universales, se utiliza para FRENAR dicho rotor pero, esto nunca se debe hacer con un corto directo, dado que el efecto de la magneto-constricción violenta que se produce, es capaz hasta de romper el eje del motor. El rotor queda con magnetismo "CERO" y, cuando se trata de arrancar de nuevo, se muestra con impedancia CERO sobre la línea, evidente corto circuito.

Para lograr este efecto, se deben utilizar unos contactores especiales que, en reposo, quedan neutralizados. No sé si aún los fabrican.

Estoy siguiendo tus progresos con cierto interés especial en el sistema de control, más que el PWM.

Saludos:
 
Atrás
Arriba