Oggi è 28/03/2024, 21:07

Tutti gli orari sono UTC + 1 ora




Apri un nuovo argomento Rispondi all’argomento  [ 78 messaggi ]  Vai alla pagina 1, 2, 3, 4, 5, 6  Prossimo
Autore Messaggio
 Oggetto del messaggio: Servo e decoder servo
MessaggioInviato: 03/04/2022, 15:51 
Non connesso
Utente

Iscritto il: 02/02/2017, 14:28
Messaggi: 1396
Interessi fermodellistici:  
Città di residenza: Città
Provincia di residenza: Provincia
Dopo aver parlato con Mario Malinverno e Carlo Maldifassi degli "strani" comportamenti dei servo sul modulare di Pavia ho deciso di riassumere qualche informazione riguardo ai servo cinesi e ai servo ESU (solo perchè ho questi e ne posso misurare le caratteristiche e vedere il comportamento, nessun intento "pubblicitario").

Per Pavia (da quel che mi è stato detto, correggetemi se sbaglio) sono stati usati decoder servo ESU Switchpilot comandati non via DCC ma in analogico tramite gli appositi PIN collegati a pulsanti.
I servo sono 22, e inizialmente alimentati a 15V non si muovevano.
Sono stati successivamente alimentati a 24V e si muovono, ma l'assorbimento iniziale è di vari Ampère, e quindi si sono dovuti alimentare gli SwitchPilot in successione, in modo da non mandare in protezione l'alimentatore.
Inoltre alcuni servo, durante il funzionamento, si sono guastati, surriscaldando e rischiando di danneggiare anche lo SwitchPilot.

Questo assorbimento iniziale sembra essere dovuto al fatto che i servo cinesi si muovono appena vengono alimentati.
Uhlenbrock, nelle istruzioni del suo servo decoder Bes67800, scrive
Allegato:
Uhlenbrock 67800.JPG
Uhlenbrock 67800.JPG [ 62.16 KiB | Osservato 742 volte ]
Dato che la maggior parte dei servo si muove in modo incontrollato quando viene data tensione (questa è una caratteristica del servo e non è dovuta al decoder servo), raccomandiamo che il decoder venga connesso anche a un trasformatore a 16V attraverso i terminali "trafo". In questo modo i movimenti incontrollati dei servo avverranno solo quando verrà acceso l'intero impianto.
Nota: tutti i decoder hanno terminali da connettere al "binario" (cioè alla centrale) per la ricezione dei comandi, e altri terminali da connettere ad un trasformatore separato per la potenza per comandare i servo (o altri accessori per i decoder non servo).
I terminali si possono anche ponticellare, ma non è una buona idea, dato che si assorbirebbe corrente "preziosa" dalla centrale per comandare servo o altro.

Si vedano anche le prove di Marco Zaggia in viewtopic.php?f=49&t=11548&start=0 dove lamenta l'elevato assorbimento iniziale dei servo.

Quanto assorbe un servo? Parliamo di servo usati nel fermodellismo cioè di tipo SG90 9G
Secondo le specifiche di questo servo https://protosupplies.com/product/servo ... icro-sg90/ c'è sempre un assorbimento (idle) di 10 mA, in movimento 100-250 mA (dipende da velocità e coppia), in stallo 360 mA.
Altri indicano una corrente di stallo di 600-700 mA.
Il servo assorbe la corrente di stallo quando tenta di muoversi ma non ci riesce, ad esempio quando gli aghi dello scambio arrivano in battuta, ma anche ad inizio movimento.
Quindi per i 22 servo di Pavia, ipotizzando anche solo 360 mA, servono 8A all'avvio.
Anche l'esperienza di un mio amico che ha 42 servo cinesi conferma: con un alimentatore da 10A deve avviarli in due lotti successivi.

Allora tutti i servo hanno un assorbimento iniziale?
NO
Io ho servo ESU collegati a SwitchPilot ESU e mi è venuto lo sfizio di fare qualche misura.
Uno SwitchPilot V2 (4 uscite), senza carichi collegati, assorbe da TRK (binario) a 13.8 V DCC 20 mA, e da PWR (potenza) a 19 V DC 40 mA.
Quindi io vedo un assorbimento DC, senza assorbimenti di carichi a valle degli SwitchPilot, di 1.5 A, dovuto ai soli SwitchPilot.
Però il punto è che, a servo fermi, non c'è nessun assorbimento aggiuntivo. Nè iniziale, nè se connetto un servo.
Ho 97 servo e quando accendo l'impianto (ho provato anche a scollegare e ricollegare l'alimentatore DC ad impianto acceso) leggo sempre 1.5 A.
Ho provato a scollegare uno SwitchPilot e quando lo ricollego leggo sempre 40 mA anche se a valle ci sono 4 servo collegati.
Ho provato a scollegare un servo e quando lo ricollego leggo sempre 40 mA.
Muovendo il servo invece leggo un maggiore assorbimento di circa 60 mA (movimento lento).
Si potrebbe obiettare che non riesco, col tester, a vedere il transitorio iniziale.
Ho relé, per altri scopi, che portano l'assorbimento a 2.5 A e l'alimentatore fornisce 4 A, quindi avrei a disposizione circa 15 mA a servo.
Viceversa, se i servo tentassero di muoversi assorbirebbero almeno 5 A, già oltre la corrente disponibile dall'alimentatore.
Inoltre posso non sentire il ronzio di un singolo servo, ma quello contemporaneo di 97 servo !

Ritorniamo a Pavia.
Per evitare l'assorbimento iniziale, sugli SwitchPilot è stata impostata CV50=4: viene fornita potenza al servo solo quando questo deve muoversi.
Nessun assorbimento iniziale, ma sorge un altro problema: i servo sembrano essere in una posizione "sconosciuta" agli SwitchPilot, alcuni si muovono appena si dà il comando di cambio posizione, per altri invece occorre dare prima il comando di portarsi nella posizione dove sembrano essere e poi si può cambiare (sempre se ho capito bene).
Insomma, rimedio peggiore del male.

Non so se servo ESU, invece di quelli cinesi, collegati allo SwitchPilot comandato in DC invece che in DCC risolverebbero il problema. Secondo Essemmemodel no, essendo legato al comando analogico, secondo me forse sì.
Una cosa però sembra certa, ed è bene che chi si accinge ad usarli ne tanga conto: su impianti con molti servo, in caso di utilizzo di servo cinesi, occorre prevedere un alimentatore molto potente e/o avviare i decoder servo non contemporaneamente.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 04/04/2022, 1:12 
Non connesso
Amministratore
Avatar utente

Iscritto il: 18/12/2010, 22:17
Messaggi: 811
Interessi fermodellistici: Scala N, epoche 4 e 5
Città di residenza: Montegrotto Terme
Provincia di residenza: Padova
Skype: marco_zaggia
Interessante indagine Vittorio, ma permettimi una piccola puntualizzazione: nel post non ho mai scritto di aver rilevato assorbimenti eccessivi dei servo, è solo stata avanzata come ipotesi ma di fatto non ho mai provato a misurare. Inoltre sottolineo che i problemi da me riscontrati si verificavano solo con Servo gestiti manualmente da Arduino e non dai decoder dedicati (Digikeijs DR4024) che han sempre funzionato senza intoppi.
In ogni caso ho risolto eliminando la servo shield e realizzando i collegamenti diretti con l'ausilio di una proto shield. Ho anche sostituito due motori che si erano rotti durante le prove e li ho ricalibrati tutti avendo cura che i punti di partenza/arrivo fossero ben distanti dagli estremi massimi e minimi di ciascun servo. Piccolo vantaggio: collegando i motori direttamente ai pin del'Arduino posso utilizzare la libreria Servo.h la quale contiene il metodo attach(servonum) che consente di attivare un solo servo per volta, diversamente dal wakeup() della Adafruit che attivava contemporaneamente tutte le uscite della scheda, con conseguente ronzio.
Inoltre ho modificato la routine di avvio (metodo setup()) al fine di compensare il movimento inconsulto dei servo quando si collega l'alimentazione. All'accensione ciascun servo si porta nella posizione indicata dall'interruttore sul pannellino. In questa fase i motori si muovono uno alla volta con un intervallo di mezzo secondo tra uno e l'altro.

_________________
The tinier the train, the more concentrated the fun.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 04/04/2022, 9:49 
Non connesso
Utente

Iscritto il: 02/02/2017, 14:28
Messaggi: 1396
Interessi fermodellistici:  
Città di residenza: Città
Provincia di residenza: Provincia
Grazie del contributo Marco.
Penso che una discussione approfondita possa aiutare chi intende usare servo, e pensa di sostituirli pari pari ai solenoidi, mentre non è che sia proprio così.
Potrebbe anche aiutare per Pavia, dove o provano servo ESU collegati agli SwitchPilot, oppure provano con Arduino, se intendi concedere le tue modifiche.

