Modulare la tensione da 2 a 10V su un servo tramite arduino

Salve a tutti, premetto che di arduino conosco poco e di elettronica ancor meno. Tutta teoria studiata all'università ma nulla di applicabile materialmente.
Come da titolo, vorrei poter modulare la tensione in ingresso ad un servo motore, per controllarne la rotazione, che va da 2V corrispondenti a 0° a 10V corrispondenti a 180°. So che la tensione massima in uscita in PWM e 5V. Cosa dovrei mettere in mezzo tra arduino ed il servo per poterlo controllare fino a 10V.
Grazie a tutti in anticipo per l'attenzione. :slight_smile:

se è un servo completo, allora non ti serve altro che collegare il pin del servo di ingresso segnale ad un pin arduino e usare la libreria Servo.h

altrimenti oltre allo step up del voltaggio devi usare uno step up dell’amperaggio, altrimenti bruci arduino… in pratica un ponte H, se non erro

lesto:
se è un servo completo, allora non ti serve altro che collegare il pin del servo di ingresso segnale ad un pin arduino e usare la libreria Servo.h

altrimenti oltre allo step up del voltaggio devi usare uno step up dell'amperaggio, altrimenti bruci arduino... in pratica un ponte H, se non erro

Innanzitutto grazie per la risposta ma devi perdonare la mia ignoranza, potresti rispiegarmelo in parole molto molto povere?
Ecco il servo in questione Home | Belimo, me lo hanno regalato e voglio capire cosa farmene. :cold_sweat:

un ponte H è questo:

serve a pilotare motori DC, puoi farli andare avanti e indietro e stare fermi.

Tu hai scritto che per regolare il raggio del servo devi regolare la tensione da 2 a 10V, lo fai con un segnale pwm in base ad un transistor, collegato in questo modo:

al posto di 9 o 12V devi mettere 10 :slight_smile:

JKwest:
vorrei poter modulare la tensione in ingresso ad un servo motore, per controllarne la rotazione, che va da 2V corrispondenti a 0° a 10V corrispondenti a 180°. So che la tensione massima in uscita in PWM e 5V. Cosa dovrei mettere in mezzo tra arduino ed il servo per poterlo controllare fino a 10V.

