74HC595 avec des relais

Bonjour j'ai branché des relais derrière un 74HC595 sur un montage comme celui la :
http://www.oomlout.com/a/products/ardx/circ-05

Mais lorsque j'update ces derniers mes relais saute, dans le wiki , http://www.arduino.cc/en/Tutorial/ShiftOut
il rajoute un condensateur de 1uF sur le latch , ce dernier est t'il destiné a éviter ce genre de problème ?

@+

Il faut que tu précises "mes relais sautent",
A vérifier :
a) tu as vérifier avec des leds, ton programme fonctionne bien ?
b) à la sortie du 595 tu as des transistors ou drivers pour attaquer tes relais ?
c) ton alimentation est suffisante pour alimenter tous les relais en même temps ?

La capa de 1uF ne vas pas changer grand chose ...

A+ Teiva,


www.Zartronic.fr votre source Arduino en France
Distributeur officiel Arduino et DFRobot

Salut Teiva,

a) oui j'ai bien verifier que le programme fonctionne ( avant d'avoir placer les relais j'ai effectué les test avec des LED )

b) en sortie j'ai des P2N2222A

c) j'alimente la carte avec un transformateur 9V (Output DC 3-12V max 1.5A (9VA))

Sur la carte j'ai branché le shifRegister avec 3 relais ( un pour un transfo en 30VAC) un pour du 220V et le troisième pour le moment n'a aucune utilité, il y'a aussi un LCD et le tout est alimenté par le pin 5V de la carte.

?? a quoi sert le capa ??

Merci a toi de t'intéresser a mes problèmes de débutants :slight_smile:

@+

Si tu as un schéma à proposer on pourra t'aider un peu plus facilement...
Gozaki

www.laboelectronique.be

Oui comme le dis Gosaki : schéma et code de ton programme, car on a pas des boules de crystal :smiley:

A+ Teiva,


www.Zartronic.fr votre source Arduino en France
Distributeur officiel Arduino et DFRobot

D'ailleurs, des boules en cristal seront un peu gênant quand on marche, elles feront du bruit à chaque pas.

Korman

Montage classique :slight_smile:

pour le code ( simplifier ):

#include <DallasTemperature.h>
#include <OneWire.h>
#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <TimeAlarms.h>

LiquidCrystal lcd(12, 11, 6, 8, 5, 7);

//Pin Definitions
//The 74HC595 using a protocol called SPI (for more details http://www.arduino.cc/en/Tutorial/ShiftOut)
//Which has three pins
int data = 2;
int clock = 3;
int latch = 4;
//Used for single pin manipulation
int pinState = 0;
const int ON = HIGH;
const int OFF = LOW;

int state[8];

void setup() {

pinMode(data, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);

Serial.begin(9600);
state[3] = ON;
}

void loop() {
for(int i = 0; i < 8; i++){
if(state == ON){

  • changePin(i,ON);*
  • }*
  • else{*
  • changePin(i,OFF);*
  • }*
  • }*
    }
    void updatePins(int value){
  • digitalWrite(latch, LOW); //Pulls the chips latch low*
  • shiftOut(data, clock, MSBFIRST, value); //Shifts out the 8 bits to the shift register*
  • digitalWrite(latch, HIGH); //Pulls the latch high displaying the data*
    }
    int bits[] = {
  • B00000001, B00000010, B00000100, B00001000, B00010000, B00100000, B01000000, B10000000};*
    int masks[] = {
  • B11111110, B11111101, B11111011, B11110111, B11101111, B11011111, B10111111, B01111111};*
    void changePin(int pin, int state){
  • pinState = pinState & masks[pin]; //clears ledState of the bit we are addressing*
  • if(state == ON){*
  • pinState = pinState | bits[pin];*
  • } //if the bit is on we will add it to ledState*
  • updatePins(pinState); //send the new LED state to the shift register*
    }
    void startPump(){
  • state[2] = ON;*
    }
    void stopPump(){
  • state[2] = OFF;*
    }
    void startLight(){
  • state[3] = ON;*
    }
    void stopLight(){
  • state[3] = OFF;*
    }
    [/quote]
    j'ai juste récupérer le code de oomlout , j'i rajouté un tableau pour définir les états des différentes sorties.
    :slight_smile: Merci a vous

Pour le schéma, faudrait une boule de cristal avec option agrandissement... ::slight_smile: Et au fait, c'est quoi le soft utilisé pour faire tes beaux schémas ?

