Inhoudsopgave:

$ 1 Arduino-gebaseerde automaat - Ajarnpa
$ 1 Arduino-gebaseerde automaat - Ajarnpa

Video: $ 1 Arduino-gebaseerde automaat - Ajarnpa

Video: $ 1 Arduino-gebaseerde automaat - Ajarnpa
Video: Самый НЕДОРОГОЙ токарный ЧПУ станок на Arduino /ProDIY 2024, Juli-
Anonim
Image
Image
Behuizing
Behuizing

We kregen ons idee van onze techniekleraar - we dachten allemaal dat het een goed idee zou zijn om een automaat voor onze klas te hebben en hij zei - "cool, maak er een". Het bleek dat een automaat een geweldig seniorenproject zou zijn en als het voltooid was, zou het dienen als een fondsenwerver voor ons engineeringprogramma.

Het wordt een automaat van $ 1 genoemd, niet omdat het $ 1 kost om te maken, maar gewoon omdat de rekeningacceptor een ouder model is dat slechts $ 1 biljetten kost:)

Stap 1: Criteria

We wilden een automaat die bovenop een bureau zou passen en niet te hoog zou zijn. We hebben de afmetingen van de breedte van de tafel genomen om er zeker van te zijn dat de automaat niet aan de tafel hangt.

Stap 2: Behuizing

Behuizing
Behuizing
Behuizing
Behuizing
Behuizing
Behuizing

We hebben onze doos 19 inch breed bij 17 inch lang en 25 inch hoog gemaakt. We gebruikten een CNC-machine om ons hout te zagen. We gebruikten solidworks om de gezichten te ontwerpen en converteerden ze vervolgens naar tekenbestandstypen voor onze CNC-software. We hebben de randen geschuurd en vervolgens vastgeschroefd met 1 ¼”. We bevestigden het voorpaneel met een scharnier en gebruikten ¼ “-schroeven, zodat de schroeven niet naar de andere kant zouden gaan. We hebben ook acrylglas gebruikt dat we hebben gesneden voor de planken en het voorpaneel.

Stap 3: Elektronica

Elektronica
Elektronica
Elektronica
Elektronica
Elektronica
Elektronica
Elektronica
Elektronica

Arduino

We gebruikten een Arduino Mega 2560-bord. We hebben ook Adafruit Motor Boards gebruikt, zodat ze de stappenmotoren kunnen aansturen. We hebben pinnen aan de adafruit's toegevoegd om ze met elkaar te verbinden. Ze werden op elkaar geplaatst. Elk kan 2 motoren aandrijven. Houd er ook rekening mee dat de jumper moet worden aangesloten.

Desktop-voeding

Bestek ATX Voeding met behulp van een adapter om de voeding aan te houden. De adapter is van sparkfun.com en levert verschillende spanningen.

Spoelen in motoren

We hebben solidworks-modellen gemaakt om de motor vast te houden, de spoel vast te pakken en de spoel langs de plank te leiden. We hadden onze coils van ebay gehaald en op maat gesneden. We moesten er ook 3 buigen omdat we er geen 6 kregen met de rechte uiteinden om aan te sluiten op de spoelbevestiging. We hebben ze vervolgens in 3D geprint en aan de spoel en motor bevestigd. De stappenmotoren die we hadden, hebben we in een houder gezet. Het zou de motor vasthouden en de spoel langs een recht pad leiden.

LCD en toetsenbord

We gebruikten een Arduino-toetsenbord en een LCD-scherm aangesloten op een 5V-kabel op de voedingsadapter voor stroom en vervolgens op hetzelfde Arduino-bord

Bedrading

We raden het gebruik van 18 gauge draden aan. In ons geval moesten we compromissen sluiten door verschillende meters te gebruiken omdat we geen 18 meters meer hadden

Loden strip

We gebruikten een LED-strip om de machine te verlichten. We hebben het aangesloten op een 12V-kabel op de voedingsadapter. De LED-strip die we gebruikten had gelukkig een + en - waardoor het aansluiten ervan gemakkelijker werd.

Stap 4: Rekeningacceptant

Rekeningacceptant
Rekeningacceptant
Rekeningacceptant
Rekeningacceptant
Rekeningacceptant
Rekeningacceptant
Rekeningacceptant
Rekeningacceptant

We gebruikten een Coinco BA30B als onze rekeningacceptor. Het moest rechtstreeks op de muur worden aangesloten als stroombron. We hebben het gecombineerd met een 24-pins adapter van een atx-voeding om in te pluggen en eenvoudigere bedrading mogelijk te maken. De pinouts die we hebben gevolgd, zijn te vinden in de volgende link:

techvalleyprojects.blogspot.com/2011/07/ard…

In ons geval moesten we een houder maken om de rekeningacceptor te verhogen omdat deze anders te laag zou zijn voor onze behuizing.

Stap 5: Testen

Test eerst de elektronica buiten de behuizing om te controleren of de componenten werken. Alle problemen die zich voordoen, moeten worden opgelost voordat ze in de behuizing worden geplaatst.

Stap 6: Elektronica naar behuizing

Zodra je de elektronica hebt getest en tevreden bent met de resultaten, begin je ze in je behuizing te plaatsen. Pas de draadlengtes zo aan dat ze er comfortabel in passen.

Stap 7: Laatste testen

Eenmaal in de behuizing geplaatst, test u alles opnieuw. Als alles werkt zoals je had verwacht, gefeliciteerd! Je hebt een automaat gemaakt.

Stap 8: Arduino-code + links

Downloaden:

Arduino-code

drive.google.com/drive/folders/1oC4MhOcMFy…

SolidWorks-map met deelbestanden en montage

drive.google.com/drive/folders/1amZoypiWcZ…

Voor het geval er iets met de link is gebeurd, wordt hier de Arduino-code volledig weergegeven. Arduino-code <<

#include #include #include "Arduino.h" #include #include #include "utility/Adafruit_MS_PWMServoDriver.h" #include

const int stepsPerRevolution = 200; const byte RIJEN = 4; // vier rijen const byte COLS = 3; //tekentoetsen met drie kolommen [ROWS][COLS] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte rowPins [ROWS] = {5, 6, 7, 8}; // maak verbinding met de rij-pinouts van de toetsenbordbyte colPins [COLS] = {2, 3, 4}; // verbind met de kolom pinouts van het toetsenbord Toetsenbord toetsenbord = Toetsenbord (makeKeymap (sleutels), rowPins, colPins, RIJEN, COLS); Adafruit_MotorShield AFMS1 = Adafruit_MotorShield(); Adafruit_StepperMotor *mijnMotor1 = AFMS1.getStepper(-200, 1); Adafruit_StepperMotor *mijnMotor2 = AFMS1.getStepper(-200, 2); Adafruit_MotorShield AFMS2 = Adafruit_MotorShield (0x61); Adafruit_StepperMotor *mijnMotor3 = AFMS2.getStepper(-200, 1); Adafruit_StepperMotor *myMotor4 = AFMS2.getStepper(-200, 2); Adafruit_MotorShield AFMS3 = Adafruit_MotorShield (0x62); Adafruit_StepperMotor *myMotor5 = AFMS3.getStepper(-200, 1); Adafruit_StepperMotor *myMotor6 = AFMS3.getStepper(-200, 2); Adafruit_MotorShield AFMS4 = Adafruit_MotorShield (0x63); Adafruit_StepperMotor *myMotor7 = AFMS4.getStepper(-200, 1); Adafruit_StepperMotor *myMotor8 = AFMS4.getStepper(-200, 2); LiquidCrystal-lcd (1, 11, 9, 10, 12, 13); // Digitale pinnen waarmee het lcd-scherm is verbonden // Constanten // // pin voor het krediet van de rekeningsvalidator (-) lijn const int billValidator = 22;

// Variabelen /

/ opnemen van de duur van de puls (milliseconden) unsigned lange duur;

// met het totale aantal dollars dat is geregistreerd in dollarCounter = 0; void setup() { lcd.begin (16, 1); //set lcd-tekstcoördinaten lcd.print ("Alleen $1 invoegen"); //Stel tekst Serial.begin (9600); // Initialiseer seriële poorten voor communicatie. Serial.println ("Stappentest!"); //Type Out Stepper Test in de seriële monitor zodat we weten welke stappenmotor is ingedrukt. AFMS1.begin(); AFMS2.begin(); AFMS3.begin(); AFMS4.begin(); mijnMotor1->setSpeed(100); // Stel de motorsnelheid in waarop ze myMotor2->setSpeed (100) zullen laten draaien; mijnMotor3->setSpeed(100); mijnMotor4->setSpeed(100); mijnMotor5->setSpeed(100); mijnMotor6->setSpeed(100); mijnMotor7->setSpeed(100); mijnMotor8->setSpeed(100); // Pin-instellingen voor factuurvalidator en knop pinMode (billValidator, INPUT); // Stelt de rekeningaccepter in

