Hur man bygger en själv navigera roboten (5 / 7 steg)
Steg 5: Detaljer av programvara: fart kontroll och andra grundläggande funktioner
Eftersom det är en typ av ett mycket enkelt kooperativ har "realtidsoperativsystem ," varje rutin som avrättades i kortast möjliga tid, att frigöra systemet att ta hand om de mycket täta avbrott.
Det finns ingen "vänta tills" och inga förseningar i koden. Närhelst möjligt avbrott används, i synnerhet för långsam operationer som sändning eller mottagning av teckensträngar. UART kommunikation tar advantege av DMA funktionerna i dsPIC33F att spara CPU-tid gör alla "smutsig" jobb i hårdvara.
Kringutrustning används på dsPIC33FJ128MC802:
-QEIs att beräkna rest sökvägen.
-Input Capture (IC) till beräkna fart.
-A/D omvandlare läsa motoriska strömmen.
-Förbättrad PWMs att köra motorerna.
-UARTs att kommunicera med omvärlden
QEI moduler används att veta hur mycket hjulen har rest och i vilken riktning. Detta värde är algebraiskt ackumuleras i en variabel varje 1ms och skickas till handledare funktioner på begäran. Efter värdet skickas, återställs variablerna.
Hastigheten mäts vid varje kodare puls som beskrivs nedan. Varje 1ms beräknas genomsnittlig hastighet som genomsnittet av prover, utför PID algoritm och korrigerar varvtal följaktligen till dess resultat, ändra PWM arbetscykel. För en detaljerad beskrivning av C30 PID bibliotekstillämpning, se exempel mikrochip kod: CE019 - med proportionell integrerad derivat (PID) kontrollanter i Closed-loop system. http://WW1.microchip.com/downloads/en/DeviceDoc/CE019_PID.zip
Detta lager kontrollerar timeout och checksum fel, såväl som paket konsekvens (korrekt huvud, rätt längd). Om allt är ok gör det Parser rutin (fjärde lager ) att avkoda meddelandet och verkställa de åtgärder som krävs. Denna rutin sätter lämpliga fel flagga om meddelande koden fick inte är känd.
TMR1 genererar en 1000 Hz tidsinställning klocka - hjärtslag av programmet. På varje TMR1 avbrott, inre timers uppdateras, watchdog rensas och en flagga är inställd för att aktivera funktionen som frågar efter värdet rest utrymme. Varje 10 MS "All_Parameters_Ask" funktion (hastighet, position, nuvarande) är aktiverat.