Taula de continguts:
- Pas 1: Codi Arduino: estació de comandament amb teclat
- Pas 2: Codi Arduino: pantalla TFT
- Pas 3: controlador de participació
Vídeo: Model Railway - DCC Command Station utilitzant Arduino :: 3 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
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.
Recomanat:
DIY LED Array (utilitzant Arduino): 7 passos
DIY LED Array (utilitzant Arduino): INTRO: Alguna vegada heu volgut fer un projecte senzill que faci que els LED semblen moure's? No? Això és el que jo pensava. Bé, si alguna vegada heu volgut fer alguna cosa similar, esteu al lloc correcte
Programa Esp -01 utilitzant Arduino: 3 passos
Programa Esp -01 utilitzant Arduino: programar esp8266 és una mica bo perquè no té convertidor USB a ttl incorporat ni cap botó de restabliment
Programació d'un Arduino Utilitzant un altre Arduino per mostrar un text de desplaçament sense biblioteca: 5 passos
Programar un Arduino Utilitzant un altre Arduino per mostrar un text de desplaçament sense biblioteca: Sony Spresense o Arduino Uno no són tan cars i no requereixen molta energia. Tot i això, si el vostre projecte té una limitació de potència, espai o fins i tot pressupost, us recomanem que utilitzeu Arduino Pro Mini. A diferència d’Arduino Pro Micro, Arduino Pro Mi
ESP8266 Tutorial IOT NODEMCU BLYNK - Esp8266 IOT utilitzant Blunk i Arduino IDE - Control de LEDs a través d'Internet: 6 passos
ESP8266 Tutorial IOT NODEMCU BLYNK | Esp8266 IOT utilitzant Blunk i Arduino IDE | Control de LEDs per Internet: Hola nois, en aquest instructable aprendrem a utilitzar IOT amb el nostre ESP8266 o Nodemcu. Utilitzarem l’aplicació blynk per a això. Així, utilitzarem el nostre esp8266 / nodemcu per controlar els LEDs a través d’internet. Així, l’aplicació Blynk es connectarà al nostre esp8266 o Nodemcu
DIRECCIÓ I CONTROL DE VELOCITAT DEL MOTOR DE CC utilitzant LABVIEW (PWM) i ARDUINO: 5 passos
DIRECCIÓ I CONTROL DE LA VELOCITAT DEL MOTOR DE CC AMB LABVIEW (PWM) I ARDUINO: Hola, nois, primer, perdoneu el meu divertit anglès. En aquest instructiu us mostraré com controlar la velocitat d’un motor de corrent continu mitjançant labview