Grave errore. Con un sistema a fase non minima non può funzionare. Non ti accorgi che il sistema controllato è lontano anni luce da un primo ordine con ritardo?
Stai cercando di applicare un teorema senza che le ipotesi siano verificate.
Settare PID da risposta al gradino
Moderatori:
dimaios,
carlomariamanenti
27 messaggi
• Pagina 2 di 3 • 1, 2, 3
0
voti
Scusa ma non dovrebbe essere a fase non minima, il grafico è uno zoom non quello completo. Se non ho capito male quello che intendevi
0
voti
La risposta al gradino la faccio dando in ingresso la tensione e plottando in uscita la velocità del motorino, in quanto se plottassi la posizione otterrei una risposta divergente. E' sbagliato?
Se do per buona la risposta al gradino con uscita la velocità e da li ricavo costante di tempo e guadagno per poi calcolare col metodo di ziegler-nichols a catena aperta ottego una taratura del PID non corretta.
Dove sbaglio?
Dovresti fare uno schema a blocchi per evitare malintesi.
se ho be capito la proposta del tuo relatore è stimolante:
Rilevare le caratteristiche del gruppo azionatore-motore da delle misure.
se applichi un gradino all'azionatore, il motore si mette in moto con una rampa quasi con una accelerazione costante.
Misura la velocità con uno oscilloscopio o con un opportuno sistema di acquisizione e memorizzazione dati (basato su arduino ?)
La pendenza della rampa dipende dall'inerzia dalla coppia motrice del motore.
Se guardi bene la rampa parte con un leggero ritardo dovuto a ulla costante di tempo dovuta all'induttanza
degli avvolgimenti del motore.
Sono misure difficili e imprecise. Mostrano comè è inutile dimensionare con precisione il regolatore.
p.s.,; mi pare che
1
voti
L'approccio "applico uno stimolo (quasi a caso) e taro il regolatore" potrà anche funzionare, ma mi pare un po' "povero" (specie per una tesi universitaria). Insomma, a me non piace, questo non toglie che potrebbe anche funzionare, ma solo se applicato bene.
Per la maggior parte dei motori DC, infatti, se si ipotizza un carico con inerzia ed attrito lineare con la velocità (tipo
, dove
e
sono le trasformate di velocità e coppia erogata dal motore), la funzione di trasferimento che lega la tensione di armatura alla velocità ha un polo dominante, per cui può essere approssimata ad un sistema del primo ordine.
Supponendo che questa ipotesi sia verificata (cosa che si può verificare a posteriori), guardando la risposta di velocità a fronte di un gradino della tensione si possono ricavare abbastanza facilmente la costante di tempo "elettro-meccanica" ed il guadagno, per poi dimensionare il regolatore analiticamente (oppure con una simulazione).
La funzione di trasferimento che lega la velocità alla posizione, infatti, non ha bisogno di essere identificata.
Quello che si fa normalmente negli azionamenti, è invece prendere a riferimento un modello ed identificare dei parametri che abbiano significato in quel modello, per utilizzarli poi nella taratura.
Questo permette notevoli vantaggi, sia nel poter verificare (prima) la sensatezza dei parametri identificati, sia nella possibilità di utilizzare gli stessi parametri per altri scopi (ad esempio, applicare algoritmi di controllo più complicati).
PS: il controllo di un motore (specie DC) solo tramite un anello di velocità o posizione (con la tensione di armatura come ingresso di controllo) è una soluzione semplice, ma ingegneristicamente poco valida. Infatti, la corrente a rotore bloccato potrebbe essere distruttiva per il convertitore o per il motore. Per questo e per altri motivi (ad esempio quello di poter limitare la coppia indipendentemente dalla tensione disponibile o dalla velocità), si usano controllori con anelli annidati, di cui il più interno è quello di corrente (o coppia, visto che sono legate da una relazione semplice).
Questa configurazione permette anche di applicare, senza praticamente alcuna modifica, il solo controllo di corrente (/coppia), piuttosto che quelloo di velocità o di posizione.
La misura di corrente dovrebbe sempre essere presente, per protezione.
Per la maggior parte dei motori DC, infatti, se si ipotizza un carico con inerzia ed attrito lineare con la velocità (tipo
, dove
e
sono le trasformate di velocità e coppia erogata dal motore), la funzione di trasferimento che lega la tensione di armatura alla velocità ha un polo dominante, per cui può essere approssimata ad un sistema del primo ordine.Supponendo che questa ipotesi sia verificata (cosa che si può verificare a posteriori), guardando la risposta di velocità a fronte di un gradino della tensione si possono ricavare abbastanza facilmente la costante di tempo "elettro-meccanica" ed il guadagno, per poi dimensionare il regolatore analiticamente (oppure con una simulazione).
La funzione di trasferimento che lega la velocità alla posizione, infatti, non ha bisogno di essere identificata.
Quello che si fa normalmente negli azionamenti, è invece prendere a riferimento un modello ed identificare dei parametri che abbiano significato in quel modello, per utilizzarli poi nella taratura.
Questo permette notevoli vantaggi, sia nel poter verificare (prima) la sensatezza dei parametri identificati, sia nella possibilità di utilizzare gli stessi parametri per altri scopi (ad esempio, applicare algoritmi di controllo più complicati).
PS: il controllo di un motore (specie DC) solo tramite un anello di velocità o posizione (con la tensione di armatura come ingresso di controllo) è una soluzione semplice, ma ingegneristicamente poco valida. Infatti, la corrente a rotore bloccato potrebbe essere distruttiva per il convertitore o per il motore. Per questo e per altri motivi (ad esempio quello di poter limitare la coppia indipendentemente dalla tensione disponibile o dalla velocità), si usano controllori con anelli annidati, di cui il più interno è quello di corrente (o coppia, visto che sono legate da una relazione semplice).
Questa configurazione permette anche di applicare, senza praticamente alcuna modifica, il solo controllo di corrente (/coppia), piuttosto che quelloo di velocità o di posizione.
La misura di corrente dovrebbe sempre essere presente, per protezione.
-

SandroCalligaro
2.970 2 4 5 - G.Master EY

- Messaggi: 1181
- Iscritto il: 6 ago 2015, 19:25
0
voti
SandroCalligaro ha scritto:limitare la coppia
Scusatemi se divago: i simulatori tipo Spice sono capaci di includere senza problemi dei componenti elettronici non lineari. Non mi risulta che abbiano in libreria dei motori e dei carichi meccanici, sia pure identificati in modo molto semplificato e lineare, né che siano capaci di plottare le variabili cinematiche. Non sarebbe bello avere un simulatore che includa sia la parte elettronica che quella meccanica, o magari esiste già?
1
voti
Questo non significa che non si possa costruire un circuito che emuli il comportamento di un motore.
Ad esempio, lo si potrebbe fare con dei generatori dipendenti, che mi pare che Spice possa includere.
Per un motore DC a magnete permanente, si avrebbe un circuito di armatura costituito dalla serie di resistenza, induttanza e generatore di tensione dipendente (proporzionale alla velocità). Il sistema meccanico potrebbe essere rappresentato da un generatore di tensione pari alla coppia (che sarebbe un generatore dipendente proporzionale alla corrente di armatura), un'induttanza (l'inerzia) ed una resistenza (il coefficiente di attrito), più eventuali altri generatori per altri contributi di coppia. La corrente del circuito "meccanico" sarebbe l'equivalente della velocità.
Volendo potrei disegnarlo con FidoCad, ma credo sia abbastanza semplice da immaginare.
Bisogna considerare, però, che spesso i circuiti elettronici e i motori hanno costanti di tempo talmente diverse da mettere in crisi simulatori come Spice.
Inoltre, i circuiti switching (che di solito si usano per pilotare i motori) tendono ad essere lenti da simulare. Non parliamo poi della scomodità di simulare in Spice un algoritmo di controllo un minimo complicato...
Per questo, la maggior parte delle simulazioni che coinvolgono motori si fa a livello di sistemi a blocchi (con descrizione del comportamento), come ad esempio Simulink, oppure con simulatori misti (e specializzati) come PLECS. Il secondo, in particolare, è nato per gestire i sistemi con commutazione in modo molto efficiente. Anche Simulink, con alcuni blockset, include elementi circuitali, ma in modo molto macchinoso e non efficiente.
-

SandroCalligaro
2.970 2 4 5 - G.Master EY

- Messaggi: 1181
- Iscritto il: 6 ago 2015, 19:25
0
voti
tino20 ha scritto: Non sono regolari perché sul motore c'è una barra che funge da carico ed oscilla poiché non è perfettamente rigida.
Mi riferivo a questo. Se la barra non è rigida il sistema totale controllato è molto probabilmente a fase non minima. Sostituisci temporaneamente il carico con uno rigido.
Ingegneria : alternativa intelligente alla droga.
-

dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
0
voti
Dovresti fare uno schema a blocchi per evitare malintesi.
se ho be capito la proposta del tuo relatore è stimolante:
Rilevare le caratteristiche del gruppo azionatore-motore da delle misure.
Esattamente. il sistema è composto da arduino, un modulo L298N per il controllo, un motore brush da 12V con encoder. Devo effettuare un controllo in posizione, per cui do come riferimento un valore di rotazione. Ho già implementato il codice del PID e l'ho provato cercando i valori sulla base degli effetti delle costanti del PID e ho trovato un settaggio ottimale(quindi diciamo a tentoni). Quello che ora dovrei fare è ricavarmi dai dati sperimentali un'approssimazione della funzione di trasferimento in modo da calcolare analiticamente i valori del PID (che ovviamente non saranno precisissimi, ma dovrebbero essere una base di partenza).
L'approccio "applico uno stimolo (quasi a caso) e taro il regolatore" potrà anche funzionare, ma mi pare un po' "povero" (specie per una tesi universitaria). Insomma, a me non piace, questo non toglie che potrebbe anche funzionare, ma solo se applicato bene.
Lo stimolo non dovrebbe essere "quasi a caso", infatti nel fare la risposta al gradino do in ingresso il massimo tensione possibile da arduino cioè i 5V (PWM) che poi diventano 10 all'uscita del modulo L298H.
Quello che stavo provando a fare era di visualizzare in uscita la velocità, che come hai ben detto è approssimabile ad un sistema del primo ordine, da questa ricavare l'uscita dello spazio per poi trovare la funzione di trasferimento.
Quello che si fa normalmente negli azionamenti, è invece prendere a riferimento un modello ed identificare dei parametri che abbiano significato in quel modello, per utilizzarli poi nella taratura.
Questo permette notevoli vantaggi, sia nel poter verificare (prima) la sensatezza dei parametri identificati, sia nella possibilità di utilizzare gli stessi parametri per altri scopi (ad esempio, applicare algoritmi di controllo più complicati).
Dovrei considerare il generico modello di un motore brush?
0
voti
dimaios ha scritto:tino20 ha scritto: Non sono regolari perché sul motore c'è una barra che funge da carico ed oscilla poiché non è perfettamente rigida.
Mi riferivo a questo. Se la barra non è rigida il sistema totale controllato è molto probabilmente a fase non minima. Sostituisci temporaneamente il carico con uno rigido.
Per poi tarare con Ziegler-Nichols giusto?
In ogni caso mi serve ricavare la funzione di trasferimento per poi fare lo studio in frequenza.
0
voti
Dipende dai requisiti dinamici del tuo asservimento, e dalla tua abilità.
Io partirei dalla cose più semplici, controllo solo proporzionale ed evidenzerei i limiti.
Come modello ipotizzo che la coppia erogata del motore sia proporzionale alla corrente applicata/assorbita,
che dipende istantaneamente direttamente dalla diffrenza fra tensione di armatura e tensione controelettomotrice.
Hai calcolato il momento di inerzia delle masse rotanti?
Ci sono ingranaggi ? , giochi, elasticità ?
Io partirei dalla cose più semplici, controllo solo proporzionale ed evidenzerei i limiti.
Come modello ipotizzo che la coppia erogata del motore sia proporzionale alla corrente applicata/assorbita,
che dipende istantaneamente direttamente dalla diffrenza fra tensione di armatura e tensione controelettomotrice.
Hai calcolato il momento di inerzia delle masse rotanti?
Ci sono ingranaggi ? , giochi, elasticità ?
27 messaggi
• Pagina 2 di 3 • 1, 2, 3
Torna a Automazione industriale ed azionamenti
Chi c’è in linea
Visitano il forum: Nessuno e 14 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)