Gozaki

www.laboelectronique.be

Le logiciel c'est Fritzing :slight_smile:

pour l'export du jpeg désolé j'avais pas vue que c'étais si petit ...
http://picasaweb.google.com/lh/photo/G9KiifgDkzg7Ulp67Rw7uA?feat=directlink

Mais le montage et vraiment simple !

En sortie (0) du 74HC595 j'ai une résistance de 2.2K qui vas a la bas d'un transistor P2N222AG l'emitter de ce dernier part au gnd de la carte et le collector vers le coil du relais.

Les schémas suivants représente mon montage
http://www.oomlout.com/a/products/ardx/circ-05
http://www.oomlout.com/a/products/ardx/circ-11

Mon projet est destiné a contrôler un jardin d'intérieur.
Comme je souhaite brancher un LCD je manque de port pour contrôler mes relais d'ou l'usage d'un 74HC595, car normalement je dois contrôler une lampe, une pompe, un brumisateur à ultra son, un chauffage pour l'eau , un intracteur, un extracteur, une vanne pour l'injection de CO2, un chaufage pour l'air ...
Le projet dispose donc de plusieurs sondes ... et un DS1307
Pour l'alimentation de la carte j'utilise un petit transfo en 9V.

Voila je crois que j'ai donné tout les détails de mon montage.

@+
:wink:

c'est quoi comme relais ?

Gozaki

www.laboelectronique.be

un NCR Nro04-CO5DT 3A 30VDC ou 2A 120AC ( je l'utilise pour le 30V en AC ) resistance de 167Ohm
et l'autre je sais pas vraiment mais il prend 1A en 220V AC (livré dans un kit d'évaluation ) .

si je branche tout sans passer par le shiftRegister il ne sautent pas ...

@+

Est-tu sûr que tu n'as pas besoin d'un petit transistor pour piloter ton relais? Et un p'tite diode de protection?

En cas que ça te confuse, vas voir ici: http://www.instructables.com/id/Connecting-a-12V-Relay-to-Arduino/

Korman

oui il y'a un transistor P2N222AG et une diode !
comme dans le montage suivant : http://www.oomlout.com/a/products/ardx/circ-11

mon montage est visible a cette adresse http://picasaweb.google.com/lh/photo/G9KiifgDkzg7Ulp67Rw7uA?feat=directlink

@+

qu'est ce que tu veux dire par mon relais saute ? il crame ?

Gozaki

www.laboelectronique.be

non non lors de l'update des bits du shiftRegister il s'éteint et se rallume ....

@+

Ce type de désagréments arrivent quand la pin STB (ou Latch, ou OE ... ) est active.

Dans le datasheet:

OE: output enable (active LOW)

Essaye en modifiant la fonction updatePins comme suit:

void updatePins(int value){
  digitalWrite(latch, HIGH);     //Pulls the chips latch hight
  shiftOut(data, clock, MSBFIRST, value); //Shifts out the 8 bits to the shift register
  digitalWrite(latch, LOW);   //Pulls the latch low displaying the data
}

Hi Goabonga,
a) on voit rien sur ton schéma, mais il n'a pas l'air de correspondre à ton programme :
Ton code (avec doc)

int data = 2; // Arduino2 => 595 PIN 14      DS      Serial data input 
int clock = 3; // Arduino3 => 595 PIN 11      SH_CP      Shift register clock pin 
int latch = 4; // Arduino4 => 595 PIN 12      ST_CP      Storage register clock pin (latch pin) 
// 595 Reset PIN 10 ->+5V      MR      Master Reclear, active low 
// 595 PIN 13 ->GND     OE      Output enable, active low

Sur ton schéma on a l'impression que c'est 8, 11 12
A vérifier :
sur 595 Pin 10 au +5V
sur 595 Pin 13 à la masse GND

Je suis pas d'accord avec erlik, on pilote pas le OE, (qui passe le circuit en tri-state).

J'ai vérifié ton programme, il fonctionne bien.
Si malgré tout tu as des sautes d'humeur de relais, c'est donc un problème électrique.

Met des temporisations dans tes différents loop, mais l'exemple que tu as mis, il n'y a que la sortie 3 active.

A+ Teiva,


www.Zartronic.fr votre source Arduino en France
Distributeur officiel Arduino et DFRobot