GAS TT 10 anni con voi

Ben arrivato! Fai login o registrati per fruire di tutte le funzionalità del forum e del sito.
Se eri già registrato e non ti ricordi la password usa questo link per recuperare l'accesso.
Sito e forum dedicati al fermodellismo, il nostro hobby viene praticato in molte maniere diverse, tutte ugualmente valide: hai un plastico? oppure sei un collezionista? oppure un semplice appassionato? Non esitare a scrivere nel forum, tutti gli interventi sono benvenuti... Postate foto e video del vostro plastico e chiedete aiuto per ogni problema o curiosità inerente al nostro hobby.

Motore sotto plancia per deviatoi con servocomando

Fotoincisioni - ottone - metalli - motorizzazioni - plastica - resina - sporcature.

Moderatori: lorelay49, cararci, MrMassy86, adobel55

Messaggio
Autore
Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Motore sotto plancia per deviatoi con servocomando

#1 Messaggio da Edgardo_Rosatti »

Sto realizzando una serie di supporti telaio per montare dei servocomandi sotto plancia in modo da realizzare dei motori per deviatoi.

Il telaio è composto da soli 4 pezzi e può essere realizzato in forex o in semplice legno di compensato da 2/3 millimetri di spessore, inoltre potrebbe essere un'idea per realizzarlo in stampa 3D.

Il servo utilizzato è il tipo SG 90 da 9 grammi di peso e dal costo di circa 3 euro. In realtà, il servo in oggetto completo di vite e squadretta di rinvio pesa 12 grammi.

Datasheet:
sg90_datasheet.pdf
(137.98 KiB) Scaricato 111 volte

Il montaggio del telaio e del supporto è visibile qui:
Montaggio telaio e servo
Montaggio telaio e servo
Stesso file, ma in pdf (scala 1:1):
Motor_servo.pdf
(20.48 KiB) Scaricato 110 volte

Notare sulla destra del disegno la dima per la realizzazione dei fori di fissaggio sotto plancia e dell'asola per il passaggio dell'astina di comando in acciaio armonico.

Qui invece la dima su foglio A4 per realizzae 14 telaietti:
Dima A4
Dima A4
e il file pdf in scala 1:1:
Motor_dima_A4.pdf
(15.28 KiB) Scaricato 113 volte

Per il controllo dei servi è in fase di progettazione un sistema basato su Arduino Nano in grado di comandare fino a 6 deviatoi tramite pulsanti o bus I2c


ED

Avatar utente
liftman
Socio GAS TT
Messaggi: 7759
Iscritto il: domenica 29 gennaio 2012, 14:40
Nome: Rolando
Regione: Liguria
Città: La Spezia
Ruolo: Moderatore
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#2 Messaggio da liftman »

Grazie per la condivisione!
Ciao!
Rolando

Avatar utente
MrMassy86
Socio GAS TT
Messaggi: 15629
Iscritto il: sabato 10 novembre 2012, 15:42
Nome: Massimiliano
Regione: Toscana
Città: Capannori
Ruolo: Moderatore
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#3 Messaggio da MrMassy86 »

Ottimo Ed, è il solito servo che ho utilizzato anch'io per il mio plastico :wink:
Massimiliano [253]
Massimiliano Paolinelli - il mio canale YouTubeViaggio in quel di Verni -Il Ponte dei Pescatori - C.L.A.F. Lucca

Avatar utente
sal727
Messaggi: 4065
Iscritto il: domenica 26 aprile 2015, 17:22
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#4 Messaggio da sal727 »

Interessante, per curiosità la messa in verticale piuttosto che in orizzontale, ha un motivo?

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#5 Messaggio da Edgardo_Rosatti »

sal727 ha scritto: domenica 29 dicembre 2019, 14:08 Interessante, per curiosità la messa in verticale piuttosto che in orizzontale, ha un motivo?
É per ottimizzare lo spazio a disposizione; se hai molti binari con i deviatoi affiancati penso sia la soluzione migliore.
ED

