Jump to content
Pix

Idea! NXT Automazione Treni

Post raccomandati

quanto deve essere almeno la variazione di "luminosità rilevata" per essere tranquilli?

 

A Cavallino abbiamo fatto le stesse prove, e la lettura più affidabile è stata quella con la luce davanti, nonostante il treno riflettesse pure lui.

 

Questo per i visitatori che passano e fotografano, oltre alla luce ambiente che varia durante la giornata. 8)

 

I miei listati pubblicati fanno una taratura automatica, e si aspettano una variazione di 10, modificabile all'inizio del programma che trovi qui.

 

Allego il listato per il treno con più fermate intermedie:

 

/*------------------------------------------------------------------------------
; File          : tram.nqc (va salvato come NQC prima di compilare)
; Description   : tram che va avanti e indietro su rotaia dritta
; Programmed by : Rudy
; ports:
: A
; B
; C  treno
; 1  sensore luce di fine corsa (inizio e fine)
; 2  sensore luce della stazione/stazioni
; 3
; 4
; NOTA: si possono attaccare più sensori di luce sulla stessa porta
;-----------------------------------------------------------------------------*/

task main()
{

;-----------------------------------------------------------------------------*/
 // da regolare a seconda del tracciato e del treno:
 // soglia a cui scatta il sensore (treno presente)
 int soglia = 10;
 // velocità massima del treno (minimo 1, massimo 7)
 int maxspeed=5;
;-----------------------------------------------------------------------------*/



 // disabilita lo spegnimento automatico dell'RCX
 SetSleepTime(0) ;

 // setta i sensori come sensori luce
 SetSensorType(SENSOR_1,SENSOR_TYPE_LIGHT);
 SetSensorMode(SENSOR_1,SENSOR_MODE_RAW);
 SetSensorType(SENSOR_2,SENSOR_TYPE_LIGHT);
 SetSensorMode(SENSOR_2,SENSOR_MODE_RAW);


 // variabili per le letture dei sensori luce
 int light1,light2;
 int light1_max = SENSOR_1;
 int light2_max = SENSOR_2;

 // accende il treno
 int verso=1;
 SetPower(OUT_C,maxspeed);
 OnFwd(OUT_C);

 int x;
 while (true) {
   // legge i sensori luce
   light1 = SENSOR_1;
   light2 = SENSOR_2;
   // regolazione automatica della soglia per la luce
   // varia con la luce ambiente e le macchine fotografiche in giro
   light1_max++;
   if (light1<light1_max)
     light1_max=light1;
   light2_max++;
   if (light2<light2_max)
     light2_max=light2;

   // controlla se il treno ha fatto scattare un sensore
   if (light1>(light1_max+soglia) || light2>(light2_max+soglia)) {
     // frena il treno
     Float(OUT_C);
     // aspetta x centesimi di secondo
     Wait(300);
     if (light1>(light1_max+soglia)) {
       // cambia verso se è il sensore di fine
       verso=1-verso;
     }
     // riparte
     if (verso) {
       // riparte avanti
       OnFwd(OUT_C);
     } else {
       // riparte indietro
       OnRev(OUT_C);
     }
     // aspetta x centesimi di secondo che il treno si levi dal sensore
     Wait(200);
   }
 }
}



 

 

Condividi questo post


Link al post
Condividi su altri siti

Allego il listato per il treno con più fermate intermedie e tempo di fermata casuale come richiesto 8)

 

/*------------------------------------------------------------------------------
; File          : tram.nqc (va salvato come NQC prima di compilare)
; Description   : tram che va avanti e indietro su rotaia dritta
; Programmed by : Rudy
; ports:
: A
; B
; C  treno
; 1  sensore luce di fine corsa (inizio e fine)
; 2  sensore luce della stazione/stazioni
; 3
; 4
; NOTA: si possono attaccare più sensori di luce sulla stessa porta
;-----------------------------------------------------------------------------*/

task main()
{

//----------------------------------------------------------------------------
 // da regolare a seconda del tracciato e del treno:
 // soglia a cui scatta il sensore (treno presente)
 int soglia = 10;
 // velocità massima del treno (minimo 1, massimo 7)
 int maxspeed=5;
 // tempo di sosta minimo del treno in secondi (0=non si ferma)
 int sosta_min=1;
 // tempo di sosta massimo del treno (meglio non esagerare)
 int sosta_max=4;
//----------------------------------------------------------------------------



 // disabilita lo spegnimento automatico dell'RCX
 SetSleepTime(0) ;

 // setta i sensori come sensori luce
 SetSensorType(SENSOR_1,SENSOR_TYPE_LIGHT);
 SetSensorMode(SENSOR_1,SENSOR_MODE_RAW);
 SetSensorType(SENSOR_2,SENSOR_TYPE_LIGHT);
 SetSensorMode(SENSOR_2,SENSOR_MODE_RAW);


 // variabili per le letture dei sensori luce
 int light1,light2;
 int light1_max = SENSOR_1;
 int light2_max = SENSOR_2;

 // accende il treno
 int verso=1;
 SetPower(OUT_C,maxspeed);
 OnFwd(OUT_C);

 int x;
 while (true) {
   // legge i sensori luce
   light1 = SENSOR_1;
   light2 = SENSOR_2;
   // regolazione automatica della soglia per la luce
   // varia con la luce ambiente e le macchine fotografiche in giro
   light1_max++;
   if (light1<light1_max)
     light1_max=light1;
   light2_max++;
   if (light2<light2_max)
     light2_max=light2;

   // controlla se il treno ha fatto scattare un sensore
   if (light1>(light1_max+soglia) || light2>(light2_max+soglia)) {
     // frena il treno
     Float(OUT_C);
     // aspetta x centesimi di secondo
     x=(random(sosta_max-sosta_min)+sosta_min)*100;
     Wait(x);
     if (light1>(light1_max+soglia)) {
       // cambia verso se è il sensore di fine
       verso=1-verso;
     }
     // riparte
     if (verso) {
       // riparte avanti
       OnFwd(OUT_C);
     } else {
       // riparte indietro
       OnRev(OUT_C);
     }
     // aspetta x centesimi di secondo che il treno si levi dal sensore
     Wait(200);
   }
 }
}



 

 

Condividi questo post


Link al post
Condividi su altri siti

una domanda:

l'RCX con alimentazione supplementare, con cosa lo alimento?

Direttamente dal trasformatore del regolatore di velocità per treni?

 

Devo/posso usare un qualsiasi alimentatore esterno con uscita 10-11-12 V?

 

Condividi questo post


Link al post
Condividi su altri siti

una domanda:

l'RCX con alimentazione supplementare, con cosa lo alimento?

Direttamente dal trasformatore del regolatore di velocità per treni?

Sì.

Devo/posso usare un qualsiasi alimentatore esterno con uscita 10-11-12 V?

Forse è possibile, ma non ci scommetterei...

Condividi questo post


Link al post
Condividi su altri siti

una domanda:

l'RCX con alimentazione supplementare, con cosa lo alimento?

Direttamente dal trasformatore del regolatore di velocità per treni?

Sì.

 

O grazie!

Userò quello! Meglio non fare esperimenti!

 

 

Condividi questo post


Link al post
Condividi su altri siti

Ancora una domanda:

l'RCX con alimentazione esterna, può avere anche le pile inserite?

 

Spero di si, altrimenti ogni volta che togliamo tensione, si perde il firmware! :-\

Condividi questo post


Link al post
Condividi su altri siti

l'RCX con alimentazione esterna, può avere anche le pile inserite?

 

Si, anche se consiglio di usare le ricaricabili e di non "inscatolare" l'RCX in modo che non si surriscaldi...

 

PS: State facendo anche voi le notti insonni a finire le vostre MOC all'ultimo momento? Non vedo l'ora di finire la mia Trench Run e manca sempre qualcosina...

Condividi questo post


Link al post
Condividi su altri siti

Si, anche se consiglio di usare le ricaricabili e di non "inscatolare" l'RCX in modo che non si surriscaldi...

 

Non è necessario usare le ricaricabili (anche se anch'io le consiglio), in quanto l'RCX passa automaticamente dall'alimentazione esterna alle pile e viceversa, e comunque non le ricarica.

 

Semmai usando le ricaricabili ci può essere la fregatura che erogano solo 7,2 volt, e se sta pilotando un motore questo andrà più lento.

 

PS: State facendo anche voi le notti insonni a finire le vostre MOC all'ultimo momento? Non vedo l'ora di finire la mia Trench Run e manca sempre qualcosina...

 

Non ci crederai ma ho violato una delle regole fondamentali del GBC: mai fare un modulo una settimana prima.

Condividi questo post


Link al post
Condividi su altri siti

Non ci crederai ma ho violato una delle regole fondamentali del GBC: mai fare un modulo una settimana prima.

 

Chiedi a Legonet, che non ha nemmeno ancora tutti i pezzi per il suo.... :D:D:D

 

Ci vediamo domani sera a Ballabio!!!

 

Condividi questo post


Link al post
Condividi su altri siti

 

 

Chiedi a Legonet, che non ha nemmeno ancora tutti i pezzi per il suo.... :D:D:D

 

 

 

Approposito l'altro giorno ne ho fatto uno nuovo,l'ho finito questa mattina :D adesso me ne manca solo uno da finire,e mi manca il motore :'(

Condividi questo post


Link al post
Condividi su altri siti

Approfitto delle ferie per riportare in auge questo thread.

 

Prima domanda: a Ballabio ho visto un modo molto simpatico per motorizzare gli scambi con delle bellissime casette bianche con il tetto rosso contenenti un motore medio PF. Qualcuno ha le istruzioni per caso?

 

Seconda domanda ad un certo Pix: sotto i fumi delle abbondanti libagioni di Ballabio :D abbiamo parlato di una serie di possibili utilizzi per la tua stazione. Hai deciso come utilizzarla che ti scrivo il software?

 

PS: Sono contento che il tram abbia funzionato molto bene a Ballabio, complimenti!! 8)

 

