Rachet inverterad pendel kontroll (4 / 7 steg)

Steg 4: Gratis RTOS

För att köra alla uppgifterna som krävs i realtid, användes FreeRTOS. FreeRTOS är en realtid arbetsdrift systemet, vilket innebär att det kommer att reagera på händelser inom en förutsägbar tid. Detta är viktigt eftersom det tillåter att systemet ska vara förutsägbar. Koden var avsedd att ha fyra uppgifter som följer:

  • Läsning från UART
  • Läsning från ESP8266 WiFi modul
  • Läst MPU-6050 IMU
  • Kör en kommandorad konsol

Läsning från UART

Detta var en enkel uppgift som intervjuade UART för nya figurer. När ett nytt tecken hittades, placerades sedan tecknet i en kö, som lästes av kommandoraden konsolen uppgiften. Detta kunde ha genomförts med UART avbrott, men valet var enkelt, arbetat, och genom att göra denna uppgift den lägsta prioriteten, det endast var tillåtet att köra när det inte fanns något annat att göra. Detta innebär att det inte slösa CPU-cykler polling UART när andra saker skulle kunna göras. Den bara annan oro med polling UART var om tecken kommer i för snabbt. I vår inställning tillfrågade vi UART för nya tecken varje 10 ms, som är betydligt snabbare än mänskliga kunde typ. Detta kan vara problematiskt om UART konsolen skulle köras från ett för, men vi bestämde oss för enkelheten i modulen uppvägs den funktionen.

Läsning från ESP8266 WiFi modul

Som en del av detta projekt ville vi också trådlös kommunikation. Det vore ju olyckligt om kuben behövs för att vara ansluten till en dator. Detta uppnåddes med hjälp av en ESP8266, en liten, lätt att använda WiFi modul tillgänglig från många olika leverantörer. ESP8266 kommunicerar till Zynq styrelsen också använder en UART gränssnitt, vilket gjorde det nödvändigt att skriva en annan UART förare. För UART drivrutinen måste vi läsa i många tecken på en gång, vilket innebar att det var nödvändigt att avbrott. Avbryta handler wass anropas när ett tecken lästes av UART och lägger till data i en kö. Kön är sedan läsa av ESP8266 uppgiften, som beslutar vad de ska göra med karaktären.

Uppgiften bestod av en stor stat maskin för initiering av modulen och läsa inkommande data. När uppgiften fick paket från modulen skickade det dem till samma kön som användes av den UART modul, som lästes av konsolen uppgiften. Detta gör att samma konsolkommandon som ska användas av båda operatören fysiskt ansluten till systemet eller över WiFi. Denna metod också möjliggör återanvändning av kod och håller koden tarvlig mer organiserade.

Läst MPU-6050 IMU

IMU-6050 är en 6-axlig IMU består av en 3-axlig accelerometer och en 3-axlig gyroskop. Detta möjliggör upptäckt av vinkeln och rotationshastighet av systemet, som båda är viktigt att kontrollerna algoritmen. Att få uppgifter av sensorn var enkelt. Sensorn kommunicerar över I2C med adressen 0x68. Innan du läser data accelerometer och gyroskop, måste sensorn tas ur viloläge genom att skriva 0 till adress 0x6B, power management registret. Därifrån kan du läsa den råa accelerometer och gyroskop behandlingen börjar på adress 0x3B. Se databladet och registrera karta för fullständig funktionalitet.

När vi först började spela med sensor, märkte vi att raw-data inte var exakt samt vara bullrig. Vi använde två separata tekniker för att lösa dessa problem. Efter att titta på data, märkte vi att IMU verkar ha en förskjutning från de korrekta värdena. För att lösa detta problem, placerade vi IMU på en nivå tabell, där vi visste orienteringen för var och en av accelerometer axeln. Sedan vi tog och i genomsnitt 5 mätningar från IMU. Vi tog den kända orienteringen och subtraheras den acceleration det gav oss. Resultatet blev en offset vektor som var subtraheras från varje IMU läsning. Detta ökade precisionen i systemet. För att lösa bullerproblemet använde vi en enkel 5 punkt genomsnitt filter. Istället för att återvända varje IMU läsning, skulle vi spara 5 avläsningar och genomsnittet av varje värde. Detta hjälpte eliminera en hel del buller vi såg från sensorn.

Här var vi hopp om att skicka denna information till FPGA, som skulle körning algoritmen som kontroller. Tyvärr, vi har svårigheter att genomföra kontroller algoritmen i Verilog och beslutade att genomföra det i C. På grund av detta, en gång en giltig IMU läsning var tagit, RTOS uppgiften skulle sedan beräkna den nödvändiga varvtal och skicka den till motorn via PWM generation block. Medan detta gjorde att genomföra enklare, hade det varit trevligt att köra kontrollerna i FPGA som vi tror skulle ha förbättrat den kontrollerar kretsar.

Läsa en kommandorad konsol

Konsolen kommandoraden var ansvarig för skicka högre nivån kommandon och röstningen information, till exempel IMU avläsningarna från systemet. Konsolen kommandoraden sprang som sin egen uppgift och tar i data från både UART och ESP8266. Detta gjorde det möjligt för konsolen att drivas direkt från en dator eller via ett trådlöst nätverk. Uppgiften blockerat på en FreeRTOS kö tills datan var tillgänglig. Uppgiften som sedan drivs som en tillståndsdator, läsning i ett kommandonamn och data. Om kommandot var giltig skulle sedan köra den tillhörande koden och vänta på ett annat kommando. Detta möjliggjorde flexibla kommandon och var till hjälp för felsökning och befallande systemet.

Se Steg
Relaterade Ämnen

En annan enklare inverterad pendel Robot

Detta är en förbättrad version av min tidigare instructable med titeln "A enkla och mycket lätt inverterad pendel balansera Robot". Det finns fyra fördelar i denna version.Lättare att få ett materialFärre material som behövsEnklare program för a...

En enkel och mycket lätt inverterad pendel balansera Robot

Låt oss göra en enkel inverterad balanserande robot, och driva den.Du behöver bara en halv dag att göra dem, om du har en arduino och några material.[en video av en robot som du skulle göra]Inledning:Efter några arbetar med arduino, har jag tänkt på...

Inverterad pendel Robot med en reaktion hjul

Projektets syfte är att bygga en robot som kan balansera sig själv på ett hörn av en fyrkantig platta med hjälp av en reaktion hjul ansluten till mitten av styrelsen. MPU6050 tar den aktuella rotationsvinkel i styrelsen med avseende på den lodräta ax...

Själv balansera Robot

Först och främst vill jag be om ursäkt för min engelska, om du inte förstår något, vänligen, fråga.Jag vet att en självbalanserande robot är inte ny, men när jag började detta projekt jag hittade mycket information, men aldrig på samma plats, jag var...

Själv balansera upp och ned pendel

Det här är mitt försök till inverterad pendeln balanserar på en tvåhjulig chassi vagn. Jag hade sett de andra sådana här och blev inspirerad att prova min egen version. Arduino är härligt enkel att programmera och du kan plocka upp den i några timmar...

Aktiverade passiv dynamisk walker

Att göra en vandrande robot är fortfarande en utmaning. Forskare och beslutsfattare föreslog robotar baserat på statiska walking (centrum av massan är alltid ovanför mitten av trycket), men denna typ av promenader är mycket långsam.Dynamisk promenade...

B-robot EVO. Självbalanserande robot

Hur fungerar det?B-ROBOT är en fjärrkontrollerad självbalanserande arduino robot som skapats med 3D tryckta delar. Med endast två hjul är B-ROBOT kan bibehålla sin balans hela tiden med hjälp av sin interna sensorer och köra motorerna. Kan du styra d...

R/C bil balansera Robot

Hej! Detta är Kaeru ingen Ojisan.Vi kan hitta många balanserande robotar (även med öppen källkod) i hemsida.Då jag har försökt att hitta en balanserande robot baserad på en verklig bil eller ett kommersiellt säljs R/C bil som Tamiya R/C bil. Men jag...

Att man gör en DIY borstlös Gimbal med Arduino

Detta är en berättelse om mitt tredje projekt med billiga gyro och Arduino.Efter de tidigare två projekt, Lätt inverterad pendel och 3D kalligrafi, jag har tänkt på att göra Kameran Gimbal med Arduino. Då hade jag tre principer för projektet.Utrustad...

Borstlösa Gimbal balansera Robot

Följande projekt är ett resultat av Cubli video och blir intresserade av kontroll av instabila equilibriumen med borstlösa motorer. Den enklare inverterad pendel problem var beslutat om för att slutföra projektet innan förlora intresse. Många människ...

Arduino balansera Robot

Detta Detaljer slutliga projektet för mekatronik kursen vid Rowan University. För detta projekt, var en robot konstruerade och byggda för att använda en Arduino ombord, motorer och en accelerometer för att balansera upprätt på två hjul. Detta åstadko...

Seg... pinne.

Gör det själv själv-balansera... saker... har funnits nästan lika länge som kommersiella självbalanserande saker. Uppenbarligen de hemlagade versionerna är inte som släta, tillförlitlig, eller felsäkra som äkta, men de är fortfarande ganska fängsland...

Balansera Robot

detta är en mycket enkel robot som använder en enkel switch som en sensor och står på bara två hjul med inverterad pendel mekanism.När roboten kommer att falla motorn startar och flyttar roboten till den riktning som det kommer att falla, så motorn v...

Grundläggande motorcykel hantering färdigheter och tänkesätt

Det finns många anledningar att köra motorcykel började jag personligen 10 år sedan för skojs skull. Flera år senare blev det min primära transport för min dagliga pendla.När min fru började ta lektioner ca 3 år sedan blev jag påmind om några enkla k...

Arduino lasershow med Full XY kontroll

uppdatering! Se steg 32 ta reda på hur du använder detta projekt med en grön laser! Också - kassan den LaserTweet Instructable att göra detta projekt Visa data från Twitter:Detta projekt använder en Arduino och några billiga högtalare att skapa en ri...

10 minuters dubbelriktad USB-kontroll

detta är en enkel metod att snabbt aktivera USB-kontroll av externa enheter utan att använda mikrokontroller eller dyra dev styrelser. Både indata och utdata är möjligheten, att låta två sätt interaktion med miljön.Projektet är uppbyggd kring en gene...

ESP8266 och Relay kontroll med hjälp av Smartphone

Denna anvisning beskriver ESP8266 mikrokontroller start-up till kontroll av smartphone ett relä ansluten till ESP. I en separat instruktion kommer jag försöka presentera ett liknande fall, men i stället för ESP8266 mikrokontroller kommer vi använda R...

Magnetiska pendel

Här är en snabb och enkel projekt för en lat eftermiddag. Vi kommer att göra en evig pendel med hjälp av Arduino och några komponenter. Om du packar det fint kommer att göra en stor dekoration för din verkstad eller en fin present.Steg 1: delarHär är...

Inverterad quadcopter

vill göra en annan typ av quadcopter? I detta "kan du lära dig hur! Denna quad är väldigt lik den Blade nano QX 3D men mindre. Det är en förbryllande idé, en inverterad quadcopter. Sättet du gör det är genom att ha kontroll styrelsen höger sida och r...