Per l'assorbimento mi riferivo al tuo post viewtopic.php?f=49&t=11548&start=15#p182403
Marco Zaggia ha scritto:
Per quanto riguarda il secondo problema, che è anche il più grave, brancolo nel buio. Mi era stato detto che 3 A sarebbero stati più che sufficienti per alimentare tutto. Ho provato anche ad aggiungere un condensatore alla shield secondo quanto indicato dalla documentazione ma ovviamente non è servito a niente :roll:
Io non ho servo cinesi e perciò non posso misurarne l'assorbimento iniziale e in movimento, quindi ho preso una specifica a caso di un SG90 9G.
Sarebbe bello se riuscissi a misurarlo col tester (come differenza di assorbimento di Arduino).
In effetti anch'io non parlo di assorbimento eccessivo del singolo servo (molto meno di un solenoide), e se uno ha pochi servo il problema non si pone; ma se se ne hanno 20 come per Pavia, il problema si pone.
Detto per chi intende usare servo al posto di solenoidi: la differenza sta nel fatto che i solenoidi stanno fermi all'accensione, e quindi non assorbono nulla, mentre i servo, di per sè, hanno un movimento iniziale, e quindi assorbono (o almeno così sembra con servo cinesi).

Quindi adesso attivi singolarmente in successione ogni servo, e limiti l'assorbimento iniziale.
Mi è stato detto che il decoder servo DAC-A210 di Oscilloscopio attiva i servo in successione, come ora fai tu, ma non ho trovato traccia di questa feature sulle istruzioni, e quindi, anche se esistesse realmente, l'intervallo non è regolabile.
Quanti servo connetti su Arduino e quanti servo in totale? Se hai più Arduino, li attivi contemporaneamente o in successione? Alimentatore da quanti A?

Marco Zaggia ha scritto:
Adafruit che attivava contemporaneamente tutte le uscite della scheda, con conseguente ronzio
Adesso non c'è più ronzio, o è limitato dal fatto che è un solo servo alla volta a muoversi?
Marco Zaggia ha scritto:
Inoltre ho modificato la routine di avvio (metodo setup()) al fine di compensare il movimento inconsulto dei servo quando si collega l'alimentazione
Confermi quello che dicono anche le istruzioni Uhlenbrock, cioè che i servo quando viene data tensione si muovono in modo inconsulto.
Come hai limitato o eliminato questo problema intervenendo sulla libreria?
Marco Zaggia ha scritto:
All'accensione ciascun servo si porta nella posizione indicata dall'interruttore sul pannellino. In questa fase i motori si muovono uno alla volta con un intervallo di mezzo secondo tra uno e l'altro.
Solo quelli in posizione sbagliata o tutti si muovono?
Un servo già in posizione perché si dovrebbe muovere?

Tu hai risolto il problema modificando la libreria e attivando i servo in successione, che mi sembra la cosa più furba, ma che pochi sono in grado di fare.
Secondo te chi ha prodotto la libreria e chi la usa, come risolve il problema? Con alimentatore maggiorato e avviando gli Arduino in successione? Oppure avrà solo qualche servo?

Rimane la differenza tra il tuo metodo (e quello presunto di Oscilloscopio) che attiva i servo in successione, e quello di ESU che invece sembra avere tutto fermo.
Non sappiamo però se sono i servo ESU in sè a non avere movimento ed assorbimento iniziale (cioè se si comporterebbero allo stesso modo anche con Arduino e libreria Adafruit, o con altri decoder), oppure se dipenda da un "colloquio" tra SwitchPilot e servo.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 04/04/2022, 10:18 
Non connesso
Maestro Modellista
Avatar utente

Iscritto il: 30/12/2009, 8:58
Messaggi: 12570
Località: Arluno MI
Interessi fermodellistici: Italiano, scala N, un po' tutte le epoche
Città di residenza: Arluno
Provincia di residenza: Milano
Skype: mario.malinverno
Do un piccolo contributo: dopo aver illustrato a Stefano Essemme il funzionamento su Pavia ci ha consigliato di alimentare Gli SWpilot con tensione a 15V e 5A.
Ho provato e funziona si attivano tutti 7 contemporaneamente ora però manca la prova finale, tornare ad avere i servo sempre alimentati (CV50=0) mercoledì Andrea me li restituisce modificati e farò sapere il risultato.

