... la prima cosa che ho voluto testare è stata l'occupazione dei binari.
Lo schema di riferimento è quello classico basato su ponte/fotoaccoppiatore
Lo schema, di massima è il seguente
Per evitare di costruire da zero il tutto, ho usato il circuito già assemblato di Daniele Pulcini (leggera sul forum).
Allegato:
Schermata 2020-02-08 alle 10.54.11.png [ 267.11 KiB | Osservato 9466 volte ]
Ci sono 8 porte pronte per altrettante tratte di binario da monitorare.
Lo schema di cablaggio è questo:
Allegato:
Schermata 2020-02-08 alle 10.55.47.png [ 160.04 KiB | Osservato 9466 volte ]
Nel mio caso ho collegato il tutto direttamente alle porte di arduino, pin a pin interponendo una resistenza di pull-up: avendo scelto un Arduino mega non avevo il problema di risparmiare porte di ingresso.
Allegato:
IMG_0201 800x600.jpeg [ 185.05 KiB | Osservato 9466 volte ]
Con una millefori ho predisposto le resistenze di pull-up
Allegato:
AE5E3A90-98FB-47C5-B9C6-8D267FB2ADD3 800x600.jpeg [ 115.86 KiB | Osservato 9466 volte ]
Collegati i pin ad Arduino, sono in grado di leggere lo stato di occupazione dei binari
Esempio di sketch:
void setup() {
//.....
// battezzo le uscite:
pinMode(tratta_DCC_1, INPUT);
pinMode(tratta_DCC_2, INPUT);
pinMode(tratta_DCC_3, INPUT);
pinMode(tratta_DCC_4, INPUT);
pinMode(tratta_DCC_5, INPUT);
pinMode(tratta_DCC_6, INPUT);
pinMode(tratta_DCC_7, INPUT);
pinMode(tratta_DCC_8, INPUT);
}
void loop() {
// ......
stato_DCC_1 = digitalRead(tratta_DCC_1);
stato_DCC_2 = digitalRead(tratta_DCC_2);
stato_DCC_3 = digitalRead(tratta_DCC_3);
stato_DCC_4 = digitalRead(tratta_DCC_4);
stato_DCC_5 = digitalRead(tratta_DCC_5);
stato_DCC_6 = digitalRead(tratta_DCC_6);
stato_DCC_7 = digitalRead(tratta_DCC_7);
stato_DCC_8 = digitalRead(tratta_DCC_8);
}
Il valore delle variabili rappresenta lo stato di occupazione. Sapendo dove sono i treni, si posso immaginare 1000 automatismi per gestire segnali, deviatoi, e quello che interessava a me: il sinottico