Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
**************** KJO UDHUCTZUES ISSHTILL PILLRFUNDIM PILLR PUN ****************
Ky udhëzues u krijua në përmbushje të kërkesës së projektit të Makecourse në Universitetin e Floridës së Jugut (www.makecourse.com).
Ky udhëzues do të jetë një pasqyrë e shkurtër e krijimit të automjetit zhytës që kam projektuar dhe ndërtuar për klasën time Makecourse në Universitetin e Floridës së Jugut. Në këtë Instructable unë do të siguroj një faturë të materialeve, kodin e kontrollit që kam krijuar për Arduino Uno që kam përdorur, dhe një përmbledhje se si të montoni zhytësin.
Hapi 1: Materialet
Elektronika përdoret kur:
1x Arduino Uno
1x kamerë veprimi mobius
1x kamera mobius aksioni usb-b në kabllo A/V
1x pamje fushore 777 ekran i ekranit
1x turnigy marine 50A ESC (kontroll elektronik i shpejtësisë)
1x kartë programimi detare turnigy
1x T-Motor Navigator 400kv
1x YEP 20A BEC (qark eleminimi i baterisë)
Servis i papërshkueshëm nga uji 6x hobi king HK15139
2x parzmore paralele T lidhëse y
Tela 2x 18 inç zgjatues servo
Tela zgjatimi servo 6x 6 inç
Bateri 2x 1300mah 3s Lipo
Bateri 2x 2500mah 4s 4s Lipo
Bordi i shpërndarjes së energjisë 1x me dalje fikse 5v dhe 12v
Materialet e ndërtimit ku:
1x fletë kompensatë 3/16 inç
Tub transporti 1x 6 inç ID ABS
1 x tub silikoni
1 x kanaçe me vulë fleksibël
4 x mbështjellje të filamentit të printerit 3D ABS
Rrëshqitje sirtari 1x 24 inç
Tub i tkurrjes së nxehtësisë
1x 10 këmbë të markës skoceze duraloc velcro
1x epoksi plastike JB Weld
Kupola e kamerës së sigurisë akrilike me diametër 6x2,2 inç
2x kalime IP68 ethernet
2x kabllo ethernet 24 inç cat6
Kabllo Ethernet 1x 200 këmbë cat6
Hardueri i përdorur ishte:
Vida druri prej bronzi 24x 1/2 inç
24x ------ vida (të përfshira me servos)
Mjetet e përdorura:
Vidhosësit e kokës Philip dhe Flat
Seti i çelësit Allen
Makine per ngjitjen e metalit
Armë e nxehtë
Printer 3D (kam përdorur një Monoprice Maker Select Plus)
Hapi 2: Programimi
Më poshtë është kodi që është krijuar për të kontrolluar zhytësin. Unë gjithashtu kam bashkangjitur skedarin.ino në mënyrë që të mund të shkarkohet.
Ky kod u krijua për Arduino Uno duke përdorur përpiluesin Arduino.
/**********************************************************************************************************************************************************************
Autori: Jonah Powers Data: 11/9/2018 Qëllimi: Kodi i Kontrollit për Automjetin e Zhytur me Largësi **************************** ********************************************** ********************************************** *********************************/#include // Përfshirë Bibliotekën Servo Servo roll1; // Deklarimi i roll1 si servo servo roll2; // Deklarimi i roll2 si një servo Servo lift1; // Deklarimi i lift1 si një servo Servo lift2; // Deklarimi i lift2 si një servo Servo yaw1; // Deklarimi i yaw1 të jetë një servo Servo yaw2; // Deklarimi i yaw2 të jetë një servo Servo esc; // Deklarimi i esc si servo
int pot1 = 0; // Fillimi i ndryshores pot1 si numër i plotë dhe vendosja e saj e barabartë me 0 int pot2 = 1; // Fillimi i ndryshores pot2 si një numër i plotë dhe vendosja e saj e barabartë me 2 int pot3 = 2; // Fillimi i ndryshores pot3 si një numër i plotë dhe vendosja e saj e barabartë me 4 int pot4 = 3; // Fillimi i ndryshores pot4 si një numër i plotë dhe vendosja e saj e barabartë me 5 int val1; // Intitalizimi i ndryshores val1 si një numër i plotë int val2; // Intitalizimi i ndryshores val2 si një numër i plotë int val3; // Intitalizimi i ndryshores val3 si një numër i plotë int val4; // Intitalizimi i ndryshores val4 si një numër i plotë int val5; // Intitalizimi i ndryshores val5 si një numër i plotë int val6; // Intitalizimi i ndryshores val6 si një numër i plotë int val7; // Intitalizimi i ndryshores val7 si një numër i plotë int val8; // Intitalizimi i ndryshores val8 si një numër i plotë int mspeed; // Intializimi i ndryshores mspeed si numër i plotë
void setup () {// Faza e fillimit të Arduino Serial.begin (9600); // Fillimi i rrotullës së serisë së monitrit 1. bashkëngjit (2); // Bashkimi i servo roll1 në pin dixhital 2 roll2.attach (3); // Lidhja e servo roll2 në pinin dixhital 3 lift1.attach (5); // Lidhja e servo lift1 me pinin dixhital 5 lift2.attach (6); // Lidhja e servo lift2 me pinin dixhital 6 yaw1.attach (8); // Bashkimi i servo yaw1 në pinin dixhital 8 yaw2.attach (9); // Lidhja e servo yaw2 me pinin dixhital 9 esc.attach (11); // Lidhja e servo esc me pinin dixhital 11 roll1.write (90); // Shkrimi i servo roll1 në pozicionin e tij në qendër roll2.write (90); // Shkrimi i servo roll2 në pozicionin e tij të përqendruar në lartësinë 1. shkruaj (90); // Shkrimi i servo lift1 në pozicionin e tij të përqendruar në lartësi2.shkruaj (90); // Shkrimi i servo lift2 në pozicionin e tij në qendër yaw1.write (90); // Shkrimi i servo yaw1 në pozicionin e tij në qendër yaw2.write (90); // Shkrimi i servo yaw2 në pozicionin e tij të përqendruar esc.write (180); // Shkrimi i servo esc në vonesën e pozicionit të tij në qendër (2500); // Duke pritur 2 sekonda esc.shkruaj (90); vonesa (5000); }
lak void () {// Kodi kryesor për tu lakuar pafund nëse (analogRead (pot1) <1 && analogRead (pot2) <1 && analogRead (pot3) <1 && analogRead (pot4) = 485 && val1 <= 540) {// Kontrollimi për të parë nëse "Joystick" (potenciometër) është i përqëndruar në roll1.write (90); // Shkrimi i servo roll1 në pozicionin qendror roll2.write (90); // Shkrimi i servo roll2 në pozicionin qendror} tjetër {// Çfarë të bëni nëse "Joystick" nuk është në qendër val1 = hartë (val1, 0, 1023, 10, 170); // Hartëzimi i val1 nga 10 në 170 dhe caktimi i val1 roll1.write (val1); // Shkrimi i servo roll1 te pozitoni i përcaktuar nga val1 roll2.write (val1); // Shkrimi i servo roll2 në poziton i përcaktuar nga val1}
val2 = analogRead (pot2); // Leximi i pot2 (kunja analoge 2) dhe ruani vlerën si val2 nëse (val2> = 485 && val2 <= 540) {// Kontrolli për të parë nëse "Joystick" (potenciometri) është i përqëndruar në lartësinë 1. shkruaj (90); // Shkrimi i servo lift1 në pozicionin qendror lift2.shkruaj (90); // Shkrimi i servo lift2 në pozicionin qendror} tjetër {// Çfarë të bëni nëse "Joystick" nuk është në qendër val3 = hartë (val2, 0, 1023, 10, 170); // Hartëzimi i val2 nga 10 në 170 dhe caktimi në val3 val4 = harta (val2, 0, 1023, 170, 10); // Hartëzimi i val2 nga 170 në 10 dhe caktimi në val4 lift1.write (val3); // Shkrimi i servo lift1 në poziton i përcaktuar nga val3 lift2. Shkrim (val4); // Shkrimi i servo lift2 në poziton i përcaktuar nga val4}
val5 = analogRead (pot3); // Leximi i pot3 (kunja analoge 4) dhe ruani vlerën si val5 nëse (val5> = 485 && val5 <= 540) {// Kontrolli për të parë nëse "Joystick" (potenciometri) është i përqëndruar në yaw1.shkruani (90); // Shkrimi i servo yaw1 në pozicionin qendror yaw2.write (90); // Shkrimi i servo yaw2 në pozicionin qendror} tjetër {// Çfarë të bëni nëse "Joystick" nuk është në qendër val6 = hartë (val5, 0, 1023, 10, 170); // Hartëzimi i val5 nga 10 në 170 dhe caktimi në val6 val7 = harta (val5, 0, 1023, 170, 10); // Hartëzimi i val5 nga 10 në 170 dhe caktimi i val7 yaw1.write (val6); // Shkrimi i servo yaw1 në poziton i përcaktuar nga val6 yaw2.write (val7); // Shkrimi i servo yaw2 te pozitoni i përcaktuar nga val7}
val8 = analogRead (pot4); // Leximi i pot4 (pin analoge 5) dhe ruani vlerën si val8 nëse (val8> 470 && val8 80 && val8 <80) || (mspeed80)) {// Kontrolli për të parë nëse motori është gati të ndryshojë drejtim esc.write (80); vonesa (1000); // Duke pritur 1000 milisekonda} esc.write (val8); // Shkrimi i servo esc me shpejtësinë e përcaktuar nga val8 mspeed = val8; // Ruajtja e shpejtësisë aktuale për krahasim}} Serial.print ("mbyt"); // Përdorimi i Serial Print për të treguar fjalën "Throttle" Serial.println (val8); // Përdorimi i Serial Print për të treguar vlerën që mbytja është vendosur në Serial.print ("roll"); // Përdorimi i Serial Print për të treguar fjalën "Roll" Serial.println (val1); // Përdorimi i Serial Print për të treguar vlerën që rrotullimi është vendosur në Serial.print ("katran"); // Përdorimi i Serial Print për të treguar fjalën "Pitch" Serial.println (val3); // Përdorimi i Serial Print për të treguar vlerën që pitch1 është vendosur në Serial.println (val4); // Përdorimi i Serial Print për të treguar vlerën që pitch2 është vendosur në Serial.print ("yaw"); // Përdorimi i Serial Print për të treguar fjalën "Yaw" Serial.println (val6); // Përdorimi i Serial Print për të treguar vlerën që yaw1 është vendosur në Serial.println (val7); // Përdorimi i Serial Print për të treguar vlerën që yaw2 është vendosur në}
Hapi 3: Qarku
Bashkangjitur është një fotografi e qarkut në bordin e zhytësit.
Kam krijuar një mburojë me porosi për Arduino për të thjeshtuar instalimet e mia. Unë kam ngarkuar skedarët Eagle Schematic & Board për mburojën. Kam përdorur një LPKF S63 për të bluar bordin. Servos në pjesën e përparme të rrotullës së kontrollit do të lidhen me Arduino
bashkangjitur është një fotografi e qarkut brenda kontrolluesit.
Hapi 4: Pjesët e printuara në 3D
I Shtypi të gjitha këto Skedarë në Monoprice Maker Select Plus. Kam përdorur fije Esun ABS 1.75mm. Cilësimet e mia të printimit ishin 105 gradë C për temperaturën e shtratit të printimit dhe dhe 255 gradë C për temperaturën e ekstruderit. Vetëm 1 nga secila pjesë është e nevojshme, përveç se do t'ju duhen 6 kopje të krahut të përparmë. Vini re se këto pjesë u shtypën me trashësi muri të vendosur në 1000mm. Kjo është bërë në mënyrë që pjesët të printohen me mbushje 100% në mënyrë që të jenë negativisht lundruese.
Hapi 5: Asambleja
********************************* VJEN SË SHPEJTI *************** *******************