Servo Squirter - Pistol de apă USB: 5 pași
Servo Squirter - Pistol de apă USB: 5 pași
Anonim

Un pistol de servocomand controlat prin USB. Excelent pentru a trage către trecători nebănuși sau pentru a ține la distanță persoanele cu întrebări enervante. Acest proiect este o mică pompă de apă montată deasupra unui servo pentru tragere direcțională. Întregul lucru este condus de un microcontroler și este controlat de la tastatură prin USB. Pentru a vedea mai multe proiecte și tutoriale video gratuite, consultați site-ul nostru

Pasul 1: Adunați materialele

Acest proiect este bazat pe microcontroler. În afară de microcontrolerul ATmega168 inclus în USB NerdKit. Pentru acest proiect am folosit următoarele: 1 Hobby Servo, Hitec HS-501 Pompă de apă cu piston de joasă tensiune 1 MOSFET mic cu canal n, 2N7000

Pasul 2: Asamblați circuitul

Prima parte a circuitului nostru se conectează doar la servo. Acest lucru este simplu aici: un fir de la microcontroler la servo. Există câteva etichete de culoare diferite, în funcție de producător, deci verificați înainte de a încerca acest lucru. Foto schematică a circuitului ServoSquirter de pe placa NerdKits A doua parte a circuitului permite microcontrolerului să pornească și să oprească motorul pompei. Cipul ATmega168 în sine permite numai 40mA max în sau în afara oricărui pin, dar pompa noastră necesită mai aproape de 1000mA! Deci, pentru a controla această sarcină mai mare, am ales să folosim un tranzistor mai mare, 2N7000. Mai întâi explicăm elementele de bază ale utilizării MOSFET-urilor (tranzistoare cu efect de câmp semiconductor cu oxid de metal) ca întrerupătoare: aducând tensiunea Gate deasupra sursei, putem permite curentului să curgă de la scurgere la sursă. Din foaia de date 2N7000, am extras Figura 1, care arată relația dintre curentul de scurgere și tensiunea sursă de scurgere pentru diferite setări de tensiune sursă de poartă. Există câteva lucruri importante pe care le puteți învăța din acest grafic: 1. Pentru VGS sub aproximativ 3,0 volți, nu este permis să curgă curent. Acesta este starea oprită, numită și „cutoff”. 2. Pentru VDS mici, curba arată aproximativ liniară prin origine - ceea ce înseamnă că „arată” electric ca un rezistor. Rezistența echivalentă este panta inversă a curbei. Această regiune a operației MOSFET se numește „triodă”. 3. Pentru VDS mai mari, este atins un anumit nivel maxim de curent. Aceasta se numește „saturație”. 4. Pe măsură ce creștem VGS, mai mult curent este permis să curgă atât în modurile triodă, cât și în modurile de saturație. Și acum ați aflat de fapt despre toate cele trei moduri de funcționare MOSFET: întrerupere, triodă și saturație. Deoarece controlul porții noastre este digital (+5 sau 0), ne preocupă doar curba evidențiată în galben, pentru VGS = 5V. În mod normal, utilizarea unui MOSFET ca comutator implică, în general, modul de funcționare triodă, deoarece MOSFET disipă puterea PD = ID * VDS, iar un comutator bun ar trebui să disipeze puțină putere în comutator. Dar, în acest caz, avem de-a face cu un motor, iar motoarele tind să necesite mult curent (cu puțină cădere de tensiune) la prima pornire. Deci, pentru prima sau două secunde, MOSFET va funcționa cu VDS ridicat și va fi limitat de curentul său maxim - aproximativ 800mA de la linia punctată roșie pe care am tras-o pe foaia de date. Am constatat că acest lucru nu era suficient pentru a porni pompa, așa că am folosit un mic truc și am pus două MOSFET-uri în paralel. În acest fel, împărtășesc curentul și pot scufunda efectiv aproximativ 1600 mA împreună. De asemenea, datorită cerințelor ridicate de putere ale pompei, am folosit un transformator de perete cu putere de curent mai mare. Dacă aveți un transformator de perete cu o ieșire mai mare de 5V - poate 9V sau 12V - atunci veți putea

Pasul 3: Configurați PWM pe MCU

Registre și calcule PWM În videoclip, vorbim despre două niveluri utilizate de modulul temporizator / contor: valoarea de sus și valoarea de comparare. Ambele sunt importante în generarea semnalului PWM pe care îl doriți, dar pentru a activa ieșirea PWM a ATmega168, trebuie să configurăm câteva registre. Mai întâi, selectăm modul PWM rapid cu OCR1A ca valoare de top, care ne permite să stabilim în mod arbitrar cât de des să începem un nou impuls. Apoi, setăm ceasul să ruleze cu o pre-divizare a 8, ceea ce înseamnă că contorul va crește cu 1 la fiecare 8 / (14745600 Hz) = 542 nanosecunde. Deoarece avem registre pe 16 biți pentru acest temporizator, acest lucru înseamnă că putem seta perioada de semnal globală la 65536 * 542ns = 36 de milisecunde. Dacă am folosi un număr mai mare de diviziune, ne-am putea distinge impulsurile mai departe (ceea ce nu ajută în această situație) și am pierde rezoluția. Dacă am folosi un număr mai mic de diviziune (cum ar fi 1), nu am putea face impulsurile la distanță de cel puțin 16 milisecunde, așa cum se așteaptă servo-ul nostru., care este descrisă în videoclipul nostru. De asemenea, setăm pinul PB2 să fie un pin de ieșire - nu este afișat aici, dar este în cod. Faceți clic pentru a mări aceste fotografii din paginile 132-134 din foaia de date ATmega168, cu selecțiile noastre de valori de registru evidențiate:

Pasul 4: Programați microcontrolerul

Acum este timpul să programați efectiv MCU. Codul sursă complet este furnizat pe site-ul nostru https://www.nerdkits.com/videos/servosquirter Codul configurează mai întâi PWM pentru a conduce servo-ul. Apoi, codul stă într-o buclă de timp în așteptarea intrării utilizatorului. Caracterele 1 și 0 activează sau opresc pinul MCU care este conectat la tranzistorul pompei. Acest lucru va porni și opri pompa, oferindu-ne capacitatea de a trage după bunul plac. Codul răspunde, de asemenea, la tastele „[” și „]” aceste taste vor crește sau micșora valoarea de comparare a pinului PWM, ceea ce va provoca servo motorul pentru a schimba poziția. Acest lucru vă oferă posibilitatea de a ținti înainte de a trage.

Pasul 5: Comunicații port serial

Ultimul pas este să configurați computerul, astfel încât să puteți trimite comenzile către microcontroler. În NerdKit, folosim cablul serial pentru a trimite comenzi și informații către computer. Este posibil să scrieți programe simple în majoritatea limbajelor de programare care pot comunica prin portul serial către NerdKit. Cu toate acestea, este mult mai simplu să folosim un program terminal pentru a face comunicarea serială pentru noi. În acest fel, puteți tasta doar pe tastatură și puteți vedea răspunsul din NerdKit. Windows Dacă utilizați Windows XP sau o versiune anterioară, HyperTerminal este inclus și ar trebui să fie în meniul Start din „Start -> Programe -> Accesorii -> Comunicări ". Când deschideți prima dată HyperTerminal, acesta vă solicită să configurați o conexiune. Anulați-le, până când vă aflați pe ecranul principal HyperTerminal. Va trebui să configurați HyperTerminal, alegând portul COM corect și setând corespunzător setările portului pentru a funcționa cu NerdKit. Urmați capturile de ecran de mai jos pentru a obține o configurare HyperTerm corectă. Dacă sunteți pe Windows Vista, HyperTerminal nu mai este inclus. În acest caz, descărcați PuTTY (programul de instalare Windows). Utilizați setările de conexiune de mai jos pentru a configura Putty, utilizând portul COM adecvat. Mac OS X După ce ați intrat în aplicația Terminal, tastați „ecran /dev/tty. PL* 115200” pentru a începe să comunicați prin portul serial. Linux Pe Linux, folosim „ minicom "pentru a vorbi cu portul serial. Pentru a începe, rulați „minicom -s” la consolă pentru a accesa meniul de configurare al minicom. Accesați „Configurare port serial”. Setați parametrii după cum urmează: Configurare Minicom pe Linux Apoi, apăsați pe escape și utilizați „Salvare configurare ca dfl” pentru a salva setările ca implicite. Acum ar trebui să puteți accesa „Exit” și să utilizați minicom pentru a vorbi cu NerdKit.