Overview
About This Club
Le vostre autoproduzioni, i modelli, diorami, plastici, tutto quanto ruota intorno al modellismo "reale"
- What's new in this club
-
Visto dal vivo: è molto ben fatto e rende perfettamente la spartana semplicità dell'elettrificazione trifase. Alcuni punti contachiodistici sui rotabili: dubito che E431 ed E432 siano mai state in Val Chiavenna: che io sappia, in Valtellina c'erano le E.360, E.430, E.330, E.550/551 (di cui non so se esistano i modelli, almeno di grande produzione commerciale). idem per la 460: avevano un peso assiale molto elevato (come tutte le loco tedesche) ed erano soggette a limitazioni persino sulle linee principali le 431 e 432 hanno il fascio, sulla rimessa c'è una scritta tipica del regime, ma tra i rotabili c'è una Corbellini (anno 1947 come minimo)
-
Trifase in Val Chiavenna....
-
Bellissimo, stile svizzero:
-
Forse c'e da fare qualche bugfix nel mapping degli aspetti... Ma senza hw per verificarlo visivamente. -
hw richiesto: Scheda Arduino Uno R3 o Arduino NANO microcontroller PWM tipo RSA9685 4 LED RGB indifferentemente a catodo o anodo comune. resistori per i pin dei colori Verde e Blu: 100 Ohm resistori per i pin colore rosso: 150 Ohm Alimentatore stabilizzato 5V per alimentare l'arduino e i led questo e' il codice che hon scritto ( da testare ) /*********************************************************************** * FS SEGNALE 2 VELE: Protezione + Avviso (ognuno 2 vele → 4 LED RGB) * Pilotaggio tramite PCA9685 (12 canali) * CMRI: 1 byte → [Nibble alto = Protezione successiva] [Nibble basso = Protezione] * * REINDICIZZAZIONE DEFINITIVA: * 0x00 = Rosso * 0x01 = Giallo * 0x02 = Giallo lampeggiante * 0x03 = Verde * 0x04 = Deviata 30 (Giallo + Verde fisso) * 0x05 = Deviata 60 (Verde + Giallo lampeggianti in sincrono) * 0x06 = Deviata 100 (Verde ↔ Giallo lampeggianti alternati SUP/INF) * * Blink soft: HIGH = 2 × LOW ***********************************************************************/ #include <Wire.h> #include <Adafruit_PWMServoDriver.h> #include <CMRI.h> #include <SoftwareSerial.h> /*********************** PARAMETRI GENERICI ***************************/ #define PWM_MAX 4095 #define PWM_MIN_SOFT 1500 #define PCA_PWM_FREQ 800 #define FADE_STEP_MS 10 #define FADE_DELTA 60 #define BLINK_LOW_MS 300 #define BLINK_HIGH_MS (BLINK_LOW_MS * 1.5) /*********************** COLLEGAMENTO PCA9685 *************************/ // Protezione SUP #define P_SUP_R 0 #define P_SUP_G 1 #define P_SUP_B 2 // Protezione INF #define P_INF_R 3 #define P_INF_G 4 #define P_INF_B 5 // Avviso SUP #define A_SUP_R 6 #define A_SUP_G 7 #define A_SUP_B 8 // Avviso INF #define A_INF_R 9 #define A_INF_G 10 #define A_INF_B 11 /*********************** CMRI ****************************************/ #define CMRI_ADDR 1 // indirizzo CMRI per l'uso con centrale JMRI SoftwareSerial cmriSerial(7, 8); CMRI cmri(CMRI_ADDR, 0, 1); /*********************** PCA9685 *************************************/ Adafruit_PWMServoDriver pca = Adafruit_PWMServoDriver(0x40); /*********************** TIPI BASE ***********************************/ struct RGB { int32_t r, g, b; }; struct VelaRGB { int chR, chG, chB; RGB cur; RGB tgt; RGB high; RGB low; bool blink; }; struct Segnale2V { VelaRGB sup; VelaRGB inf; bool syncBlink; bool blinkHighPhase; unsigned long lastBlink; }; Segnale2V PROT, AVV; /*********************** FUNZIONI DI SUPPORTO ************************/ void pcaWrite(int ch, int v) { if (v < 0) v = 0; if (v > PWM_MAX) v = PWM_MAX; pca.setPWM(ch, 0, v); } void writeRGB(const VelaRGB &v, const RGB &c) { pcaWrite(v.chR, c.r); pcaWrite(v.chG, c.g); pcaWrite(v.chB, c.b); } RGB OFF() { return {0,0,0}; } RGB RED() { return {PWM_MAX,0,0}; } RGB GRN() { return {0,PWM_MAX,0}; } RGB YEL() { return {PWM_MAX,PWM_MAX,0}; } RGB GRN_LOW() { return {0,PWM_MIN_SOFT,0}; } RGB YEL_LOW() { return {PWM_MIN_SOFT,PWM_MIN_SOFT,0}; } /*********************** FADE ****************************************/ void updateFade(VelaRGB &v, unsigned long now, unsigned long &lastFade) { if (now - lastFade < FADE_STEP_MS) return; lastFade = now; auto step = [&](int32nt32_t d = tgt - cur; if (abs(d) <= FADE_DELTA) cur = tgt; else cur += (d > 0 ? FADE_DELTA : -FADE_DELTA); }; step(v.cur.r, v.tgt.r); step(v.cur.g, v.tgt.g); step(v.cur.b, v.tgt.b); writeRGB(v, v.cur); } /*********************** SET FIXED / BLINK ****************************/ void setFixed(VelaRGB &v, RGB c) { v.high = c; v.low = c; v.blink = false; v.tgt = c; } void setBlink(VelaRGB &v, RGB cHigh, RGB cLow) { v.blink = true; v.high = cHigh; v.low = cLow; v.tgt = cHigh; } /*********************** LOGICA BLINK ********************************/ void applyBlinkPhase(Segnale2V &s) { if (s.sup.blink) s.sup.tgt = s.blinkHighPhase ? s.sup.high : s.sup.low; if (s.inf.blink) s.inf.tgt = s.blinkHighPhase ? s.inf.high : s.inf.low; } void updateBlink(Segnale2V &s, unsigned long now) { uint16_t phaseTime = s.blinkHighPhase ? BLINK_HIGH_MS : BLINK_LOW_MS; if (now - s.lastBlink >= phaseTime) { s.lastBlink = now; s.blinkHighPhase = !s.blinkHighPhase; applyBlinkPhase(s); } } /*********************** UPDATE SEGNALE *******************************/ void updateSegnale(Segnale2V &s, unsigned long now, unsigned long &lastFade) { updateBlink(s, now); updateFade(s.sup, now, lastFade); updateFade(s.inf, now, lastFade); } /*********************** SET ASPETTI FS *******************************/ void setAspect(Segnale2V &S, uint8_t code) { S.syncBlink = false; S.lastBlink = millis(); S.blinkHighPhase = true; switch(code & 0x0F) { case 0x00: // ROSSO setFixed(S.sup, RED()); setFixed(S.inf, OFF()); break; case 0x01: // GIALLO setFixed(S.sup, YEL()); setFixed(S.inf, OFF()); break; case 0x02: // GIALLO LAMPEGGIANTE setBlink(S.sup, YEL(), YEL_LOW()); setFixed(S.inf, OFF()); break; case 0x03: // VERDE setFixed(S.sup, GRN()); setFixed(S.inf, OFF()); break; case 0x04: // DEVIATA 30 setFixed(S.sup, YEL()); setFixed(S.inf, GRN()); break; case 0x05: // DEVIATA 60 (sincrono) setBlink(S.sup, YEL(), YEL_LOW()); setBlink(S.inf, GRN(), GRN_LOW()); S.syncBlink = true; break; case 0x06: // DEVIATA 100 (alternato) setBlink(S.sup, YEL(), YEL_LOW()); // INF = verde lampeggiante invertito (fase opposta) S.inf.blink = true; S.inf.high = GRN_LOW(); // INF HIGH = LOW del SUP S.inf.low = GRN(); // INF LOW = HIGH del SUP S.inf.tgt = S.inf.high; // lampeggio alternato (NON sincrono) S.syncBlink = false; break; default: setFixed(S.sup, RED()); setFixed(S.inf, OFF()); } } /*********************** AVVISO AUTOMATICO ***************************/ uint8_t mapAvviso(uint8_t next) { switch(next & 0x0F) { case 0x00: return 0x01; case 0x01: return 0x02; case 0x02: return 0x02; case 0x03: return 0x03; case 0x04: return 0x04; case 0x05: return 0x05; case 0x06: return 0x06; default: return 0x01; } } /*********************** SETUP ***************************************/ unsigned long lastFade = 0; void setup() { Wire.begin(); pca.begin(); pca.setPWMFreq(PCA_PWM_FREQ); cmriSerial.begin(9600); cmri.begin(cmriSerial); PROT.sup = {P_SUP_R, P_SUP_G, P_SUP_B, OFF(), OFF(), OFF(), OFF(), false}; PROT.inf = {P_INF_R, P_INF_G, P_INF_B, OFF(), OFF(), OFF(), OFF(), false}; AVV.sup = {A_SUP_R, A_SUP_G, A_SUP_B, OFF(), OFF(), OFF(), OFF(), false}; AVV.inf = {A_INF_R, A_INF_G, A_INF_B, OFF(), OFF(), OFF(), OFF(), false}; } /*********************** LOOP ****************************************/ void loop() { cmri.process(); uint8_t cmd = cmri.get_byte(0); uint8_t prot = cmd & 0x0F; uint8_t protNext = (cmd >> 4) & 0x0F; setAspect(PROT, prot); setAspect(AVV, mapAvviso(protNext)); unsigned long now = millis(); updateSegnale(PROT, now, lastFade); updateSegnale(AVV, now, lastFade); } per pilotarlo serve JMRI e configurare un dispositivo CMRI Se trovo dove e' andato a finire il mio saldatore, farei dei test una di queste sere..- 1 reply
-
- 1
-
-
Cremagliera e vapore... un bellissimo diorama funzionante:
-
un piccolo film, in francese..: e l'immancabile documentario del dietro le quinte:
-
Alla fine l'ho preso... La Ex-CommandStation+ alimentatore 12V 4A a 150 euro da un dealer austriaco. Mi è arrivata oggi e mi ha veramente sorpreso per le dimensioni, è grande come un pacchetto si sigarette e confrontando alla z21 roco è minuscolo e 4 volte più potente. Integra anche una WIFI ( come base usa un controller ESP-32 WROOM-32 che integra un processore dual core, wifi, USB. E nel kit è incluso anche un piccolo schermo OLED che mostra le info come la SSID e la pwd per la connessione diretta via Wifi e 2 connettori per attaccare ai fili da collegare ai binari, uno principale e uno per il binario di programmazione o può fare da booster Per ora ho solo provato collegando a un binario di programmazione e con la G1200 ho fatto delle prove, come lettura CV, avanti e indietro. nelle prossime settimane mi arriveranno un sensor shield per Arduino uno che possiedo già da anni, i sensori IR , e il decoder servizi per collegare i deviatoi Kato e inizio a fare prove per creare blocchi di rilevamento blocchi interfacciando con JMRI in modo da fare esperienza per per la automazione di un piccolo anello di test. Devo dire che una volta che provi il DCC, indietro non si torna:. Già la capacità di far andare a velocità da passo d'uomo e illuminazione costante dei fari oltre la possibilità di circolare più di un treno contemporaneamente senza fare isolamenti bastano e avanzano per convincere.
- 1 reply
-
- 1
-
-
Come identificare usando JMRI e RFID tags...
sidew replied to sidew's topic in Fermodellismo's Fermodellismo
esempio pratico di un scalo di smistamento in HO e gestione usando i RFID per identificare e tracciare i carri -
Quando ho visto la prima cosa che mi viene in mente e' un fascio di smistamento tutto automatico con sella di lancio....
-
Ora anche nel modellismo hanno sdoganato quelle porcate orrende? Faranno contento/i l'aurore/i a cui hanno chiesto i diritti per devastare i modellini... Carlo, ne so qualcosa anch'io avendo criticato aspramente alcuni autori sul forum Auran, col risultato che sono stato anche deriso e qualcuno mi ha oscurato ; mi sorpreso che altri (pochi in realtà] erano della mia stessa opinione.
-
Sui graffiti in Trainz è scoppiata una rissa epica sul forum Auran, con scambio di epiteti del tipo "Ma che [CENSURA] di contachiodi sei?"
-
Walter sono i controsensi del ferromodellismo, 100% riproduzione fedele al reale,modelli superdettagliati con suoni, luci ecc. dove se manca una chiodatura della cassa succede il finimondo e poi l'80% dei ferromodellisti si riduce a far girare i treni elettrici con pantografo su plastici non elettrificati senza catenaria...questa cosa non l'ho mai capita.
-
Tanto tanto tempo fa, quando bazzicavo ancora abbastanza assiduamente il GATT, mi confrontai in una piacevole chiaccherata con un socio che praticava attivamente il modellismo, se non ricordo male tra una foto e l'altra nella vecchia Torino Porta Susa. Partendo dal presupposto che non apprezzava il tema, comunque mi faceva notare che se il risultato desiderato è quello di una riduzione al 100% fedele del reale in scala, pure i graffiti trovano posto. Non disquisisco su e non è mia intenzione discutere come ciascuno si pone nei confronti dei graffiti o su cosa vuole riprodurre modellisticamente, però effettivamente mi ha dato un punto di vista che non avevo mai considerato, specie partendo dai modelli TZIT in cui al massimo ci siamo concessi la sporcatura "di esercizio" (gli unici graffiti presenti sono su un muro e sui carri merci da scenario di Rox, tutto materiale che risale alla notte dei tempi di TZIT).
-
concordo e magari pagano purei i diritti al graffittaro che ha studiato il disegno
-
I treni graffitati della MiniTrix non si possono vedere
-
Fleischmann_NH_2026.pdf Minitrix_NH2026.pdf Piko_N-Katalog_2026.pdf
-
Maerklin_NH2026.pdf 20260115_ROCO_Novelties.pdf Rivarossi-Jouef-Electrotrain BRAWA_Neuheiten_2026.pdf Trix_NH2026.pdf Piko_H0_NH_2026.pdf
-
- 3
-
-
-
ecco la nuova D445 1 serie, la versione con i vetri curvi. Modello Arnold, versione DCC con sound, prenotato presso i pirati a ottobre, consegnata giusto venerdì. In questo momento sta facendo un po' di rodaggio
-
- 3
-
-
Ho un problema br 140 fleischmann in scala n
Fulvio53 replied to riccardointer's topic in Fermodellismo's Fermodellismo
Leggeri e tondi al contrario di quelli vecchi a sagoma più squadrata,le spazzole una era di una miscela di rame e carbone,l'altra era una reticella di rame della stessa sezione della prima.io non ho mai pensato il perchè potevane essere diverse,ma ora a distanza di tantissimi anni forse posso spiegarmi il perchè..La spazzola con la reticella penso potesse servire a pulire il collettore dai residui della prima,se non è questa ,allora propio non so. -
Ho un problema br 140 fleischmann in scala n
Fulvio53 replied to riccardointer's topic in Fermodellismo's Fermodellismo
Forse erano in bronzo ottonato. -
Ho un problema br 140 fleischmann in scala n
Fenix7 replied to riccardointer's topic in Fermodellismo's Fermodellismo
Ciao Riccardo, come sono fatte le scale N, non ne ho la più pallida idea, ho svariate lima anni 70/80/90 HO lima e rivarossi a qui ogni tanto faccio fare un giretto. Posso aiutarti da elettricista. Un corto circuito avviene quando fase e neutro/positivo e negativo entrano in contatto. La corrente arriva al motore attraverso le molle e i carboncini. Se il cortocircuito persiste potresti aver bruciato il motorino... in alternativa, visto che le ruote, da un lato hanno il bordino per isolare l'asse dal binario, potresti averne perso uno...io di solito dai motore tolgo sia le molle che i carboncini. Se non girano, con il tempo possono incollarsi, per poi spezzarsi... -
Ho un problema br 140 fleischmann in scala n
Fulvio53 replied to riccardointer's topic in Fermodellismo's Fermodellismo
Ovviamente sto parlando di H0 ,la n non l'ho mai avuta,ma penso che il procedimento sia lo stesso solo più in piccolo
