Minuteur de machine à laver
Composants et fournitures
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 2 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Outils et machines nécessaires
![]() |
| |||
![]() |
| |||
![]() |
| |||
![]() |
|
Applications et services en ligne
![]() |
|
À propos de ce projet
Présentation
Il s'agit d'une pièce de rechange pour la machine à laver que j'ai qui a une minuterie de lavage cassée. La minuterie d'origine était une minuterie/interrupteur de direction mécanique, qui peut contrôler le moteur de la cuve de lavage de la manière suivante :
- Prendre x minutes de temps de lavage saisi par l'utilisateur
- Faire tourner le moteur de la cuve de lavage dans le sens des aiguilles d'une montre pendant quelques secondes
- Arrêter le moteur pendant quelques secondes
- Tourner le moteur de la cuve de lavage dans le sens inverse des aiguilles d'une montre pendant quelques secondes
- Arrêter le moteur pendant quelques secondes
- Continuez à faire les 4 dernières étapes jusqu'à ce que la minuterie de lavage expire
Je vais construire une minuterie électronique qui peut faire la même opération.
Démo
La vidéo suivante montre le fonctionnement de cette minuterie électronique :
Matériel
- Arduino Pro Mini : Exécute le code et contrôle tout
- 1306 OLED : Afficher les instructions de l'utilisateur et le compte à rebours de la minuterie
- Bouton poussoir rouge/noir : Régler la minuterie et démarrer la minuterie
- Modules relais 5 V : Alimenter le moteur en courant alternatif et contrôler la direction
- Adaptateur 5 V : Alimentez la minuterie électronique
1306 OLED est directement soudé sur le mini pro comme ceci :

Module 2 relais, 2 boutons poussoirs, Arduino Pro Mini + 1306 OLED se connecte sur une protoboard comme celle-ci -


Programmation
Étape 1 : Procurez-vous un module Bluetooth-Serial HC-05 et modifiez son débit en bauds à 57600 selon ce tutoriel ou cette étape. Pour effectuer cette étape, un autre Arduino Uno ou un module USB vers série sera requis.
Utilisez les commandes AT suivantes
AT
AT+UART =57600,0,0
AT+RESET
Étape 2 : Une fois que le débit en bauds est passé à 57600, connectez le HC-05 à Arduino pro mini selon le schéma de câblage suivant

Étape 3 : Sélectionnez la carte de l'IDE Arduino, collez le code et cliquez sur télécharger.

J'utilise la série Bluetooth, car elle permet des capacités programmables sur le terrain sans fil dans le système, ce qui a permis de mettre à jour le code sur pro mini si nécessaire.
Câblage et fonctionnement de l'appareil expliqués
Le câblage peut varier pour les modèles de lave-linge plus récents/différents, je vais donc expliquer le mien. Faites attention au diagramme "Sharp" dans le coin inférieur droit, un FIL BLANC vient du secteur et va à la minuterie de lavage, un FIL ROUGE et un FIL BLEU sort de la minuterie de lavage. J'ai déconnecté ces 3 fils de la minuterie de lavage d'origine (défectueuse) et les ai fait sortir par un trou sur le dessus de la machine à laver.


Lorsque WHITE WIRE est commuté sur RED WIRE, le moteur tourne dans le sens des aiguilles d'une montre et lorsque WHITE WIRE est commuté sur BLUE WIRE, le moteur tourne dans le sens inverse des aiguilles d'une montre.
Cette minuterie électronique fabriquée avec Arduino pro mini gardera une trace du temps de lavage, fera tourner le moteur de la cuve de lavage dans un sens pendant 5 secondes en connectant les fils BLANC et ROUGE via un contact de relais. Ensuite, il arrêtera le moteur et attendra 5 secondes. Après cela, il fera tourner le moteur de la baignoire dans l'autre sens pendant 5 secondes en connectant les fils BLANC et BLEU à travers l'autre contact de relais. Ensuite, il s'arrêtera et attendra encore 5 secondes. Toutes ces séquences temporelles peuvent être modifiées à partir du code si nécessaire.
Le schéma suivant montre comment il suffit de basculer le secteur entrant CA sur une jambe ou sur l'autre jambe du condensateur du moteur, la direction du moteur CA peut être modifiée.

