PID 2DC Motors on PIC

From RobotGarage
Jump to: navigation, search

Algoritmo di controllo motori con P.I.D. (Proporzionale, Integrale, Derivativo).

SCARICA IL CODICE:  PID_2DC_Motors_on_PIC.zip 

Implementazione per PIC 18F4431 (Microchip)

Il controllo è applicato a 2 Motori DC (DC = Direct Current = Corrente Continua)

Il PIC 18F4431 è un microcontrollore della serie PICMicro a 8bit, ed è particolarmente indicato a questo tipo di applicazione perchè è dotato di diverse uscite PWM e di un modulo chiamato "Motion Feedback" che viene usato per rilevare il movimento delle ruote (la velocità di rotazione). Questo modulo rileva l'intervallo temporale degli impulsi provenienti da un sensore a forcella al cui interno scorre un disco encoder che si trova connesso all'albero motore. Applicando il disco encoder all'albero motore si ottiene una risoluzione più alta di rilevazione della velocità , in quanto l'albero motore effettua molte più rivoluzioni per secondo rispetto alle ruote, essendo presente una trasmissione riduttiva tra motore e ruote.

Originalmente il codice è stato scritto per un sistema in cui i dischi encoder (uno per ruota, quindi 2) erano dotati di 16 tacche nere alternate a 16 tacche trasparenti, quindi aveva una risoluzione di 32 Impulsi per rotazione (C.P.R. = Counts Per Rotation). Il codice può essere applicato a sistemi con dischi encoder di risoluzioni differenti, modificando adeguatamente il codice.

Discorso analogo vale per i motori: usando motori diversi da quelli usati nel sistema originario è necessario modificare adeguatamente i valori dei parametri dell'algoritmo P.I.D..

I parametri da modificare sono P, I, D , relativi ai valori di impostazione dell'algoritmo P.I.D..

P : Fattore Proporzionale

I : Fattore Integrale

D : Fattore Derivativo

Nel codice attualmente utilizzato , il parametro D non viene utilizzato, perchè superfluo all'applicazione richiesta dal sistema progettato, per cui tale parametro è impostato a zero.Chiunque utilizzi questo software può assegnare al parametro D un valore appropriato all'uso che ne deve fare.

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox