Taula de continguts:
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-13 06:57
Actualitzat a l'agost de 2018: consulteu la nova instrucció:
Actualització 28 d'abril de 2016: ara hi ha 16 punts de participació / capacitat de control de punts a Command Station. Les participacions T1 - T8 estan disponibles mitjançant la tecla "B" Les participacions T9 - T16 estan disponibles mitjançant la tecla "C"
Actualització del 10 de març de 2016:
Ara s'ha afegit la capacitat de control de 8 punts de participació a la Command Station. El codi Arduino s’ha actualitzat en conseqüència mitjançant el paquet estàndard NMRA per a participacions (també basat en un estudi de paquets de dades Lenz / Atlas Compact per al control de participació).
Les participacions T1 - T8 estan disponibles mitjançant la tecla "B"
Vegeu informació sobre el circuit de receptors de paquets de dades utilitzat i el codi Arduino necessari.
Actualització 18 de gener de 2016:
He afegit una resistència de detecció de corrent (1k5 ohm) i un condensador (10 uf) al circuit i he modificat el codi Arduino per tallar l'alimentació quan es detecta un corrent màxim de> 3200 mAmps. Les especificacions del pont H indiquen un corrent de sortida de 377 uA per 1 Amp a la càrrega.
La resistència d'1,5 k ohmis proporcionarà 0,565 volts per amperi al pin analògic 6. Amb 1023 passos a l'entrada analògica, això proporciona 0,565 * 1023/5 = 116 per càrrega d'amper.
A = 100 * (analogRead (AN_CURRENT)) / 116; A = A * 10; (per donar resultat en miliamperis)
El corrent de càrrega en miliamperis es mostra al TFT
El teclat 4x4 complet inclou funcions de F1 a F8 i altres 10 locomotores (1-19) mitjançant la tecla '#' (per afegir 10 a les tecles numèriques a partir de la locomotora 10).
El codi arduino inclou l'estàndard NMRA per als bytes d'instrucció.
Veure enllaç
www.nmra.org/sites/default/files/s-9.2.1_20…
(la pàgina 6 té una rellevància especial)
Els paquets es disposen segons el nombre de passos de velocitat, l'adreça llarga / curta i les instruccions del grup de funcions.
Tots els bytes d'instruccions van precedits d'un preàmbul de bits '1' 11111111 (o paquet inactiu) seguit de;
per exemple. Una adreça de 4 bytes 0 00000011 0 00111111 0 10000011 0 10111111
equival a loco 3, 128 passos de velocitat, direcció cap endavant i pas 3 de velocitat (el byte final és la comprovació d'errors XOR)
per exemple, una adreça de 3 bytes 0 00000011 0 10010000 0 10110011
equival a loco 3, grup de funcions 1, llums FL activats més byte XOR (un bit '0' separa cada byte)
Vegeu el vídeo de demostració adjunt del loco 12.
Les funcions F1 - F8 estan disponibles mitjançant la tecla "A", la tecla DIR (tecla "*" = direcció) FL (la tecla "0" = llums) i la tecla "#" dóna locos de 10 a 19 al teclat numèric. La tecla "D" ara s'utilitza per a una "parada d'emergència".
Gràcies a diversos proveïdors del web per obtenir fonts d'informació DCC i codi Arduino.
En particular, aquest projecte es va inspirar en Michael Blank i el seu "Simple DCC - a command station"
www.oscale.net/en/simpledcc
Teclat de commutació de membrana de 4 tecles Matrix Array 16 (ebay) 1,75 €
Mòdul de pantalla LCD SPI TFT de 2,2 polzades 240x320 (ebay) 7,19 €
ADAPTADOR DE CA D'ALIMENTACIÓ 12V 5A 60W UNIVERSAL (ebay) 6,49 €
Nano V3.0 per a Arduino amb ATmega328P compatible amb CH340G 5V 16M (ebay) 2 x 3,30 £ = 6,60 £
Mòdul de controlador de motor LMD18200T per a Arduino R3 (ebay) 6,99 €
Connectors, filferro, placa vera, potenciòmetre aproximadament 3,50 £
Total 32,52 GBP
L'estació de comandament bàsica sense pantalla tft i 1 x nano seria de 22,03 £
[Nota: és possible afegir una targeta de memòria a la pantalla TFT i modificar el codi per mostrar les imatges dels motors seleccionats, tot i que els codis de la biblioteca s'han d'editar per crear més memòria per a l'esbós. La mida actual de l’esbós és màxima per al TFT Arduino Nano]
El codi original d'Arduino de Michael Blank era per a un motor, només endavant / enrere, sense control de funcions, teclat ni pantalla.
He modificat el codi per incloure motors 1-19, pantalla de pantalla, direcció, llums, 8 funcions, parada d'emergència i límit de corrent automàtic.
El pont LMD18200T pot transportar fins a 3 amperes, cosa que el fa adequat per a totes les escales, incloses les escales G (trens de jardí). La font d'alimentació i l'electrònica són adequats només per a ús a l'interior, tret que pugueu fer-ho a prova de temps. Tinc l’estació de comandament a la casa d’estiu amb cables de connexió de ferrocarril que passen per la paret fins a la via.
Pas 1: Codi Arduino: estació de comandament amb teclat
El meu agraïment a tvantenna2759 per assenyalar 2 errors al diagrama del circuit on el codi Arduino no coincidia amb el cablejat, actualitzat ara (21 d'octubre de 2017).
Ara s’han afegit 16 participacions a Command Station. Consulteu el diagrama del circuit de punts de participació / instruccions mitjançant el mòdul Arduino Mini Pro.
A continuació s’adjunta el codi modificat que inclou el control de participació.
El paquet de descodificador d'accessoris bàsics és: 0 10AAAAAA 0 1AAACDDD 0 EEEEEEEE 1 D'analitzar el paquet utilitzat per Lenz (Compact / Atlas) per al control de punts, he utilitzat el següent format de paquet binari per als bytes 1 i 2: tunAddr = 1 Participació 1a: 1000 0001 1111 1000 / Participació 1b: 1000 0001 1111 1001 Participació 2a: 1000 0001 1111 1010 / Participació 2b: 1000 0001 1111 1011 Participació 3a: 1000 0001 1111 1100 / Participació 3b: 1000 0001 1111 1101 Participació 4a: 1000 0001 1111 1110 / Participació 4b: 1000 0001 1111 1111 tunAddr = 2 ----------------------------------------- -------------------------------------------------- ----------------- Participació 5a: 1000 0010 1111 1000 / Participació 5b: 1000 0010 1111 1001 Participació 6a: 1000 0010 1111 1010 / Participació 6b: 1000 0010 1111 1011 Participació 7a: 1000 0010 1111 1100 / Participació 7b: 1000 0010 1111 1101 Participació 8a: 1000 0010 1111 1110 / Participació 8b: 1000 0010 1111 1111 ----------------------- -------------------------------------------------- ---------------------------------- Participació 9a: 1000 0011 1111 1000 / Participació 9b: 1000 0011 1111 1001 etc ………
Extracte del codi modificat: afegiu 2 actualitzacions de missatges 'struct' mésvoid amend_tun1 (struct Message & x) {x.data [0] = 0x81; // descodificador d'accessoris 0x80 i adreça 1 x.data [1] = 0; }
void esmenar_tun2 (struct Missatge & x) {x.data [0] = 0x82; // descodificador d'accessoris 0x80 i adreça 2 x.data [1] = 0; }
Afegiu un buit nou per a les participacions: read_turnout boolean () {delay (20);
booleà canviat_t = fals; get_key ();
if (key_val> = 101 && key_val <= 404 && turn == 1) {
dades = 0xf8; // = binari 1111 1000
esmenar_tun1 (msg [1]);
}
if (key_val> = 505 && key_val <= 808 && turn == 1) {
dades = 0xf8; // = 1111 1000 binari
esmenar_tun2 (msg [1]);
}
if (key_val == 101 && turn == 1) {
if (tun1 == 1) {
dades | = 0; // t1a
canviat_t = cert;}
if (tun1 == 0) {
dades | = 0x01; // t1b
canviat_t = cert;}
}
if (key_val == 202 && turn == 1) {
if (tun2 == 1) {
dades | = 0x02; // t2a
canviat_t = cert;
}
if (tun2 == 0) {
dades | = 0x03; // t2b
canviat_t = cert; }
}
if (key_val == 303 && turn == 1) {
if (tun3 == 1) {
dades | = 0x04; // t3a
canviat_t = cert;
}
if (tun3 == 0) {
dades | = 0x05; // t3b
canviat_t = cert;}
}
if (key_val == 404 && turn == 1) {
if (tun4 == 1) {
dades | = 0x06; // t4a
canviat_t = cert;
}
if (tun4 == 0) {
dades | = 0x07; // f4b
canviat_t = cert;}
}
if (key_val == 505 && turn == 1) {
if (tun5 == 1) {
dades | = 0; // t5a
canviat_t = cert;
}
if (tun5 == 0) {
dades | = 0x01; // t5b
canviat_t = cert;}
}
etc ………………….
Pas 2: Codi Arduino: pantalla TFT
El circuit de visualització continua sent el mateix amb un codi modificat per mostrar l’estat de les 16 participacions. Nota: el codi de la biblioteca ocupa gairebé tota la memòria del codi d'esbós deixant poc espai per a les noves funcions. Si algú té un fitxer de biblioteca més eficient per al TFT utilitzat aquí, feu-me-ho saber.
Pas 3: controlador de participació
Consulteu instruccions sobre com configurar el controlador de participació / punts.
El circuit complet controla 16 punts i 15 accessoris com llums, sons, plat giratori, etc.