Code Monkey home page Code Monkey logo

Comments (23)

costas233 avatar costas233 commented on August 17, 2024

Relays :

Relay #1 Verrou porte
Com : 6E
NO : 5E (Verrou electrique)
NC : STOP light

Relay #2 Vanne froid
Com : Com Relay#3, #10 et #11 (hydrostat)
NO : 4E (electrovanne froid)
NC : -

Relay #3 vanne chaud
Com : Comme relay #2, #10 et #11 (hydrostat)
NO : 3D
NC : -

Relay #4 Chauffe
Com : 6E
NO : 12C (résistance chauffante)
NC : -

Relay #5 Vidange
Com : 6E
NO : 11C (pompe de vidange)
NC : -

Relay #6 Marche moteur
Com : 6E
NO : com relay #7 (Inversion moteur)
NC : -

Relay #7 Inversion moteur
Com : NO Relay #6
NO : 6D et com Relay #8 (vitesse lavage)
NC : 2E

Relay #8 Vitesse lavage ! couplé avec relay #9 (toujours dans le même état que relay #9)
Com : NO relay #6
NO : 2C (= moteur fil bleu/blanc, pin 3)
NC : 2D (= moteur fil rouge , pin 6)

Relay #9 Vitesse essorage ! couplé avec relay #8 (toujours dans le même état que relay #8)
Com : NO relay #6
NO : 6C (= moteur fil jaune, pin 2)
NC : 4D (= moteur fil bleu , pin 5)

! Avant de changer l'état des relais #7 #8 et #9 le moteur doit être arreté (relais #6 sur NC). Les deux relais #7 et #8 doivent changer d'état simultanément pour passe du mode vitesse lavage au mode vitesse essorage.

Relay #10 Niveau d'eau A. Ce relais fontionne à l'envers. (2 entrées une sortie)
Com : Com relay #2 et #3 (electrovannes)
NO : 8C Hydrostat A
NC : 7C Hydrostat A

Relay #11 Niveau d'eau B (extra wasser) Ce relais fontionne à l'envers. (2 entrées une sortie)
Com : Com relay #2 et #3 (electrovannes)
NO : 8C Hydrostat B
NC : 7C Hydrostat B

Relay #12 nc
Relay #13 nc
Relay #14 nc
Relay #15 nc
Relay #16 nc

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

6E = phase 240V
9E, 10D, 12E, 11E, 11C, 10C = neutre 240V

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

/////////////////////////////////////////////
// KostasWash v1.11 //
// --------------- //
// Target CPU : Atmega8535 at 8MHz (int.) //
/////////////////////////////////////////////

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include "TIMER.h"
#include "LCD.h"

//-----------------------------------------------------------------------------------
// WIRING
//-----------------------------------------------------------------------------------
// Human Interface
//-----------------------------------------------------------------------------------
// Encoder:
// PD2 : Switch
// PD3 : Clock
// PD4 : Data
// LCD Display
// PD7 : LCD_EN
// PB0 : LCD_RS
// PB3 : LCD_DB4
// PB2 : LCD_DB5
// PD6 : LCD_DB6
// PD5 : LCD_DB7
//-----------------------------------------------------------------------------------
// Washing machine
//-----------------------------------------------------------------------------------
// PA1 : Relay R01 Verrou porte Com : 6E NO : 5E (Verrou electrique) NC : STOP light
// PA0 : Relay R02 Vanne froid Com : Com Relay#3#10#11 (hydrostat)NO : 4E (electrovanne froid) NC : -
// PA3 : Relay R03 vanne chaud Com : Comme relay #2, #10 et #11 (hydrostat) NO : 3D NC : -
// PA2 : Relay R04 Chauffe Com : 6EChauffe Com : 6E NO : 12C (résistance chauffante)
// PA5 : Relay R05 Vidange Com : 6E NO : 11C (pompe de vidange)NC : -
// PA4 : Relay R06 Marche moteur Com : 6E NO : com relay #7 (Inversion moteur)NC : -
// PA7 : Relay R07 Inversion moteur Com : NO Relay #6 NO : 6D et com Relay #8 (vitesse lavage) NC : 2E
// PA6 : Relay R08 Vitesse lavage Com : NO relay #6NO : 2C NC : 2D
// PC7 : Relay R09 Vitesse essorage Com : NO relay #6 NO : 6C NC : 4D
// PC3 : Relay R10 Niveau d'eau A Com : Com relay #2 et #3 (electrovannes)NO : 8C NC : 7C Hydrostat A
// PC6 : Relay R11 Niveau d'eau B Com : Com relay #2 et #3 (electrovannes)NO : 8C NC : 7C Hydrostat B
// PC2 : Relay R12 nc
// PC5 : Relay R13 nc
// PC1 : Relay R14 nc
// PC4 : Relay R15 nc
// PC0 : Relay R16 nc
//-----------------------------------------------------------------------------------

#define false 0
#define true (!0)
#define off 0
#define on 1

// Shared Enumerations
// -------------------
enum SwitchStatus
{
NO_PRESS,
SHORT_PRESS,
LONG_PRESS
};
enum MenuStatus
{
WAIT_MENU,
PROGRAM_MENU,
DELAY_MENU,
EXIT_MENU
};
enum WashStatus
{
NO_WASH,
PRE_WASH,
MAIN_WASH,
RINCE,
DRY,
END_WASH
};
enum RotationStatus
{
NO_ROTATION,
RUN1_ROTATION,
PAUSE1_ROTATION,
RUN2_ROTATION,
PAUSE2_ROTATION
};

// Shared Variables
// ----------------
// System variables
volatile uint8_t SwitchPressed = NO_PRESS;
volatile uint8_t EncoderChanged = false;
volatile uint8_t EncoderCount = 0;
// Program Variables : Menus
volatile uint8_t MenuState = WAIT_MENU;
// Program Variables : Washing
volatile uint8_t WashState = NO_WASH;
// Program Variables : Rotation (during Washing)
volatile uint8_t RotationState = NO_ROTATION;

// Macros for Encoder
// ------------------
#define SWITCH (PIND & _BV(PIND2))
#define ENCODER_A (PIND & _BV(PIND3))
#define ENCODER_B (PIND & _BV(PIND4))

// Macros for Relays
// ---------------
#define RELAY01_ON() PORTA |= _BV(PINA1)
#define RELAY01_OFF() PORTA &= ~_BV(PINA1)
#define RELAY02_ON() PORTA |= _BV(PINA0)
#define RELAY02_OFF() PORTA &= ~_BV(PINA0)
#define RELAY03_ON() PORTA |= _BV(PINA3)
#define RELAY03_OFF() PORTA &= ~_BV(PINA3)
#define RELAY04_ON() PORTA |= _BV(PINA2)
#define RELAY04_OFF() PORTA &= ~_BV(PINA2)
#define RELAY05_ON() PORTA |= _BV(PINA5)
#define RELAY05_OFF() PORTA &= ~_BV(PINA5)
#define RELAY06_ON() PORTA |= _BV(PINA4)
#define RELAY06_OFF() PORTA &= ~_BV(PINA4)
#define RELAY07_ON() PORTA |= _BV(PINA7)
#define RELAY07_OFF() PORTA &= ~_BV(PINA7)
#define RELAY08_ON() PORTA |= _BV(PINA6)
#define RELAY08_OFF() PORTA &= ~_BV(PINA6)
#define RELAY09_ON() PORTC |= _BV(PINC7)
#define RELAY09_OFF() PORTC &= ~_BV(PINC7)
#define RELAY10_ON() PORTC |= _BV(PINC3)
#define RELAY10_OFF() PORTC &= ~_BV(PINC3)
#define RELAY11_ON() PORTC |= _BV(PINC6)
#define RELAY11_OFF() PORTC &= ~_BV(PINC6)
#define RELAY12_ON() PORTC |= _BV(PINC2)
#define RELAY12_OFF() PORTC &= ~_BV(PINC2)
#define RELAY13_ON() PORTC |= _BV(PINC5)
#define RELAY13_OFF() PORTC &= ~_BV(PINC5)
#define RELAY14_ON() PORTC |= _BV(PINC1)
#define RELAY14_OFF() PORTC &= ~_BV(PINC1)
#define RELAY15_ON() PORTC |= _BV(PINC4)
#define RELAY15_OFF() PORTC &= ~_BV(PINC4)
#define RELAY16_ON() PORTC |= _BV(PINC0)
#define RELAY16_OFF() PORTC &= ~_BV(PINC0)

from kostaswash.

emaschas avatar emaschas commented on August 17, 2024

Ben maitenant faut leur donner des petits noms en majuscule et faire les macros du style VALVE_OPEN et VALVE_CLOSE...
Pour cela tu as juste a renommer les macros RELAYxx_ON et OFF.

from kostaswash.

emaschas avatar emaschas commented on August 17, 2024

J'ai relu les affectations...
Est-ce qu'on a besoin de garder le montage en cascade de certains relais ?
On pourrait simplifier et retranscrire le fonctionnement en logiciel...

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

from kostaswash.

emaschas avatar emaschas commented on August 17, 2024

En fait ce que tu as fait, c'est bon.
Ça correspond à peu près au schéma que j'ai fait pour le nouveau câblage (au numéros des relais près et aussi qu'il y a trois niveaux (bas, moyen et haut) et non pas deux.
Du coup ça donnerai :

  • R01 : Verrou porte
  • R02 et R03 : Niveau d'eau (00 = Bas, 10 = Moyen, 01 ou 11= Haut)
  • R04 : Vanne froid
  • R05 : Deuxième vanne (pas sûr qu'elle existe vraiment et j'ai pas bien compris quoi elle sert)
  • R06 : Chauffage (résistance chauffante avec thermostat en série)
  • R07 : Pompe de Vidange
  • R08 : Marche moteur sens 1
  • R09 : Marche moteur sens 2
  • R10 et R11 : Sélection entre lavage et essorage
    Important : R10 et R11 doivent toujours être dans la même position pour la capacité !

Filia,
Manos.

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

/////////////////////////////////////////////
// KostasWash v1.11 //
// --------------- //
// Target CPU : Atmega8535 at 8MHz (int.) //
/////////////////////////////////////////////

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdio.h>
#include "TIMER.h"
#include "LCD.h"

//-----------------------------------------------------------------------------------
// WIRING
//-----------------------------------------------------------------------------------
// Human Interface
//-----------------------------------------------------------------------------------
// Encoder:
// PD2 : Switch
// PD3 : Clock
// PD4 : Data
// LCD Display
// PD7 : LCD_EN
// PB0 : LCD_RS
// PB3 : LCD_DB4
// PB2 : LCD_DB5
// PD6 : LCD_DB6
// PD5 : LCD_DB7
//-----------------------------------------------------------------------------------
// Washing machine
//-----------------------------------------------------------------------------------
// PA1 : Relay R01 Verrou porte Com : 6E NO : 5E (Verrou electrique) NC : STOP light
// PC2 : Relay R04 Niveau d'eau A Com : Com relay #2 et #3 (electrovannes)NO : 8C NC : 7C Hydrostat A
// PC3 : Relay R03 Niveau d'eau B Com : Com relay #2 et #3 (electrovannes)NO : 8C NC : 7C Hydrostat B
// PA2 : Relay R04 Vanne froid Com : Com Relay#3#10#11 (hydrostat)NO : 4E (electrovanne froid) NC : -
// PA5 : Relay R05 vanne chaud Com : Comme relay #2, #10 et #11 (hydrostat) NO : 3D NC : -
// PA4 : Relay R06 Chauffe Com : 6EChauffe Com : 6E NO : 12C (résistance chauffante)
// PA7 : Relay R07 Vidange Com : 6E NO : 11C (pompe de vidange)NC : -
// PA6 : Relay R08 Marche moteur Com : 6E NO : com relay #7 (Inversion moteur)NC : -
// PA7 : Relay R09 Vanne froid Com : Com Relay#3#10#11 (hydrostat)NO : 4E (electrovanne froid) NC : -
// PA3 : Relay R10 Inversion moteur Com : NO Relay #6 NO : 6D et com Relay #8 (vitesse lavage) NC : 2E
// PA6 : Relay R11 Vitesse lavage Com : NO relay #6NO : 2C NC : 2D
// PC7 : Relay R12 Vitesse essorage Com : NO relay #6 NO : 6C NC : 4D
// PC2 : Relay R12 Lampe témoin
// PC5 : Relay R13 nc
// PC1 : Relay R14 nc
// PC4 : Relay R15 nc
// PC0 : Relay R16 nc
//-----------------------------------------------------------------------------------

#define false 0
#define true (!0)
#define off 0
#define on 1

// Shared Enumerations
// -------------------
enum SwitchStatus
{
NO_PRESS,
SHORT_PRESS,
LONG_PRESS
};
enum MenuStatus
{
WAIT_MENU,
PROGRAM_MENU,
DELAY_MENU,
EXIT_MENU
};
enum WashStatus
{
NO_WASH,
PRE_WASH,
MAIN_WASH,
RINCE,
DRY,
END_WASH
};
enum RotationStatus
{
NO_ROTATION,
RUN1_ROTATION,
PAUSE1_ROTATION,
RUN2_ROTATION,
PAUSE2_ROTATION
};

// Shared Variables
// ----------------
// System variables
volatile uint8_t SwitchPressed = NO_PRESS;
volatile uint8_t EncoderChanged = false;
volatile uint8_t EncoderCount = 0;
// Program Variables : Menus
volatile uint8_t MenuState = WAIT_MENU;
// Program Variables : Washing
volatile uint8_t WashState = NO_WASH;
// Program Variables : Rotation (during Washing)
volatile uint8_t RotationState = NO_ROTATION;

// Macros for Encoder
// ------------------
#define SWITCH (PIND & _BV(PIND2))
#define ENCODER_A (PIND & _BV(PIND3))
#define ENCODER_B (PIND & _BV(PIND4))

// Macros for Relays
// ---------------
define DOOR_LOCK() PORTA |= _BV(PINA1)
define DOOR_UNLOCK() PORTA &= ~_BV(PINA1)
define WATER_LEVEL_1_LOW() PORTA |= _BV(PINA0)
define WATER_LEVEL_1_HIGH() PORTA &= ~_BV(PINA0)
define WATER_LEVEL_2_LOW() PORTA |= _BV(PINA3)
define WATER_LEVEL_2_HIGH() PORTA &= ~_BV(PINA3)
define VALVE_COLD_OPEN() PORTA |= _BV(PINA2)
define VALVE_COLD_CLOSE() PORTA &= ~_BV(PINA2)
define VALVE_HOT_OPEN() PORTA |= _BV(PINA5)
define VALVE_HOT_CLOSE() PORTA &= ~_BV(PINA5)
define HEAT_ON() PORTA |= _BV(PINA4)
define HEAT_OFF() PORTA &= ~_BV(PINA4)
define DRAIN_ON() PORTA |= _BV(PINA7)
define DRAIN_OFF() PORTA &= ~_BV(PINA7)
define MOTOR_ON() PORTA |= _BV(PINA6)
define MOTOR_OFF() PORTA &= ~_BV(PINA6)
define REVERSE_ON() PORTC |= _BV(PINC7)
define REVERSE_OFF() PORTC &= ~_BV(PINC7)
define SPINNING_1_ON() PORTC |= _BV(PINC3)
define SPINNING_1_OFF() PORTC &= ~_BV(PINC3)
define SPINNING_2_ON() PORTC |= _BV(PINC6)
define SPINNING_2_OFF() PORTC &= ~_BV(PINC6)
define LIGHT_ON() PORTC |= _BV(PINC2)
define LIGHT_OFF() PORTC &= ~_BV(PINC2)
#define RELAY13_ON() PORTC |= _BV(PINC5)
#define RELAY13_OFF() PORTC &= ~_BV(PINC5)
#define RELAY14_ON() PORTC |= _BV(PINC1)
#define RELAY14_OFF() PORTC &= ~_BV(PINC1)
#define RELAY15_ON() PORTC |= _BV(PINC4)
#define RELAY15_OFF() PORTC &= ~_BV(PINC4)
#define RELAY16_ON() PORTC |= _BV(PINC0)
#define RELAY16_OFF() PORTC &= ~_BV(PINC0)

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

from kostaswash.

emaschas avatar emaschas commented on August 17, 2024

Voir discussion sur le câblage.

from kostaswash.

emaschas avatar emaschas commented on August 17, 2024

D'après Costas :

Les pins du programmeur mécanique sont reliés entre eux comme suit (si le pin n'est pas listé il n'existe pas. S'il est tout seul, il n'est relié qu'a l'interrupteur) :

A1-E2-A7
B1-D6-A8
C1-D1
E1-C5
C2-B3
D2-B4
A3-C6
C3-A5-A9
D3
A4-D4
C4
D5-B9-C9-D9
B6-B7
E6-E7-D7
C7
B8-C8
D8
E9-A10-C10-D10
A11-B11
C11
D11
E11
A12-B12
C12
D12
E12

Dans la pratique seuls C D et E sont reliés à des câbles. A et B n'étaient reliés qu'au moteur du programmeur.

Les relais mécaniques sont brochés comme suit :
1ere série de relais (il y a un relais par lettre) :
Ligne 1 : com
Ligne 2 : out1
Ligne 3 : out2

2 série de relais :
Ligne 4 : com
Ligne 5 : out1
Ligne 6 : out2

3e série de relais :
Ligne 7 : com
Ligne 8 : out1
Ligne 9 : out2

4e série de relais :
Ligne 10 : com
Ligne 11 : out1
Ligne 12 : out2

Les relais A(9-10-11) et B(9-10-11) sont connectés en // et pilotent le moteur d'avancée du programmeur et sont donc sont les plus sollicités. Ils étaient cramés en dépit de la redondance.

from kostaswash.

emaschas avatar emaschas commented on August 17, 2024

C'est conforme au schéma sauf un point à vérifier : s'il n'y pas de liaisons :
D1-E1 (En fait : C1-D1-E1-C5)

Sinon, j'ai ajouté dans "Documents" un schéma où on trouve la correspondance entre les relais et les points de connexion.

Filia,
Manos.

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

En y réfléchissant c'est pas suffisant, on n'a pas la position neutre. il faudrait un 3e relais pour pouvoir couper à la fois la chauffe et l'admission d'eau chaude. Mais sur le paprier c'est possible. A étudier pour une version ultérieure.

from kostaswash.

emaschas avatar emaschas commented on August 17, 2024

Pas mal comme idée. Je vais y refléchir...
De toutes façons on a encore 5 relais disponibles...
Par contre on n'a pas de retour sur la température au niveau du micro-contrôleur.
Ou peut remplir en eau froide + eau chaude couplée au thermostat ce qui limite la température maximale, mais si l'eau est juste tiède on sera en dessous de la température souhaitée et il faudra compléter avec le chauffage.

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

from kostaswash.

emaschas avatar emaschas commented on August 17, 2024

J'ai pas trouvé de solution sans prendre le risque de faire un court-circuit si les relais ne sont pas actionnés ensemble.
Il faut faire attention avec la résistance chauffante : 2000 W ça fait 9 A, les relais supportent juste 10 A...

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

La solution, je pense, c'est d'inclure un fusible en série avec la resistance. Dans le cas ou un des relais colle (ou en cas de bug du programme) c'est le fusible qui saute.
Si les 10A sont trop justes, il y a la possibilité de coupler deux relais en // et de les déclencher le plus simultanément possible. Ca réduira la possibilité de création d'un arc electrique au moment de la rupture et ça baissera l'effet Joules dans les relais. On a assez de relais pour ça.

Au passage, le même risque existe avec l'inversion moteur qui demande l'opération simultanée de deux relais. Et un fusible ne serait pas un luxe là aussi.

from kostaswash.

emaschas avatar emaschas commented on August 17, 2024

Pour avoir un câblage sans risques, il faudrait séparer les câbles des deux électrovannes du côté du connecteur D10 (câble bleu).
Peux-tu regarder si c'est faisable sans massacrer le câblage actuel ?

Sinon, pour l'inversion moteur, je ne vois pas où est le risque depuis qu'on a mis un relais pour le sens (R09) et un autre pour marche/arrêt (R08) ?
Les seuls relais qui doivent être synchrones sont R10 et R11 pour basculer la capacité entre lavage et essorage. S'ils ne sont pas synchrones on ne fait pas un court circuit on aura juste un moteur qui tourne mal ou pas du tout...

from kostaswash.

costas233 avatar costas233 commented on August 17, 2024

C'est tres facile de recâbler les electrovannes, elles sont en haut, donc très accessibles. Il suffit de déconnecter les cosses de l'une d'elles et de tirer une nouvelle paire de câbles // au faiseau existant.
En fait c'est même sans doute plus facile que de passer par le connecteur 12 pins existant. Le seul souci est de ne pas inverser phase et neutre, et encore, je ne pense pas que ça pose un problème à la l'electrovanne.
Pour l'anecdote, j'ai appelé le magasin grec qui vendait le programmeur à 70€ : ça ne se fait plus. :-(
Sinon, j'ai trouvé des cosses standard sur l'ile. Y'a tout ce qu'il faut pour le cablage.

from kostaswash.

emaschas avatar emaschas commented on August 17, 2024

Dans ce cas il n'y a même pas besoin d'ajouter un relais...
Regarde la nouvelle version de NewWiring : j'ai mis le thermostat en commun sous la vanne d'eau chaude et sous le chauffage.
J'ai laissé la vanne d'eau froide sur D10.
Les électrovannes n'ont normalement pas de sens de branchement (courant alternatif).

from kostaswash.

Related Issues (6)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.