Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
**************** TÄMÄ OHJE ON VÄLILLÄ KÄYTÖSSÄ ****************
Tämä ohje on luotu täyttämään Etelä -Floridan yliopiston Makecourse -projektin vaatimus (www.makecourse.com).
Tämä Instructable on lyhyt katsaus sukellusajoneuvon luomiseen, jonka suunnittelin ja rakensin Makecourse -luokkaani Etelä -Floridan yliopistossa. Tässä opetusohjelmassa annan materiaaliluettelon, käyttämäni Arduino Uno -laitteelle luomani ohjauskoodin ja yleiskatsauksen upotettavan veden kokoamiseen.
Vaihe 1: Materiaalit
Käytetty elektroniikka, kun:
1x Arduino Uno
1x mobius toimintakamera
1x mobius-toimintakamera usb-b-A/V-kaapeli
1x kenttänäkymä 777 -näyttö
1x turnigy marine 50A ESC (elektroninen nopeudensäätö)
1x turnigy marine -ohjelmointikortti
1x T-Motor Navigator 400kv
1x YEP 20A BEC (akun poistopiiri)
6x harrastus kuningas HK15139 vedenpitävät servot
2x rinnakkainen T-liitin ja valjaat
2x 18 tuuman servo -jatkojohdot
6x 6 tuuman servo -jatkojohdot
2x 1300mah 3s Lipo -akut
2x 2500mah 4s Lipo -akut
1x jakelukortti, jossa on sekä 5v että 12v kiinteät lähdöt
Rakennusmateriaalit, joissa:
1x 3/16 tuuman vanerilevy
1x 6 tuuman ID -ABS -kuljetusputki
1x silikoniputki
1x tölkki joustavaa tiivistettä
4x kelat ABS 3D -tulostuslankaa
1x 24 tuuman laatikon liukumäki
Lämpökutistuva putki
1 x 10 jalkaa skotlantilaista duraloc -tarranauhaa
1x JB Hitsausmuovi epoksi
1x halkaisijaltaan 6,2 tuuman akryylivalvontakamerakupu
2x IP68 -ethernet -läpivienti
2x 24 tuuman cat6 -ethernet -kaapeli
1 x 200 -jalka cat6 -ethernet -kaapeli
Käytetty laitteisto oli:
24x 1/2 tuuman messinkipuuruuvit
24x ------ ruuvit (servojen mukana)
Käytetyt työkalut:
Philipin ja litteäpäiset ruuvimeisselit
Kuusiokoloavain
Juotin
Kuuma pyssy
3D -tulostin (käytin Monoprice Maker Select Plus)
Vaihe 2: Ohjelmointi
Alla on koodi, joka luotiin ohjaamaan upotettavaa. Olen myös lisännyt.ino -tiedoston, jotta se voidaan ladata.
Tämä koodi luotiin Arduino Unolle Arduino -kääntäjää käyttäen.
/**********************************************************************************************************************************************************************
Kirjoittaja: Jonah Powers Päivämäärä: 11.9.2018 Tarkoitus: Kauko -ohjattavan upotettavan ajoneuvon ohjauskoodi ****************************** ************************************************** ************************************************** ************************************/#include // Sisältää servokirjaston servorullan1; // Rullan1 julistaminen servoservoksi2; // Rullan2 ilmoittaminen servo Servo elev1; // Elev1: n julistaminen servoksi Servo elev2; // Elev2: n julistaminen servoksi Servo yaw1; // Yaw1: n julistaminen servoksi Servo yaw2; // Yaw2: n julistaminen servoksi Servo esc; // Esc: n julistaminen servoksi
int pot1 = 0; // Alustetaan muuttuja pot1 kokonaislukuna ja asetetaan sen arvoksi 0 int pot2 = 1; // Alustetaan muuttuja pot2 kokonaislukuna ja asetetaan se arvoksi 2 int pot3 = 2; // Muuttujan pot3 alustaminen kokonaislukuna ja sen asettaminen 4 int pot4 = 3; // Alustetaan muuttuja pot4 kokonaislukuna ja asetetaan sen arvoksi 5 int val1; // Alustetaan muuttuja val1 kokonaislukuna int val2; // Alustetaan muuttuja val2 kokonaislukuna int val3; // Alustetaan muuttuja val3 kokonaislukuna int val4; // Alustetaan muuttuja val4 kokonaislukuna int val5; // Alustetaan muuttuja val5 kokonaislukuna int val6; // Alustetaan muuttuja val6 kokonaislukuna int val7; // Alustetaan muuttuja val7 kokonaislukuna int val8; // Alustetaan muuttuja val8 kokonaislukuna int mspeed; // Alustetaan muuttuja mspeed kokonaislukuna
void setup () {// Arduinon alustusvaihe Serial.begin (9600); // Sarjamonitorin alustaminen roll1.attach (2); // Servorullan1 kiinnittäminen digitaaliseen nastaan 2 roll2.attach (3); // Servorullan2 kiinnittäminen digitaaliseen nastaan 3 elev1.attach (5); // Servo elev1: n kiinnittäminen digitaaliseen nastaan 5 elev2.attach (6); // Servo elev2: n kiinnittäminen digitaaliseen nastaan 6 yaw1.attach (8); // Servo yaw1: n kiinnittäminen digitaaliseen nastaan 8 yaw2.attach (9); // Servo yaw2: n kiinnittäminen digitaaliseen nastaan 9 esc. Kiinnitys (11); // Servo esc: n kiinnittäminen digitaaliseen nastaan 11 roll1.write (90); // Servorullan1 kirjoittaminen keskiasentoon roll2.write (90); // Servorullan2 kirjoittaminen keskiasentoon elev1.write (90); // Servo elev1: n kirjoittaminen keskiasentoon elev2.write (90); // Servo elev2: n kirjoittaminen keskiasentoon yaw1.write (90); // Servo yaw1: n kirjoittaminen keskiasentoon yaw2.write (90); // Servo yaw2: n kirjoittaminen keskiasentoon esc.write (180); // Servo esc: n kirjoittaminen keskiasentoon (2500); // Odotetaan 2 sekunnin esc -kirjoitusta (90); viive (5000); }
void loop () {// Pääkoodi jatkuvaan silmukkaan, jos (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// Tarkistetaan onko "Joystick" (potentiometri) keskitetty roll1.write (90); // Servorullan 1 kirjoittaminen keskiasentoon roll2.write (90); // Servorullan2 kirjoittaminen keskiasentoon} else {// Mitä tehdä, jos "Joystick" ei ole keskellä val1 = kartta (val1, 0, 1023, 10, 170); // val1: n kartoitus 10: stä 170: een ja määrittäminen val1: lle roll1.write (val1); // Servorullan1 kirjoittaminen positoniksi, jonka määrittelee val1 roll2.write (val1); // Servorullan2 kirjoittaminen val1: n määrittämään positoniin}
val2 = analoginenLue (pot2); // Pot2: n lukeminen (analoginen nasta 2) ja arvon tallentaminen val2: ksi, jos (val2> = 485 && val2 <= 540) {// Tarkistetaan onko "Joystick" (potentiometri) keskitetty elev1.write (90); // Servo elev1: n kirjoittaminen keskiasentoon elev2.write (90); // Servo elev2: n kirjoittaminen keskiasentoon} else {// Mitä tehdä, jos "Joystick" ei ole keskellä val3 = kartta (val2, 0, 1023, 10, 170); // val2: n kartoitus 10: stä 170: een ja val3: lle osoittaminen val4 = kartta (val2, 0, 1023, 170, 10); // Val2: n kartoitus 170: stä 10: een ja val4: lle osoittaminen elev1.write (val3); // Servo elev1: n kirjoittaminen positoniksi, jonka määrittelee val3 elev2.write (val4); // Servo elev2: n kirjoittaminen val4: n määrittämään positoniin}
val5 = analoginenLue (pot3); // Pot3: n lukeminen (analoginen nasta 4) ja arvon tallentaminen arvoksi val5 if (val5> = 485 && val5 <= 540) {// Tarkistetaan onko "Joystick" (potentiometri) keskitetty yaw1.write (90); // Servo yaw1: n kirjoittaminen keskiasentoon yaw2.write (90); // Servo yaw2: n kirjoittaminen keskiasentoon} else {// Mitä tehdä, jos "Joystick" ei ole keskellä val6 = kartta (val5, 0, 1023, 10, 170); // val5: n kartoitus 10: stä 170: een ja sen määrittäminen val6: lle val7 = kartta (val5, 0, 1023, 170, 10); // val5: n kartoitus 10: stä 170: een ja määrittäminen val7: lle yaw1.write (val6); // Servo yaw1: n kirjoittaminen positoniksi, jonka määrittelee val6 yaw2.write (val7); // Servo yaw2: n kirjoittaminen val7: n määrittämään positoniin}
val8 = analoginenLue (pot4); // Pot4: n lukeminen (analoginen nasta 5) ja arvon tallentaminen arvoksi val8 if (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Tarkistetaan, onko moottori muuttamassa suuntaa esc.write (80); viive (1000); // Odotetaan 1000 millisekuntia} esc.write (val8); // Servo esc: n kirjoittaminen nopeuteen, jonka määrittelee val8 mspeed = val8; // Nykyisen nopeuden tallentaminen vertailua varten}} Serial.print ("kaasu"); // Sarjaprintin avulla sana "Throttle" Serial.println (val8); // Sarjatulostimen avulla näytetään arvo, jonka mukaan kaasu on asetettu sarjaan.print ("roll"); // Sarjaprintin avulla sanan "Roll" näyttäminen Serial.println (val1); // Sarjatulostuksen avulla näytetään arvo, jonka rullalle on asetettu Serial.print ("pitch"); // Sarjaprintin avulla sanan "Pitch" näyttäminen Serial.println (val3); // Sarjatulostuksen avulla näytetään arvo, jonka pitch1 -arvoksi on asetettu Serial.println (val4); // Sarjatulostuksen avulla näytetään arvo, jonka nousu on asetettu arvoon Serial.print ("yaw"); // Sarjatulostimen käyttäminen sanan "Yaw" näyttämiseen Serial.println (val6); // Sarjatulostus näyttää arvon, jonka yaw1 arvo on Serial.println (val7); // Sarjatulostimen käyttäminen arvon näyttämiseen, jonka yaw2 arvoksi on asetettu}
Vaihe 3: Piirit
Liitteenä on kuva upotettavan laitteen piiristä.
Luin Arduinolle mukautetun kilven johdotuksen yksinkertaistamiseksi. Olen ladannut kilven Eagle Schematic & Board -tiedostot. Jyrsin levyn LPKF S63: lla. edessä olevat servot, jotka ohjaavat rullaa, kytketään Arduinoon
liitteenä on kuva ohjaimen sisällä olevasta piiristä.
Vaihe 4: 3D -tulostetut osat
Tulostin kaikki nämä tiedostot Monoprice Maker Select Plus -laitteellani. Käytin Esun ABS 1.75mm -lankaa. Tulostusasetukseni olivat 105 astetta tulostusalustan lämpötilassa ja 255 astetta suulakepuristimen lämpötilassa. Vain 1 kutakin osaa tarvitaan, paitsi että tarvitset 6 kopiota etusivusta. Huomaa, että nämä osat on painettu seinän paksuuden ollessa 1000 mm. Tämä tehtiin niin, että osat painettiin 100% täytteellä, jotta ne olisivat negatiivisesti kelluvia.
Vaihe 5: Kokoonpano
********************************* TULOSSA PIAN *************** *******************