Presentazione progetto e primi dubbi

Ciao a tutti... Dopo ormai due mesi di stop forzato mi sono rimesso all'opera con il mio progetto, che non ho per nulla abbandonato.
Ho praticamente completato la parte meccanica ed estetica, ottenendo fra l'altro un discreto risultato, e mi sono attivato per produrre gli ultimi circuiti che mi erano rimasti in sospeso.

Ora sono finalmente arrivato alle fasi di montaggio e test dei circuiti, ed ho iniziato con la parte relativa allo switching con relay. Si tratta di una scheda che comprende una catena di relay, collegati a due ULN2003, a loro volta pilotati da un expander MCP23S17. Le alimentazioni arrivano da alcuni modulini switching della Recom, pensati apposta per sostituire i classici 78xx.

Ho appena finito di fare i primi test, modificando il programma di esempio della libreria MCP23S17.h in modo da testare il mio circuito. Ho semplicemente scritto un programma che, dopo aver inizializzato tutte le porte dell'expander come output, esegue due cicli che impostano prima ciascuna porta a "HIGH", poi a "LOW". Riporto il codice:

#include <SPI.h> 
#include <MCP23S17.h>

MCP switcher(0);

void setup() {
  pinMode(53, OUTPUT);
  digitalWrite(53,LOW);
  switcher.pinMode(0B00000000000000);
}

void loop() {
  int i;
  for (i=1; i<=16; i++) {
    switcher.digitalWrite(i, HIGH);
    delay(500);
  }
  delay(1000);
  for (i=1; i<=16; i++) {
    switcher.digitalWrite(i, LOW);
    delay(500);
  }
  delay(1000);
}

Ho però due problemi nel funzionamento:

  • primo, ho un comportamento del tutto "random", nel senso che fa qualhe ciclo e si blocca, oppure accendo ma non esegue nessun ciclo, o comportamenti simili.
  • secondo, anche nel caso in cui il ciclo parte, non riesco a far scattare tutti i relay. In alcuni sento il rumore della bobina che tenta di muoversi (così sembra) ma non fa lo scatto. Ho verificato i collegamenti e sembrerebbe tutto in ordine, anche perchè sono tutti collegati nello stesso modo all'expander, sia quelli che già funzionano sia gli altri
    Avete qualche idea a riguardo? Purtroppo non ho molta esperienza, sia per quanto riguarda la programmazione con Arduino, sia per il debug.

Nel frattempo allego qualche foto (di scarsissima qualità ma in questo momento non riesco a fare di meglio) dell'avanzamento dei lavori, compresa la scheda che sto testando.

Grazie!