Théorie du moteur à induction monophasé
Références
Vous pouvez en savoir plus sur chaque composant dans ces tutoriels :
- Tutoriel de relais
- Tutoriel sur les boutons
Avis de non-responsabilité !
Ce projet traite de l'alimentation secteur, faites à vos risques et périls !
Code
- Fichier sans titre
Fichier sans titreC/C++
#include "U8glib.h"//SSD1306 oled waveshare(clk,din,cs,d/c,res);U8GLIB_SSD1306_128X64 u8g(A4,A5,12,11,10);volatile int rbc =0;volatile int bbc =0 ; int sec =0 ; int mi =0; int motor_rotation =0;void setup(){ u8g.setRot180(); analogReference(INTERNE); pinMode(2,INPUT_PULLUP); pinMode(3,INPUT_PULLUP); attachInterrupt(0, ISR_SW_RED,FALLING); attachInterrupt(1, ISR_SW_BLACK,FALLING); pinMode(5,SORTIE); digitalWrite(5,LOW); pinMode(4,SORTIE); digitalWrite(4,LOW);}void loop(void) { while(!rbc) { // afficher le menu de réglage de la minuterie u8g.firstPage(); faire { draw_menu(); } while( u8g.page suivante() ); // affiche le message de fonctionnement correct de l'utilisateur if (rbc>0 &&bbc==0) { u8g.firstPage(); faire { draw_message(); } while( u8g.page suivante() ); retard (2000); rbc=0 ; //u8g.clear(); } } // démarrer le minuteur if(rbc>0) { sec =59; mi =bbc-1 ; while(mi>=0) { // affiche le message du compte à rebours non signé long temp =millis()+1000 ; while(temp> =millis()) { u8g.firstPage(); faire { draw_timer(); } while( u8g.page suivante() ); } sec=sec-1; if(sec%5==0) { control_motor(); // appel toutes les 5 sec } if (sec <=0) { sec =59; mi =mi - 1; } } rbc =0; bbc =0 ; mi =0; secondes =0 ; digitalWrite(5,LOW);digitalWrite(6,LOW); } }// fin de loopvoid draw_menu(void){ u8g.setFont(u8g_font_timB24); if (bbc<10) { u8g.drawStr( 22,30,"0"); u8g.setPrintPos(38,30);u8g.print(bbc); } else { u8g.setPrintPos(22,30);u8g.print(bbc); } u8g.drawStr( 54,30,":00"); u8g.setFont(u8g_font_8x13); u8g.drawStr( 0,62," 'MINUTERIE DE LAVAGE'"); u8g.setFont(u8g_font_5x8) ; u8g.drawStr( 0,47,"Red:START Black:SET TIME"); }void draw_message(void){ u8g.setFont(u8g_font_8x13); u8g.drawStr( 0,10, "RÉGLER LA MINUTERIE DE LAVAGE"); u8g.drawStr( 0,23, "D'ABORD EN APPUYANT"); u8g.drawStr( 0,36,"LE BOUTON NOIR"); // u8g.setFont(u8g_font_8x13); u8g.drawStr( 0,62," 'MINUTERIE DE LAVAGE'"); u8g.setFont(u8g_font_5x8) ; u8g.drawStr( 0,47,"Red:START Black:SET TIME"); }void draw_timer(void){ u8g.setFont(u8g_font_timB24); if (mi<10) { u8g.drawStr( 22,30,"0"); u8g.setPrintPos(38,30);u8g.print(mi); } else { u8g.setPrintPos(22,30);u8g.print(mi); } u8g.drawStr( 54,30,":"); if (sec<10) { u8g.drawStr( 70,30,"0"); u8g.setPrintPos(86,30);u8g.print(sec); } else { u8g.setPrintPos(70,30);u8g.print(sec); } if(motor_rotation==0) { u8g.setFont(u8g_font_5x8) ; u8g.drawStr( 0,47," LAVAGE MOTEUR CW Spin"); écriture numérique(5, ÉLEVÉ); } if(motor_rotation==1) { u8g.setFont(u8g_font_5x8) ; u8g.drawStr( 0,47," LAVAGE MOTEUR ARRÊTÉ "); digitalWrite(5,LOW);digitalWrite(4,LOW); } if(motor_rotation==2) { u8g.setFont(u8g_font_5x8) ; u8g.drawStr( 0,47," LAVAGE MOTEUR CCW Spin"); digitalWrite(4,HIGH); } if(motor_rotation==3) { u8g.setFont(u8g_font_5x8) ; u8g.drawStr( 0,47," LAVAGE MOTEUR ARRÊTÉ "); digitalWrite(5,LOW);digitalWrite(4,LOW); } u8g.setFont(u8g_font_8x13); u8g.drawStr( 0,62," 'MINUTERIE DE LAVAGE'"); }void ISR_SW_RED(){ sei(); rbc++ ; cli();}void ISR_SW_BLACK(){ sei(); bbc++ ; cli();}void control_motor(){ motor_rotation++ ; if(motor_rotation>3) { motor_rotation =0; }}
Schémas


Processus de fabrication