_________________
Saluti
Mario
..nessuno nasce imparato...


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 04/04/2022, 10:21 
Non connesso
Utente

Iscritto il: 02/02/2017, 14:28
Messaggi: 1396
Interessi fermodellistici:  
Città di residenza: Città
Provincia di residenza: Provincia
Mario Malinverno ha scritto:
Do un piccolo contributo: dopo aver illustrato a Stefano Essemme il funzionamento su Pavia ci ha consigliato di alimentare Gli SWpilot con tensione a 15V e 5A.
Ho provato e funziona si attivano tutti 7 contemporaneamente ora però manca la prova finale, tornare ad avere i servo sempre alimentati (CV50=0) mercoledì Andrea me li restituisce modificati e farò sapere il risultato.
All'inizio come li alimentavate, prima dei 24V? E adesso è chiaro che con CV50=4 non c'è assorbimento inziale, quindi attendiamo il ritorno.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 04/04/2022, 10:26 
Non connesso
Maestro Modellista
Avatar utente

Iscritto il: 30/12/2009, 8:58
Messaggi: 12570
Località: Arluno MI
Interessi fermodellistici: Italiano, scala N, un po' tutte le epoche
Città di residenza: Arluno
Provincia di residenza: Milano
Skype: mario.malinverno
Vittorio Vegetti ha scritto:
All'inizio come li alimentavate, prima dei 24V? E adesso è chiaro che con CV50=4 non c'è assorbimento inziale, quindi attendiamo il ritorno.
Un trafo FL evidentemente con basso amperaggio

_________________
Saluti
Mario
..nessuno nasce imparato...


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 04/04/2022, 12:55 
Non connesso
Socio ASN
Avatar utente

Iscritto il: 11/01/2010, 14:27
Messaggi: 918
Interessi fermodellistici: Scala N, FS ep.V
Città di residenza: Genova
Provincia di residenza: Genova
Io riporto un'altra esperienza: sul plastico GFG abbiamo alcuni servo (cinesi) con decoder Oscilloscopio.

Quello che ho notato è che se ad uno scambio a bobina o motore lento, ripeto il comando di spostarsi nella posizione in cui è già, a meno di finecorsa fisici del motore, il motore riceve l'impulso, ossia il decoder non ha problemi a riattivare la stessa uscita più volte in sequenza.

Nei decoder per servo invece il decoder memorizza l'ultima posizione (comando ricevuto) e non lo ripete se non dopo di aver ricevuto il comando per la posizione opposta. (spero di essermi capito :D )


Altra questione, ma è più una domanda: ai servo arriva il +5V ed il segnale di comando; io credo che in un qualunque sistema non appositamente pensato, ci sia il rischio che il +5V arrivi prima del segnale di controllo da cui possibili movimenti incontrollati. Sbaglio?

Mi sembra assurdo dover utilizzare un alimentatore da 5A per lo spunto iniziale.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 04/04/2022, 14:22 
Non connesso
Utente

