You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 24 Next »

Projektin tavoitteena oli suunnitella ja rakentaa kauko-ohjattava, 3,5-metrinen vene ja sen ohjausjärjestelmä. Veneen olisi tarkoitus tulla sotilas- tai pelastuskäyttöön.

Ohjaus veneen päässä toteutettiin alunperin Arduino-mikrokontrollerilla, mutta myöhemmin Arduinon lisäksi otettiin käyttöön linux-lauta. Linux-laudan tehtävä on vastaanottaa tietokoneelta tulevat ohjaustiedot sarjaväylään kytketyllä radiomodeemilla. Linux-lauta käsittelee ja lähettää veneen ohjaustiedot CAN-väylälle ja lisäksi lukee CAN-väylällä liikkuvia viestejä. CAN-väylältä luetut viestit lähetetään radiomodeemilla ohjaustietokoneelle.

Arduinon tehtävä on huolehtia karamoottorien ohjauksesta, jotka säätävät veneen kauhaa ja sähkömoottorin suuttimen asentoa. Arduino saa karamoottorien ohjaustiedot CAN-viestinä, jonka Linux-lauta lähettää.

Veneen CAN-väylä

Veneessä on yksi CAN-väylällä liikkuu muun muassa seuraavia viestejä: sähkömoottorin (vesisuihkumoottorin) ohjausviestit, Arduinolle menevät karamoottorien ohjausviestit, GPS:ltä saatavat viestit ja veneen akkujen (jännite, kapasiteetti) sekä moottorin tilan (RPM, lämpötila) ilmaisevia viestejä.

Arduinon ohjelmointi

Arduino on yksinkertaista ohjelmoida ohjelmointiympäristöllä, joka toimitetaan laitteen mukana. Kieli on C:tä, jossa on mukana Arduinon omia kirjastoja. Ohjelmalla onnistuu myös koodin syöttäminen Arduinoon, jolloin tehty ohjelma käynnistyy aina, kun Arduinoon kytketään virrat.

Ohjausohjelmassa käytettiin Arduinon omien kirjastojen lisäksi CAN-kirjastoa, joka on CAN-shieldin käyttökirjasto. Sarjaväylän lukemiseen ja kirjoittamiseen käytettiin Serial-kirjastoa. Ohjelman lähdekoodi on erillisessä tiedostossa.

Linux-laudan ohjelmointi

Linux-laudan ohjelma ohjelmoitiin Arduinon tapaan C-kielellä. Käytössä oli peruskirjastojen lisäksi can4linux-kirjasto. Linux-lautaa käytettiin korvaamaan rikki mennyt RS232-TTL-kovertteri, mutta nyttemmin on hankittu uusi konvertteri, joten Linux-lauta ei ole enää käytössä.

Ohjausohjelman ohjelmointi

Ohajaustietokoneen ohjelma ja käyttöliittymä tehtiin Qt-ohjelmointiympäristöllä. Käyttöliittymään tehtiin säätömahdollisuudet sarjaväylän käyttämiseksi ja toimilaitteiden ohjaamiseksi tehtiin säätöpalkit ja 2-akselisen ohjaussauvan asemaa simuloiva kenttä, jossa koordinaatistoa klikkaamalla voi säätää lähetettäviä ohjaustietoja. Käyttöliittymään tehtiin lisäksi veneeltä vastaanotettavat tiedot näyttävät elementit sekä sarjaväylän asetukset.

Venettä voidaan ohjata myös USB-väylään yhdistettävällä PS2-ohjaimella. Ohjaimelta saatavat tiedot on yhdistetty ohjausohjelman saatuihin säätöpalkkeihin.

Sarjaliikenne toteutettiin Minicanopen-kirjaston Serial-osiolla. Sarjaliikenne ja muut tarvittavat funktiot tehtiin omaan säikeeseen, jotta käyttöliittymä olisi niistä erillään ja ohjelma toimisi mahdollisimman sulavasti.

Projektin tilanne

Ensimmäisissä testeissä vesillä (kevät 2011) moottori ja ohjaus toimivat, mutta kauko-ohjauksessa oli vielä ongelmia. Moottori muun muassa sammui välillä ja ohjaustieto ei aina ollut sitä mitä haluttiin. On tutkittava, johtuiko tämä CAN-väylän ongelmista vai ohjelmakoodista.

Lisäksi GPS tulisi ottaa käyttöön. Sen pohjalta ohjausohjelmaan voisi tehdä kartan, josta näkisi veneen sijainnin. Lisäksi todellinen nopeus ja suunta olisivat hyödyllisiä tietoja testauksessa.

Tällä hetkellä suurin ongelma on se, että moottori ei lähde käyntiin. Moottorin ohjain lähettää väylälle virhekoodia, joka on valmistajan mukaan moottorin ylilämpötila, eli moottorin lämpötilatieto ei palaudu ohjaimelle oikein. Tämä pitäisi saada tutkittua ja korjattua mahdollisimman pikaisesti.

Can-liikennettä moottorinohjaimelta. ID-102-viestin viimeinen tavu on virhekoodi (heksana 15, desimaaleina 21).

Qt-ohjelma, joka on tehty valmiiksi määriteltyjen CAN-viestien lähettämiseksi Kvaserilla veneen moottorinohjaimelle.

Arduino koodi

Linux-lauta koodi (+ kirjastot) (ei enää käytössä)

Ohjausohjelma ja koodi (linux, Qt)

Ohjausyksikön johdotuskaavio

Komponenttikaavio (vanhentunut)

Kuvagalleria

  • No labels
You must log in to comment.