Free wiel omgekeerde slinger Control (4 / 7 stap)

Stap 4: Gratis RTOS

Om alle taken nodig in realtime uitgevoerd, werd FreeRTOS gebruikt. FreeRTOS is een real-time Operating systeem, wat betekent dat het op gebeurtenissen binnen een voorspelbaar hoeveelheid tijd reageren zal. Dit is belangrijk omdat hierdoor het systeem voorspelbaar. De code is ontworpen voor vier taken die volgen:

  • Bij het lezen van de UART
  • Bij het lezen van de ESP8266 WiFi Module
  • Het lezen van de IMU MPU-6050
  • Uitvoeren van een console opdrachtregel

Bij het lezen van de UART

Dit was een eenvoudige taak die de UART voor nieuwe personages ondervraagden. Wanneer een nieuw karakter werd gevonden, werd vervolgens het teken geplaatst in een wachtrij, die was gelezen door de taak van de console opdrachtregel. Dit kan zijn uitgevoerd met behulp van de UART interrupts, maar polling was simpel, werkte, en doordat deze taak de laagste prioriteit, het alleen is toegestaan kan worden uitgevoerd wanneer er niets anders was te doen. Dit betekent dat het niet CPU-cycli die de UART polling verspillen was wanneer andere dingen kunnen worden gedaan. De alleen andere zorg met polling de UART was als personages te snel kwamen. In onze opstelling ondervraagden we de UART voor nieuwe karakters elke 10 ms, die is aanzienlijk sneller dan een mens kan typen. Dit kan problematisch zijn mochten de UART-console worden uitgevoerd vanaf een computer-script, maar hebben we besloten dat de eenvoud van de module gecompenseerd die functie.

Bij het lezen van de ESP8266 WiFi Module

Als onderdeel van dit project wilden we ook draadloze communicatie. Het zou immers jammer zijn als de kubus moest worden aangesloten op een computer. Dit werd bereikt met behulp van een ESP8266, een kleine, makkelijk te gebruiken WiFi module beschikbaar van vele verschillende leveranciers. De ESP8266 communiceert met het bestuur van de Zynq ook met behulp van een UART-interface, waardoor het noodzakelijk is om een andere UART driver te schrijven. Voor dit stuurprogramma UART moeten we lezen in veel personages tegelijk, wat betekende dat interrupts nodig waren. De interrupt handler wass aangeroepen als een karakter door de UART was gelezen en worden die gegevens toegevoegd aan een wachtrij. De wachtrij wordt dan gelezen door de ESP8266 taak, die wat besluit te doen met het teken.

De taak bestond uit een grote statusmachine voor de module initialiseren en het lezen van binnenkomende gegevens. Wanneer de taak van de module pakketten ontvangen stuurde het ze naar dezelfde wachtrij dat werd gebruikt door de UART-module, die was gelezen door de taak van de console. Hierdoor kan dezelfde console commando's worden gebruikt door zowel de exploitant fysiek aangesloten op het systeem of via WiFi. Deze methode ook zorgt voor hergebruik van code en houdt de code base meer georganiseerd.

Het lezen van de IMU MPU-6050

De IMU-6050 is een 6-assige IMU bestaat uit een 3-assige versnellingsmeter en een 3-as gyroscoop. Dit zorgt voor de detectie van de hoek en rotatiesnelheid van het systeem, die beide belangrijk op het algoritme van de besturingselementen. Ophalen van gegevens uit de sensor was eenvoudig. De sensor communiceert via I2C met het adres 0x68. Voor het lezen van de versnellingsmeter en gyroscoop gegevens, moet de sensor men uit slaapwijze door te schrijven van 0 naar adres 0x6B, het power management-register. Vanaf daar kunnen de rauwe versnellingsmeter en gyroscoop lezingen worden gelezen vanaf adres 0x3B. Verwijzen naar de data sheet en registreren van de kaart voor de volledige functionaliteit.

Wanneer we eerst begon te spelen met de sensor, merkten we dat de onbewerkte gegevens niet precies naast luidruchtig was. Wij twee afzonderlijke technieken gebruikt deze problemen op te lossen. Na het bekijken van de gegevens, hebben we gemerkt dat de IMU lijkt te hebben een offset van de juiste lezingen. U kunt dit probleem oplossen, we de IMU op een niveau tafel geplaatst, waar we wisten dat de richting van elk van de as van de versnellingsmeter. Toen we namen en gemiddeld 5 metingen van de IMU. Vervolgens nam de bekende oriëntatie en het afgetrokken van de versnelling die het gaf ons. Het resultaat was een offset vector die was afgetrokken van elke IMU lezen. Dit de nauwkeurigheid van het systeem aanzienlijk toegenomen. Om op te lossen het probleem van lawaai hebben we een eenvoudige 5 punt gemiddeld filter gebruikt. In plaats van retourneren elke IMU lezen, wij slaan 5 lezingen en nemen van het gemiddelde van elke waarde. Dit geholpen elimineren van een eerlijke beetje van het lawaai dat we van de sensor zagen.

Hiervandaan hoopten wij deze informatie naar de FPGA, die de besturingselementen algoritme lopen zou te verzenden. Helaas, we hadden problemen uitvoering van de controles-algoritme in Verilog en besloten om het te implementeren in C. Vanwege dit, zodra een geldig IMU lezen was genomen, de RTO's taak zou dan de nodige motorsnelheid berekenen en stuur het naar de motor door middel van de PWM generatie blok. Terwijl dit de implementatie eenvoudiger gemaakt, zou het mooi geweest om uit te voeren de besturingselementen binnen de FPGA waarvan wij geloven dat de lus controle zouden hebben verbeterd.

Lezen van een Command Line Console

De console opdrachtregel was verantwoordelijk voor het verzenden van hoger niveau opdrachten en polling gegevens, zoals de IMU lezingen uit het systeem. De console opdrachtregel liep als een eigen taak en neemt in de gegevens van zowel de UART en de ESP8266. Hierdoor konden de console worden geëxploiteerd rechtstreeks vanaf een computer of via een draadloos netwerk. De taak geblokkeerd op een FreeRTOS wachtrij totdat gegevens beschikbaar was. De taak vervolgens beheerd als een statusmachine, lezen in een opdrachtnaam en gegevens. Als de opdracht geldig was zou dan het de bijbehorende code uitvoeren en wachten voor een andere opdracht. Dit toegestaan voor flexibele opdrachten en watertje hulpvaardig voor debuggen en commandant van het systeem.

Gerelateerde Artikelen

Een ander makkelijker omgekeerde slinger Robot

Een ander makkelijker omgekeerde slinger Robot

Dit is een verbeterde versie van mijn eerder instructable getiteld "A eenvoudig en zeer gemakkelijk omgekeerd slinger Balancing Robot". Er zijn vier voordelen in deze versie.Makkelijker om een materiaalMinder materialen die nodig zijnEenvoudiger
Een eenvoudig en zeer gemakkelijk omgekeerde slinger Balancing Robot

Een eenvoudig en zeer gemakkelijk omgekeerde slinger Balancing Robot

Laten we een eenvoudig omgekeerde balancing robot, en werken het.U moet alleen een halve dag doen, hebt u een arduino en sommige materialen.[een video van een robot die u zou maken]Inleiding:Na een paar met arduino werken, heb ik gedacht van het make
Omgekeerde slinger Robot met behulp van een reactie wiel

Omgekeerde slinger Robot met behulp van een reactie wiel

Doel van dit project is het bouwen van een robot in staat zich te balanceren op een hoek van een vierkant bord met behulp van een wiel van de reactie op het midden van het bord aangesloten. De MPU6050 neemt de huidige hoek van de Raad van bestuur met
Free wiel

Free wiel

Dit is een kartonnen wiel met een intern kronkelende mechanisme.  Rol het wiel--release, en het zal terugkeren naar de oorspronkelijke positie.Stap 1: Materialen en hoe het werktDit vereist karton, lijm, twee gewichten van de vissen (3 ounce), elasti
Self Balancing Robot

Self Balancing Robot

Eerst en vooral wil ik verontschuldigen voor mijn Engels, als je iets niet begrijpt, vraag.Ik weet dat een zelfbalancerende robot niet nieuw is, maar toen ik begon dit project vond ik een heleboel informatie, maar nooit in dezelfde site, ik moest vee
Herstel van de oude vliegtuigonderdelen (controle wiel)

Herstel van de oude vliegtuigonderdelen (controle wiel)

Hallo aan alle liefhebbers van vliegtuigen en restauratie.Mijn naam is Greg, en dit is mijn eerste instructable.Ik werk bij een vliegtuig berging werf. Iedereen die hier werkt houdt van vliegtuigen en de eigenaar heeft verschillende. Een die ik ben v
Self Balancing ondersteboven slinger

Self Balancing ondersteboven slinger

Dit is mijn poging om de omgekeerde slinger balanceren op een kar met twee wielen chassis. Ik had gezien de anderen hier en werd geïnspireerd om te proberen mijn eigen versie. De Arduino is heerlijk eenvoudig te programmeren en u kunt oprapen het in
DIY aardewerk wiel (met behulp van loopband motor)

DIY aardewerk wiel (met behulp van loopband motor)

ik uiteengezet te bouwen een aardewerk wiel voor mijn 7-jarige dochters kerstcadeau. Ze zag een speelgoed aardewerk wiel bij een lokale ambachtelijke winkel en moest er een hebt. Wetende dat deze "speelgoedwinkel" eenheden eigenlijk werken niet
3D printen met Shapeways.com en Sketchup - geheime Decoder wiel!

3D printen met Shapeways.com en Sketchup - geheime Decoder wiel!

Zomer 2013 update: ik deze decoder wiel in roestvrij staal voor een prijs inclusief verzendkosten van $28.30 herdrukt. Erg blij met de kwaliteit en het gevoel van dit materiaal, zeer moeilijk te zeggen dat dit wordt gemaakt via 3D printenIk heb wilde
Fundamentele motor handling vaardigheden en mentaliteit

Fundamentele motor handling vaardigheden en mentaliteit

Er zijn vele redenen om te rijden een motorfiets, persoonlijk begon ik 10 jaar geleden voor de lol. Enkele jaren later werd het mijn primaire vervoer voor mijn dagelijkse pendelen.Toen mijn vrouw begon met lessen van ongeveer 3 jaar geleden werd ik h
Borstelloze Gimbal Balancing Robot

Borstelloze Gimbal Balancing Robot

Het volgende project is een gevolg van het bekijken van de video Cubli en steeds geïnteresseerd zijn in de controle van unstable evenwicht met Borstelloze motoren. De eenvoudigere omgekeerde slinger probleem werd besloten om het project te voltooien
R/C Auto Balancing Robot

R/C Auto Balancing Robot

Hallo! Dit is Kaeru geen Ojisan.Veel robots van het evenwicht (zelfs met open-source code) vinden we in de website.Vervolgens heb ik geprobeerd om te vinden een balancing robot op basis van een werkelijke auto of een commercieel verkocht R/C auto zoa
Seg... stok.

Seg... stok.

Doe-het-zelf-in evenwicht brengt... dingen... bijna zo lang als commerciële zelfbalancerende dingenrond geweest. Uiteraard de zelfgemaakte versies zijn niet glad, betrouwbare, als failsafe als the real thing, maar ze zijn nog steeds vrij boeiend. En
Robotic camerasysteem Dolly

Robotic camerasysteem Dolly

Ik ontving onlangs de gelegenheid van de Servo stad Actobotics build systeem uitproberen. Terwijl ik kon heb het gebruikt om te bouwen van heel veel dingen, besloten heb ik uiteindelijk om een programmeerbare camera dolly systeem te maken. Dit appara