samu_87:
Ora le formule di PID dovrebbero essere corrette giusto?! considerando che interval è la durata dell loop.
No, quello non è un pid, gli assomiglia ma non lo è
Da qui capisco che con queste tre regole posso controllare una sola variabile di output, nel senso, il PID mi permette di correggere un errore
Non è corretto, un pid può avere più input di feedback e multipli output di correzione, ovviamente le cose si complicano non poco, solitamente si preferisce utilizzare singoli pid tra loro concatenati che vengono indicati come pid a doppio, triplo, etc, anello a seconda del numero di feedback in ingresso.
, l'errore è dato da un valore aspettato e un valore letto, il PID minimizza questo errore.
Lo scopo del pid non è minimizzare, è mantenere l'errore a zero, ovviamente in pratica è impossibile e in realtà il sistema oscilla in modo periodico attorno allo zero, più è efficace il pid e minore è l'intensità delle oscillazioni e maggiore il periodo, il pid quasi ideale ha una caratteristica smorzata sull'errore che rimane a valori talmente bassi che si possono considerare nulli perché non hanno alcun effetto sul sistema.
Se fin qui ci sono ora dico che il mio errore è lo scostamento dallo zero di un asse X del quale possiedo il valore, come attuatori ho due motori che compiono lo stesso numero di giri, il PID mi fornirà (se settato a dovere) un valore da sottrarre a un motore e sommare all'altro che mi garantisce la stabilità di tale asse.
Stai commettendo un grosso errore di valutazione, il controllo primario non è la posizione, è la velocità di rotazione dell'asse, solo quando l'hai azzerata, o mantenuta costante ad un valore desiderato, puoi prendere in considerazione di portare l'asse ad un certo valore di inclinazione desiderato, e non è detto che sia per forza zero.
Detto in altri termini ti serve un pid a doppio anello, input velocità angolare (giroscopio, parametro primario) e posizione angolare (input accelerometro/magnetometro, parametro secondario).
O mi sfugge il funzionamento della DCM che fonde gli input?!
La DCM ti fornisce l'assetto, non esegue la correzione, quello è compito del pid.