Innholdsfortegnelse:

Servo Squirter - USB Water Gun: 5 trinn
Servo Squirter - USB Water Gun: 5 trinn

Video: Servo Squirter - USB Water Gun: 5 trinn

Video: Servo Squirter - USB Water Gun: 5 trinn
Video: esp32 cam remote control electric water pistol 2024, November
Anonim
Servo Squirter - USB vannpistol
Servo Squirter - USB vannpistol

En USB -kontrollert servo vannpistol. Flott for å skyte mot intetanende forbipasserende, eller holde folk med irriterende spørsmål i sjakk. Dette prosjektet er en liten vannpumpe montert på toppen av en servo for retningsskyting. Det hele drives av en mikrokontroller og styres fra tastaturet via USB. For å se flere av våre prosjekter og gratis videoopplæringer, sjekk ut vårt nettsted

Trinn 1: Samle materialene

Samle materialene
Samle materialene
Samle materialene
Samle materialene
Samle materialene
Samle materialene

Dette prosjektet er mikrokontrollerbasert. Annet enn ATmega168 mikrokontroller som er inkludert i USB NerdKit. For dette prosjektet brukte vi følgende: 1 Hobby Servo, Hitec HS-501 Lavspennings stempelvannpumpe1 Liten n-kanal MOSFET, 2N7000

Trinn 2: Sett sammen kretsen

Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen
Sett sammen kretsen

Den første delen av kretsen vår kobles bare til servoen. Dette er enkelt her: en ledning fra mikrokontrolleren til servoen. Det er noen forskjellige fargemerkninger avhengig av produsent, så sjekk før du prøver dette. Skjematisk bilde av ServoSquirter -kretsen på NerdKits -brødbrettet Den andre delen av kretsen lar mikrokontrolleren slå på og av pumpemotoren. Selve ATmega168 -brikken tillater bare 40mA maks inn eller ut av en pinne, men pumpen vår krever nærmere 1000mA! Så for å kontrollere denne større belastningen har vi valgt å bruke en større transistor, 2N7000. Først forklarer vi det grunnleggende ved bruk av MOSFETs (Metal Oxide Semiconductor Field Effect Transistors) som brytere: å bringe Gate -spenningen over kilden, vi kan la strøm strømme fra Drain til Source. Fra databladet 2N7000 har vi hentet ut figur 1, som viser forholdet mellom dreneringsstrøm og avløpskildespenning for forskjellige spenningsinnstillinger for portkilde. Det er noen få viktige ting du kan lære av denne grafen: 1. For VGS under omtrent 3,0 volt tillates ingen strøm. Dette er av -tilstanden, også kalt "cutoff". 2. For små VDS ser kurven omtrent lineær ut gjennom opprinnelsen - noe som betyr at den elektrisk "ser ut" som en motstand. Tilsvarende motstand er kurvens inverse helling. Denne regionen for MOSFET -operasjonen kalles "triode". 3. For større VDS oppnås noe maksimal strømnivå. Dette kalles "metning". 4. Etter hvert som vi øker VGS, får mer strøm strømme i både triode- og metningsmodusene. Og nå har du faktisk lært om alle tre modusene for MOSFET -drift: cutoff, triode og metning. Fordi gate -kontrollen vår er digital (+5 eller 0), vi er bare bekymret for kurven markert med gult, for VGS = 5V. Normalt innebærer bruk av en MOSFET som bryter generelt triode driftsmodus, fordi MOSFET avleder strøm PD = ID*VDS, og en god bryter bør avgi liten strøm i selve bryteren. Men i dette tilfellet har vi å gjøre med en motor, og motorer har en tendens til å kreve mye strøm (med lite spenningsfall) når de starter første gang. Så for det første sekundet eller to vil MOSFET operere med høy VDS, og vil være begrenset av maksimal strøm - omtrent 800mA fra den røde stiplete linjen vi har tegnet på databladet. Vi fant ut at dette ikke var nok til å få pumpen i gang, så vi brukte et lite triks og satte to MOSFETer parallelt. På denne måten deler de strømmen og kan effektivt synke ca 1600mA sammen. På grunn av pumpens høye strømkrav brukte vi en veggtransformator med høyere strømeffekt. Hvis du har en veggtransformator med større enn 5V utgang - kanskje 9V eller 12V - så kan du ca.

Trinn 3: Sett opp PWM på MCU

Sett opp PWM på MCU
Sett opp PWM på MCU
Sett opp PWM på MCU
Sett opp PWM på MCU
Sett opp PWM på MCU
Sett opp PWM på MCU

PWM -registre og -beregninger I videoen snakker vi om to nivåer som brukes av timer/tellermodulen: toppverdien og sammenligningsverdien. Begge disse er viktige for å generere PWM -signalet du vil ha. Men for å aktivere ATmega168s PWM -utgang i utgangspunktet, må vi sette opp noen få registre. Først velger vi Fast PWM-modus med OCR1A som toppverdi, som lar oss vilkårlig angi hvor ofte en ny puls skal startes. Deretter stiller vi klokken til å kjøre med en forhåndsinndeling på 8, noe som betyr at telleren vil øke med 1 hver 8/(14745600 Hz) = 542 nanosekunder. Siden vi har 16-biters registre for denne timeren, betyr dette at vi kan sette den totale signalperioden til å være så høy som 65536*542ns = 36 millisekunder. Hvis vi brukte et større divisjonsnummer, kunne vi gjøre våre pulser lenger fra hverandre (noe som ikke hjelper i denne situasjonen), og vi ville miste oppløsningen. Hvis vi brukte et mindre divisjonstall (for eksempel 1), ville vi ikke være i stand til å gjøre våre pulser minst 16 millisekunder fra hverandre, slik vår servo forventer. Til slutt setter vi sammenligningsmodus for en "ikke-inverterende" PWM output, som er beskrevet i videoen vår. Vi har også angitt at pinnen PB2 skal være en utgangsnål-ikke vist her, men den er i koden. Klikk for å forstørre disse bildene fra side 132-134 i ATmega168-databladet, med våre registerverdivalg markert:

Trinn 4: Programmer mikrokontrolleren

Nå er det på tide å faktisk programmere MCU. Den komplette kildekoden finnes på nettstedet vårt https://www.nerdkits.com/videos/servosquirter Koden setter først opp PWM for å drive servoen. Koden sitter deretter i en stund -sløyfe og venter på brukerinngang. Tegnene 1 og 0 slår MCU -pinnen som er koblet til pumpetransistoren på eller av. Dette vil slå pumpen på og av og gi oss muligheten til å skyte etter behag. Koden reagerer også på tastene

Trinn 5: Seriell portkommunikasjon

Seriell portkommunikasjon
Seriell portkommunikasjon
Seriell portkommunikasjon
Seriell portkommunikasjon
Seriell portkommunikasjon
Seriell portkommunikasjon
Seriell portkommunikasjon
Seriell portkommunikasjon

Det siste trinnet er å sette opp datamaskinen slik at du kan sende kommandoene til mikrokontrolleren. I NerdKit bruker vi seriekabelen til å sende kommandoer og informasjon til datamaskinen. Det er mulig å skrive enkle programmer på de fleste programmeringsspråk som kan kommunisere over serieporten til NerdKit. Imidlertid er det mye enklere å bruke et terminalprogram for å utføre seriell kommunikasjon for oss. På denne måten kan du bare skrive på tastaturet og se svaret fra NerdKit. Windows Hvis du bruker Windows XP eller tidligere, er HyperTerminal inkludert, og bør være i Start -menyen under "Start -> Programmer -> Tilbehør -> Kommunikasjon ". Når du åpner HyperTerminal, blir du bedt om å sette opp en tilkobling. Avbryt dem, til du er i hoved HyperTerminal -sceen. Du må konfigurere HyperTerminal, velge riktig COM -port og angi portinnstillingene riktig for å fungere med NerdKit. Følg skjermbildene nedenfor for å få riktig HyperTerm -oppsett. Hvis du bruker Windows Vista, er HyperTerminal ikke lenger inkludert. I dette tilfellet, last ned PuTTY (Windows -installasjonsprogram). Bruk tilkoblingsinnstillingene nedenfor for å konfigurere Putty, ved hjelp av riktig COM -port. Mac OS X Etter å ha angitt Terminal -applikasjonen, skriver du "screen /dev/tty. PL* 115200" for å begynne å kommunisere over den serielle porten. LinuxOp Linux bruker vi " minicom "for å snakke med serieporten. For å starte, kjør "minicom -s" på konsollen for å gå til minicoms oppsettmeny. Gå til "Serial Port Setup". Angi parametrene som følger: Minicom -konfigurasjon på Linux Deretter trykker du på escape og bruker "Lagre oppsett som dfl" for å lagre innstillinger som standard. Du bør nå kunne trykke "Exit" og bruke minicom for å snakke med NerdKit.

Anbefalt: