Turinys:
- 1 žingsnis: medžiagos
- 2 žingsnis: programavimas
- 3 žingsnis: grandinė
- 4 žingsnis: 3D spausdintos dalys
- 5 žingsnis: Surinkimas
Video: Panardinama transporto priemonė: 5 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
**************** ŠI INSTRUKCIJA VYLIAI VYSTOMAS DARBAS ****************
Ši instrukcija buvo sukurta vykdant Pietų Floridos universiteto „Makecourse“projekto reikalavimą (www.makecourse.com).
Šioje instrukcijoje bus trumpai apžvelgiamas povandeninės transporto priemonės, kurią aš sukūriau ir sukūriau savo „Makecourse“klasei Pietų Floridos universitete, sukūrimas. Šioje instrukcijoje pateiksiu medžiagų sąrašą, valdymo kodą, kurį sukūriau naudojamam „Arduino Uno“, ir apžvalgą, kaip surinkti panardinamąjį.
1 žingsnis: medžiagos
Naudojama elektronika, kai:
1x „Arduino Uno“
1x mobius veiksmo kamera
1x mobius veiksmo fotoaparatas usb-b į A/V kabelį
1x lauko vaizdas 777 ekranas
1x turnigy marine 50A ESC (elektroninis greičio valdymas)
1x turnigy jūrų programavimo kortelė
1x „T-Motor Navigator 400kv“
1x YEP 20A BEC (akumuliatoriaus pašalinimo grandinė)
6x hobby king HK15139 neperšlampamos servos
2x lygiagrečios T jungtys ir diržai
2x 18 colių servo prailginimo laidai
6x 6 colių servo prailginimo laidai
2x 1300mah 3s Lipo baterijos
2x 2500mah 4s Lipo baterijos
1x maitinimo paskirstymo plokštė su 5v ir 12v fiksuotais išėjimais
Statybinės medžiagos, kuriose:
1x 3/16 colio faneros lapas
1x 6 colių ID ABS pristatymo vamzdis
1x silikoninis vamzdelis
1x lankstymo sandarinimo skardinė
4x ritės iš ABS 3D spausdintuvo gijų
1x 24 colių stalčių skaidrė
Šilumos susitraukimo vamzdis
1x 10 pėdų škotiško prekės ženklo „duraloc Velcro“
1x JB suvirinimo plastiko epoksidas
1x 6,2 colio skersmens akrilo apsaugos kameros kupolas
2x IP68 eterneto praėjimai
2x 24 colių „Cat6“eterneto kabelis
1x 200 pėdų cat6 eterneto kabelis
Naudota aparatūra buvo:
24x 1/2 colio žalvario medienos varžtai
24x ------ varžtai (pridedami prie servo)
Naudojami įrankiai:
Pilypo ir plokščios galvutės atsuktuvai
Šešiakampis raktų rinkinys
Lituoklis
Šilumos pistoletas
3D spausdintuvas (naudojau „Monoprice Maker Select Plus“)
2 žingsnis: programavimas
Žemiau yra kodas, kuris buvo sukurtas valdyti panardinamąjį. Taip pat pridėjau.ino failą, kad jį būtų galima atsisiųsti.
Šis kodas buvo sukurtas „Arduino Uno“naudojant „Arduino“kompiliatorių.
/**********************************************************************************************************************************************************************
Autorius: Jonah Powers Data: 2018-11-09 Paskirtis: Nuotoliniu būdu valdomos povandeninės transporto priemonės valdymo kodas ****************************** ************************************************* ************************************************* ************************************/#include // Įskaitant „Servo Library Servo roll1“; // Roll1 paskelbimas servo Servo roll2; // Roll2 paskelbimas servo servo elev1; // Elev1 paskelbimas servo Servo elev2; // Elev2 paskelbimas servo servo posūkiu1; // Paskelbimas yaw1 kaip servo Servo yaw2; // yaw2 paskelbimas servo Servo esc; // Esc paskelbimas servo
int puodas1 = 0; // Inicializuojant kintamąjį pot1 kaip sveiką skaičių ir nustatant jį lygų 0 int pot2 = 1; // Inicializuojant kintamąjį pot2 kaip sveiką skaičių ir nustatant jį lygų 2 int pot3 = 2; // Inicializuojant kintamąjį pot3 kaip sveiką skaičių ir nustatant jį lygų 4 int pot4 = 3; // Inicijuojamas kintamasis pot4 kaip sveikasis skaičius ir nustatomas lygus 5 int val1; // Inicializuojamas kintamasis val1 kaip sveikasis skaičius int val2; // Inicializuojamas kintamasis val2 kaip sveikasis skaičius int val3; // Inicializuojamas kintamasis val3 kaip sveikasis skaičius int val4; // Inicializuojamas kintamasis val4 kaip sveikasis skaičius int val5; // Inicializuojamas kintamasis val5 kaip sveikasis skaičius int val6; // Inicializuojamas kintamasis val6 kaip sveikasis skaičius int val7; // Inicializuojamas kintamasis val7 kaip sveikasis skaičius int val8; // Inicializuojantis kintamasis val8 kaip sveikas skaičius int mspeed; // Inicializuojantis kintamasis mspeed kaip sveikasis skaičius
void setup () {// „Arduino“inicijavimo etapas Serial.begin (9600); // Serijinio monitoriaus ritinio inicijavimas1.attach (2); // Servo ritinio1 pritvirtinimas prie 2 skaitmeninio kaiščio roll2.attach (3); // Servo ritinio2 tvirtinimas prie skaitmeninio kaiščio 3 elev1.attach (5); // Servo elev1 tvirtinimas prie skaitmeninio kaiščio 5 elev2.attach (6); // Servo elev2 tvirtinimas prie skaitmeninio kaiščio 6 yaw1.attach (8); // Servo yaw1 tvirtinimas prie skaitmeninio kaiščio 8 yaw2.attach (9); // Servo yaw2 tvirtinimas prie skaitmeninio kaiščio 9 esc.attach (11); // Servo esc pritvirtinimas prie skaitmeninio kaiščio 11 roll1.write (90); // Servo ritinio1 rašymas į jo centrinę padėtį roll2.write (90); // Servo ritinio2 rašymas į jo centrinę padėtį elev1.write (90); // Servo elev1 rašymas į jo centrinę padėtį elev2.write (90); // Servo elev2 rašymas į jo centrinę padėtį yaw1.write (90); // Servo yaw1 rašymas į jo centrinę padėtį yaw2.write (90); // Servo yaw2 įrašymas į jo centrinę padėtį esc.write (180); // Servo esc įrašymas į jos centrinės padėties uždelsimą (2500); // Laukiama 2 sekundės esc.write (90); vėlavimas (5000); }
void loop () {// Pagrindinis kodas į begalinę kilpą, jei (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// Tikrinimas, ar „vairasvirtė“(potenciometras) yra centrinis ritinys1.rašykite (90); // Servo ritinio1 rašymas į centrinę padėtį roll2.write (90); // Servo roll2 įrašymas į centrinę padėtį} else {// Ką daryti, jei "Joystick" nėra centre val1 = map (val1, 0, 1023, 10, 170); // Val1 atvaizdavimas nuo 10 iki 170 ir priskyrimas val1 roll1.write (val1); // Servo ritinio1 rašymas į poziciją, apibrėžtą val1 roll2.write (val1); // Servo roll2 rašymas į pozą, apibrėžtą val1}
val2 = analogRead (pot2); // Pot2 skaitymas (analoginis kaištis 2) ir reikšmės išsaugojimas kaip val2 if (val2> = 485 && val2 <= 540) {// Tikrinimas, ar „Joystick“(potenciometras) yra centre elev1.write (90); // Servo elev1 rašymas į centrinę padėtį elev2.write (90); // Servo elev2 įrašymas į centrinę padėtį} else {// Ką daryti, jei "Joystick" nėra centre val3 = map (val2, 0, 1023, 10, 170); // Val2 atvaizdavimas nuo 10 iki 170 ir priskyrimas val3 val4 = map (val2, 0, 1023, 170, 10); // Val2 atvaizdavimas nuo 170 iki 10 ir priskyrimas val4 elev1.write (val3); // Servo elev1 rašymas į poziciją, apibrėžtą val3 elev2.write (val4); // Servo elev2 rašymas į pozityvą, apibrėžtą val4}
val5 = analogRead (pot3); // Pot3 skaitymas (analoginis kaištis 4) ir reikšmės išsaugojimas kaip val5 if (val5> = 485 && val5 <= 540) {// Tikrinimas, ar „Joystick“(potenciometras) yra centre yaw1.write (90); // Servo yaw1 rašymas į centrinę padėtį yaw2.write (90); // Servo yaw2 įrašymas į centrinę padėtį} else {// Ką daryti, jei "Joystick" nėra centre val6 = map (val5, 0, 1023, 10, 170); // Val5 atvaizdavimas nuo 10 iki 170 ir priskyrimas val6 val7 = map (val5, 0, 1023, 170, 10); // Val5 atvaizdavimas nuo 10 iki 170 ir priskyrimas val7 yaw1.write (val6); // Servo yaw1 rašymas į positoną, apibrėžtą val6 yaw2.write (val7); // Servo yaw2 rašymas į pozityvą, apibrėžtą val7}
val8 = analogRead (pot4); // Pot4 skaitymas (analoginis kaištis 5) ir reikšmės išsaugojimas kaip val8 if (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Tikrinama, ar variklis netrukus pakeis kryptį esc.write (80); vėlavimas (1000); // Laukiama 1000 milisekundžių} esc.write (val8); // Servo esc įrašymas į greitį, apibrėžtą val8 mspeed = val8; // Dabartinio greičio išsaugojimas palyginimui}} Serial.print ("droselis"); // Naudojant serijinį spausdinimą parodyti žodį „droselis“Serial.println (val8); // Serial Print naudojimas norint parodyti vertę, kai droselis nustatytas kaip Serial.print ("roll"); // Serial Print naudojimas žodžiui „Roll“parodyti Serial.println (val1); // Serijinio spausdinimo naudojimas norint parodyti vertę, kuri nustatyta kaip Serial.print ("pitch"); // Serial Print naudojimas žodžiui „Pitch“parodyti Serial.println (val3); // Naudojant serijinį spausdinimą, norint parodyti reikšmę, kuri pitch1 nustatyta kaip Serial.println (val4); // Naudojant serijinį spausdinimą, norint parodyti reikšmę, kurios pitch2 vertė yra Serial.print ("yaw"); // Serial Print naudojimas žodžiui „Yaw“parodyti Serial.println (val6); // Serial Print naudojimas norint parodyti reikšmę, kad yaw1 nustatyta kaip Serial.println (val7); // Serijinio spausdinimo naudojimas norint parodyti reikšmę, kuri yaw2 nustatyta kaip}
3 žingsnis: grandinė
Pridedama povandeniniame laive esančios grandinės nuotrauka.
Aš sukūriau „Arduino“pasirinktinį skydą, kad supaprastinčiau laidus. Įkėliau skydo „Eagle Schematic & Board“failus. Lentoms frezuoti naudojau LPKF S63. priekyje esantys „Servo“valdikliai bus prijungti prie „Arduino“
pridedama valdiklio viduje esančios grandinės nuotrauka.
4 žingsnis: 3D spausdintos dalys
Aš atspausdinau visus šiuos failus savo „Monoprice Maker Select Plus“. Aš naudoju Esun ABS 1.75 mm giją. Mano spausdinimo nustatymai buvo 105 ° C spausdinimo lovos temperatūrai ir 255 ° C ekstruderio temperatūrai. Reikia tik 1 kiekvienos dalies, išskyrus tai, kad jums reikės 6 priekinio sparno kopijų. Atkreipkite dėmesį, kad šios dalys buvo atspausdintos nustatant 1000 mm sienelės storį. Tai buvo padaryta taip, kad dalys būtų atspausdintos 100% užpildu, kad jos būtų neigiamai plūduriuojančios.
5 žingsnis: Surinkimas
********************************* NETRUKUS *************** *******************
Rekomenduojamas:
„Super FAST RC Ground Effect“transporto priemonė („Ekranoplan“): 5 žingsniai (su nuotraukomis)
„Super FAST RC Ground Effect“transporto priemonė („Ekranoplan“): Ar žinote, kaip nusileidimo metu lėktuvai kurį laiką sklendžia keletą pėdų virš žemės, kol jų ratai iš tikrųjų atsitrenkia į kilimo ir tūpimo taką? Tai ne tik sklandus keleivių nusileidimas, bet ir natūralus žemės poveikio rezultatas, kai
Vaikų keturračių įsilaužimas į savarankišką vairavimą, sekimą iš eilės ir kliūčių aptikimo transporto priemonę: 4 žingsniai
Vaikų keturračių įsilaužimas į savarankišką vairavimą, sekimą ir kliūčių aptikimo transporto priemonę: Šiandienos instrukcijoje mes paversime 1000 vatų (taip, aš žinau daug!) „Electric Kid“keturračius į savarankiškai važiuojančią, sekančią liniją ir kliūčių išvengiančią transporto priemonę! Demonstracinis vaizdo įrašas: https: //youtu.be/bVIsolkEP1kŠiam projektui mums reikės šių medžiagų
Pradedančiųjų savarankiškai vairuojanti robotų transporto priemonė, išvengianti susidūrimo: 7 žingsniai
Pradedančiųjų savarankiškai vairuojanti robotų transporto priemonė, išvengianti susidūrimo: Sveiki! Sveiki atvykę į mano pradedantiesiems pritaikytą „Instructable“, kaip savarankiškai vairuoti robotizuotą transporto priemonę, išvengiant susidūrimo ir naudojant GPS navigaciją. Viršuje yra „YouTube“vaizdo įrašas, demonstruojantis robotą. Tai pavyzdys, parodantis, kaip tikrasis autonomiškumas
„Pasidaryk pats“transporto priemonės stebėjimo priemonė: 8 žingsniai (su nuotraukomis)
„Pasidaryk pats“transporto priemonės stebėtojas: praėjusią vasarą mano motociklas buvo pavogtas. Laimei, policija nustatė, kad tai beveik nepažeista (NYPD FTW!), Bet žinau, kad išvengiau kulkos, todėl atėjo laikas į XXI amžiaus pabaigą važiuoti. Deja, pavogti automobiliai
Mobilioji akselerometro valdoma transporto priemonė: 3 žingsniai
Mobilioji akselerometro valdoma transporto priemonė: tai labai paprastas projektas, kurį galima lengvai atlikti. Tam reikia „Android“mobiliojo telefono. Kiekvienas „Android“mobilusis telefonas turi įmontuotą akselerometrą, ir mes jį naudosime transporto priemonei valdyti per „Bluetooth“. Mums tereikia pakreipti mobilųjį, kad nuspręstume, kas