// Initialiseer seriële poorten voor communicatie. Serieel.begin(9600); Serial.println("Wachten op dollar…"); } void loop () {{ duration = pulseIn(billValidator, HIGH); //Begint met zoeken naar de pulslengte die is ontvangen van de acceptant van de rekening als (duur > 12000) //Waarde die deze moet overtreffen om te valideren als een verwerkte en authentieke dollar { // Count dollar dollarCounter++; // Controleren op begrip van Serial.print ("Dollar gedetecteerd.\n Totaal: "); // Toon nieuwe dollartelling Serial.println (dollarCounter); // lus om te wachten tot een knop wordt ingedrukt while (duur > 12000) {char key = keypad.getKey(); // krijgt de keyoad aangesloten en begint te zien welke wordt ingedrukt als (toets! = NO_KEY) { // zal zoeken naar ingedrukte toets Serial.println (toets); // laat ons weten welke werd ingedrukt in de seriële monitor } { if (key == '1') { //Als toets 1 wordt ingedrukt, doet het volgende: int keyPressed = key - '1'; myMotor8->step (580, VOORUIT, DUBBEL); // Start de motor en draait 350 graden in voorwaartse richting. mijnMotor8->release(); //Bevrijdt de motor uit de staat waarin hij zichzelf op zijn plaats houdt. opbrengst; // Gaat terug naar het begin van de luscode}

if (key == '2') { //Als toets 2 wordt ingedrukt, doet het volgende: int keyPressed = key - '2'; myMotor7->step (400, VOORUIT, DUBBEL); // Start de motor en draait 350 graden in voorwaartse richting. mijnMotor7->release(); //Laat de motor los uit de staat waarin hij zichzelf op zijn plaats houdt. opbrengst; // Gaat terug naar het begin van de luscode } if (key == '3') { // Als Key 3 wordt ingedrukt, doet het volgende: int keyPressed = key - '3'; myMotor6->stap (400, VOORUIT, DUBBEL); // Start de motor en draait 350 graden in voorwaartse richting. mijnMotor6->release(); //Laat de motor los uit de staat waarin hij zichzelf op zijn plaats houdt. opbrengst; // Gaat terug naar het begin van de luscode } if (key == '4') { // Als Key 4 wordt ingedrukt, doet het volgende: int keyPressed = key - '4'; myMotor5->step (180, VOORUIT, DUBBEL); // Start de motor en draait 350 graden in voorwaartse richting. mijnMotor5->release(); //Bevrijdt de motor uit de staat waarin hij zichzelf op zijn plaats houdt. opbrengst; // Gaat terug naar het begin van de luscode } if (key == '5') { // Als Key 5 wordt ingedrukt, doet het volgende: int keyPressed = key - '5'; myMotor4->step (6900, VOORUIT, DUBBEL); // Start de motor en draait 350 graden in voorwaartse richting. mijnMotor4->release(); //Bevrijdt de motor uit de staat waarin hij zichzelf op zijn plaats houdt. opbrengst; // Gaat terug naar het begin van de luscode } if (key == '6') { // Als Key 6 wordt ingedrukt, doet het volgende: int keyPressed = key - '6'; myMotor3->step (400, VOORUIT, DUBBEL); // Start de motor en draait 350 graden in voorwaartse richting. mijnMotor3->release(); //Laat de motor los uit de staat waarin hij zichzelf op zijn plaats houdt. opbrengst; // Gaat terug naar het begin van de luscode } if (key == '7') { // Als Key 7 wordt ingedrukt, doet het volgende: int keyPressed = key - '7'; myMotor7->step (400, VOORUIT, DUBBEL); // Start de motor en draait 350 graden in voorwaartse richting. mijnMotor7->release(); //Laat de motor los uit de staat waarin hij zichzelf op zijn plaats houdt. opbrengst; // Gaat terug naar het begin van de luscode } if (key == '8') { // Als Key 8 wordt ingedrukt, doet het volgende: int keyPressed = key - '8'; myMotor8->stap (400, VOORUIT, DUBBEL); // Start de motor en draait 350 graden in voorwaartse richting. mijnMotor8->release(); //Laat de motor los uit de staat waarin hij zichzelf op zijn plaats houdt. opbrengst; // Gaat terug naar het begin van de luscode } } } } } } >>

Aanbevolen: