2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Ky udhëzues do të shkojë edhe pse bëhet një njësi zgjedhjeje dhe vendosjeje 2D dhe si ta kodoni atë.
Hapi 1: Kompunetat
1x Adrio Mega
2x motorë stepper (kemi përdorur JLB Stepper Motor, modeli 17H1352-P4130)
2x Stepper Motor Drive Controller Board Module L298N Dual H Bridge DC Për Arduino
Servo motor 1x (ne nuk kemi njollë në këtë)
3x rezistente 10k ohm
2x rrota najloni
Furnizimi me energji 1x 12v
Pak dru për kornizën
Telat
Hapi 2: Ndërtimi
Gjëja e parë gjatë fytyrës së Ndërtimit ishte të përcaktoni madhësinë dhe formën e makinës së zgjedhjes dhe vendosjes
Së pari ne ndërtojmë drurin e formës bazë. Ne ndërtuam kornizën tonë të zgjedhjes dhe vendosjes 50cm me 25cm me 30cm. Çdo gjë përveç kornizës, urës dhe krahut ngritës, ishte prodhuar me një lazer -prerës.
Këtu keni një lidhje me të gjithë skedarët
Pastaj ne donim të sistemit rrotull. Këtu shkuam me dy unaza 50 mm dhe një unazë 20 mm. Pastaj vendosim një parakord pranë 20mm me pak zam. Pas së cilës ne shtrydhëm dy unazat 50 mm në të dyja anët e unazës 20 mm.
20mm
50mm
Pastaj ne duhet të hartojmë një udhëzues rrëshqitës në krah. Këtu kemi bërë dy anë dhe një pjatë të pasme.
E cila më pas ishte ngjitur në një formë U. Pastaj e lidhëm atë me urën.
Pllakë anësore
Pllaka e pasme
Tani që pjesët për lëvizjen e krahut lart e poshtë janë bërë. Ne duhet ta lëvizim atë mbrapa dhe me radhë.
Gjatë hartimit të kësaj ne u siguruam që dhëmbët të rreshtohen me njëri -tjetrin. Pra, të dy artikujt u krijuan në të njëjtin vend projekti.
Hapi 3: Kodi
Programimi është mjaft i thjeshtë dhe përbëhet nga 5 pjesë
- Përfshirja e Bibliotekave dhe Konfigurimi i variablave për përdorim të brendshëm dhe IO
- Ngarkoni hyrjet në Ram
- Sekvens, duke zgjedhur lëvizjen që dëshironi.
- Kontrolli i pozicionit stepper/servo
- Dalje në botë
Ne do të shpjegojmë në mënyrë të gjerë çdo pjesë, por mos harroni se kjo është vetëm një nga zgjidhjet e shumta.
1: Përpara konfigurimit të zbrazëtisë kemi përfshirë 2 bibliotekat që na duhen për këtë projekt. Stepper dhe Servo. Përdorimi i Bibliotekave të përfshira, ju kursen nga mësimi i çdo detaji në lidhje me motorët stepper dhe servo.
#përfshi
#përfshi
const int hapaPerRevolution = 200; // ndryshoni këtë për t'iu përshtatur numrit të hapave për rrotullim për motorin tuaj
// Nisni bibliotekën stepper në kunjat 8 deri në 11:
Stepper XStepper (hapatPerRevolution, 22, 23, 24, 25); Stepper YStepper (hapatPerRevolution, 28, 29, 30, 31); Servo Griper; // krijoni një servo objekt për të kontrolluar një servo
Gripper duhet të bashkohet me konfigurimin e zbrazëtisë
void setup () {// inicio portin serik: Serial.begin (9600); Griper.tash (9); // i bashkon servo -në pin 9 me objektin servo
Pjesa tjetër e këtij seksioni është vetëm konfigurimi i variablave dhe konstantëve.
2: Gjëja e parë në Void Loop është të ngarkoni të gjitha hyrjet e përdorura në një ndryshore. Kjo bëhet për dy arsye. Arsyeja e parë është të kufizoni detyrat e rënda të CPU për të lexuar një Input. Arsyeja e dytë, e cila është më e rëndësishmja, për t'u siguruar që nëse një Input përdoret më shumë se një herë, do të ketë të njëjtën vlerë gjatë gjithë skanimit. Kjo e bën më të lehtë shkrimin e kodit të qëndrueshëm. Kjo është një praktikë shumë e zakonshme në programimin PLC, por vlen edhe për programimin e ngulitur.
// ------------------------- Futja në RAM -------------------- Xend = digitalRead (34); Yend = digitalRead (35); Ena = digitalRead (36);
3: Në pjesën sekvens të kodit, ne sapo bëmë një sekven me komandat Switch dhe case. Pjesa sekvens vetëm jep sinjale në pjesën e kontrollit të pozicionit të kodit. Kjo pjesë lehtë mund të personalizohet për aplikacionin tuaj ose të përdoret ashtu siç është.
4: Pozicioni i servo -s sapo kontrollohet nga servo liberi, dhe një deklaratë if për gripper hapur dhe mbyllur.
Kontrolli Stepper është pak më i ndërlikuar. Funksioni krahason Pikën Vendosëse (Pozicioni në të cilin dëshironi të shkojë krahu) dhe pozicionin Aktual. Nëse pozicioni aktual është i dashur, funksioni shtohet në pozicion dhe i kërkon funksionit Stepper liberi të ndërmarrë një hap pozitiv. E kundërta është e vërtetë për një pozicion të lartë. nëse pozicioni është i njëjtë me Setpoint, një bit XinPos është i ngopur, dhe hapi ndalet.
// Kontrolli i PS -së X
nëse (XstepCountXsp dhe jo Home) {
XstepCount = XstepCount-1; Xstep = -1; XinPos = 0; } if (XstepCount == Xsp) {Xstep = 0; XinPos = 1; }
5: Shtoni fundin e kodit motorët kontrollohen me funksionet liberi.
// -------------------- Rezultati ---------------------- // hapi një hap: XStepper.step (Xstep); // hapi një hap: YStepper.step (Ystep);
Griper.write (GripSp);
Hapi 4: Made By
casp6099 - Casper Hartung Christensen
rasm616d - Rasmus Hansen