Iscritto il: 02/02/2017, 14:28
Messaggi: 1396
Interessi fermodellistici:  
Città di residenza: Città
Provincia di residenza: Provincia
Christian Corradi ha scritto:
Altra questione, ma è più una domanda: ai servo arriva il +5V ed il segnale di comando; io credo che in un qualunque sistema non appositamente pensato, ci sia il rischio che il +5V arrivi prima del segnale di controllo da cui possibili movimenti incontrollati. Sbaglio?
Christian, rispondo alla tua domanda correggendo al contempo una mia precedente affermazione riguardante il DAC-A210: non alimenta in sequenza i servo, ma introduce un delay tra alimentazione DCC e tensione ai servo.
Deduco quindi che sia come ipotizzi tu, e come avverte il foglietto Uhlenbrock: se la tensione arriva prima del controllo il servo si muove a caso.
Per questo probabilmente con Digikeijs non accade, magari anche Digikejis attiva prima DCC e poi uscite servo.
Mi dicono però che rimane un assorbimento iniziale.
Christian Corradi ha scritto:
Nei decoder per servo invece il decoder memorizza l'ultima posizione (comando ricevuto) e non lo ripete se non dopo di aver ricevuto il comando per la posizione opposta
Da quel che mi dice Mario, se si pone CV50=4 (Power on servo only while moving) per evitare l'assorbimento iniziale, alcuni servo non si muovono ricevendo il comando direzione opposta, ma devono prima ricevere il comando direzione dove già (sembrano) trovarsi. Una volta eseguito questo "setup" iniziale, poi funziona tutto regolarmente.
E' come se all'accensione dell'impianto lo SwitchPilot con servo cinesi non sapesse da che parte sta il servo.
Supponiamo che il servo sia a sinistra ma SwitchPilot "crede" che sia a destra, gli dò un comando destra e Switchpilot non lo muove appunto perché lo crede già a destra, mentre se gli dò comando sinistra ce lo manda (anche se fisicamente non si muove dato che è già in battuta), a questo punto ho sincronizzato SwitchPilot e servo e d'ora in poi i comandi funzionano.
Con CV50=0 invece, si ha assorbimento e sbacchettamento iniziale, ma intanto servo e SwitchPilot si sincronizzano e non si ha questo inconveniente.
Secondo me SwitchPilot non agisce come Oscilloscopio o Digikeijs, alimentando i servo dopo DCC, infatti si accende solo quando collego PWR, non se collego solo TRK.
Però con SwitchPilot e servo ESU, anche lasciando CV50=0 che è il default, non vedo nè assorbimento iniziale nè problemi di sincronizzazione, ipotizzo che nel servo ESU ci sia un firmware (sul chip che è all'interno del servo) che lo fa colloquiare con SwitchPilot e gli comunica la posizione, prima che SwitchPilot gli fornisca tensione.
Con SwitchPilot e servo non ESU questo colloquio non avviene e quindi SwitchPilot con CV50=0 muove il servo per mandarlo in posizione, da cui sbacchettamento ed assorbimento iniziale.
Queste sono solo mie ipotesi per spiegare i diversi comportamenti.

Se sono corrette significa che i decoder che pilotano servo sconosciuti devono comunque alimentarli e tentare di spostarli all'inizio per conoscerne la posizione: i più furbi nella stessa posizione dove li avevano lasciati e memorizzati, quindi senza movimento evidente, senza sbacchettamento ma con un po' di assorbimento.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 04/04/2022, 15:26 
Non connesso
Amministratore
Avatar utente

Iscritto il: 18/12/2010, 22:17
Messaggi: 811
Interessi fermodellistici: Scala N, epoche 4 e 5
Città di residenza: Montegrotto Terme
Provincia di residenza: Padova
Skype: marco_zaggia
Vittorio Vegetti ha scritto:
Potrebbe anche aiutare per Pavia, dove o provano servo ESU collegati agli SwitchPilot, oppure provano con Arduino, se intendi concedere le tue modifiche.
Io concedo tutto, anche moglie e fidanzata se necessario (ma non toccatemi i trenini) :lol: Eccovi servito lo sketch con le modifiche:
Codice:
#include <Servo.h>

struct turnout
{
  int closed;
  int thrown;
  int switch_pin;
  int relay_pin;
  int pos;
};

Servo pwm = Servo();

const int totDeviatoi = 14;
turnout deviatoi[totDeviatoi];

void setup()
{
//  Serial.begin(9600);
  configura(12, 43, 140, 30, 31);
  configura(11, 41, 138, 32, 33);
  configura(10, 19, 80, 34, 35);
  configura(9, 40, 106, 36, 37);
  configura(8, 84, 126, 38, 39);
  configura(7, 60, 126, 46, 47);
  configura(6, 64, 121, 40, 41);
  configura(5, 57, 119, 44, 45);
  configura(4, 67, 120, 48, 49);
  configura(3, 62, 127, 42, 43);
  configura(2, 44, 125, 50, 51);
  pwm.detach();
}

void loop()
{
  for(int n = 0; n < totDeviatoi; n++) {
    if(digitalRead(deviatoi[n].switch_pin) == LOW && deviatoi[n].pos < deviatoi[n].thrown){
      pwm.attach(n);
      for (deviatoi[n].pos = deviatoi[n].closed; deviatoi[n].pos <= deviatoi[n].thrown; deviatoi[n].pos += 1) {
        if(deviatoi[n].pos == round((deviatoi[n].thrown + deviatoi[n].closed)/2)){
          digitalWrite(deviatoi[n].relay_pin, LOW);
        }
        pwm.write(deviatoi[n].pos);
//        Serial.println(deviatoi[n].pos);
        delay(20);
      }
      pwm.detach();
    }
    if(digitalRead(deviatoi[n].switch_pin) == HIGH && deviatoi[n].pos > deviatoi[n].closed){
      pwm.attach(n);
      for (deviatoi[n].pos = deviatoi[n].thrown; deviatoi[n].pos >= deviatoi[n].closed; deviatoi[n].pos -= 1) {
        if(deviatoi[n].pos == round((deviatoi[n].thrown + deviatoi[n].closed)/2)){
          digitalWrite(deviatoi[n].relay_pin, HIGH);
        }
        pwm.write(deviatoi[n].pos);
//        Serial.println(deviatoi[n].pos);
        delay(20);
      }
      pwm.detach();
    }
  }
}

void configura(int addr, int chiuso, int girato, int interruttore, int rele)
{
  deviatoi[addr].closed = chiuso;
  deviatoi[addr].thrown = girato;
  deviatoi[addr].switch_pin = interruttore;
  deviatoi[addr].relay_pin = rele;
  pinMode(deviatoi[addr].switch_pin, INPUT);
  pinMode(deviatoi[addr].relay_pin, OUTPUT);
  if(!digitalRead(deviatoi[addr].switch_pin)){
    deviatoi[addr].pos = deviatoi[addr].thrown;
  } else {
    deviatoi[addr].pos = deviatoi[addr].closed;
    digitalWrite(deviatoi[addr].relay_pin, HIGH);
  }
//  Serial.println(deviatoi[addr].pos);
  pwm.attach(addr);
  pwm.write(deviatoi[addr].pos);
  delay(500);
}


Vittorio Vegetti ha scritto:
Quindi adesso attivi singolarmente in successione ogni servo, e limiti l'assorbimento iniziale.
Mi è stato detto che il decoder servo DAC-A210 di Oscilloscopio attiva i servo in successione, come ora fai tu, ma non ho trovato traccia di questa feature sulle istruzioni, e quindi, anche se esistesse realmente, l'intervallo non è regolabile.
Quanti servo connetti su Arduino e quanti servo in totale? Se hai più Arduino, li attivi contemporaneamente o in successione? Alimentatore da quanti A?
Ho in tutto una dozzina di servo su un solo arduino. L'alimentatore che uso attualmente è da 4,17 A, ma ho usato anche un 5 A senza notare differenze.

Vittorio Vegetti ha scritto:
Adesso non c'è più ronzio, o è limitato dal fatto che è un solo servo alla volta a muoversi?
Adesso quando comando un deviatoio dal pannello l'unico rumore che si sente è quello del relativo servo in movimento, gli altri stanno fermi e non ronzano.

Vittorio Vegetti ha scritto:
Confermi quello che dicono anche le istruzioni Uhlenbrock, cioè che i servo quando viene data tensione si muovono in modo inconsulto.
Come hai limitato o eliminato questo problema intervenendo sulla libreria?
Non ho eliminato il problema (purtroppo), l'ho solo "circumnavigato". Nell'istante in cui collego la spina i servo si spostano tutti un po' a caso (all'incirca verso la posizione centrale ma non sempre e non uniformemente), poi quando l'Arduino comincia l'inizializzazione (esegue il setup()) li porta uno ad uno nella posizione corretta. Nota che questo problema si verifica solo con l'Arduino e non con i servo comadati dai decoder DR4024, che probabilmente nella loro logica implementano un sistema per non far sobbalzare i servo quando si accende il decoder. Purtroppo solo Digikeijs ha idea di come sia progettato il software all'interno di quei decoder. È il brutto dei sistemi proprietari: non sei libero di studiare come sono fatti.

