Laboratorio di automatica
Sistema dinamico
La strettamente connesso al tempo (ciò che è successo influenza il futuro)
Input (ingresso) e output (uscita)
- Px: Plant (Impianto) - porzione di mondo che isolo
- Sx: State (Stato) - variabile che riassume la storia passata di quell'oggetto
- Se: Sensor (Sensore) - misura una grandezza fisica e invia informazioni
- r: References (Riferimento)
- e: Error (Errore)
- C: Controller - corregge gli errori
- A: Attuatore (Actuator) - trasforma le informazioni in azioni
3 approcci
-
Modelizzazione multifisica
- Grafici:
- Diagrams a blocchi
- Bond graph
- Matematica:
- O.D.E. e T.R (Equazioni Diff. Ordinarie) - tempo continuo
- Equazioni alle differenze e Z - tempo discreto
- Sistemi Ibridi
-
Simulazione
- Matlab
- Simulink
- SIL/SCAPE
-
Prototipazione
- Arduino
Osservazioni
Diversi livelli di dettaglio, approssimazioni, diversi fenomeni trascurabili. A che livello voglio modellare la realtà?
Sistema della ruota di un auto
- L: Induttanza
- R: Resistenza
- C: Condensatore
Bond Graph indica un "flusso di potenza", dove R dissipa energia e O rappresenta la connessione fra i vari elementi.
Diagramma a blocchi
È un diagramma computazionale (insieme di equazioni) con ordine computazionale.
- Elementi:
- Sommatorie: e3 = e1 - e2
- Punto di diramazione: e2 = e1 e e3 = e1
- Blocchi di computazione:
- Moltiplicazione: y = c · u
- Integrazione: y = ∫u
- Derivazione: y = d/dt(u(t))
Operazioni nel grafico
- Sommatoria: y = V1 + V2 + V3
- V1 = w1
- V2 = R/C w2
- V3 = 1/L w3
- w1 = Cu = u
- w2 = u
- w3 = ∫z3 = ∫u
Punto di diramazione
- z = z3 = w2 = u
- y = C · u + R/L ∫u
Proprietà diagramma a blocchi
- K1 ċ K2
- K1 + K2
- y = x + z
- 1/k
- y/z
- x = y/k
- y = r2 ċ k1/(1 - k1k2)
Dim 8
- y = k1 ċ u
- u = r2 + v
- v = k2 ċ y = k2 ċ (k1 ċ u)
- u = r2 + k1k2u
- r2 = u (1 - k1k2)
- u = r2/(1 - k1k2)
- y = r2 ċ k1/(1 - k1k2)
Grafici di flusso
Semplice diagramma a blocchi e rispettivo grafico di flusso:
- Nodo → Segnale
- Archi → Elaborazioni
- Più archi entranti su un nodo si sommano
Proprietà grafi di flusso
Voglio sdoppiare X2 alternative.
Es. Semplificazione Grafo di Flusso:
- x0
- a
- b
- c
- d
- e
- i
- f
- g
- h
- k
- x1
- 1
- 2
- 3
- 4
- d(e + i)
- J
- 3f + d(e + Jc)
- m
- 5
- a
- mm
- -hm
- x0
- x1
- 7
- x0
- a
- am
- a
- hmm
Formula di Mason
Per poter scrivere la formula di Mason abbiamo bisogno di alcuni elementi basati sul grafo dell’esempio precedente.
X0 = input, X1 = output
Dobbiamo trovare la trasferenza da X0 a X1.
Generale:
- Percorso tra due nodi
- Anello - parto da un nodo e torno sullo stesso
- 14 = {indici degli anelli del grafo}
- 24 = (indici delle coppie){anelli del grafo che non si toccano}
- 34 = triple (indici di...)
- P2 = {indici dei percorsi}
- 1i = (indici degli anelli che) (non toccano il) (percorso i ∈ P)
- 2i = (indici delle coppie...)
Esempio
- P1 = abcd
- P2 = aed
- β3 = abf
- A1 = edh
- A2 = bcdh
- A3 = bfh
- A4 = g
- 14 = {1, 2, 3, 4}
- 24 = {(1, 4)}
- 34 = {}
- Pi = {1, 2, 3}
- 11 = {}
- 21 = {4}
- 31 = {}
Tutti gli insiemi 2i sono vuoti.
T = 1/Δ ∑i∈P Pi Δi - Formula di Mason
Dove:
- Δ è il determinante del grafo
- Pi è la trasferenza del percorso
- Δi è il determinante del grafo senza il percorso i
Δ = 1 - ∑ Ai + ∑ AiAj - ∑ AiAjAk + ... Nell'esempio...
Δ = 1 - (edh + bcdh + bkh + g) + (edhg)
Δi = 1 - ∑ Ah + ∑ ΔhAk - ... Nell'esempio...
- Δ1 = 1
- Δ3 = 1
- Δ2 = 1-g
Nell'esempio...
T = 1/1 - edh - bcdh - bkh - g + edhg (abcd + (aed)(1 - g) + abcf)
Inversione di percorso
Es. 1
- x0 e x1 connessi direttamente
- V = b + cx1
- Verifichiamo se sono uguali
- xi = 2x0 + d(bx0 + cx1)
- x1 = a + bdx0
- x0 = 1/a x1 - d/a (bx0 + cx1)
- Lx0 = 1 - cd/a + bd x1
Es. 2
- x0 e x1 separati
- Procedura
- Scelgo un percorso da x0 a x1
- Inverto i singoli percorsi
- Prima Inversione
- Seconda Inversione
Partitore di tensione
Resistenza → si oppone al passaggio di corrente
Tensione elettrica
Ingresso: l'altezza del partitore regola il passaggio di corrente. Non arriva corrente.
Leggi di Ohm
- V = RI
- VIN = (R1 + R2)I → I = VIN / (R1 + R2)
- VOUT = R2I = R2 VIN / (R1 + R2)
- VOUT / VIN = R2 / (R1 + R2) → VOUT < VIN
Si può rappresentare anche scrivendo il grafo di flusso corrispondente:
- V1 - V2 = R1 i1
- V0 = R2 (i1 - i2)
Vogliamo che V sia una sorgente
Invertiamo il percorso
Potenza
- Accumulo
- Cinetica - I
- Potenziale - C
- Dissipo - R
- Produco
- SE (Effort)
- SF (Flow)
- Converto
- GY (Gyratore)
- TF (Trasformatore)
- Sommo
- Φ (Effort Costante)
- Λ (Flow Costante)
- Potenza = e · f = effort · flow
Displacement = ∫0t f(ζ) dζ =: q(t)
Moment = ∫0t e(ζ) dζ =: p(t)
R (Dissipo, Potenza)
Scambi di potenza
- Caso non lineare : { e = ΦR(f) f = ΦR-1(e) }
- Caso lineare : { e = R · f f = R-1 · e }
Resistenza meccanica
- Traslazionale
- e ↔ Forza
- f ↔ Velocità
- Rotazionale
- e ↔ Coppia T:θ
- f ↔ Vel Ang. wb
- Elettrico
- e ↔ ΔVc
- Idraulico
- e ↔ Pressione: P
- f ↔ Portata Idraulica: Qd
F=R·V
τ=R·ω
e=R·i
(P2-P1)=R·Q
Cq = CΦC(e)
e = 1ΦC(q)
ovvero
q = c · e
e = 1Cq
F = K (y2 - y1)
M = k (θ1 - θ2)
e = 1c q
q(t) = t∫0i(t')dt
P(t) = 1C t∫0q(t')dt = 1C V(t)
* Costante invertita → τ:c: 1K
Volume di un liquido
ovvero
Sorgenti di effort e flow
- 1-Port elements sono attivi
- 2-Port elements corrisponde
Trasformatore
Bond Graph:
- VAB → k → VCD
- f1 ↓ ↓ f2
k = VCD/VAB
VAB: (i = VCD : i2)
VCD/VAB = i1/i2
Non ammesso
Gyratore
Bond Graph:
- VAB → GY → τ
- f1 ↓ ↑ w
τ= k · i1 → k = τ/i1
VAB = k · w → 1/k = w/VAB
Differenze TF/GY
- TF
- e1 → k → e2
- f1 ↓ ↓
- GY
- e1 → → e2
- f1 ← k → f2
e1 → k → e2
3-Port
- 0-Junction (stesso e)
- 1-Junction (stesso f)
Relazione primaria
e1 - e2 = e3
f1 = f2 = f3
Relazione secondaria
e1 = e2 = e3
f1 + f2 - f3 = 0
differono dalle frecce-e1 + e2 - e3 = 0
Procedimento per scrivere il bond graph
- V: E attivi (corrente da - A +)
- R E L C sono passivi (da + A -)
- Trovare punti (nodi) con tensioni distinte
- Associo ad essi 0-Junctions
- Associo a tali 0-3 i componenti associati a tali tensioni
- Trovare componenti che reagiscono a differenze di tensione
- Piazzare il relativo componente del bond graph su una 1-junction
- Indicare le potenze (le mezze frecce seguono il flusso)
-
R R :
o----------o----------o----------o
| | | |
o Se o C : o R : o
`------1--------1´
o----------o----------o----------o
R-R1 I-L1
- Eliminare i bond a potenza nulla (in particolare con e/f=0) (p.e R)
- Semplificare il bond graph
es. --------------------- equivalente a -------------------
V0 o Se
| |-----------|
-----------|
| R : | C : G | L : L |
| R1 | 0 |----------R: R2
o-------| |------------|
Elementi per bond graph
- Traslazione meccanica
- Ammortizzatore
- Molla
- Massa
- Forze esterne
- Aggancio e sgancio di velocità
- Rotazione meccanica
- Cuffia direzione
- Molla di torsione
- Inerzia rotazione
- Coppia esterna
- Sorgenti e assorbenti di velocità angolare
- Circuiti elettrici
- Resistore
- Condensatore
- Induttore
- Batteria o sorgenti di tensione
- Sorgenti di corrente ideale
- Circuiti idraulici
- Valvola di ricircolo speciale
- Accumulatore
- Fluido
- Pompa di spostamento o sorgente di pressione
- Pompa centrifuga o fonti di flusso ideale
- Effort
- Trasformatore
- Leva
- Coppia ruota dentata
- Accoppiamento batteria
- Sorgenti di velocità angolari
- Flow
- R
- C
- I
- Effort
- Flow
- Transformer
- 0-Junc
- Somma delle velocità in un nodo
- Differenziatore (velocità angolari)
- Differenziatore velocità
- Somma relativo (leva)
- 1-Junc
- Somma delle forze
- Somma della tensione intorno a un ciclo
Caso idraulico
- "Messa a terra"
- Semplifico componenti C/I
C: q = e
e: = 1/C q
I: p = e
e: = 1/I p
C →I ↔Componente R
e: = Rf
f: = R-1 e
Giunzioni O/I
- O → e1 + e2 = e3 = ... = em (Stesso sforzo)
- I → k1 + k2 = k3 = ... = km (Stesso flusso)
TF e GY
- e2 = k1e1
- e2 = u4e1
Diagrammi a blocchi
- e ↑ l ↓ R ↑ k = R-1 e
- l ↑ e ↓ R e: = Rf
- e ↑ G ↓
- k ↑ C ↑
- e ↑ C ↑ l ↓
- k ↑ I ↓
- I ↓ J ↑ k ↓
- e ↑
Caso idraulico
- Q1, Q2 → Sf
- Po → Se
δ= 0.5
Arduino
Lampeggiamento LED
Void setup() pinMode(x, OUTPUT); Void loop() digitalWrite(x, HIGH); delay(1000); (Tempo di attesa) digitalWrite(x, LOW); delay(1000);
Funzione BLINK
Posizionamento LED
+GRND
Pin 5V
Cos'è la PWM?
Es:
- analogWrite(0) - 0% duty cycle
- analogWrite(127) - 50% duty cycle
- analogWrite(255) - 100% duty cycle
Funzione fade (varia la luminosità di un LED poco alla volta)
Es.
int led = x "n° del pin"
int brightness = 0 "Luminosità del LED"
int fadeAmount = 5 "Di quanto varia la luminosità"
Void setup():PinMode (led, OUTPUT);
Void loop():
analogWrite (led, brightness);
brightness = brightness + fadeAmount;
if (brightness == 0 || brightness == 255) {
fadeAmount = - fadeAmount;
}
delay (30);
Potentiometro
Handbraper effettuare azioni:
- 5V
- GRND
- |
- |
- Pin analogico
Arduino può convertire un segnale analogico (es. potentiometro) in segnale digitale. Il segnale analogico è letto come un numero che varia tra 0 e 1023, che corrispondono agli 0V e 5V.
Funzione per leggere un segnale analogico
Void setup() {
Serial.begin(9600);
}
Void loop() {
int sensorValue = analogRead (A0);
Serial.println (sensorValue);
}
-
Appunti Laboratorio di Automatica
-
Appunti di Laboratorio di Automatica
-
Appunti e schemi Matlab spiegati Laboratorio di automatica
-
Appunti Automatica