Avatar utente
sal727
Messaggi: 4065
Iscritto il: domenica 26 aprile 2015, 17:22
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#6 Messaggio da sal727 »

Dipende da dove si mette, è talmente piccolo che non dovrebbe creare problemi se non si usa un supporto di dimensioni esagerate, per esempio in H0 la rotaia è 30mm e si può piazzare anche in mezzo, per scale inferiori invece può essere un problema. In rete si trovano numerosi supporti in 3D e autocostruiti(legno o lamiera), c'è l'imbarazzo della scelta, ne ho trovato alcuni interesssanti
questo per esempio ha un ulteriore supporto per micro switch per vari utilizzi, utile in analogico
01.JPG
questo piuttosto ridotto con inserimento servo a clip, da considerare però la distanza utile per l'asta
03.jpg
Se a qualcuno può interessare ho disegnato il tuo modello in 3D
SG90 supp_Edgardo.jpg
qui sotto il file in stl già pronto per la stampa
Allegati
supp_SG90_Ed.zip
(5.44 KiB) Scaricato 97 volte

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#7 Messaggio da Edgardo_Rosatti »

É vero, dipende molto da come lo vogliamo utilizzare. Io preferisco un movimento meccanico sicuro e fidato e sfruttare l'Arduino per le commutazioni.
Cioè, con il montaggio verticale del servo hai comunque un minore ingombro anche per le scale minori, mentre per le commutazioni, se si sfruttano tutte le porte di un Arduino Nano, possiamo usare 6 relè a doppia commutazione per 6 servi e con le porte A0/A7 inserire pulsanti e/o una comunicazione I2C.

In sostanza l'idea è quella di sfruttare il più possibile il Nano pe avere un modulo compatto che gestisca 6 deviatoi.

Ci sto lavorando su e a breve posso proporre il progetto. Per ora guarda qui:
Bozza schema 6 servi (Fritzing)
Bozza schema 6 servi (Fritzing)
Pin D3, D5, D6, D9, D10, D11 = comando PWM dei 6 servi

Pin D2, D4, D7, D8, D12, D13 = comando digitale dei 6 relè (qui visualizzato solo uno)

Pin A2, A3, A4, A5, A6, A7 = comando interruttori di gestione dei servi (qui visualizzato solo uno)

Pin A0 e A1 = gestione del bus seriale I2c.

Come vedi, sfuttiamo tutte le porte della scheda, inoltre lasciamo anche uno spazio per un collegamento I2c con più moduli.

Questa è solo una bozza.

Grazie per il file 3D :mrgreen:
ED

Avatar utente
sal727
Messaggi: 4065
Iscritto il: domenica 26 aprile 2015, 17:22
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#8 Messaggio da sal727 »

Avevo già fatto tempo fa un progetto per l'attivazione di 5 servo e relativi led di controllo, lo avevi pubblicato in GasTT Lab, dovresti averlo ancora.

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#9 Messaggio da Edgardo_Rosatti »

Mi spiace Salvatore ma devo averlo cancellato, ricordo che non volevi che vensse pubblicata la tua email sul GAS TT Lab per diversi motivi.
Il blog è uno spazio condiviso in cui anche io sono in parte ospite e ha una zona commenti che attivo per me, ma non per gli ospiti, in quanto non potrei gestire le eventuali richieste di informazione da parte degli utenti che leggono gli articoli scritti non da me. Ecco perchè era necessario pubblicare la tua email. Col senno di poi, ho pensato che per evitare eventuali tracciature si potrebbe scrivere l'indirizzo email così: "nome.cognome(chiocciola)pippo.it"
Non so, magari srivendo chiocciola tra parentesi al posto di @.

Cercando nei miei archivi ho trovato solo un tuo progetto che fa uso dei tag RFID e di una scheda di memoria SD.
ED

