Self Balancing Robot: Rozdiel medzi revíziami
Zo stránky SensorWiki
Riadok 204: | Riadok 204: | ||
# Pripevníme batériu k vrchnej časti spodného podvozku a pripevníme 2,5cm dištančné stĺpiky | # Pripevníme batériu k vrchnej časti spodného podvozku a pripevníme 2,5cm dištančné stĺpiky | ||
[[Súbor:stepthree2. | [[Súbor:stepthree2.png|center|x250px]] | ||
Priskrutkovanie rámov motorov k spodnej časti podvozku. | Priskrutkovanie rámov motorov k spodnej časti podvozku. |
Verzia z 21:54, 9. jún 2019
Autor: | Eva Štalmachová a Denis Vasko | |
Študijný odbor: | Robotika | 3. Bc. (2019) |
Opis projektu
Cieľom projektu je zostrojenie dvojkolesového robota typu Segway, ktorý udržuje rovnováhu.
Projekt sme si zvolili preto, pretože jeho náročnosť bola vhodná pre naše schopnosti, z čoho sme predpokladali, že nadobudneme cenné praktické vedomosti.
Zoznam komponenotv
- Arduino UNO dostupné na stránke https://store.arduino.cc/arduino-uno-rev3
Arduino Uno je riadiaca doska s 8-bitovým CMOS mikroprocesorom ATmega328P. Rozmery dosky sú 68.6 x 53.4 mm a hmotnosť je 25 g. Veľkosť pamäte mikropočítača je 32 KB. Na doske sa nachádza 20 pinov, z ktorých 14 tvoria digitálne vstupno/výstupné piny a 6 analógových vstupov. Niektoré z pinov môžu byť využité na špeciálne účely. Digitálny pin 0 (RX) a digitálny pin 1 (TX), sa využívajú pri sériovej komunikácii s iným zariadením. Digitálne piny 2 a 3 môžu byť využité na externé prerušenie. Digitálne piny 3, 5, 6, 9, 10, 11 môžu byť použité ako PWM výstupy. Na komunikáciu medzi Arduino doskou a iným zariadením je na doske USB port. Na externé napájanie môžeme využiť 3,5 mm napájací konektor. Na nahrávanie zdrojového kódu do mikropočítača sa najčastejšie používa nástroj Arduino IDE.
- Bluetooth modul HC-06 dostupné na stránke https://www.ebay.com
HC-06 Bluetooth modul použijeme na bezdrôtovú komunikáciu Arduina s počítačom pomocou sériovej linky. Bluetooth modul využijeme na získanie hodnôt meraní, ktoré by mohli byť pri jazde robota s pripojeným káblom negatívne ovplynené.
- L298N Motor Driver modul dostupné na stránke https://www.ebay.com
L298N riadiaci H-mostíkový modul umožňuje riadiť rýchlosť 5 V - 35 V jednosmerných motorov. Na module sa nachádzajú štyri piny pre napájanie dvoch motorov, napájací a uzemňovací pin pre riadiaci modul. Na prepojenie s Arduinom má 6 vstupných pinov. Keďže riadenie motorov je založené na technike pulzno-šírkovej modulácie (PWM), vstupné piny ENA, ENB modulu musia byť prepojené na PWM piny Arduina
- Arduino UNO Screw Shield V3 dostupné na stránke https://www.gme.sk/svorkovnicovy-shield-pro-arduino-uno-atd
Svorkovnicový shield kompatibilný s Arduino Uno. Všetky výstupné piny Arduina sú priradené k svorkám pre jednoduchšie zapojenie. Nie je potrebné externé napájanie.
- MPU6050 6 osí MEMS gyroskop + akcelerometer dostupné na stránke https://www.ebay.com
Senzor MPU-6050 obsahuje gyroskop aj akcelerometer snímajúce v troch osiach v jednom čipe. Vďaka 16-bitovému analógovému prevodníku dosahuje vysokej presnosti a spoľahlivosti. Modul sníma všetky 3 osi naraz, v rovnaký okamih a používa I2C rozhranie na komunikáciu s mikropočítačom.Na module je zabudovaná aj DMP jednotka (Digtal Motion Processor), ktorá môže byť samostatne naprogramovaná pre počítanie zložitých operácií s nameranými hodnotami. Vďaka DMP nie je nutné zaťažiť čip Arduino a výpočty robiť priamo na doske, vďaka I2C rohraniu dokáže dokonca počítať aj s hodnotami z iného čipu (napríklad iného magnetometra a podobne). Pracovné napätie je 3V-5V.
- LiPo batéria dostupná na stránke https://www.ebay.com
Ako napájací zdroj pre robota použijeme dve 7,4 V batériu. Napájací zdroj bude slúžiť na napájanie mikropočítača a ovládacieho modulu pre 6 V motory. Mikropočítač potrebuje odporúčaný zdroj napätia o veľkosti 7 V - 12 V, pričom prúd musí byť jednosmerný. Z mikropočítača sú ďalej napájané všetky potrebné senzory.
- Motory, kolesá a šróby dostupné na stránke https://www.ebay.com
Na poháňanie robota využijeme jednosmerné 6 V motory s prevodovým číslom 30:1, rýchlosťou 210 otáčok za minútu a Hallovým enkóderom. Enkóder je zariadenie, pomocou ktorého získame informáciu o rýchlosti motora. Okrem napájacieho a uzemňovacieho pinu má 2 výstupné piny, z ktorých získame 2 obdĺžnikové signály, ktoré sú medzi sebou posunuté. Podľa posunutia signálu vieme určiť smer motora. Jeden zo signálov musí byť pripojený na pine, ktorý obsluhuje externé prerušenia. Takto zabezpečíme neustále získavanie potrebných informácií na kontrolu rýchlostí motora.
- Modul RGB LED diódy dostupné na stránke https://www.ebay.com
Led modul, ktorý mení v závislosti od napätia na pinoch R,G,B farbu led diódy. Pracovné napätie 3V-5V. Nie je potrebný ďalší resitor.
- Modul Pushbutton dostupné na stránke https://www.ebay.com
Prepínací modul, ktorý má na výstupe pri zopnutí logickú 0 inak logickú 1. Pracovné napätie 3V-5V. Nie je potrebný ďalší resitor.
- Prepojovacie káble (Počet viď. schéma zapojenia)
- Dištančné stĺpiky na oddelenie prvého poschodia robota od druhého 4ks [2,5 cm] a na oddelenie druhého poschodia od zvyšku 4ks[4,5 cm]
- Skrutky 3x10 28ks 3x5 4ks (na pripevnie motorv na rámiky)
- Lepiaca páska (izolačná a obojstranná)
- Náradie (šrobováky, imbusové klúče)
Použité zdroje a software
- Vim
- qcad
- Android Studio
- Inkscape
- Arduino IDE
- Nastavenie rýchlosti prenosu bluetooth modulu HC-05
- [ Knižnica i2cdev]
- Knižnica na čítanie dát z gyroskopu a akcelerometra MPU6050
- Kalibrácia MPU6050
Analýza
Definované časti úlohy
- Vykonať montáž súčiastok a zapojiť elektronické časti.
- Kalibrácia MPU6050 gyroskopu a akcelerometra a čítanie dát zo senzoru.
- Zabezpečiť komunikáciu vývojovej dosky Arduino UNO cez bluetooth modul HC-06.
- Definovať komunikačný protokol medzi android aplikáciou a vývojovou doskou Arduino UNO.
- Vývoj android aplikácie.
- Vývoj algoritmu, ktorý zabezpečí taký akčný zasah pre motory, že robot zostatne vo vyváženej polohe.
Popis riešenia
Návrh častí robota
Rezanie lasérom
Nasledujúce časti robota boli vyrezané lasérom. Použitý materiál bol akryl.
Podvozok (spodný)
Podvozok bol navrhnutý v programe qcad. Na tomto podvozku sa nachádzajú dierky na priskrutkovanie držiakov motorov. K tejto časti podvozku je tiež prichytená batéria. Taktiež sa na tomto podvozku nachádajú dierky na priskrutkovanie dištančných stĺikov a rovanké dierky slúžia aj na priskrutkovanie nárazníkov. Podvozok bol vyrezaný lasérom z platne akrylu.
Médiá:dtv2019_sbr_podvozok_spodny_subor_na_rezanie.pdf
Médiá:dtv2019_sbr_podvozok_spodny_subor_cad.dxf
Podvozok (vrchný)
Nákres bol vyhotovený v programe qcad. Na podvozku sa nachádzajú dierky pre priskrutkovanie modulu na ovládanie motorov L298n a dierky pre priskrutkovanie vývojovej dosky Arduino UNO. Taktiež sa tu nachádzajú dierky pre dištančné stĺpiky, spájajúce tento podvozok so spodným podvozkom a hlavou robota.
Médiá:dtv2019_sbr_podvozok_vrchny_subor_na_rezanie.pdf
Médiá:dtv2019_sbr_podvozok_vrchny_subor_cad.dxf
Senzorová lišta
Návrh bol vyhotovený v programe qcad. Táto lišta bude pripevnená na Screw Shield v.3 a slúži ako miesto prilepenia bluetooth modulu HC-06 a ako miesto priskrutkovania MPU6050 gyroskopu.
Médiá:dtv2019_sbr_senzorova_lista_subor_na_rezanie.pdf
Médiá:dtv2019_sbr_senzorova_lista_subor_cad.dxf
Nárazníky
Nárazníky sú taktiež navrhnuté v programe qcad. Nárazníky sú priskrutkované k spodnému podvozku a slúžia na zastavenia pádu robota. Zabezpečujú, že sa pri páde robota nepoškodia časti elektorniky.
Médiá:dtv2019_sbr_narazniky_subor_na_rezanie.pdf
Médiá:dtv2019_sbr_narazniky_subor_cad.dxf
Vyrezané časti
Vyrezaný vrchný a spodný podvozok a 4ks nárazníkov.
Nárazník
3D tlač
Materiál použitý pri 3D tlači bol PLA filament.
Hlava s podstavou
3D model bol navruhný v programe tinkercad. Po dokončení bol 3D model vytlačený na 3D tlačiarni Prusa.
Tu bude obrázok návrhu v tinkercad-e. Tu bude obrázok Hlavy s podstavou.
Tu bude súbor 3D-modelu.
Rezanie na plotry
Páska cez oko
Páska robota je prilepená na hlavu robota.
Médiá:dtv2019_sbr_paskacezoko_inkscape.svg
Vysledná hlava robota
Výsledná hlava s podstavcom vytlačená na 3D tlačiarni, na ktorej je nalepená nálepka pirátskej pásky na oko.
Postup montáže súčiastok
- Pripevníme kolesá k spodnej časti spodného podvozku a pripevníme rámy
- Pripevníme batériu k vrchnej časti spodného podvozku a pripevníme 2,5cm dištančné stĺpiky
- Pripevníme batériu k vrchnej časti spodného podvozku a pripevníme 2,5cm dištančné stĺpiky
Priskrutkovanie rámov motorov k spodnej časti podvozku.
Obrázok priskrutkovaných rámov motorov.
Priskrutkovanie motorov do rámov pre motory.
Obrázok priskrutkovaných motorov.
Priskrutkovanie kolies k hriadelom motorov.
Obrázok priskrutkovaných kolies.
Priskrutkovanie malých dištančných stĺpikov k spodnej časti podvozku zhora a zároven aj pripenenie nárazníkov z dolnej časti podvozku.
Obrázok priskrutkovaných dištančncýh stĺpikov.
Uloženie batárie na spodný podvozok a jej pripevnenie.
Obrázok uloženia batérie.
Priskrutkovanie vývojovej dosky Arduino UNO a ovládača motorov L298n k vrchnému podvozku.
Obrázok priskrutkovanej vývojovej dosky a ovládača motorov.
Priskruktovanie vrchnej časti podvozku na krátke dištančné stĺpiky dlými stĺpikmi.
Obrázok priskrutkovanej vrchnej časti podvozku.
Pripevnenie senzorovej lišty na Screw shield.
Obrázok pripevnenia Screw shield-u.
Zapojenie elektroniky na základe schémy zapojeina. (Okrem RGB LED diódy umiestnenej v hlave robota)
Obrázok zapojenia elektroniky.
Priskrutkovanie MPU6050 6 osého gyroskou a akcelerometra na senzorovú lištu.
Obrázok priskrutkovania MPU6050 na senzorovú lištu.
Prilepenie bluetooth modulu na senzorovú lištu.
Obrázok prilepenia bluetooth modulu na senzorovú lištu.
Prilepenie modulu RGB LED diódy do vnútra hlavy robota.
Obrázok rgb ledky v hlave robota.
Zapojenie RGB LED diódy na základe schémy zapojenia a priskrutkovanie hlavy s podstavou na vrchné dištančné stĺpiky pomocou skrutiek a matíc.
Obrázok zapojenia rgb ledky.
Prilepenie tlačidla na vyp./zap. PWM motorv na podstavu hlavy.
Obrázok tlačidla.
Zapojenie elektronických častí
Sem príde obrázok schémy zapojenia a opis. A opis elektroniky.
Kalibrácia MPU6050 gyroskopu a akcelerometra a čítanie dát zo senzoru
Na čítanie dát zo senzoru bola použitá knižnica MPU6050, ktorá vyžaduje inštaláciu knižnice [link na knižnicu i2cdev]. Konkrétne sme ako šablónu využili súbor MPU6050_DMP6.ino. Pred čítaním dát sa vytvorí globálny objekt mpu, ktorý sa vo funckií setup inicializuje.
Čítanie dát zo senzoru prebieha vo funkcií loop.
Kalibrácia (určenie offestov) bola vykonaná pomocou skriptu, ktorý je možné nájsť tu. Tento kalibračný skript si vyžaduje inštaláciu predchádzajúcej knižnice na čítanie dát. Pred spustením kalibrácie je robot umiestnený tak, aby boli podvozky vo vodorovnej polohe. Po ukončení skriptu sa cez sériový port vypíšu offesty. Offsety sa potom použijú pri nastavení mpu objektu vo funkcii setup.
Komunikácia Arduino UNO cez bluetooth modul HC-06
V našom prípade ide len o jednosmernú komunikáciu z Android aplikácie cez bluetooth modol do vývojovej dosky Arduino UNO. Pri danom zapojení je monžné dáta z modulu HC-06 čítať ako sériovú linku pomocou metód Serial.read(). Zisťovať prítomnosť neprečítaťných dát je možné pomocou metódy Serial.available().
Definícia kominukačného prtokolu medzi android aplikáciou a vývojovou doskou Arduino UNO
K akciám, ktoré môžu byť vykonávané cez aplikáciu, sme priradili číselné znaky a znaky z abecedy (bajty). Každá operáciu má priradený iný znak, ktorý sa pri stlačení tlačidla pošle cez bluetooth pripojenie do vývojovej dosky. Vývojová doska následne túto hodnotu prečíta a rozhodnote akú operáciu vykonať.
Vývoj android aplikácie
Aplikácia bola vyvynutá pomocou softwéru Android Studio.
Sem pridať postup vytvorenia aplikácie.
Vývoj vyvažovacieho algoritmu
Prevažná časť projektu bola napísaná v editore Vim. Kompilácia a nahrávanie programu do vývojovej dosky prebiehaly pomocou Arduino IDE.
Na vyvažovanie robota boli použité PID regulátory. Prvý regulátor určuje akčné zásahy do motorov pri náklone robota dopredu a druhý pri náklone robota dozadu. Parametre regulátorov sú nastavované vyvynutou aplikáciu, keďže tento spôsob natavovania umožňuje zmenu parametrov bez potreby kompilácie a nahratia kódu do vývojovej dosky.
Zdrojové súbory
Projekt Arduino IDE: Médiá:dtv2019_sbr_arduino_projekt.zip
Projekt aplikácie v Android Studio: Médiá:dtv2019_sbr_android_projekt.zip
Výsledok
Gifko fungujúceho robota so svietiacou hlavou.
Nezabudnite zdokumentovať výsledok vašej práce. Určite sem patria fotografie, video a zhodnotenie ako ste spokojní s výsledkom,
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.