funzionamento relè

Problema da neofito..... accendo dei led attivando degli ingressi, sulla scheda di prova funziona tutto i led si accendono e si spengono, collego una scheda relè, i led continuano a funzionare mentre la metà dei relè non si eccitano, provo e riprovo ma su alcuni output digitali il relè non si eccita. misuro la tensione di uscita che risulta molto inferiore ai 5 volt (1,5-2,0) con livello alto. Ho provato con Arduino uno e Mega sempre stesso risultato.

const int cat_c1 = 1;
const int cat_c2 = 2;
const int cat_c3 = 3;
const int cat_c4 = 4;
const int bloc_c1 = 5;
const int bloc_c2 = 6;
const int bloc_c3 = 7;
const int bloc_c4 = 8;
const int sem_c1 = 9;
const int sem_c2 = 10;
const int sem_c3 = 11;
const int sem_c4 = 12;

void setup() {
  pinMode(bloc_c1, OUTPUT);
  pinMode(bloc_c2, OUTPUT);
  pinMode(bloc_c3, OUTPUT);
  pinMode(bloc_c4, OUTPUT);
  pinMode(sem_c1, OUTPUT);
  pinMode(sem_c2, OUTPUT);
  pinMode(sem_c3, OUTPUT);
  pinMode(sem_c4, OUTPUT);
  pinMode(cat_c1, INPUT);
  pinMode(cat_c2, INPUT);
  pinMode(cat_c3, INPUT);
  pinMode(cat_c4, INPUT);
  }
  
void loop() {
  int val_c1 = digitalRead(cat_c1);
  int val_c2 = digitalRead(cat_c2);
  int val_c3 = digitalRead(cat_c3);
  int val_c4 = digitalRead(cat_c4);
  if (val_c1 == HIGH)
  {
    digitalWrite(bloc_c2, HIGH);
    digitalWrite(sem_c2, HIGH);
  }
  else
  {
    digitalWrite(bloc_c2, LOW);
    digitalWrite(sem_c2, LOW);
  }
  if (val_c2 == HIGH)
  {
   digitalWrite(bloc_c1, HIGH);
    digitalWrite(bloc_c3, HIGH);
    digitalWrite(bloc_c4, HIGH);
    digitalWrite(sem_c1, HIGH);
    digitalWrite(sem_c3, HIGH);
    digitalWrite(sem_c4, HIGH);    
  }
  else
  {
    digitalWrite(bloc_c1, LOW);
    digitalWrite(bloc_c3, LOW);
    digitalWrite(bloc_c4, LOW);
    digitalWrite(sem_c1, LOW);
    digitalWrite(sem_c3, LOW);
    digitalWrite(sem_c4, LOW);
  } 
  
  if (val_c3 == HIGH)
  {
    digitalWrite(bloc_c2, HIGH);
    digitalWrite(bloc_c4, HIGH);
    digitalWrite(sem_c2, HIGH);
    digitalWrite(sem_c4, HIGH);    
  }
  else
  {
    digitalWrite(bloc_c2, LOW);
    digitalWrite(bloc_c4, LOW);
    digitalWrite(sem_c2, LOW);
    digitalWrite(sem_c4, LOW);
  }
  if (val_c4 == HIGH)
  {
    digitalWrite(bloc_c2, HIGH);
    digitalWrite(bloc_c3, HIGH);
    digitalWrite(sem_c2, HIGH);
    digitalWrite(sem_c3, HIGH);    
  }
  else
  {
    digitalWrite(bloc_c2, LOW);
    digitalWrite(bloc_c3, LOW);
    digitalWrite(sem_c2, LOW);
    digitalWrite(sem_c3, LOW);
  }
  }

(Penso di aver fatto un casino con il caricamento dello sketch) Dove ho sbagliato?

che relè stai adoperando e come li colleghi Leandro

Ho provato piu' di un tipo con alimentazione a 5 volt continui, i rele' funzionano perche' se li sposto su una uscita che funziona, si eccitano normalmente.

  1. il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento che spiega come fare. Altrimenti parte del codice può non essere visibile (interpretato come attributo del testo)

  2. Quanti sono i relè ? Come li hai collegati ? Soprattutto come li hai alimentati, da Arduino? Un pò di led Arduino riesce ad alimentarli, ma molti dispositivi di potenza no, richiedono tutti insieme troppa corrente (Ampere). Prova ad alimentare i relè a 5V con batteria (non da Arduino) con il GND in comune ad Arduino e vedi se così vanno.

il fatto che sono a 5v non vuol dire che arduino cé la faccia io ti consiglio di adoperare un transistor per comandare il i rele e come ti è stato detto alimentali da un altro alimentatore e metti i due gnd in comune (arduino e alimentatore)

scheda_3.pdf (408 KB)

sicuramente ho sbagliato a caricare il codice, ci riprovo. I rele sono 8 mini e la tensione e prelevata da arduino, comunque ho fatto la prova anche dando una alimentazione esterna ai rele. Il problema e che su alcune uscite stando con livello alto non escono piu' di 1,5-2 volt pertanto riescono a far accendere un led ma non a pilotare il rele

Questo e il codice:

const int cat_c1 = 1;
const int cat_c2 = 2;
const int cat_c3 = 3;
const int cat_c4 = 4;
const int bloc_c1 = 5;
const int bloc_c2 = 6;
const int bloc_c3 = 7;
const int bloc_c4 = 8;
const int sem_c1 = 9;
const int sem_c2 = 10;
const int sem_c3 = 11;
const int sem_c4 = 12;

void setup() {
  pinMode(bloc_c1, OUTPUT);
  pinMode(bloc_c2, OUTPUT);
  pinMode(bloc_c3, OUTPUT);
  pinMode(bloc_c4, OUTPUT);
  pinMode(sem_c1, OUTPUT);
  pinMode(sem_c2, OUTPUT);
  pinMode(sem_c3, OUTPUT);
  pinMode(sem_c4, OUTPUT);
  pinMode(cat_c1, INPUT);
  pinMode(cat_c2, INPUT);
  pinMode(cat_c3, INPUT);
  pinMode(cat_c4, INPUT);
  }
  
void loop() {
  int val_c1 = digitalRead(cat_c1);
  int val_c2 = digitalRead(cat_c2);
  int val_c3 = digitalRead(cat_c3);
  int val_c4 = digitalRead(cat_c4);
  if (val_c1 == HIGH)
  {
    digitalWrite(bloc_c2, HIGH);
    digitalWrite(sem_c2, HIGH);
  }
  else
  {
    digitalWrite(bloc_c2, LOW);
    digitalWrite(sem_c2, LOW);
  }
  if (val_c2 == HIGH)
  {
   digitalWrite(bloc_c1, HIGH);
    digitalWrite(bloc_c3, HIGH);
    digitalWrite(bloc_c4, HIGH);
    digitalWrite(sem_c1, HIGH);
    digitalWrite(sem_c3, HIGH);
    digitalWrite(sem_c4, HIGH);    
  }
  else
  {
    digitalWrite(bloc_c1, LOW);
    digitalWrite(bloc_c3, LOW);
    digitalWrite(bloc_c4, LOW);
    digitalWrite(sem_c1, LOW);
    digitalWrite(sem_c3, LOW);
    digitalWrite(sem_c4, LOW);
  } 
  
  if (val_c3 == HIGH)
  {
    digitalWrite(bloc_c2, HIGH);
    digitalWrite(bloc_c4, HIGH);
    digitalWrite(sem_c2, HIGH);
    digitalWrite(sem_c4, HIGH);    
  }
  else
  {
    digitalWrite(bloc_c2, LOW);
    digitalWrite(bloc_c4, LOW);
    digitalWrite(sem_c2, LOW);
    digitalWrite(sem_c4, LOW);
  }
  if (val_c4 == HIGH)
  {
    digitalWrite(bloc_c2, HIGH);
    digitalWrite(bloc_c3, HIGH);
    digitalWrite(sem_c2, HIGH);
    digitalWrite(sem_c3, HIGH);    
  }
  else
  {
    digitalWrite(bloc_c2, LOW);
    digitalWrite(bloc_c3, LOW);
    digitalWrite(sem_c2, LOW);
    digitalWrite(sem_c3, LOW);
  }
  }

Ci sono riuscito XD XD XD

Hai messo delle resistenze in serie ai LED? Ciao Uwe

Il comando dei rele viene eseguito tramite dei transistor pilota

Hai messo delle resistenze in serie ai LED? Ciao Uwe

uwefed: Hai messo delle resistenze in serie ai LED? Ciao Uwe

Sicuramente, il sistema con i led funziona e quando inserisco i rele che non riescono ad eccittarsi anche continuando a funzionare normelmente con i led.

Hai usato il pin 1 che è il TX0 della seriale: meglio non usare questo pin se vuoi che il Serial Monitor continui a funzionare.