Close

Zaseknutí arduina

Úvodní stránka Fórum Hardware Arduino Zaseknutí arduina

Aktuálně je na stránce zobrazeno 9 příspěvků - 1. až 9. (celkem z 9)
  • Autor
    Příspěvky
  • #6637
    Rob
    Účastník

    Dobrý den, rozhodl jsem se, že si zkusím vytvořit robota udržujícího rovnováhu na dvou kolech. Pokoušel jsem se si kód napsat sám, ale vozítko se nedokázalo stabilizovat. Když jsem ho zvedl do vzduchu a překlápěl s ním, tak reagoval dostatečně rychle, řekl bych. Bohužel, jakmile jsem ho postavil, snažil se stabilizovat se, ale nereagoval dost rychle. Proto jsem se podíval po internetu a našel jsem jeden kóda řekl jsem si, že ho vyzkouším. Kód funguje skvěle (až na to že mu moc nerozumím 😀 ). Ale problém je, že arduino musím několikrát restartovat, když ho chci ze začátku spustit. Zapojím napájení a kola se točí na jednu stranu, dokud nevyresetuju, takhle ho musím několikrát restartovat, aby se najednou chytnulo a jelo. Někdy začne snímač generovat špatné hodnoty, to poznám tak, že kola se cukají podle špatných hodnot, ze začátku to vypadá jako by se vozítko chtělo stabilizovat, ale ihned je vidět, že dělá co nemá.

    Jako senzor jsem použil součástku MPU-6050. Když zapnu serial monitor, dostávám hodně hodnot a jediné co mě napadá, že se přehltí a arduino se zasekne. Když jsem se díval na serial monitor jak generuje hodnoty při zapnutém vozítku, tak když se zasekl senzor přestal měřit a kola točit. Nebo senzor házel náhodné hodnoty, když jsem položil vozítko tak, že hodnoty, které měl získat, by měli být kladné, ale objevovali se tam i záporné.

    Problém, že ho musím několikrát restartovat, aby jel by mě asi tak moc netížil (kdyby mi i s ním někdo pomohl bylo by to jenom plus!), ale chtěl bych prodloužit to, jak dlouho se bude držet vzpřímený. Někdy vydržel jenom 10-30 sekund, jindy třeba i 1-2 minuty, nejdýl vydržel asi kolem 6 minut.

    Našel by se tedy někdo, kdo by mi pomohl s mým problémem, aby se vozítko dýl udrželo stát?

    Předem děkuji každému, za jakoukoliv odpověď. A pokud byste chtěli dopnit nějaké informace, jako kód nahraný do arduina, tak se nebojte zeptat.

    #6641
    posjirka
    Účastník

    co takhle nějákou fotku (a´t víme jak to funguje), schéma zapojení a kod ????

    #6650
    Rob
    Účastník

    Zde je odkaz na zkrácené video.
    Odkaz na krátké video
    Tady je ten kód i s kihovnama, hodně z toho provozu je uvedeno v knihovnách.
    Odkaz ke kódu
    A zapojení.
    Zapojení
    To zapojení sem můžu hodit celé, aby bylo možné ho znovu otevřít ve fritzingu.

    #6654
    posjirka
    Účastník

    bez HW se dá těžko odhadovat, ale typoval byc, že chyba bude tady:

        // supply your own gyro offsets here, scaled for min sensitivity
        mpu.setXGyroOffset(220);
        mpu.setYGyroOffset(76);
        mpu.setZGyroOffset(-85);
        mpu.setZAccelOffset(1788); // 1688 factory default for my test chip

    Budeš si muset nastavit svoje „nulové“ hodnoty. Dej vozítko do roviny a nech si poslat hodnoty na seriový port. Ty pak doplň sem, nebo tam dodej funkci pro nastavení těchto hodnot při startu a stisku nějákého tlačítka.

    V případě dalších problémů se budeš muset zaměřit na doladění hodnot KP, KI, KD.
    Bez Hw to ale fakt asi nepujde.

    #6655
    posjirka
    Účastník

    ještě je otázka jestli je to chyba programu, nebo čipu. Někdy dělá problém bootloader.
    Kdybys měl ještě jedno arduino tak bys to mohl nahrát přímo přes ICSP , tím zrušíš bootloader a bude se jednat jen o čip….
    Pak mě ještě napadá jaké jsou jeho mezní parametry? Plácnu může fungovat +/- 90st pak už jsou hodnoty jiné.
    Další variantou může být pokles napětí a tím reset arduina

    Na netu je takových vozítek vcelku dost , takže to musí fungovat:
    http://www.instructables.com/id/Make-a-Self-balancing-Robot-with-Arduino-UNO/

    http://www.instructables.com/id/2-Wheel-Self-Balancing-Robot-by-using-Arduino-and-/

    https://translate.google.cz/translate?hl=cs&sl=en&u=https://forum.arduino.cc/index.php%3Ftopic%3D8871.0&prev=search

    #6692
    Rob
    Účastník

    Omlouvám se, že sem chodím tak všelijak, ale maturita mě dost vycucává a nemám moc čas na jiné věci.

    První věc se kterou jsem musel rozhodně pozměnit byl ten offset, protože se snažil vyrovna do šikmé pozice, tak jsem to změnil, aby se snažil být rovný.
    Teoreticky, tedy není zas tak nutné se věnovat tomu KP, KI, KD.

    Jenom letmo jsem pročetl něco o tom bootloaderu a moc nechápu co jsi tím myslel (druhé arduino bych měl).

    Skusím si najít čas, abych se podíval na mezní parametry toho akcelerometru.

    Tímto ovládám ty motorky

    Tohle je součástka co měří ten náklon

    Normální, jednoduché motorky, celkem využívané

    Pro napájení arduina využívám 9V baterku, pro napájení těch motorů 4 AA baterky.

    Doufám, že jsem ti poskytnul to, co jsi potřeboval. Pokud ne tak napiš a pokusím se to napravit 🙂

    #6693
    Rob
    Účastník

    Omlouvám se, že sem chodím tak všelijak, ale maturita mě dost vycucává a nemám moc čas na jiné věci.

    První věc se kterou jsem musel rozhodně pozměnit byl ten offset, protože se snažil vyrovna do šikmé pozice, tak jsem to změnil, aby se snažil být rovný.
    Teoreticky, tedy není zas tak nutné se věnovat tomu KP, KI, KD.

    Jenom letmo jsem pročetl něco o tom bootloaderu a moc nechápu co jsi tím myslel (druhé arduino bych měl).

    Skusím si najít čas, abych se podíval na mezní parametry toho akcelerometru.

    Tímto ovládám ty motorky

    Tohle je součástka co měří ten náklon

    Normální, jednoduché motorky, celkem využívané

    Pro napájení arduina využívám 9V baterku, pro napájení těch motorů 4 dobíjecí AA baterky.

    Doufám, že jsem ti poskytnul to, co jsi potřeboval. Pokud ne tak napiš a pokusím se to napravit 🙂

    #6929
    Rob
    Účastník

    Bylo by možné, že byste mi posjirka alespoň trochu přiblížil, jak pracovat s těmi piny ICSP ?
    Našel jsem i jednu stránku, ale chápu jenom to, že jedním arduinem naprogramuju to druhé. Ale nevím jestli je na tom vozítku budu potřebovat obě Arduina nebo jen to naprogramované. A také nechápu, jak bych to asi měl dát naprogramovat… a mnoho dalšího.
    Předem velice MOC děkuji za ochotu!
    Odakz na tu stránku

    #6942
    posjirka
    Účastník

    Lepší je asi tento odkaz :
    https://www.arduino.cc/en/Tutorial/ArduinoISP

    Funguje to jednoduše. Na jedno Arduino (řikejme mu master) se standardně nahraje program Arduino as ISP. najdeš jej v Menu – Example ve nižším středu seznamu.
    Až to naprogramuješ tak se resetuje Arduino (Master) a odpojí od PC. Připojí se to, které chceš naprogtramovat (říkejme mu Slave) a to tak spojíš piny
    Master/Slave
    GND/GND
    +5V/+5V
    13/13
    12/12
    11/11
    10/RESET

    a u Master ještě připojíš kondenzátor 10uF mezi GND a RESET (+ přijde na RESET).
    Master připojíš k PC, v Arduino IDE si nastavíš typ desky SLAVE, port vybereš ten, kde je připojený Master a jako typ programátoru vybereš Arduino as ISP.
    No a dáš nahrát program.
    Po nahrání odpojíš master od PC a Slave používáš samostatně v zařízení. Nebude ti fungovat bootloader takže přes USB teď nic nenaprogramuješ, ale USb seriová komunikace by měla fungovat. Kdybys chtěl znovu nahrát bootloader tak postupuješ úplně stejně, jen místo nahrání vlastního programu si vybereš vobu Tools – Burn bootloader. a máš z něj zpět staré arduino.

    Jinak vysvětlení těch pinů:
    SCK – hodinový signál pro komunikaci (udává master)
    MISO – Master input Slave Output = master poslouchá, slave vysílá data
    MOSI – master output Slave input = master vysílá, slavě poslouchá data
    SS – slouží pro aktivacivybraného paralelního zařízení na sběrnici ISP. V tomto případě ovšem slouží pro restování arduina SLAVE. Po resetu totoiž bootloader chvili čeká jestli jej nechce někdo naprogramovat a pokud ano tak mu to dovolí, pokud ne tak spustí interní program.

    Kondenzátor se na master Arduino mezi reset a GND dává proto aby se master neresetoval. Tím by si totiž tvůj program nahrál sám do sebe a slave by neměl nic.

Aktuálně je na stránce zobrazeno 9 příspěvků - 1. až 9. (celkem z 9)
  • Pro reakci na toto téma se musíte přihlásit.