Inhoudsopgave:

Servo Squirter - USB-waterpistool - Ajarnpa
Servo Squirter - USB-waterpistool - Ajarnpa

Video: Servo Squirter - USB-waterpistool - Ajarnpa

Video: Servo Squirter - USB-waterpistool - Ajarnpa
Video: DIY USB-Controlled Servo Squirter Water Pump 2024, November
Anonim
Servo Squirter - USB-waterpistool
Servo Squirter - USB-waterpistool

Een USB gestuurd servo waterpistool. Geweldig om te schieten op nietsvermoedende voorbijgangers, of om mensen met vervelende vragen op afstand te houden. Dit project is een kleine waterpomp die bovenop een servo is gemonteerd voor gericht schieten. Het geheel wordt aangestuurd door een microcontroller en bestuurd vanaf je toetsenbord via USB. Om meer van onze projecten en gratis video-tutorials te zien, ga je naar onze website

Stap 1: Verzamel de materialen

Verzamel de materialen
Verzamel de materialen
Verzamel de materialen
Verzamel de materialen
Verzamel de materialen
Verzamel de materialen

Dit project is gebaseerd op microcontrollers. Anders dan de ATmega168-microcontroller die is opgenomen in de USB NerdKit. Voor dit project hebben we het volgende gebruikt: 1 Hobby Servo, Hitec HS-501 Laagspanningszuigerwaterpomp1 Kleine n-kanaals MOSFET, 2N7000

Stap 2: Monteer het circuit

Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit
Monteer het circuit

Het eerste deel van ons circuit maakt gewoon verbinding met de servo. Dit is hier eenvoudig: één draad van de microcontroller naar de servo. Er zijn een paar verschillende kleurlabels, afhankelijk van de fabrikant, dus controleer dit voordat u dit probeert. Schematische foto van het ServoSquirter-circuit op het NerdKits-broodbord Met het tweede deel van het circuit kan de microcontroller de pompmotor in- en uitschakelen. De ATmega168-chip zelf laat slechts 40mA max in of uit een pin, maar onze pomp vereist dichter bij 1000mA! Dus om deze grotere belasting te beheersen, hebben we ervoor gekozen om een grotere transistor te gebruiken, de 2N7000. Eerst leggen we de basis uit van het gebruik van MOSFET's (Metal Oxide Semiconductor Field Effect Transistors) als schakelaars: door de poortspanning boven de bron te brengen, kunnen we stroom van afvoer naar bron laten vloeien. Uit de datasheet van de 2N7000 hebben we figuur 1 geëxtraheerd, waarin de relatie wordt weergegeven tussen de afvoerstroom en de afvoerbronspanning voor verschillende poortbronspanningsinstellingen. Er zijn een paar belangrijke dingen die u uit deze grafiek kunt leren: 1. Voor VGS onder ongeveer 3,0 volt mag er geen stroom vloeien. Dit is de uit-status, ook wel "cutoff" genoemd. 2. Voor kleine VDS ziet de curve er ongeveer lineair uit door de oorsprong - wat betekent dat het elektrisch "eruit ziet" als een weerstand. De equivalente weerstand is de inverse helling van de curve. Dit gebied van MOSFET-werking wordt "triode" genoemd. 3. Voor grotere VDS wordt een maximaal stroomniveau bereikt. Dit wordt "verzadiging" genoemd. 4. Naarmate we de VGS verhogen, mag er meer stroom vloeien in zowel de triode- als de verzadigingsmodus. En nu heb je echt geleerd over alle drie de modi van MOSFET-werking: cutoff, triode en verzadiging. Omdat onze gate-besturing digitaal is (+5 of 0), maken we ons alleen zorgen over de geel gemarkeerde curve, voor VGS=5V. Normaal gesproken omvat het gebruik van een MOSFET als schakelaar over het algemeen de triode-modus, omdat de MOSFET het vermogen PD = ID * VDS dissipeert, en een goede schakelaar zou weinig vermogen in de schakelaar zelf moeten dissiperen. Maar in dit geval hebben we te maken met een motor, en motoren hebben de neiging om veel stroom (met weinig spanningsverlies) te vereisen wanneer ze voor het eerst worden opgestart. Dus gedurende de eerste of twee seconden werkt de MOSFET met hoge VDS en wordt beperkt door zijn maximale stroom - ongeveer 800 mA vanaf de rode stippellijn die we op het gegevensblad hebben getekend. We ontdekten dat dit niet genoeg was om de pomp op gang te krijgen, dus gebruikten we een klein trucje en zetten we twee MOSFET's parallel. Op deze manier delen ze de stroom en kunnen ze effectief ongeveer 1600 mA samen zinken. Mede vanwege de hoge stroombehoefte van de pomp, hebben we een wandtransformator gebruikt met een hogere stroomoutput. Als je een wandtransformator hebt met een output van meer dan 5V -- misschien 9V of 12V -- dan kun je

Stap 3: Stel de PWM in op de MCU

Stel de PWM in op de MCU
Stel de PWM in op de MCU
Stel de PWM in op de MCU
Stel de PWM in op de MCU
Stel de PWM in op de MCU
Stel de PWM in op de MCU

PWM-registers en -berekeningenIn de video hebben we het over twee niveaus die worden gebruikt door de timer/teller-module: de topwaarde en de vergelijkingswaarde. Beide zijn belangrijk bij het genereren van het gewenste PWM-signaal. Maar om de PWM-uitgang van uw ATmega168 in de eerste plaats te activeren, moeten we een paar registers instellen. Eerst selecteren we de Fast PWM-modus met OCR1A als topwaarde, waarmee we willekeurig kunnen instellen hoe vaak een nieuwe puls moet worden gestart. Vervolgens stellen we de klok in om te lopen met een voordeling van 8, wat betekent dat de teller zal toenemen met 1 elke 8/(14745600 Hz) = 542 nanoseconden. Aangezien we 16-bits registers hebben voor deze timer, betekent dit dat we onze algemene signaalperiode kunnen instellen op 65536*542ns = 36 milliseconden. Als we een groter delingsgetal zouden gebruiken, zouden we onze pulsen verder uit elkaar kunnen halen (wat in deze situatie niet helpt), en we zouden resolutie verliezen. Als we een kleiner delingsgetal zouden gebruiken (zoals 1), zouden we onze pulsen niet ten minste 16 milliseconden uit elkaar kunnen halen, zoals onze servo verwacht. Ten slotte stellen we de Compare Output-modus in voor een "niet-inverterende" PWM uitvoer, die wordt beschreven in onze video. We hebben de pin PB2 ook ingesteld als een output-pin -- hier niet weergegeven, maar in de code. Klik om deze foto's te vergroten vanaf pagina's 132-134 van de ATmega168-datasheet, met onze registerwaardeselecties gemarkeerd:

Stap 4: Programmeer de microcontroller

Nu is het tijd om de MCU daadwerkelijk te programmeren. De volledige broncode staat op onze website https://www.nerdkits.com/videos/servosquirter. De code stelt eerst de PWM in om de servo aan te drijven. De code zit dan gewoon in een while-lus, wachtend op invoer van de gebruiker. De karakters 1 en 0 zetten de MCU-pin die is aangesloten op de pomptransistor aan of uit. Hierdoor wordt de pomp in- en uitgeschakeld, waardoor we naar believen kunnen vuren. De code reageert ook op de toetsen '[' en ']'. Deze toetsen verhogen of verlagen de vergelijkingswaarde op de PWM-pin, waardoor de servo motor om van positie te veranderen. Dit geeft je de mogelijkheid om te richten voordat je schiet.

Stap 5: Seriële poortcommunicatie

Seriële poortcommunicatie
Seriële poortcommunicatie
Seriële poortcommunicatie
Seriële poortcommunicatie
Seriële poortcommunicatie
Seriële poortcommunicatie
Seriële poortcommunicatie
Seriële poortcommunicatie

De laatste stap is het instellen van de computer zodat u de opdrachten naar de Microcontroller kunt sturen. In de NerdKit gebruiken we de seriële kabel om opdrachten en informatie naar de computer te sturen. Het is mogelijk om in de meeste programmeertalen eenvoudige programma's te schrijven die via de seriële poort met de NerdKit kunnen communiceren. Het is echter veel eenvoudiger om een terminalprogramma te gebruiken om de seriële communicatie voor ons te doen. Op deze manier kun je gewoon op het toetsenbord typen en het antwoord van de NerdKit zien. Communicatie". Wanneer u HyperTerminal voor het eerst opent, wordt u gevraagd een verbinding tot stand te brengen. Annuleer deze, totdat u bij het hoofdscherm van HyperTerminal bent. U moet HyperTerminal instellen, de juiste COM-poort kiezen en de poortinstellingen correct instellen om met de NerdKit te werken. Volg de onderstaande schermafbeeldingen om de juiste HyperTerm-installatie te krijgen. Als u Windows Vista gebruikt, is HyperTerminal niet langer inbegrepen. Ga in dit geval naar PuTTY (Windows-installatieprogramma). Gebruik de onderstaande verbindingsinstellingen om Putty in te stellen met de juiste COM-poort. Mac OS XNa het openen van de Terminal-toepassing typt u "screen /dev/tty. PL* 115200" om te beginnen met communiceren via de seriële poort. LinuxOp Linux gebruiken we " minicom" om met de seriële poort te praten. Voer om te beginnen "minicom -s" uit op de console om het setup-menu van de minicom te openen. Ga naar "Seriële poort instellen". Stel de parameters als volgt in:Minicom-configuratie op LinuxDruk vervolgens op escape en gebruik de "Save setup as dfl" om de instellingen als standaard op te slaan. Je zou nu op "Afsluiten" moeten kunnen drukken en minicom gebruiken om met de NerdKit te praten.

Aanbevolen: