Wasmachinetimer
Componenten en benodigdheden
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 2 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Benodigde gereedschappen en machines
![]() |
| |||
![]() |
| |||
![]() |
| |||
![]() |
|
Apps en online services
![]() |
|
Over dit project
Inleiding
Dit is een vervangend onderdeel voor de wasmachine die ik heb met een kapotte wastimer. De originele timer was een mechanische timer/richtingschakelaar, die de motor van de wastobbe op de volgende manier kan regelen:
- Neem x minuten input van de wastijd van de gebruiker
- Draai de motor van de wastobbe enkele seconden met de klok mee
- Stop de motor enkele seconden
- Draai de motor van de wastobbe enkele seconden tegen de klok in
- Stop de motor enkele seconden
- Blijf de laatste 4 stappen doen totdat de wastimer afloopt
Ik ga een elektronische timer bouwen die dezelfde bewerking kan uitvoeren.
Demo
De volgende video demonstreert de werking van deze elektronische timer:
Hardware
- Arduino Pro Mini: Voert code uit en controleert alles
- 1306 OLED: Toon gebruikersinstructie en timer aftellen
- Rood/Zwarte Drukknop: Timer instellen en timer starten
- 5V relaismodules: Lever wisselstroom aan motor en stuurrichting
- 5V-adapter: Zet de elektronische timer aan
1306 OLED wordt als volgt direct op de pro mini gesoldeerd:

2 relaismodule, 2 drukknoppen, Arduino Pro Mini + 1306 OLED is aangesloten op een protoboard zoals dit -


Programmeren
Stap 1: Koop een HC-05 Bluetooth-seriële module en verander de baudrate naar 57600 volgens deze tutorial of deze stap. Om deze stap uit te voeren is een andere Arduino Uno of een USB-naar-serieel-module vereist.
Gebruik de volgende AT-commando's
AT
AT+UART =57600,0,0
AT+RESET
Stap 2: Nadat de baudrate is gewijzigd in 57600, sluit u de HC-05 aan op Arduino pro mini volgens het volgende bedradingsschema

Stap 3: Selecteer bord van Arduino IDE, plak de code en klik op uploaden.

Ik gebruik Bluetooth-serieel, omdat het draadloze programmeerbare mogelijkheden in het systeemveld mogelijk maakt, wat hielp bij het bijwerken van de code op pro mini indien nodig.
Bedrading en apparaatbediening uitgelegd
Bedrading kan variëren voor nieuwere/verschillende wasmachinemodellen, dus ik ga het uitleggen over mijn exemplaar. Let op het "Scherpe" diagram in de rechterbenedenhoek, één WITTE DRAAD komt uit het lichtnet en gaat naar de wastimer, één RODE DRAAD en één BLAUWE DRAAD komt uit de wastimer. Ik heb deze 3 draden losgekoppeld van de originele (defecte) wastimer en naar buiten gebracht door een gat aan de bovenkant van de wasmachine.


Wanneer WHITE WIRE wordt omgeschakeld naar de RED WIRE-motor, draait deze met de klok mee en wanneer WHITE WIRE wordt overgeschakeld naar de BLUE WIRE-motor, draait deze tegen de klok in.
Deze elektronische timer gemaakt met Arduino pro mini houdt de wastijd bij, draait de motor van de wastobbe gedurende 5 seconden in één richting door WITTE en RODE draden via één relaiscontact te verbinden. Daarna zal de motor stoppen en 5 seconden wachten. Daarna zal het de motor van de waskuip 5 seconden in de andere richting draaien door de WITTE en BLAUWE draden door het andere relaiscontact te verbinden. Daarna stopt het en wacht nog 5 seconden. Al deze timingsequenties kunnen indien nodig vanuit de code worden gewijzigd.
Het volgende diagram laat zien hoe de richting van de AC-motor kan worden veranderd door simpelweg het binnenkomende AC-net naar het ene been of het andere been van de condensator van de motor te draaien.

Eenfasige inductiemotortheorie
Referenties
U kunt meer in detail over elk onderdeel leren in deze tutorials:
- Relay-tutorial
- Knop-zelfstudie
Disclaimer!
Dit project betreft netvoeding, doe dit op eigen risico !
Code
- Naamloos bestand
Naamloos bestandC/C++
#include "U8glib.h"//SSD1306 oled waveshare(clk,din,cs,d/c,res);U8GLIB_SSD1306_128X64 u8g(A4,A5,12,11,10);vluchtig int rbc =0;vluchtig int bbc =0; int sec =0; int mi =0; int motor_rotation =0; ongeldige setup(){ u8g.setRot180(); analogeReferentie (INTERN); pinMode (2,INPUT_PULLUP); pinMode(3,INPUT_PULLUP); attachInterrupt (0, ISR_SW_RED, FALLING); attachInterrupt(1, ISR_SW_BLACK,FALLING); pinMode (5, UITGANG); digitalWrite (5, LAAG); pinMode (4, UITGANG); digitalWrite(4,LOW);}void loop(void) { while(!rbc) { // show timer set menu u8g.firstPage(); doe { draw_menu(); } while( u8g.nextPage() ); // toon de juiste werking van de gebruiker als (rbc>0 &&bbc==0) { u8g.firstPage(); doe { draw_message(); } while( u8g.nextPage() ); vertraging (2000); rbc=0; //u8g.clear(); } } // 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(); doe { draw_timer(); } while( u8g.nextPage() ); } sec=sec-1; if(sec%5==0) { control_motor(); // bel elke 5 sec } if (sec <=0) { sec =59; mi =mi - 1; } } rbc =0; BBC =0; mi =0; seconden =0; digitalWrite(5,LAAG);digitalWrite(6,LAAG); } }// einde van 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," 'WASTIMER'"); u8g.setFont(u8g_font_5x8); u8g.drawStr( 0,47,"Rood:START Zwart:SET TIJD"); }void draw_message(void){ u8g.setFont(u8g_font_8x13); u8g.drawStr( 0,10," WASTIMER INSTELLEN"); u8g.drawStr( 0,23,"EERST DOOR TE DRUKKEN"); u8g.drawStr( 0,36,"DE ZWARTE KNOP"); // u8g.setFont(u8g_font_8x13); u8g.drawStr( 0,62," 'WASTIMER'"); u8g.setFont(u8g_font_5x8); u8g.drawStr( 0,47,"Rood:START Zwart:SET TIJD"); }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," WASMOTOR CW Spin"); digitalWrite (5, HOOG); } if(motor_rotation==1) { u8g.setFont(u8g_font_5x8); u8g.drawStr( 0,47," WASMOTOR GESTOPT "); digitalWrite(5,LAAG);digitalWrite(4,LAAG); } if(motor_rotation==2) { u8g.setFont(u8g_font_5x8); u8g.drawStr( 0,47," WASMOTOR CCW Spin"); digitalWrite(4,HOOG); } if(motor_rotation==3) { u8g.setFont(u8g_font_5x8); u8g.drawStr( 0,47," WASMOTOR GESTOPT "); digitalWrite(5,LAAG);digitalWrite(4,LAAG); } u8g.setFont(u8g_font_8x13); u8g.drawStr( 0,62," 'WASTIMER'"); }nietig 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; }}
Schema's


Productieproces