Motore sotto plancia per deviatoi con servocomando

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

Moderatori: Fabrizio, v200

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » dom dic 29, 2019 1:13 am

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 29 volte

Il montaggio del telaio e del supporto è visibile qui:
Motor_servo.png
Montaggio telaio e servo
Stesso file, ma in pdf (scala 1:1):
Motor_servo.pdf
(20.48 KiB) Scaricato 30 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:
Motor_dima_A4.png
Dima A4
e il file pdf in scala 1:1:
Motor_dima_A4.pdf
(15.28 KiB) Scaricato 30 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
:-X
8472

Avatar utente
liftman
Socio GAS TT
Messaggi: 7421
Iscritto il: dom gen 29, 2012 2:40 pm
Nome: Rolando
Regione: Liguria
Città: La Spezia
Ruolo: Moderatore
Età: 64
Stato: Non connesso
Contatta:

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da liftman » dom dic 29, 2019 10:06 am

Grazie per la condivisione!
Ciao! Rolando

Avatar utente
MrMassy86
Socio GAS TT
Messaggi: 14502
Iscritto il: sab nov 10, 2012 3:42 pm
Nome: Massimiliano
Regione: Toscana
Città: Marlia - Lucca
Ruolo: Moderatore
Età: 33
Stato: Non connesso
Contatta:

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da MrMassy86 » dom dic 29, 2019 10:53 am

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: 3446
Iscritto il: dom apr 26, 2015 5:22 pm
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Età: 63
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da sal727 » dom dic 29, 2019 2:08 pm

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

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » lun dic 30, 2019 2:10 pm

sal727 ha scritto:
dom dic 29, 2019 2:08 pm
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
:-X
8472

Avatar utente
sal727
Messaggi: 3446
Iscritto il: dom apr 26, 2015 5:22 pm
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Età: 63
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da sal727 » lun dic 30, 2019 7:35 pm

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 31 volte
Ciao, Salvatore

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » lun dic 30, 2019 9:57 pm

É 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:
6_Servi_Arduino_bb.jpg
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
:-X
8472

Avatar utente
sal727
Messaggi: 3446
Iscritto il: dom apr 26, 2015 5:22 pm
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Età: 63
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da sal727 » lun dic 30, 2019 10:38 pm

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.
Ciao, Salvatore

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » mar dic 31, 2019 12:34 am

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
:-X
8472

Avatar utente
sal727
Messaggi: 3446
Iscritto il: dom apr 26, 2015 5:22 pm
Nome: Salvatore
Regione: Emilia Romagna
Città: Bologna
Ruolo: Moderatore
Età: 63
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da sal727 » mar dic 31, 2019 12:52 am

Te l'ho inviato per email
Ciao, Salvatore

Avatar utente
Nick8526
Messaggi: 174
Iscritto il: gio nov 23, 2017 2:11 pm
Nome: Nicola
Regione: Lombardia
Città:
Età: 34
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Nick8526 » gio gen 16, 2020 2:25 pm

Nicola

Avatar utente
Nick8526
Messaggi: 174
Iscritto il: gio nov 23, 2017 2:11 pm
Nome: Nicola
Regione: Lombardia
Città:
Età: 34
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Nick8526 » gio gen 16, 2020 2:31 pm

Nicola

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » gio gen 16, 2020 11:17 pm

Ed
:-X
8472

Avatar utente
liftman
Socio GAS TT
Messaggi: 7421
Iscritto il: dom gen 29, 2012 2:40 pm
Nome: Rolando
Regione: Liguria
Città: La Spezia
Ruolo: Moderatore
Età: 64
Stato: Non connesso
Contatta:

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da liftman » gio gen 16, 2020 11:39 pm

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

Avatar utente
Nick8526
Messaggi: 174
Iscritto il: gio nov 23, 2017 2:11 pm
Nome: Nicola
Regione: Lombardia
Città:
Età: 34
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Nick8526 » ven gen 17, 2020 12:58 pm

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: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » sab gen 18, 2020 11:32 pm

Ora ho visto tutto, grazie.
Ed
:-X
8472

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » mer feb 05, 2020 12:12 am

Sto riprendendo in mano questo progetto e ho abbozzato uno schema elettrico completo con il quale realizzerò un prototipo funzionante.
Controller_per_deviatoi.png
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.
IMG_20200204_225202.jpg
Master per fotoincisione pcb a doppa faccia
A destra la pulsantiera ed a sinistra la logica

Un preview di Eagle:
Schema_servi.png
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
:-X
8472

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » dom feb 23, 2020 12:46 am

Primo test sulla pulsantiera a 12 tasti per comandare 6 servi.
IMG_20200222_225017.jpg
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.
IMG_20200222_234104.jpg
Test pulsantiera
Lo schema elettrico dei 6 partitori è evidenziato qui:
Partitore.png
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_Partitore.png
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.
Serial_port.PNG
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
:-X
8472

Avatar utente
adobel55
Socio GAS TT
Messaggi: 9112
Iscritto il: ven nov 18, 2011 3:51 pm
Nome: Adolfo
Regione: Lazio
Città: Roma
Ruolo: Moderatore
Età: 65
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da adobel55 » dom feb 23, 2020 8:36 am

Interessante Ed.

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » lun feb 24, 2020 12:07 am

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
:-X
8472

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » gio feb 27, 2020 11:29 pm

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

Qui un cablaggio quasi completo:
IMG_20200227_224902.jpg
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_blocchi_servi.png
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
:-X
8472

Avatar utente
Edgardo_Rosatti
Socio GAS TT
Messaggi: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » sab feb 29, 2020 10:46 pm

Ripubblico lo schema elettrico perchè il vecchio presentava un errore:
Controller_deviatoi.png
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
:-X
8472

Avatar utente
bassistax
Messaggi: 14
Iscritto il: dom dic 27, 2015 10:28 pm
Nome: claudio
Regione: Toscana
Città: firenze
Età: 56
Stato: Non connesso
Contatta:

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da bassistax » lun mar 02, 2020 5:36 pm

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: 14
Iscritto il: dom dic 27, 2015 10:28 pm
Nome: claudio
Regione: Toscana
Città: firenze
Età: 56
Stato: Non connesso
Contatta:

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da bassistax » lun mar 02, 2020 6:05 pm

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: 4526
Iscritto il: ven ott 28, 2011 12:59 am
Nome: Edgardo
Regione: Lombardia
Città: Muggiò
Stato: Non connesso

Re: Motore sotto plancia per deviatoi con servocomando

Messaggio da Edgardo_Rosatti » lun mar 02, 2020 10:15 pm

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
:-X
8472

Rispondi

Torna a “TECNICHE”