Avatar utente
sal727
Messaggi: 4065
Iscritto il: domenica 26 aprile 2015, 17:22
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#10 Messaggio da sal727 »

Te l'ho inviato per email

Avatar utente
Nick8526
Messaggi: 336
Iscritto il: giovedì 23 novembre 2017, 14:11
Nome: Nicola
Regione: Lombardia
Città: Milano
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#11 Messaggio da Nick8526 »

Nicola

Avatar utente
Nick8526
Messaggi: 336
Iscritto il: giovedì 23 novembre 2017, 14:11
Nome: Nicola
Regione: Lombardia
Città: Milano
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#12 Messaggio da Nick8526 »

Nicola

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#13 Messaggio da Edgardo_Rosatti »

ED

Avatar utente
liftman
Socio GAS TT
Messaggi: 7759
Iscritto il: domenica 29 gennaio 2012, 14:40
Nome: Rolando
Regione: Liguria
Città: La Spezia
Ruolo: Moderatore
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#14 Messaggio da liftman »

Forse c'è congestione, io li ho provati nel pomeriggio e funzionavano-
Ciao!
Rolando

Avatar utente
Nick8526
Messaggi: 336
Iscritto il: giovedì 23 novembre 2017, 14:11
Nome: Nicola
Regione: Lombardia
Città: Milano
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#15 Messaggio da Nick8526 »

ultimamente il sito presentava un avviso relativo a problemi di performance, ora mi sembra ok.


Ciao
Nicola

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#16 Messaggio da Edgardo_Rosatti »

Ora ho visto tutto, grazie.
ED

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#17 Messaggio da Edgardo_Rosatti »

Sto riprendendo in mano questo progetto e ho abbozzato uno schema elettrico completo con il quale realizzerò un prototipo funzionante.
Schema elettrico
Schema elettrico
Lo schema prevede l'uso di un Arduino Nano visibile in basso a destra.
I 6 servi sono collegati a dei connettori con alimentazione esterna da 5 VCC (SV1, SV2 e SV3) visibili in basso a sinstra. Tali connettori sono collegati alle 6 porte PWM di Arduino (D3, D5, D6, D9, D10 e D11) a + VCC esterni e a GND.

Nella parte alta possiamo vedere 6 driver per comandare 6 relè a 5 VCC utili per attuare dispositivi in contemporanea all'attivazione dei servi; per es. polarizzazione del cuore, stato segnali ecc. I relè non sono presenti sulla scheda. Ogni drive è dotato di un led rosso che ne indica lo stato (on/off).
Le porte di uscita digitali destinate ai driver sono: D2, D4, D7, D8, D12 e D13.

Nella parte centrale è presente una pulsantiera a 12 tasti per comandare manualmente i servi. Tale scheda, nel progetto del pcb è separabile per poter essere installata comodamente su una plancia di comando.
Il sistema della pulsantiera utilizza 6 partitori resistivi collegati alle porte analogiche di ingresso A0, A1, A2, A3, A6 e A7.

Le porte analogiche di ingresso A4 e A5 sono destinate alla gestione dell'interfaccia seriale I2c per l'espansione del sistema che vedremo in futuro.
Master per fotoincisione pcb a doppa faccia
Master per fotoincisione pcb a doppa faccia
A destra la pulsantiera ed a sinistra la logica

Un preview di Eagle:
TOP e serigrafia
TOP e serigrafia
Questo circuito utilizza tutte le porte disponibili di Arduino Nano nel modo corretto e può essere utilizzato per molti altri scopi, questo è il bello della logica programmabile.

Appena possibilie verranno pubblicati i primi test di funzionamento.
ED

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#18 Messaggio da Edgardo_Rosatti »

Primo test sulla pulsantiera a 12 tasti per comandare 6 servi.
Pulsantiera a partitori resistivi
Pulsantiera a partitori resistivi
Il tastierino è separabile dal pcb principale per poter essere installato comodamente su una plancia.

É composto da 12 resistenze da 1000 OHM e da 12 pulsantini in modo da formare 6 partitori resistivi.
Ogni partitore usa 2 pulsanti e funziona nel seguente modo:

Se non si preme nulla, dal partitore escono 5 volt.
Se si preme il pulsante 1, dal partitore escono 2,5 volt.
Se si preme il pulsante 2, dal partitore escono 0 volt.

Gli ingressi analogici di Arduino a cui sono collegate le uscite dei 6 partitori quantizzano i dati letti a 10 bit.
Quindi i valori numerici letti dopo la quantizzazione saranno:
- 1023 per 5 volt;
- 511 per 2,5 volt;
- 0 per 0 volt.

Vi saranno comunque sempre delle minime tolleranze, quindi il software dovrà tenerne conto.
Test pulsantiera
Test pulsantiera
Lo schema elettrico dei 6 partitori è evidenziato qui:
Schema dei 6 partitori
Schema dei 6 partitori
Sul connettore SV4 vi sono 8 fili; il primo va al polo negativo del circuito (GND), il secondo va all'alimentazione del circuito (5VCC) e gli altri 6 sono le uscite dai partitori resistivi.

Lo schema del PCB è questo:
PCB partitori
PCB partitori
Lo so che per ora non servirà a nulla, ma è mia intenzione realizzare un PCB professionale e rendere disponibile in kit di montaggio questo progetto.

Concludo questa prima parte dicendo che questo tastierino per comandare 6 servi può essere usato anche per scopi diversi da quelli pensati originariamente e può essere sostituito da altri tipi di sensori.

Qui il software del tastierino:

Codice: Seleziona tutto

// Tastiera a 12 pulsanti per comandare 6 servocomandi su porte A0, A1, A2, A3, A6 e A7 su Arduino Nano

int pservo1 = A0;
int pservo2 = A1;
int pservo3 = A2;
int pservo4 = A3;
int pservo5 = A6;
int pservo6 = A7;

int pval1 = 0;
int pval2 = 0;
int pval3 = 0;
int pval4 = 0;
int pval5 = 0;
int pval6 = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  pval1=analogRead(pservo1);
  pval2=analogRead(pservo2);
  pval3=analogRead(pservo3);
  pval4=analogRead(pservo4);
  pval5=analogRead(pservo5);
  pval6=analogRead(pservo6);
  if (pval1 > 700) {
    Serial.print("Valore tasto per servo 1 = Non premuto = ");
    Serial.println(pval1);
  }
  else if(pval1 < 700 && pval1 > 300) {
    Serial.print("Valore tasto per servo 1 = Premuto 2 = ");
    Serial.println(pval1);  
  }
  else if(pval1 < 300) {
    Serial.print("Valore tasto per servo 1 = Premuto 1 = ");
    Serial.println(pval1);  
  }
  if (pval2 > 700) {
    Serial.print("Valore tasto per servo 2 = Non premuto = ");
    Serial.println(pval2);
  }
  else if(pval2 < 700 && pval2 > 300) {
    Serial.print("Valore tasto per servo 2 = Premuto 2 = ");
    Serial.println(pval2);  
  }
  else if(pval2 < 300) {
    Serial.print("Valore tasto per servo 2 = Premuto 1 = ");
    Serial.println(pval2);  
  }
  if (pval3 > 700) {
    Serial.print("Valore tasto per servo 3 = Non premuto = ");
    Serial.println(pval3);
  }
  else if(pval3 < 700 && pval3 > 300) {
    Serial.print("Valore tasto per servo 3 = Premuto 2 = ");
    Serial.println(pval3);  
  }
  else if(pval3 < 300) {
    Serial.print("Valore tasto per servo 3 = Premuto 1 = ");
    Serial.println(pval3);  
  }
  if (pval4 > 700) {
    Serial.print("Valore tasto per servo 4 = Non premuto = ");
    Serial.println(pval4);
  }
  else if(pval4 < 700 && pval4 > 300) {
    Serial.print("Valore tasto per servo 4 = Premuto 2 = ");
    Serial.println(pval4);  
  }
  else if(pval4 < 300) {
    Serial.print("Valore tasto per servo 4 = Premuto 1 = ");
    Serial.println(pval4);  
  }
  if (pval5 > 700) {
    Serial.print("Valore tasto per servo 5 = Non premuto = ");
    Serial.println(pval5);
  }
  else if(pval5 < 700 && pval5 > 300) {
    Serial.print("Valore tasto per servo 5 = Premuto 2 = ");
    Serial.println(pval5);  
  }
  else if(pval5 < 300) {
    Serial.print("Valore tasto per servo 5 = Premuto 1 = ");
    Serial.println(pval5);  
  }
  if (pval6 > 700) {
    Serial.print("Valore tasto per servo 6 = Non premuto = ");
    Serial.println(pval6);
  }
  else if(pval6 < 700 && pval6 > 300) {
    Serial.print("Valore tasto per servo 6 = Premuto 2 = ");
    Serial.println(pval6);  
  }
  else if(pval6 < 300) {
    Serial.print("Valore tasto per servo 6 = Premuto 1 = ");
    Serial.println(pval6);  
  }
  delay(1000);
  Serial.println();
}
Descrizione del software:

Vengono create 6 variabili numeriche intere "pservo" da 1 a 6 a cui vengono assegnate le porte analogiche A0, A1, A2, A3, A6 e A7.
Vengono create 6 variabili numeriche intere "pval" da 1 a 6 a cui verranno assegnati i valori numerici letti dalle porte analogiche viste sopra.

Nella procedura di "setup" viene creata l'istanza della porta seriale ad una velocità di 9600 baud.
Nella procedura di "loop" vengono letti i valori delle porte analogiche assegnate sopra e memorizzaii nelle variabili "pval".

Da qui, tramite una serie di comandi decisionali "if" ed "else if", vengono stampati dei messaggi sul monitor seriale in base ai tasti premuti.
Porta seriale
Porta seriale
In questo caso sono stati premuti 2 pulsanti; uno per "servo2" ed uno per "servo5".

Quado realizzerò la scheda vera e propria per il comando dei servi, vedremo come interpretare queste informazioni per muoverli definitivamente.
ED

Avatar utente
adobel55
Socio GAS TT
Messaggi: 10953
Iscritto il: venerdì 18 novembre 2011, 15:51
Nome: Adolfo
Regione: Lazio
Città: Roma
Ruolo: Moderatore
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#19 Messaggio da adobel55 »

Interessante Ed.

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#20 Messaggio da Edgardo_Rosatti »

Lo so che per i non addetti ai lavori il tutto può sembrare difficile.
Abbiate pazienza che alla fine sarà più semplice di come ce lo si può immaginare.
ED

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#21 Messaggio da Edgardo_Rosatti »

La scheda principale è stata assemblata:
Scheda principale
Scheda principale
e il tastierino funziona correttamente:
Scheda + tastierino
Scheda + tastierino
A tale scheda verranno collegati 6 servi e 6 relè come questi:
Servi e relè
Servi e relè
sia i servi che i relè funzionano a 5 VCC.

Qui un cablaggio quasi completo:
Alimentatore e servi
Alimentatore e servi
Si vedono 4 servi ed un alimentatore esterno da 5VCC per i servi ed i relè.
C'è un problema con i cablaggi della scheda verso 2 servi che non funzionano, ma essendo questo un prototipo è quasi normale.
Comunque la logica funziona perfettamente e a breve potrò presentare il progetto definitivo.

Lo schema a blocchi dell'impianto è questo:
Schema a blocchi
Schema a blocchi
Alla scheda principale arrivano i segnali di ingresso della pulsantiera e degli alimentatorei che qui per forza di cose devono essere 2; uno per i servi a 5 VCC + i relè esterni ed uno per la scheda (da 7 a 12 VCC) con Arduino Nano.
Le uscite sono collegate ai relè ed ai servocomandi.

In base a come programmiamo Arduino e a cosa gli colleghiamo in ingresso al posto della pulsantiera, possiamo programmare questo circuito per utilizzarlo in molti modi diversi come: blocco elettrico, automatismo per stazioni nascoste, fasci di deviatoi, gestione di diorami, ecc.

Sto redando un articolo sul GAS TT Lab che è ancora in fase di stesura e se volete seguirlo cliccate qui:
http://gasttlab.altervista.org/gasttlab ... analogico/
ED

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#22 Messaggio da Edgardo_Rosatti »

Ripubblico lo schema elettrico perchè il vecchio presentava un errore:
Schema elettrico aggiornato
Schema elettrico aggiornato
Ho aggiunto i 6 relè a 5/6 Volt e fatto anche un video del lavoro ultimato che potete vedere qui:

Ciao neh!
ED

Avatar utente
bassistax
Messaggi: 16
Iscritto il: domenica 27 dicembre 2015, 22:28
Nome: claudio
Regione: Toscana
Città: Firenze
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#23 Messaggio da bassistax »

Bravo Edgardo ,un lavoro impeccabile .... i miei complimenti .
Devo dire che, prima di accorgermi di questo post , avevo cercato anch'io una soluzione per azionare con quel modello di servo i deviatoi del mio costruendo plastico ( in scala perfeTTa) pilotati con arduino . Nel mio caso uso una versione Mega2560 che a regime piloterà 11 deviatoi. Ho fatto uso degli ingressi digitali di Arduino che possono assumere due stati :
1) presenza di tensione --> stato logico 1--> deviatoio posizionato su "deviata"
2) assenza di tensione --> stato logico 0 --> deviatoio posizionato su "corretto tracciato"
Ogni ingresso è protetto da una resistenza da 1Kohm,mentre un'altra resistenza da 10Kohm lo pone a massa in assenza di tensione. Per la commutazione uso deviatori a levetta che aiutano (guardando la posizione della levetta ) a capire la posizione del deviatoio.
Se si scelgono quelli a due vie (sei piedini) possiamo usarne un lato per l'ingresso di Arduino e gli altri tre piedini serviranno per alimentare alternativamente dei led di stato sulla consolle di comando.
lo schema di collegamento è il seguente :
Immagine e i deviatori usati sono questi Immagine

Ho preparato anche un prototipo su breadboard che fa uso due servo collegato così:
Immagine Chiaramente al posto delle batterie ho un alimentatore da 5v e Arduino viene alimentato a parte con alimentatore dedicato.
Claudio

Avatar utente
bassistax
Messaggi: 16
Iscritto il: domenica 27 dicembre 2015, 22:28
Nome: claudio
Regione: Toscana
Città: Firenze
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#24 Messaggio da bassistax »

In questo caso il software per Arduino è il seguente:

Codice: Seleziona tutto

#include <Servo.h>
Servo srv1;
Servo srv2;
Servo srv;
int posmin=40;
int posmax=145;
int rit(12);// costante di ritardo routine
int pos=posmin;
int srv1pin = 2;
int srv2pin = 3;
int selettore1 = 22; // ingresso selettore al pin 22
int selettore2 = 23; // ingresso selettore al pin 23
//definizione delle variabili
int val1 = 0;         // si userà val1 per conservare lo stato del pin input1  
int val2 = 0;         // si usera val2 per conservare lo stato del pin input2
int vecchioval1 = 0; 
int vecchioval2 = 0;

// routine spostamento dei servo
void deviata()
{for(pos=posmin;pos<posmax;pos+=1)
{srv.write(pos); //sposta in posizione deviata
delay (rit);}}
void normale()
{for(pos=posmax;pos>posmin;pos-=1)
{srv.write(pos); // sposta in posizione normale
delay (rit);}}

void setup() {
pinMode(selettore1,INPUT);
pinMode(selettore2,INPUT) ;
srv1.attach(srv1pin);
srv2.attach(srv2pin);
srv1.write(pos); //posiziona in posizione normale
srv2.write(pos); //posiziona in posizione normale
}

void loop() {
 // controllo stato selettori  e spostamento servo 
val1 = digitalRead(selettore1); // legge il valore dell'input1 e lo conserva 
if ((val1 == 1)&&(vecchioval1==0)) 
{vecchioval1=val1;
srv=srv1;
deviata();}
if (( val1==0 )&&( vecchioval1==1 ))
{vecchioval1=val1;
srv=srv1;
normale();}

val2 = digitalRead(selettore2); // legge il valore dell'input1 e lo conserva
if ((val2 == 1)&&(vecchioval2 == 0))
{vecchioval2=val2;
srv=srv2;
deviata();}
if (( val2 == 0 )&&( vecchioval2== 1))
{ vecchioval2=val2;
srv=srv2;
normale();}}
Cambiando i valori delle variabili posmin,posmax e rit possiamo variare a piacere rispettivamente la posizione di inizio,quella di arrivo e la velocità di rotazione dei servo ; aumentato rit diminuisce la velocità di rotazione ....queste variabili sono all'inizio del programma.
A grandi linee il programma all'inizio posiziona i servo al minimo poi passa a leggere in successione ogni ingresso. La variabile val (val1 per il primo ,val2 per il secondo) conterrà il valore letto . A questo punto viene fatto un confronto con il vecchio valore di val stabilendo se è cambiato uno stato ..... di conseguenza vengono richiamate le routine di spostamento servo che ho chiamato "deviata" e "normale". tutto semplice e stabile ,ma c'è un piccolo neo ,tra l'altro facilmente aggirabile . Succede che all'accensione, se uno dei selettori è posizionato su deviata , il servo corrispondente si porta velocemente alla posizione di zero e poi ruota normalmente(leggi lentamente) alla posizione scelta. Curiosando in vari forum pare che tale comportamento sia intrinseco dei servo scelti .... al limite basterà posizionare tutti i selettori in posizione di "corretto tracciato" prima di spegnere,infatti i servo in questa posizione non hanno questo per così dire bug. Il software è facilmente implementabile per gestire altri servo e può essere usato anche con altre versioni di Arduino . Chiaramente dovremmo adattarlo ai pin diversi dei due modelli . Spero che il programmino vi sia utile e che magari qualcuno sappia come ovviare al piccolo bug descritto.
Claudio

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4931
Iscritto il: venerdì 28 ottobre 2011, 0:59
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Età: 59
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

#25 Messaggio da Edgardo_Rosatti »

Grazie del tuo intervento Caludio.
L'uso dei servi con Arduino è sempre un po' impegnativo, ma penso anche in generale con altri metodi di gestione degli stessi.
Nel software che hai pubblicato vedo che usi 2 variabili "posmin" e "posmax" con valori 40 e 145 come limiti di escursione in gradi della squadretta montata sul servo.
Va bene, ma per risolvere il problema del posizionamento iniziale che hai dovresti usare 0 per "posmin" e (145-40) 95 per "posmax".
Quando nella procedura di "setup", cioè all'ccensione, Arduino leggerà:
srv1.write(pos); //posiziona in posizione normale
srv2.write(pos); //posiziona in posizione normale
partirà da 0 e non da 40; pos è la variabile usata nel ciclo "for".

É che dovrai smontare la squadretta dei servi, riposizionare i perni col sofrtware aggiornato e infine ricalettare le squadrette.
A me funziona bene e quando accendo il sistema i servi stanno a 0.

Per la memorizzazione dell'ultima posizione impostata prima dello spegnimento, come ti dicevo in privato dovremo usare la libreria EEPROM.h.

Spero che risolverai questo intoppo e ti invito a portare le tue esperienze qui.

ED
ED

Torna a “TECNICHE”