Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Ricavare funzione di trasferimento da funzione di uscita

PLC, servomotori, inverter...robot

Moderatori: Foto Utentedimaios, Foto Utentecarlomariamanenti

0
voti

[11] Re: Ricavare funzione di trasferimento da funzione di uscita

Messaggioda Foto Utentetino20 » 19 mar 2019, 21:04

Se non divido l'uscita per 10.6 V a me funziona benissimo con questi valori.
Avatar utente
Foto Utentetino20
5 5
New entry
New entry
 
Messaggi: 71
Iscritto il: 13 lug 2011, 13:40

0
voti

[12] Re: Ricavare funzione di trasferimento da funzione di uscita

Messaggioda Foto UtenteMarcoD » 19 mar 2019, 21:33

Salve, ho un sistema costituito da arduino, scheda di controllo a ponte L298N e un motore dc brush. Ho implementato la risposta al gradino e ho ricavato la funzione d'uscita della velocità


Faccio fatica a capire: hai un problema teorico da risolvere come esercizio
o
un vero prototipo fisico da provare?

Come comandi l'azionatore L298N ? Con una tensione variabile fra 0 e 5 V ?
Che coppia (corrente nel motore corrisponde a 5 V ? e a 0 V?
Se è un controllo di posizione devi anche invertire il moto del motore.
Quindi +5 V massima coppia oraria, 2,5 V fermo, 0 V massima coppia antioraria ??

Qunto è il momento di inerzia del motore-ingranaggio ? in kg M^2 ?

quella del controllore PD è la classica K_{p} * K_{d} s


Sarà il simbolo di somma non moltiplicazione ??

Con ingresso a gradino l'uscita derivativa va a infinito...come funziona ?
...va in saturazione...come fai a dire che funziona ?


Anche il titolo non mi è chiaro:
Ricavare funzione di trasferimento da funzione di uscita


Vuoi dire ricavare la fdt ad anello chiuso dalla fdt in catena aperta ?
Oppure la funzione di uscita è la fdt dell'impianto (azionatore, motore, carico (attrito) se esiste) ?


perché non provi prima a realizzare un asservimento più semplice con comando tutto niente con banda morta (errore di posizione inferiore in modulo a una data quantità) ?

Oppure un semplice controllo proporzionale.

O_/
Avatar utente
Foto UtenteMarcoD
7.257 4 8 13
Master EY
Master EY
 
Messaggi: 3216
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[13] Re: Ricavare funzione di trasferimento da funzione di uscita

Messaggioda Foto Utentetino20 » 19 mar 2019, 22:44

MarcoD ha scritto:
Salve, ho un sistema costituito da arduino, scheda di controllo a ponte L298N e un motore dc brush. Ho implementato la risposta al gradino e ho ricavato la funzione d'uscita della velocità


Faccio fatica a capire: hai un problema teorico da risolvere come esercizio
o
un vero prototipo fisico da provare?



Prototipo fisico, ho anche detto da cosa è composto.

MarcoD ha scritto:
Come comandi l'azionatore L298N ? Con una tensione variabile fra 0 e 5 V ?


Lo comando col segnale PWM di arduino.

MarcoD ha scritto:
quella del controllore PD è la classica K_{p} * K_{d} s


Sarà il simbolo di somma non moltiplicazione ??



si ovviamente è il simbolo di somma, ho sbagliato.

MarcoD ha scritto:Con ingresso a gradino l'uscita derivativa va a infinito...come funziona ?


Ho fatto la risposta al gradino di tensione di 10.6 V a catena aperta in modo da ricavare la funzione di trasferimento. Per fare ciò ho considerato in uscita la velocità in modo da approssimare la funzione di uscita con

y_{v}(t))=4.93*(1-e^{-\frac{t}{\tau }})

da cui trasformando secondo Laplace

Y_{v}=\frac{4.93}{65.68 s^2+s}

dove 4.93 sono gradi/ms e 65.68 ms è la costante di tempo.

Dovendo effettuare un controllo in posizione tramite PID, ho inserito in cascata a Y_{v}un integratore, ottenendo

Y_{s}=\frac{4.93}{65.68 s^3+s^2}

ovvero la funzione d'uscita del sistema a catena aperta con uscita la posizione.

Dovendo realizzare una sintesi analitica del PID mi ricavo la funzione di trasferimento, ovvero

P=\frac{Y_{s}}{U}

dove U=\frac{10.6}{s} (se non sbaglio!!!)

Ora, avendo tarato il PID manualmente, con i valori Kp=3.1 Kd=0.19, il sistema funziona perfettamente, ma se lo provo su simulink non mi funziona, a meno che nel passaggio in cui ricavo la funzione di traferimento non divido per 10.6. Il mio dubbio è che sbaglio qualcosa in quel punto.
Avatar utente
Foto Utentetino20
5 5
New entry
New entry
 
Messaggi: 71
Iscritto il: 13 lug 2011, 13:40

0
voti

[14] Re: Ricavare funzione di trasferimento da funzione di uscita

Messaggioda Foto Utentetino20 » 20 mar 2019, 1:56

Mi correggo Kd=190
Avatar utente
Foto Utentetino20
5 5
New entry
New entry
 
Messaggi: 71
Iscritto il: 13 lug 2011, 13:40

1
voti

[15] Re: Ricavare funzione di trasferimento da funzione di uscita

Messaggioda Foto UtenteSandroCalligaro » 20 mar 2019, 4:46

Ci sono un po' di cose che non mi tornano...
Quella principale è che dici di aver misurato la risposta, che poi hai approssimato
tino20 ha scritto:Ho fatto la risposta al gradino di tensione di 10.6 V a catena aperta in modo da ricavare la funzione di trasferimento. Per fare ciò ho considerato in uscita la velocità in modo da approssimare la funzione di uscita con
y_{v}(t))=4.93*(1-e^{-\frac{t}{\tau }})
da cui trasformando secondo Laplace
Y_{v}=\frac{4.93}{65.68 s^2+s}
dove 4.93 sono gradi/ms e 65.68 ms è la costante di tempo.
Dovendo effettuare un controllo in posizione tramite PID, ho inserito in cascata a Y_{v}un integratore, ottenendo
Y_{s}=\frac{4.93}{65.68 s^3+s^2}
ovvero la funzione d'uscita del sistema a catena aperta con uscita la posizione.

Se quel coefficiente è in gradi/ms (dovrebbe essere in rad/s, semmai!), allora la tua uscita Y_v mi pare che sia già una posizione...

In ogni caso, io riporterei tutto usando radianti e secondi.

L'altra cosa che non spieghi è che grandezza è realmente l'uscita del tuo regolatore, che poi applichi alla PWM.
Immagino che si tratti del valore di conteggio, che viene normalmente utilizzato dalla funzione AnalogWrite() di Arduino. Se così fosse, va tenuto conto del fatto che il valore corrispondente al duty-cycle (in realtà è il valore di compare) va da 0 a 255.
Non si tratta quindi di una tensione, che era invece l'ingresso del processo (plant) nella tua misura.

Per simulare correttamente, occorre tenere conto di questo aspetto, e del fatto che la tensione media (= mediata nel periodo di PWM) è pari \frac{u}{255} V_{DC}
dove u è l'uscita del regolatore, 255 il fondo scala del compare (cioè il valore che corrisponde ad un duty-cycle del 100%) e V_{DC} la tensione di alimentazione dell'L298.


Per poter ragionare sulla dinamica in modo semplice, quello che si fa normalmente è considerare come uscita del regolatore la tensione da applicare al motore (come media nel periodo di PWM), per poi calcolare il valore di compare che fa ottenere (approssimativamente) quella tensione media.
Avatar utente
Foto UtenteSandroCalligaro
2.256 4 5
Master EY
Master EY
 
Messaggi: 954
Iscritto il: 6 ago 2015, 19:25

0
voti

[16] Re: Ricavare funzione di trasferimento da funzione di uscita

Messaggioda Foto UtenteMarcoD » 20 mar 2019, 8:26

Mistero :?:
Prototipo fisico, ho anche detto da cosa è composto.
Come comandi l'azionatore L298N ? Con una tensione variabile fra 0 e 5 V ?
Lo comando col segnale PWM di arduino.

Già realizzato o almeno concepito/progettato ?

La posizione angolare come la misuri ? Che campo angolare di rotazione ?
Il motore aziona un riduttore di velocità sul cui asse lento è calettato il trasduttore di posizione angolare ?
Quanto tempo impiega per muoversi da una estremità all'altra?
Magari l'attrito meccanico non è trascurabile.
Da quando è in moto e lo disalimenti, quanto tempo impiega a fermarsi?

O il tutto è solo nella pancia di un programma di simulazione ?
Attento:
Detto degli informatici anni 70: garbage in - garbage out
Detto dell'esercito USA: KISS keep it simple stupid
O_/
O_/
Avatar utente
Foto UtenteMarcoD
7.257 4 8 13
Master EY
Master EY
 
Messaggi: 3216
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[17] Re: Ricavare funzione di trasferimento da funzione di uscita

Messaggioda Foto Utentetino20 » 20 mar 2019, 10:49

SandroCalligaro ha scritto:L'altra cosa che non spieghi è che grandezza è realmente l'uscita del tuo regolatore, che poi applichi alla PWM.
Immagino che si tratti del valore di conteggio, che viene normalmente utilizzato dalla funzione AnalogWrite() di Arduino. Se così fosse, va tenuto conto del fatto che il valore corrispondente al duty-cycle (in realtà è il valore di compare) va da 0 a 255.
Non si tratta quindi di una tensione, che era invece l'ingresso del processo (plant) nella tua misura.


Per la risposta al gradino imposto il valore del Duty Cycle del PWM al 100% quindi 255. Quindi tramite AnalogWrite() invio questo valore al ponte L298N. Ai morsetti a cui è collegato il motore ho misurato la tensione di 10.6 V. Quindi in base a quanto dici manca un blocco su Simulink, giusto? In particolare il blocco che rappresenta il ponte e che quindi converte il PWM in uscita da arduino in tensione d'ingresso per il Plant. Ho detto una cavolata?

Ho utilizzato gradi/millisecondi perché l'encoder mi restituisce la misura in gradi
Avatar utente
Foto Utentetino20
5 5
New entry
New entry
 
Messaggi: 71
Iscritto il: 13 lug 2011, 13:40

1
voti

[18] Re: Ricavare funzione di trasferimento da funzione di uscita

Messaggioda Foto UtenteSandroCalligaro » 20 mar 2019, 19:14

Per il tuo scopo, non serve rappresentare esattamente la PWM, basterebbe interporre un guadagno che tenga conto della relazione (che ho scritto nel post precedente) tra tensione e duty-cycle.
Per essere precisi, ci vorrebbe anche un ritardo di un periodo, che rappresenti l'attuazione della PWM.

Hai varie opzioni:
1. invece di considerare la funzione di trasferimento velocità/tensione, consideri velocità/compare (nel tuo caso 255)
2. (preferibile) implementi il controllo (reale) in modo che l'uscita del regolatore sia una tensione
3. ("a risparmio") la struttura rimane uguale in simulazione e nella realtà, ma tieni conto, nel dimensionamento dei parametri del regolatore, del rapporto tra tensione e duty-cycle, cioè per avere lo stesso comportamento nei due casi i guadagni effettivi devono essere diversi.

Il fatto di tener conto esplicitamente della relazione tra duty e tensione media ti permette di gestire meglio le cose, perché le grandezze con cui hai a che fare sono quelle reali. Questo permette, ad esempio, di tener conto di una tensione di ingresso al ponte (V_{DC}) variabile, oltre che (volendo) di stimare grandezze elettriche o di dimensionare un controllore in modo analitico.

Per fare una cosa "seria", ti invito (se non lo hai ancora fatto) a:
- utilizzare un interrupt per la temporizzazione dell'algoritmo (campionamento ed aggiornamento dell'azione di controllo)
- utilizzare una PWM a frequenza più alta del default di AnalogWrite (5 o 10 kHz, ad esempio), scrivendo a mano le configurazioni necessarie (probabilmente le trovi in rete, volendo). A quanto ho visto, 10 kHz sono gestibili, se l'algoritmo di controllo è molto semplice
- misurare la corrente, se non altro per protezione (ma considera che il normale controllo di posizione per un motore DC prevede anelli annidati di corrente e velocità).

In simulazione, puoi usare i sistemi triggerati per rappresentare il controllo, posto che ci sia un minimo di ritardo (anche molto piccolo) nel loop.
Avatar utente
Foto UtenteSandroCalligaro
2.256 4 5
Master EY
Master EY
 
Messaggi: 954
Iscritto il: 6 ago 2015, 19:25

0
voti

[19] Re: Ricavare funzione di trasferimento da funzione di uscita

Messaggioda Foto UtenteMarcoD » 20 mar 2019, 19:34

@SandroCalligaro
Sei sicuramente più competente e miglior didatta di me. :ok:
Ho il dubbio che @tino20 abbia difficaltà a capire quanto hai scritto, perché purtroppo ha soltanto una preparazione scolastica teorica non bene metabolizzata.
O_/
Avatar utente
Foto UtenteMarcoD
7.257 4 8 13
Master EY
Master EY
 
Messaggi: 3216
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[20] Re: Ricavare funzione di trasferimento da funzione di uscita

Messaggioda Foto Utentetino20 » 20 mar 2019, 20:05

@Sandro Calligaro quello che dici tu va troppo oltre le mie conoscenze, il regolatore che ho progettato ha in uscita un segnale PWM che poi va in ingresso al ponte L298N e che quindi va a comandare il motore. (Se puo servire posto il codice)
Quello che mi interessa sapere e che devo fare è costruire un modello su Simulink. Quello che ho detto nel post precedente, ovvero di inserire un blocco tra il controllore e il plant è esatto? Se si come lo costruisco il blocco che mi rappresenta il ponte? Considera che alimento la scheda L298N con 12V , con una PWM DI 255 a catena aperta ho misurato una tensione di uscita della scheda di 10.6V. Tensione che mi va ad alimentare il motore.
Avatar utente
Foto Utentetino20
5 5
New entry
New entry
 
Messaggi: 71
Iscritto il: 13 lug 2011, 13:40

PrecedenteProssimo

Torna a Automazione industriale ed azionamenti

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti