13.07.2015 Views

Progettazione e realizzazione di una base robotica bilanciante su ...

Progettazione e realizzazione di una base robotica bilanciante su ...

Progettazione e realizzazione di una base robotica bilanciante su ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

62 Capitolo 6. Softwareprecisi, scan<strong>di</strong>ti tramite la generazione <strong>di</strong> interrupt da parte <strong>di</strong> untimer• ovunque sia possibile, si pre<strong>di</strong>lige l’utilizzo del controllore DMA pereseguire il maggior numero possibile <strong>di</strong> operazioni in background, riducendoil carico <strong>di</strong> lavoro del microcontrollore• il software e gli algoritmi <strong>di</strong> controllo devono essere configurabili durantel’esecuzione del programma, limitando il più possibile le operazioni<strong>di</strong> programmazione della memoria programma del microcontrolloreL’esecuzione dei task perio<strong>di</strong>ci è gestita tramite un timer, mantenutocostantemente in esecuzione permettendo <strong>di</strong> generare un interrupt ogni millisecondo.Tra i timer <strong>di</strong>sponibili si è scelto <strong>di</strong> utilizzare il SYSTICK timer,un down-counter a 24 bit de<strong>di</strong>cato ai sistemi operativi real time [17] chegenera un interrupt quando il conteggio giunge a zero.Ad ogni invocazione della routine <strong>di</strong> interrupt viene incrementato un contatoree si verifica se sia il momento <strong>di</strong> eseguire qualcuno tra i cicli <strong>di</strong> controlloimpostati. Sono presenti cicli eseguiti a <strong>di</strong>fferenti frequenze, ognuno deiquali richiama l’esecuzione <strong>di</strong> <strong>di</strong>fferenti compiti:1 Hz : questo ciclo è utilizzato esclusivamente per funzioni <strong>di</strong> debug, comefar lampeggiare costantemente un LED per in<strong>di</strong>care che il programmaè in esecuzione, eseguire serie predefinite <strong>di</strong> coman<strong>di</strong> per verificare ilcorretto funzionamento delle periferiche e degli algoritmi <strong>di</strong> controlloed inviare <strong>su</strong> porta seriale l’elenco dei dati che vengono stampati inoutput, come <strong>di</strong>scusso nella Sezione 6.410 Hz : questo ciclo gestisce l’aggiornamento del <strong>di</strong>splay LCD50 Hz : in questo ciclo viene eseguito l’algoritmo per il controllo dellastabilità del robot. Sono <strong>di</strong>sponibili <strong>di</strong>versi algoritmi, attivabili e configurabiliruntime, per i quali può essere attivata la modalità <strong>di</strong> debugo l’aggiunta <strong>di</strong> rumore bianco ad<strong>di</strong>tivo. Vengono inoltre inviati allaperiferica USART i dati ricevuti dai sensori e lo stato del robot100 Hz : a questa frequenza viene eseguito l’update del filtro <strong>di</strong> Kalmanutilizzato per la stima dell’angolo del robot rispetto alla verticale1 Khz : il ciclo più veloce viene utilizzato per l’aggiornamento dei datiodometrici me<strong>di</strong>ante la lettura degli encoder ottici e per il controllore

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!