Själv balansera Robot (5 / 7 steg)
Steg 5: kod
Jag kommer inte att förklara varje enskild rad med kod för projektet (jag kommenterade koden, om du data överför den jag tror du kommer ha några problem att förstå det), men jag ska visa dig hur jag organisera det.
Koden har 4 filer: en huvudkoden, en andra för motorerna, tredje är PID-numret, och den sista är för sensor koden.
I huvudkoden först jag initiera hela roboten: stift, sensorer, kommunikation,... Sedan beräkna jag felet av sensorerna. Denna del är det mycket viktigt eftersom i denna del tar vi första vinkeln och vi gör det noll, det innebär att sensorn har en inledande avvikelse, när vi placerar roboten vertikalt sensorn visar inte att vinkeln är noll, i stället skicka en avvikelse vinkel, denna inledande vinkel används för att subtrahera det från bakre mätningar av sensorerna , att få den verkliga vinkeln. Så när vi initierar roboten måste vi behålla den vertikalt tills den börjar att flytta hjulen.
Nästa del av koden är en slinga där vi tar sensor värdena varje 10 millisekund, som betyder provtagningsfrekvensen är 100Hz (du kan använda oavsett frekvens, men kom ihåg att mycket låga och mycket höga frekvenser inte kunde fungerar), och vi beräkna vinkeln av robot med, i detta fall kompletterande filtret tidigare förklarats. Vi har vinkeln, nu använder denna information kan vi styra våra motorer, denna använder en mellanliggande PID, det enklaste sättet att kontrollera saker effektivt, det finns en arduino bibliotek för PID men är enkel att genomföra det, du kan koda det i mer än 10-20 rader kod.
För att använda accelerometern, i detta fall ADXL345, vi måste använda sitt bibliotek. Jag använde de nästa adafruit bibliotek: Adafruit_ADXL345 och Adafruit_Sensor biblioteket.
Och det är allt, enkel kod för enkel robot, men det utmärkta wokar för mig. Du kan implementera så många mer saker om du vill, som LCD-skärm, fler sensorer, bättre kontroll,... Att magin av robotar, du gör en och förbättra det som du vill.
Några av er har problem att använda koden, jag laddade upp en enda fil med hela projektet (Balacing_single_file).
Länk till google drive mappen: