Proiectul este o turreta sentry care trage cu proiectile din burete folosite pentru armele NERF. Tureta are 2 grade de libertate ( control pe axele OX, OY) si o magazie de 5-6 proiectile. Poate fi controlata prin joystick-ul atasat sau poate fi lasa in modul sentry in care va scana zona cu ajutorul unui senzor infrarosu si va incerca sa detecteze miscari si sa traga in directia miscarii.
Scopul e de a avea o turreta sentry functionala care poate sa traga si la inclinatie ( si pe axa OY ) si un mod sentry in care va detecta miscarea si va trage in directia de variatie maxima a distantei masurate de senzorul infrarosu.
Initial pornisem de la o turreta dintr-un joc (tf2) si am ajuns la varianta asta pentru ca am reusit sa gasesc si cateva referinte online si posibil ( ramane de vazut ) sa nu am nevoie de a printa piese cu un 3d prinder pentru precizie ft mare. https://www.youtube.com/watch?v=3Ma5ZCZVQRs
In afara de scopul didactic si de a combina in ceva mai multe domenii cum ar fi mecanica , electronica, programare si semnale , turreta reprezinta un model clasic care e folosit pentru pitchere de baseball sau hockey sau pentru paint ball sau airsoft.
Turreta are cateva mecanisme cheie:
1. Sistemul de control al miscarilor <<<Un ax trecut printr-un rulment si lipit la un capat de un servomotor care poate merge pana la 180 de grade va controla miscarea pe o axa.La capatul axului, pe o platforma va fi un al doilea ax perpendicular pe primul controlat de un alt servomotor care va controla miscarea pe cealalta axa. Pe acest al doilea ax se va afla mecanismul de tragere, senzorul infrarosu si rezerva de proiectile.>>> Paragraful de mai sus reprezinta o abordare eleganta a proiectului, dar cum rulmentii nu s-au potrivit iar axul de metal s-a rupt, robotul va fi facut integral din carton lipit cu mult scoci si nu va mai avea 2 grade de libertate, ci doar unul. 2. Sistemul de tragere Doua motoare DC de viteza mare si conectate la o baterie de 9V printr-un tranzistor si care primesc comanda ON/OFF de la arduino vor roti doua roti de cauciuc. Proiectilele vor cadea impinse de un elastic ( pentru a facilita tragerea si cand turreta se afla sub un unghi ) si vor fi impinse de un servomotor legat la o axa ( pentru a translata miscarea de tip arc in miscare liniara). Cand proiectilul va ajunge intre rotile motoarele, datorita frecarii vor fi lansate cu o viteza destul de mare. Problema in aceste mecanism este pozitionarea foarte exacta a pieselor pe care sper sa reusesc sa o duc la capat, tinand cont ca folosesc carton. 3. Sistemul de depozitare de proiectile Pentru ca nu am putut sa ating precizia de 1-2 mm folosind carton, nu mai exista si va putea trage doar cu un singur proiectil. 4. Modul sentry-mode Cand tureta se afla in acest mod, se va misca pe axa orizontala si va masura distanta pana la obiecte creand initial o harta a imprejurimilor imediate. Apoi orice miscare reprezinta o variate ( nu foarte rapida pt ca senzorul nu are rezolutie foarte mare ) a distantei catre background si va fi detectata. Tureta va lansa apoi proiectile in acea directie, eventual cu un delay datorat rezolutiei senzorului ultrasonic.
Alimentez motoarele de la o baterie de 9V folosind un divizor de tensiune facut din doua rezistoare. Folosesc un tranzistor ca switch pentru a porni si a stinge motoarele la comanda. Motoarele pot fi stinse dupa prima tragere deoarece robotul nu are un incarcator. Motoarele trebuie sa stea pornite pe durata de viata a programului pentru ca accelaretia de pornire e prea mica si nu ajung sufiecient de repede la o viteza de tragere cand se detecteaza o miscare.
Proiectul a avut nevoie de multe componente mecanice sau suporti 3d-printati pe care eu am decis sa ii construiesc din carton, pierzand aici saptamani la rand si ,in final, rezultatul nu e tocmai unul dorit, dar functioneaza asa cum doream. Am realizat dupa ce am comandat mare parte din piese ca ar fi trebuit sa folosesc un stepper si un driver pt rotatie in loc de un simplu servo, dar proiectul functioneaza si asa. Detectarea miscarii e controlata direct de precizia senzorului ultrasonic si functioneaza binisor la peste 1m. Partea electronica nu a fost extrem de complicata, probleme aparand la motoarele DC si servo care trageau mult curent din cauza frecarii cu alte bucati din robot. Din punct de vedere software se mai pot face imbunatatiri, de exemplu folosind intreruperi pentru a verifica daca s-a detectat o miscare si o alta intrerupere pentru tragere, dar s-a dovedit a fi destul de complicat.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.
https://github.com/PrioteasaAndrei/pm-2022-sentry-turret/tree/main
https://gist.github.com/WoLpH/0094b278a54f8f472c76b7eb0d0a8f89
https://arduinogetstarted.com/tutorials/arduino-motion-sensor-servo-motor
https://www.youtube.com/watch?v=47phOJFCXL0
https://somanytech.com/9v-to-5v-converter-circuit/
https://create.arduino.cc/projecthub/onedeadmatch/control-dc-motor-with-npn-transistor-arduino-pwm-cdaf2e