Vittorio Vegetti ha scritto:
Solo quelli in posizione sbagliata o tutti si muovono?
Un servo già in posizione perché si dovrebbe muovere?
Come scritto sopra all'accensione si muovono tutti, quindi perdono la posizione in cui erano stati lasciati e mi tocca riportarceli con il metodo descritto poc'anzi.

Vittorio Vegetti ha scritto:
Tu hai risolto il problema modificando la libreria e attivando i servo in successione, che mi sembra la cosa più furba, ma che pochi sono in grado di fare.
Secondo te chi ha prodotto la libreria e chi la usa, come risolve il problema? Con alimentatore maggiorato e avviando gli Arduino in successione? Oppure avrà solo qualche servo?
Non ho assolutamente modificato le librerie, semplicemente nel mio sketch ho importato la Servo.h (che controlla i servo collegati direttamente) al posto della Adafruit_PWMServoDriver.h (che controlla tramite il chip PCA9685 della servo shield) e poi ho aggiustato i nomi dei metodi nelle varie chiamate. Puoi verificarlo confrontando il vecchio codice con il nuovo. Non ho la benché minima idea di cosa avessero in mente coloro che hanno scritto le librerie, l'unica cosa che posso consigliarti è di spulciare il codice sorgente sui loro GitHub :oops: Tuttavia il problema del sobbalzo iniziale credo che sia indipendente dalla libreria utilizzata, perché in quella fase Arduino deve ancora iniziare ad eseguire il suo programma.

Vittorio Vegetti ha scritto:
Rimane la differenza tra il tuo metodo (e quello presunto di Oscilloscopio) che attiva i servo in successione, e quello di ESU che invece sembra avere tutto fermo.
Non sappiamo però se sono i servo ESU in sè a non avere movimento ed assorbimento iniziale (cioè se si comporterebbero allo stesso modo anche con Arduino e libreria Adafruit, o con altri decoder), oppure se dipenda da un "colloquio" tra SwitchPilot e servo.
Io credo che dipenda dai decoder, che come accennavo più sopra sono fatti in modo che all'accensione i servo non si muovano, comportamento che finora non sono riuscito a replicare su Arduino, anche perché non sono certo si tratti di qualcosa implementato a livello di software o hardware.

_________________
The tinier the train, the more concentrated the fun.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 04/04/2022, 16:21 
Non connesso
Utente

Iscritto il: 02/02/2017, 14:28
Messaggi: 1396
Interessi fermodellistici:  
Città di residenza: Città
Provincia di residenza: Provincia
Marco, grazie per le risposte. Inizio a capirci un po' di più.
Mi convinco che sia per lo meno plausibile l'ipotesi detta nel post precedente: ESU (e magari anche Digikeijs) hanno implementato sui loro decoder un sistema per avere un feedback di posizione (almeno destra/sinistra) dai loro servo. Se si usano servo altrui non c'è questo feedback e quindi il servo si muove.

Riguardo ad Arduino, non ho intenzione di usarlo, ma ti ringrazio a nome di chi magari volesse un controllo un po' migliore di quello che avevi trovato in Internet in origine.
La tua soluzione di alimentare i servo solo uno alla volta e dopo la comunicazione DCC mi sembra il meglio che si possa fare, se non si dispone del feedback detto sopra.

Attendiamo anche la prova su Pavia per tirare qualche conclusione.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 05/04/2022, 0:04 
Non connesso
Amministratore
Avatar utente

Iscritto il: 18/12/2010, 22:17
Messaggi: 811
Interessi fermodellistici: Scala N, epoche 4 e 5
Città di residenza: Montegrotto Terme
Provincia di residenza: Padova
Skype: marco_zaggia
Scusami Vittorio, ma torno a fare il puntiglioso :lol:
I servo Digikeijs non credo che siano poi tanto diversi dai soliti SG90 cinesi. Anzi, gli SG90 mi sono sembrati pure un pelino meglio in quanto a rumorosità durante il movimento (ma può darsi che sia solo un'impressione mia). Per il resto siamo sempre lì: il solito chassis in plastica blu trasparente, soliti ingranaggi in plastica e stesso problema di sussulto all'accensione quando collegati ad Arduino. Per inciso, i servo che ho dovuto cambiare erano proprio dei Digikeijs, sostituiti da degli SG90. Per tagliare completamente la testa al toro si potrebbe provare ad attaccare un SG 90 al decoder Digikeijs e vedere cosa fa.
In breve: non mi pare che i servo Digikeijs siano tanto diversi da quelli comunemente acquistati su ebay, se non per il nome scritto sull'adesivo ed una ritoccatina al rialzo del prezzo (ennesimo caso di badge engineering?). Di conseguenza, sono convito che, se c'è una qualche logica che ottiene un feedback, questa stia tutta nel decoder, un po' come avviene per il controllo BEMF sulle locomotive.
Ovviamente le mie considerazioni sono riferite ai decoder ed ai servo Digikeijs, gli Esu non li possiedo. Tuttavia non sarei sorpreso se un discorso analogo valesse anche per Esu.

_________________
The tinier the train, the more concentrated the fun.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 05/04/2022, 8:17 
Non connesso
Socio ASN
Avatar utente

Iscritto il: 24/05/2016, 13:53
Messaggi: 732
Interessi fermodellistici: Scala N
Città di residenza: Schio
Provincia di residenza: Vicenza
Christian Corradi ha scritto:
Nei decoder per servo invece il decoder memorizza l'ultima posizione (comando ricevuto) e non lo ripete se non dopo di aver ricevuto il comando per la posizione opposta. (spero di essermi capito :D )


Io che sto per fare il passo da solenoidi a servo (tramite decoder Servo Uhlenbrock art.67800),non mi ponevo alcun problema,proprio perche' pensavo fosse cosi', come il quote di Christian. Questo anche con servo cinesi,e sono molto tentato di prenderne alcuni per provare,visto che dispongo già di un servo decoder,una prova volante,la potei fare.

_________________
Sandro


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 05/04/2022, 8:48 
Non connesso
Utente

Iscritto il: 02/02/2017, 14:28
Messaggi: 1396
Interessi fermodellistici:  
Città di residenza: Città
Provincia di residenza: Provincia
Certo, provare direi che è quasi d'obbligo prima di decidere.
Però tieni conto che, con servo cinesi, il numero conta.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 05/04/2022, 10:10 
Non connesso
Utente
Avatar utente

Iscritto il: 08/11/2012, 21:51
Messaggi: 1746
Interessi fermodellistici: Esclusivamente autocostruzione in scala Z ed N, di mezzi ed impianti con metodi di stampa 3D
Città di residenza: Oegstgeest (Olanda)
Provincia di residenza: ZH
Marco,
nella mia esperienza ho notato che i servo si muovono casualmente perché non hanno il riferimento all'accensione. Quando dai potenza alla scheda arduino questa ci mette un po di tempo a caricare il codice e a farlo partire, nel frattempo i servo hanno già potenza e non avendo segnale di riferimento si muovono a caso.

Se vuoi provare se questo sia vero anche per te potresti provare a dare potenza ai servo solo dopo che il primo comando di posizione è partito.
I servo analogici (che sono quelli che tutti usano) hanno tre terminali, massa, segnale e +5V.
Anche quelli digitali hanno la stessa configurazione.

Se vuoi fare questa prova fa in modo di comandare il servo e poi connettere i +5V, se ho ragione vedrai che il servo va immediatamente alla posizione richiesta, senza movimenti erratici.

Se la prova conferma questa ipotesi potresti allora mettere un relè comandato da arduino che alimenta il +5 dei servo solo dopo che il primo segnale di posizione è partito.

Tra l'altro potresti usare il relè anche per spegnere i servo quando non in uso. Questo ti consentirebbe di risparmiare energia e aumentare la vita dei servo. I servo per implementare il controllo a reazione interno hanno calettato sull'asse un piccolo potenziometro (in genere a grafite) che permette di sentire la posizione angolare. Il potenziometro si consuma di più nelle zone in cui il servo si sposta più frequentemente. Si perché anche se i servo sembra che non si muovano, fanno continuamente dei piccoli movimenti per mantenere la posizione richiesta. Con questi movimenti sempre nella stessa zona, alla lunga il pattino del potenziometro scava la traccia di grafite.
Ciao
g.


Top
 Profilo  
Rispondi citando  
 Oggetto del messaggio: Re: Servo e decoder servo
MessaggioInviato: 05/04/2022, 10:52 
Non connesso
Utente

Iscritto il: 02/02/2017, 14:28
Messaggi: 1396
Interessi fermodellistici:  
Città di residenza: Città
Provincia di residenza: Provincia
Marco Zaggia ha scritto:
Scusami Vittorio, ma torno a fare il puntiglioso :lol:
I servo Digikeijs non credo che siano poi tanto diversi dai soliti SG90 cinesi.
Non li ho e quindi non posso fare confronti, ma in effetti anche altri mi dicono che sembrano essere cinesi rimarchiati.
Gianfranco Visentin ha scritto:
nella mia esperienza ho notato che i servo si muovono casualmente perché non hanno il riferimento all'accensione. Quando dai potenza alla scheda arduino questa ci mette un po di tempo a caricare il codice e a farlo partire, nel frattempo i servo hanno già potenza e non avendo segnale di riferimento si muovono a caso.
Se vuoi provare se questo sia vero anche per te potresti provare a dare potenza ai servo solo dopo che il primo comando di posizione è partito.
Sembra essere ciò che fa il decoder DAC-A210, e non so se il Digikeijs.
Sarebbe bello trovare documentazione.


Top
 Profilo  
Rispondi citando  
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 78 messaggi ]  Vai alla pagina 1, 2, 3, 4, 5, 6  Prossimo

Tutti gli orari sono UTC + 1 ora


Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  

 

Link ai siti Amici

Powered by phpBB® Forum Software © phpBB Group
Traduzione Italiana phpBBItalia.net basata su phpBB.it 2010