Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED

Composants et fournitures

Composant Quantité
SparkFun Arduino Pro Mini 328 - 5V/16MHz 1
Écran OLED 1306 (SSD1306) 1
Bouton poussoir numérique DFRobot Gravity (Jaune) 2
Module relais 2 canaux SPDT Seeed Grove 1
Alimentation commutée 5V 2,5A Digilent 1
Convertisseur USB-UART SparkFun - CY7C65213 1
Module Bluetooth HC-05 1

Outils et machines nécessaires

Applications et services en ligne

À propos du projet

Introduction

Ce projet remplace le minuteur mécanique défaillant de mon lave-linge. Le minuteur d'origine, un commutateur de direction mécanique, contrôlait le moteur de la cuve comme suit :

Je vais construire une minuterie électronique reproduisant exactement ce comportement.

Démonstration

La vidéo ci-dessous montre le fonctionnement de cette minuterie électronique :

Matériel

L'écran OLED 1306 est soudé directement sur le Pro Mini :

Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED

Le module 2 relais, les 2 boutons poussoirs, l'Arduino Pro Mini + OLED 1306 sont connectés sur une platine d'essai :

Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED
Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED

Programmation

Étape 1 : Procurez-vous un module Bluetooth-Série HC-05 et modifiez son débit (baud rate) à 57600 selon ce tutoriel ou cette procédure. Un Arduino Uno ou un module USB-Série supplémentaire sera nécessaire.

Utilisez les commandes AT suivantes :

AT
AT+UART = 57600,0,0
AT+RESET

Étape 2 : Une fois le débit modifié, connectez le HC-05 à l'Arduino Pro Mini selon le schéma de câblage suivant :

Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED

Étape 3 : Sélectionnez la carte dans l'IDE Arduino, collez le code et cliquez sur Téléverser.

Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED

J'utilise la liaison série Bluetooth car elle permet une programmation sans fil sur site (in-system), ce qui a facilité les mises à jour du code sur le Pro Mini si nécessaire.

Câblage et fonctionnement de l'appareil expliqués

Le câblage peut varier selon les modèles de lave-linge plus récents ou différents. Voici l'explication pour le mien. Faites attention au schéma « Sharp » en bas à droite : un FIL BLANC arrive du secteur et va au minuteur de lavage, un FIL ROUGE et un FIL BLEU sortent du minuteur. J'ai débranché ces 3 fils du minuteur d'origine (défectueux) et les ai fait sortir par un trou sur le dessus de la machine.

Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED
Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED

Lorsque le FIL BLANC est commuté vers le FIL ROUGE, le moteur tourne dans le sens horaire. Lorsqu'il est commuté vers le FIL BLEU, il tourne dans le sens antihoraire.

Cette minuterie électronique à base d'Arduino Pro Mini suit le temps de lavage, fait tourner le moteur dans un sens pendant 5 secondes en connectant les fils BLANC et ROUGE via un contact de relais. Elle arrête ensuite le moteur et attend 5 secondes. Puis elle fait tourner le moteur dans l'autre sens pendant 5 secondes en connectant les fils BLANC et BLEU via l'autre contact de relais. Elle s'arrête et attend encore 5 secondes. Toute cette séquence de temporisation peut être modifiée dans le code si nécessaire.

Le schéma suivant montre comment le simple fait de basculer l'alimentation secteur alternatif d'une patte à l'autre du condensateur du moteur monophasé permet d'inverser son sens de rotation.

Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED

Théorie du moteur à induction monophasé

Références

Vous pouvez en apprendre davantage sur chaque composant dans ces tutoriels :

Avertissement !

Ce projet manipule le secteur alternatif, à vos propres risques !

Code

Fichier principal (C/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(INTERNAL);
  pinMode(2,INPUT_PULLUP);
  pinMode(3,INPUT_PULLUP);
  attachInterrupt(0, ISR_SW_RED,FALLING);
  attachInterrupt(1, ISR_SW_BLACK,FALLING);
  pinMode(5,OUTPUT);
  digitalWrite(5,LOW);
  pinMode(4,OUTPUT);
  digitalWrite(4,LOW);
}

void loop(void) {
  while(!rbc) {
    // show timer set menu
    u8g.firstPage();
    do {
      draw_menu();
    } while( u8g.nextPage() );
    // show user proper operation message
    if (rbc>0 && bbc==0) {
      u8g.firstPage();
      do {
        draw_message();
      } while( u8g.nextPage() );
      delay(2000);
      rbc=0;
    }
  }
  // start timer
  if(rbc>0) {
    sec =59;
    mi = bbc-1;
    while(mi>=0) {
      // show countdown timer message
      unsigned long temp = millis()+1000;
      while(temp>=millis()) {
        u8g.firstPage();
        do {
          draw_timer();
        } while( u8g.nextPage() );
      }
      sec=sec-1;
      if(sec%5==0) {
        control_motor(); // call every 5 sec
      }
      if (sec <= 0) {
        sec = 59;
        mi = mi - 1;
      }
    }
    rbc = 0;
    bbc = 0;
    mi = 0 ;
    sec = 0;
    digitalWrite(5,LOW);
    digitalWrite(6,LOW);
  }
}// end of loop

void 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," 'WASHING TIMER'");
  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," SET WASH TIMER");
  u8g.drawStr( 0,23,"FIRST BY PUSHING");
  u8g.drawStr( 0,36,"THE BLACK BUTTON");
  u8g.drawStr( 0,62," 'WASHING TIMER'");
  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," WASHING MOTOR CW Spin");
    digitalWrite(5,HIGH);
  }
  if(motor_rotation==1) {
    u8g.setFont(u8g_font_5x8);
    u8g.drawStr( 0,47," WASHING MOTOR STOPPED ");
    digitalWrite(5,LOW);digitalWrite(4,LOW);
  }
  if(motor_rotation==2) {
    u8g.setFont(u8g_font_5x8);
    u8g.drawStr( 0,47," WASHING MOTOR CCW Spin");
    digitalWrite(4,HIGH);
  }
  if(motor_rotation==3) {
    u8g.setFont(u8g_font_5x8);
    u8g.drawStr( 0,47," WASHING MOTOR STOPPED ");
    digitalWrite(5,LOW);digitalWrite(4,LOW);
  }
  u8g.setFont(u8g_font_8x13);
  u8g.drawStr( 0,62," 'WASHING TIMER'");
}

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

Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED
Minuterie intelligente pour lave-linge avec Arduino Pro Mini et écran OLED

Processus de fabrication

  1. Machines EEG : conception, fabrication et applications émergentes
  2. Les distributeurs automatiques : une industrie américaine de 36,6 milliards de dollars
  3. Les machines à voter : histoire, technologie et normes
  4. Guide expert des machines à rendre la monnaie modernes : conception, composants et tendances futures
  5. Vue d'Ensemble des Appareils ECG Modernes : Technologie, Fabrication et Innovations Futures
  6. L'évolution et la fabrication des machines à coudre : de l'innovation du 19e siècle à l'automatisation moderne
  7. Pièces Essentielles du Tour : Fonctions et Vue d'Ensemble
  8. Comprendre les Tours : Histoire, Types et Applications
  9. Composants Clés d'une Fraiseuse Expliqués