Premesso che non ho mai visto un servomotore con controllo proporzionale, e non credo stiamo parlando di servo RC, che si controlla con tale modalità, e ti consiglio di verificare bene questa cosa prima di procedere con esperimenti, la soluzione del problema è abbastanza semplice.
Devi usare il segnale PWM aggiungendo sul relativo pin un filtro passa basso con costante di tempo pari ad almeno 20 volte il periodo del pwm (l'ideale è usare un fattore 100 per ottenere un segnale pulito, per contro limita molto la banda utile), nel nostro caso 490 Hz = ~2ms per cui tau del filtro deve valere 2 ms * 20 = 40 ms, lo implementi con un condensatore da 10 uf e una resistenza da 4k, a cui fai seguire un operazionale con fattore di amplificazione 2, ovviamente alimentato con almeno 12V, in modo da ottenere in uscita una tensione compresa tra 0 e poco più 10 V che limiterai opportunamente da software agendo sulle percentuali minime e massime consentite del pwm per ottenere una variazione tra 2V e 10V.
Da notare che la bassa frequenza del pwm di Arduino, solo 490 Hz, limita moltissimo la massima frequenza di variazione del segnale analogico generato tramite filtro passa basso che si attesta ai classici -3db, ovvero il reciproco di tau, pertanto solo 25 Hz, circa 10 Hz senza dover compensare l'errore dovuto alla attenuazione sul valore della tensione in uscita dal filtro.

Gustav_Ygman:
lo fai con un segnale pwm in base ad un transistor, collegato in questo modo:

Ma assolutamente no, in quel modo invii il pwm ad un normale motore, qui stiamo parlando di un servo motore con la sua elettronica dedicata di controllo che in ingresso vuole un ben preciso segnale che nel caso in oggetto è una tensione analogica variabile.

quindi con quel circuito, in base al pwm non ottengo un voltaggio differente?

ho letto il datasheet, non è un servo normale, oltre al segnale 0 - 10V richiede in ingresso anche una corrente alternata...il datasheet si trova nella pagina che ha linkato lui :slight_smile: inoltre ha un'uscita da 2 - 10V che permette di conoscere la posizione del "servo"...mah...

Grazie Gustav_Ygman ma credo che astrobeed abbia ragione sul fatto che non sia un normale motore, riguardando la scheda tecnica mi da l'idea di un servo molto sofisticato...forse anche troppo per me.
astrobeed, per quanto riguarda ciò che ha scritto, ridarò un occhiata molto più approfondita alla scheda tecnica del servo, Home | Belimo, e cercerò di comprenderla meglio se ci riuscirò. Ora studio un po' la tua spiegazione, sono proprio a digiuno in elettronica ed avrò capito l'1%. Grazie ancora a tutti e due. :slight_smile:

Gustav_Ygman:
quindi con quel circuito, in base al pwm non ottengo un voltaggio differente?

Quel circuito è lo schema base, molto base, per pilotare un motore DC in un solo verso tramite un segnale PWM, la tensione in uscita è sempre una bella onda quadra, fortemente distorta per via del tipo di carico, con variazione tra 0 e la tensione di alimentazione e il relativo duty cycle.
La tensione analogica equivalente la vede il motore per effetto dell'induttore, un motore reale ha in serie una resistenza e un'induttanza che sono un filtro passa basso da cui la possibilità di usare il PWM per farlo girare, un motore elettrico ideale non funzionerebbe bene col PWM, sopratutto non si potrebbe utilizzare un modalità LAP.
Per ottenere una vera tensione analogica dal PWM devi usare il metodo che ho descritto qualche post sopra.

ho letto il datasheet, non è un servo normale, oltre al segnale 0 - 10V richiede in ingresso anche una corrente alternata...il datasheet si trova nella

Mi era sfuggito il post col data sheet, si tratta di un banale attuatore per serrande ad uso industriale, infatti si controlla con una tensione 0-10V, ecco perché avevo detto che non mi tornava il valore 2-10V, è fuori standard, mentre è il feedback ad essere una tensione tra 2V e 10V, e questo è normale.
L'alimentazione dell'attuatore può essere sia tramite AC che DC compresa tra 19 e 28V, valore nominale 24V sia AC che DC.

Grazie :slight_smile:

So come funziona a grandi linee un filtro passa basso, ma hai per caso qualche link specifico su come si calcolano resistenze condensatori eccetera?

Gustav_Ygman:
Grazie :slight_smile:

So come funziona a grandi linee un filtro passa basso, ma hai per caso qualche link specifico su come si calcolano resistenze condensatori eccetera?

Si mi accodo, servirebbe anche a me qualche line guida...vado alla cieca.

Gustav_Ygman:
So come funziona a grandi linee un filtro passa basso, ma hai per caso qualche link specifico su come si calcolano resistenze condensatori eccetera?

Limitandoci alla banda passante la cosa è molto semplice, partendo dalla costante di tempo è possibile calcolare R e C perché tau = R*C, R e C andrebbero scelti in base alle altre caratteristiche del filtro, ma nel tuo caso questo non è un problema e puoi usare i primi valori che trovi nel cassetto.
La costante di tempo di un filtro è per definizione il reciproco della frequenza (periodo) che causa una attenuazione pari a -3db, ovvero Vin * 0.707 (reciproco della radice di 2), in pratica la costante di tempo altro non è che il reciproco della frequenza massima ammessa dalla banda passante riferita ad un segnale sinusoidale.
Nel caso di un filtro RC tau rappresenta circa 1/7 del tempo necessario per caricare oltre il 98% il condensatore, in realtà la carica è asintotica e per arrivare al 100% reale serve molto più tempo.

Ma lo schema circuitale come dovrebbe essere? Considerato che io ho un generatore a 24V come lo devo collegare al filtro?

Sto studiando un po' come funzionano i filtri passa-basso ma, sarà colpa mia, non capisco come funzionino nel circuito per controllare il servo da arduino. Come aiutano il segnale pwm?

Il filtro passa basso RC è semplicemente una resistenza in serie al segnale a cui segue un condensatore che chiude verso GND

Non aiuta il segnale PWM, semplicemente lo livella ad un valore di tensione pari al valore medio del segnale.
Se il PWM ha ampiezza di 5V con duty al 100% in uscita dal filtro misuri 5V DC, con duty al 50% misuri 2.5V DC, con duty a 0% misuri 0V DC, ovvero in uscita ottieni una tensione continua variabile in modo lineare in funzione del duty cycle.

giusto per capirsi, idealmente, visualizzando con un oscilloscopio il pwm dopo essere passato per il filtro, non ottengo perfettamente una linea retta, ma comunque un po di disturbo resta giusto?

Ahhh ecco! Mi avevano confuso alcune spiegazioni su alcuni siti e non riuscivo a capire il nesso con il mio problema. Quindi, correggimi se sbaglio, il filtro passa-basso è uno stabilizzatore di segnale, giusto?
Di seguito aggiungo un amplificatore x 2 ed il gioco è fatto?

JKwest:
Ahhh ecco! Mi avevano confuso alcune spiegazioni su alcuni siti e non riuscivo a capire il nesso con il mio problema. Quindi, correggimi se sbaglio, il filtro passa-basso è uno stabilizzatore di segnale, giusto?
Di seguito aggiungo un amplificatore x 2 ed il gioco è fatto?

Il filtro passa alto come il passa basso non è altro che un circuito RC...
Come tutti i quadripoli ha un rapposto tra entrata ed ingresso (Vo/Vi), quando raggiungi la freq di risonanza data dalla formula :(1/( 2PiRC )) l'uscita si riduce a Vi *( 1/ rad (2))
usato in corrente continua come avete scritto serve da "livellatore"

Gustav_Ygman:
comunque un po di disturbo resta giusto?

Dipende da quanto è maggiore la costante di tempo del filtro rispetto al periodo della portante pwm, se usi un fattore 20 un minimo di ripple, con frequenza pari a quella del pwm, rimane, se usi un fattore 100 ottieni una tensione continua praticamente perfetta.
La "fregatura" è nella eventuale banda passante del segnale in tensione continua, se non deve variare molto rapidamente conviene usare una costante di tempo molto alta, se è indispensabile farlo variare velocemente, p.e. a qualche decina di Hertz o comunque con uno slew rate alto, tocca fare i conti con la banda passante del filtro e gli effetti che ha sul segnale in uscita.

ratto93:
quando raggiungi la freq di risonanza data dalla formula :(1/( 2PiRC )) l’uscita si riduce a Vi *( 1/ rad (2))

Un filtro passa basso, o passa alto, non ha una frequenza di risonanza, ha una frequenza limite della banda che per definizione è il punto dove l’attenuazione, riferita ad un segnale sinusoidale, è -3db (Vi*0.707).
La frequenza di risonanza esiste solo nei circuiti RLC.