Condividi questo post


Link al post
Condividi su altri siti

PS: Sono contento che il tram abbia funzionato molto bene a Ballabio, complimenti!! 8)

 

Si il tram con il tuo software ha funzionato bene, ho modificato la parte "random" delle fermate, allungando i tempi e rendendoli molto casuali. Questo comportava che il tram rimaneva fermo anche un minuto o più sotto alla pensilina.

 

Ma questo, secondo me, aumenta il realismo, perchè c'è meno "movimento automatico", spesso ho sentito qualche visitatore che diceva: " il tram non parte più!", e poco dopo questo ripartiva!! :P

Da capire bene le situazioni quando il tram si fermava improvvisamente in aperta campagna ??? Anche se poi ripartiva senza problemi.

 

Bè anche i nostri treni veri, spesso si fermano in aperta campagna senza motivo! :-[

Condividi questo post


Link al post
Condividi su altri siti

Riporto in auge questo topic perché mi sono arrivate delle domande interessanti per tutti.

 

Non ci crederai...ho comprato 2 rcx 1.0 (with jack) per futura "automazione treni", i sensori (4 luce e 2 touch) e la tower ir (usb) per comunicare tra pc e rcx.

A questo punto ti DEVO chiedere, siccome sono ignorante in merito, mi indichi il software di programmazione che usi tu?

 

Bravissimo! ;D

La mia preferenza va al bricxcc che somiglia molto al C

Qui trovi il tutorial per l'installazione

 

Un tutorial sul linguaggio di programmazione esiste o devo chiedere tutto a te?? :D:D

 

 

Per i programmi, si inizia facendo copia-incolla (tanto sono una manciata di istruzioni) e modificando a seconda di quello che ti serve.

 

Per i treni il robot deve solo modificare la corrente del binario e leggere i sensori, quindi ti basta imparare pochi comandi. Per i motori:

OnFwd("ports", "pwr"); // accende il motore
Off("ports"); // spegne il motore

 

Per i sensori:

SetSensor(IN_1,"type") ;  //accende il sensore
SENSOR_1;  //legge il sensore

 

Per il flusso del programma:

Wait(millisecondi); // aspetta 
until ("condizione"); // aspetta che si verifichi una condizione
repeat ("numero");  // ripete tot volte

 

Forse un giorno scriverò un tutorial, nel frattempo questo è semplice ed in inglese

 

Poi, ho un eeepc dell'asus (netbook piccolino bianco) con su windows xp home, puo' essere una buona scelta come base per preparare i programmi da lanciare all' rcx?

 

L'eepc con bricxcc va benissimo (se vuoi usare quello LEGO / NXT l'eepc non basta, già provato)

 

 

Condividi questo post


Link al post
Condividi su altri siti

Grazie alla gentile collaborazione di Maurizio Di Palma abbiamo l'ultimo brick che ci mancava per l'automazione!!

 

Ora inizio mettendo sotto sforzo Paolo il ferroviere che ha appena acquistato l'RCX.

 

Automatizziamo il modulo stazione che hai portato a PSG

 

Ti servono due scambi, per costruirli usi questo progetto che funziona a meraviglia con l'RCX

 

Oltre ai vari brick normali, hai bisogno di due motori PF

 

8883-1.gif

 

Questi li colleghi ai cavi 9v e quindi all'RCX con i cavi adattatori

 

8886-1.gif

 

Hai bisogno anche di due sensori di luce

 

9758-1.gif

 

 

Il tracciato da costruire davanti alla stazione è questo:

 

---<====>---

binario singolo - primo scambio - binario doppio - secondo scambio

(La stazione si trova sul tratto di binario doppio)

Tutto con binari 9V, tranne un pezzo di flex all'inizio ed alla fine per isolare la stazione dal resto del tracciato che va alimentato normalmente con la rotella.

Il binario doppio è lungo a sufficienza per contenere un treno completo

 

 

Su ogni binario del tratto doppio va messo il sensore di luce da un lato ed una luce dall'altro, vanno fatte delle prove ma in genere è verso il bordo della stazione.

 

Collegamenti dell'RCX:

Output A - rotaia

Output B - scambi

Output C - semaforo (?)

Input 1 - sensore binario 1

Input 2 - sensore binario 2

 

Il software lo sto provando ma è semplicissimo:

 

- cambia i due scambi sul binario 1

- dai corrente al binario

- ripeti

-- aspetta un treno sul binario 1

-- togli corrente al binario

-- scambia sul 2

-- dai corrente al binario

-- aspetta un treno sul binario 2

-- togli corrente al binario

-- scambia sull'1

-- dai corrente al binario

 

lo posto quando funziona bene... alla prossima puntata se vi interessa!

 

Condividi questo post


Link al post
Condividi su altri siti

Mi è balenata un'idea pazzerella...

 

Qualcuno ha questo brick?

 

Electric, Train 12V 2 x 3 Signal Light Brick with Red and Green Lights

 

70022.gif

 

Se qualcuno lo ha in casa, potrebbe per cortesia controllare cosa succede alimentandolo con il trasformatore/rotella del treno 9V?

 

Grazie

 

Condividi questo post


Link al post
Condividi su altri siti

Senza ricorrere al forbidden building (e io l'ho fatto quando ero giovinetto 8)), come pensi di fare ad alimentare un mattoncino luminoso a 12V, che richiede un collegamento spina/presa, con un alimentatore 9V che ha il collegamento con il plate 2x2 elettrificato? :-[

 

Comunque l'esito te lo dico io.... si tratta di 2 LED montanti con orientamento inverso: se la corrente corre in un verso si accende il LED rosso, se inverti le polarità si accende il LED verde.

 

Condividi questo post


Link al post
Condividi su altri siti

come pensi di fare ad alimentare un mattoncino luminoso a 12V, che richiede un collegamento spina/presa

 

Semplice (non inorridite!!!): si prende ad esempio questo:

 

Black Electric, Wire with Brick 2 x 2 x 2/3 Pair, 36 Studs Long

5311-1.gif

 

Si taglia a metà

Si attaccano due di queste:

 

Light Gray Electric, Connector, 2 Way male Squared Narrow Long - Complete Assembly

766c01.gif

 

Così usando solo LEGO otteniamo due cavi adattatori per i due semafori 8)

 

Ovviamente prima di attuare uno simile scempio :'( vorrei essere sicuro che il semaforo si accenda a 9V

 

 

se la corrente corre in un verso si accende il LED rosso, se inverti le polarità si accende il LED verde.

 

Questo lo sapevo grazie, l'unica incognita è se bastano i 9V della rotella per accenderli.

Puoi fare per cortesia una prova con dei fili volanti?

 

Condividi questo post


Link al post
Condividi su altri siti

Caro Francesco,

non capisco bene la tua risposta.

Però in effetti bisogna prima verificare che tensione esce dal remote control del semaforo.

Potrebbe esserci una resistenza interna che magari non c'è nei comandi degli scambi...

 

Rudi, in questi giorni ci guardo e ti so dire...

 

Condividi questo post


Link al post
Condividi su altri siti

Il funzionamento a 9v e' subordinato dalla resistenza inserita

 

La teoria dice che il semaforo a 12V NON si accende se lo alimenti a 9V

 

Per questo ho chiesto di fare una prova pratica.... mi fido più che della teoria :D

 

 

Condividi questo post


Link al post
Condividi su altri siti

Se quel semaforo come penso non è altro che due led con una resistenza (ricordiamoci a quando risale), se lo alimenti a 9V avrai solo led meno luminosi.

 

Esatto!

La differenza di luminosità dovrebbe essere minima. In alternativa si cambia la resistenza :D

Condividi questo post


Link al post
Condividi su altri siti

Per Piru, i led funzionano con 1volt circa, per cui una resistenza ci deve essere per forza da qualche parte.

Per Rudy, se non si accendono ci deve essere una resistenza di tal misura che non li fa accendere con meno di 12v, basta sostituirla e ricorda che la pratica delle volte ti fa saltare i componenti, bisogna partire dalla teoria, in rete ci sono tavole e specifiche per il dimensionamento delle resistenze e dei led.. :)

 

Condividi questo post


Link al post
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente registrato per postare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Hai un account? Accedi .

Accedi ora

  • Visualizzato ora da   0 utenti

    Nessun utente registrato su questa pagina.

×
×
  • Crea nuovo...