0

Zašto robot krepa?

Uzroci

Detekcija uzroka povremenog prestanka rada je teška. Zato je bolje poduzeti unaprijed sve moguće radnje koje će umanjiti mogućnost pojave. Češći uzroci problema slijede:

  • Neadekvatan izvor struje. Regulatore napona na samom mikrokontroleru izbjegavajte jer im je snaga vrlo mala. Potrebno je koristiti snažne switching step-down reguatore, koji omogućavaju struju od više A.
  • Snažni motori 1. Mogu izazvati bitne padove napona. Motori, koji mogu biti primjereni i za manje robote, mogu potegnuti 10-20 A. Više njih zajedno mogu spustiti napon ispod prihvaljive granice i srušiti (možda kratkotrajno) mikrokontroler ili senzore. Efikasna je mjere borbe protiv ovih padova korištenje vrlo velikih kondenzaotora na kontrolerima motora, kao što je slučaj za jače ML-R kontrolere. Ne izgleda lijepo i glomazno je, ali djeluje.
  • Snažni motori 2. Koristite li jake motore nemojte ih iz pune brzine isključivati vađenjem baterije! Dobit ćete snažne generatore struje, čiji će napon vrlo brzo rasti prema beskonačnosti dok struja ne nađe put - sigurno kroz elektroniku. Rezultat je karakteristično spaljivanje više pločica.
  • I2C je standard koji je razvijen za elemente štampane ploče, koji su blizu i zalemljeni su. Sasvim je druga priča kad su spojeni dugačkim žicama, konektorima koji oksidiraju i olabave se - kao što je slučaj za prototipove mobilnih robota. Konektori na žicama imaju začuđujeće ograničen broj priključivanja. Ako roboti udaraju u prepreke, kao u RCJ nogometu, problemi su neminovni. I2C ima SDA liniju za podatke, koja je normalno na pozitivnom naponu. Bilo koja periferna jedinica može SDA trajno uzemljiti i sabirnica je mrtva. Prva naredba u Arduinu koja će koristiti I2C neće proći jer neće nikad dočekati pozitivan napon. Kako riješiti ove probleme? Izbjegavajte I2C. Ako ga koristite, napravite jednu pločicu za sve elemente i zalemite ih na nju. Kad robot stane, izmjerite napone SCL i SDA linija. Ako je ijedan od ta 2 stalno 0 V, onda je sigurno robot stao na ovom problemu.
  • Programska greška. U kodu što češće kontrolirajte veličine, jesu li u domeni razumnog. Bilo koju sumnjivost prijavite funkcijom error, navedenom u "struktura Arduino koda mobilnog robota". Rana prijava može spasiti sate, dane, možda i tjedne traženja greške koja se pojavljuje rijetko, a katastrofalna je. C++ je jezik koji navlači programere u probleme. Ako niste vješti, izbjegavajte nepoznato, npr. pointere. Proučite dobro C++ literaturu.
  • Lemni spojevi izloženi naprezanju se lako otkriju kad popuste, no ima trenutaka kad bi bilo puno bolje da nisu popustili. Zato nikad ne lemite žice na motore, osim ako ste ih jako dobro fiksirali za tijelo motora. Miče li se žica u odnosu na lemno mjesto, jednom će otpasti. Koristite ML-R konektore za motore, koji se zaleme na tijelo motora i mobilni spoj prepuste krimpanom konektoru.
  • Oštećen mikrokontroler. Rade, ali ne rade mu svi pinovi. Probajte zamijeniti pin ili zamijenite mikrokontroler.
  • Korozija. Kontakti vremenom korodiraju. Ukoliko ste uštedjeli kupovinom jeftinijih konektora, možete očekivati galvanske struje između 2 metala i veće habanje. Vremenom postaje potrebna sve veća sila i kontaktna površina da bi kontakt održao dovoljno mali otpor i frekvenciju signala. Naravno, kontaktna površina ne raste, a sila vremenom može postati samo još manja. Rezultat će biti greške najgoreg tipa: vrlo rijetke. Nakon nekog vremena ipak neće više biti najgoreg tipa jer će postajati sve češće.
  • Uopće nije krepao - program radi, no ne ono što se očekuje i robot izgleda mrtav. Prvo treba posumnjati na petlje: while i for. Vrlo je razumno u svaku petlju staviti vremensko ograničenje. Ako nešto ne može trajati više od 5 sec., nakon toga nemojte samo prekinuti petlju, nego pozovite funkciju za grešku (u našim primjerima se zove error()), koja će javiti da nešto ne valja i gdje, npr. na Bluetooth mobitela kojim pratite robota.

Lijek

  • Reset. Koju akciju predvidjeti u programu, koja će nastupiti kad robot krepa? S Arduinom su opcije dosta loše. Budući da radi samo jedan proces, kad on stanje, ne ostane ništa što bi moglo pokrenuti sanaciju štete. Možete staviti timer interrupt npr. na svaku sec., koji može provjeriti mijenjaju li se varijable koje se moraju mijenjati. Ako se ne mijenjaju, napravi reset samog mikrokontroler (moguć je softverski). U slučaju da je Arduino ipak živ, ali postoji problem u periferiji, možete ju resetirati pojedinačno, ima li reset pin. Ako nema, nije sve izgubljeno. Spojite ju, prilikom konstrukcije robota, na ML-R I2C 3x Distribution Pins (mrm-distrib-b) i pošaljite signal na pin "Break". GND će biti prekinut i opet spojen - svi će spojeni senzori biti resetirani.
  • ARM. Koristite li ARM, u boljoj ste poziciji, čak i dobroj. Pored višenitnosti, možete koristiti independent watchdog, dio mikrokontrolera koji ima zaseban oscilator i može periodički obavljati pregled stanja robota. Ako stanje nije adekvatno, pokrene korektivnu akciju, recimo reset.
  • Povratak u stanje bez greške. Treba probati doći do konfiguracije koja radi: zamjenom elemenata, programa (starija verzija?) ili zamjenom cijelog robota. U jednostavnijem slučaju premjestiti senzor na drugi pin, koristeći druge žice, na kraju i drugi senzor. Kad se dokopate ispravne konfiguracije, kombinirajte ispravan i nesipravan sistem dok ne suzite izvor greške. Program spremajte često. Koristite Git (možete ga integrirati u Visual Studio ili Eclipse) ili neki drugi repozitorij u kojem ćete se moći vraćati korak po korak u starije verzije. Ako ih nemate, mičite iz programa sve što možete, dok ne proradi. Nakon toga dodajte natrag dok ne dođete do greške. U programu ne razmišljajte nikad da je "nemoguće da ovaj dio koda ne radi, preskočimo to". Sumnjajte u sve i probajte promijeniti.
  • Osciloskop je jedna izuzetno korisna naprava. Prikazuje ovisnost jednog ili više napona o vremenu. Ne radi vam I2C sabirnica? Mogli biste mjeriti napone SDA i SCL linija i zaključiti nešto kad ustanovite da je jedan stalno 0 V, ali bez detaljne krivulje ovisnosti nećete puno shvatiti. Kako izgleda napon kad se uključe motori? Moguće je da se smanji ispod granice koja je potrebna nekom uređaju, ali na vrlo kratko vrijeme. Taj slučaj nikad nećete uloviti voltmetrom. Čak i najjednostavniji osciloskop može poslužiti. Ima ih malih na Ebayu za par desetaka dolara.
  • Zlato. Zlatno je pravilo: koristite pozlaćene kontakte, pogotovo za kontakte koje često koristite, koji provode veliku struju ili koji traže visoku frekvenciju. Ne miješajte pozlaćene s ostalim kontaktima. Pogledajte ovo objašnjenje.