Სარჩევი:

არდუინოზე დაფუძნებული 1 დოლარიანი გამყიდველი მანქანა: 8 ნაბიჯი
არდუინოზე დაფუძნებული 1 დოლარიანი გამყიდველი მანქანა: 8 ნაბიჯი

ვიდეო: არდუინოზე დაფუძნებული 1 დოლარიანი გამყიდველი მანქანა: 8 ნაბიჯი

ვიდეო: არდუინოზე დაფუძნებული 1 დოლარიანი გამყიდველი მანქანა: 8 ნაბიჯი
ვიდეო: Lesson 95: Using L293D 4 DC Motors Shield for Arduino UNO and Mega | Arduino Step By Step Course 2024, ივლისი
Anonim
Image
Image
გარსაცმები
გარსაცმები

ჩვენ მივიღეთ ჩვენი იდეა ჩვენი ინჟინერიის მასწავლებლისგან - ჩვენ ყველანი ვფიქრობდით, რომ კარგი იდეა იქნებოდა ჩვენი კლასის გამყიდველი მანქანა და მან თქვა - "მაგარი, გააკეთე ერთი". აღმოჩნდა, რომ გამყიდველი მანქანა იქნება დიდი უფროსი პროექტი და დასრულების შემდეგ იმუშავებს როგორც საინჟინრო პროგრამის ფონდის შემგროვებელი.

მას ჰქვია 1 დოლარიანი გამყიდველი მანქანა არა იმიტომ, რომ მისი დამზადება 1 დოლარი ღირს, არამედ უბრალოდ იმიტომ, რომ კანონპროექტის მიმღები არის ძველი მოდელი, რომელსაც მხოლოდ 1 დოლარის გადასახადები აქვს:)

ნაბიჯი 1: კრიტერიუმები

ჩვენ გვინდოდა გამყიდველი მანქანა, რომელიც ჯდებოდა მაგიდის თავზე და არ იქნებოდა ძალიან მაღალი. ჩვენ ავიღეთ მაგიდის სიგანის ზომები, რათა დავრწმუნდეთ, რომ მაგიდაზე ჩამოკიდებული ავტომატი არ გვაქვს.

ნაბიჯი 2: გარსაცმები

გარსაცმები
გარსაცმები
გარსაცმები
გარსაცმები
გარსაცმები
გარსაცმები

ჩვენ გავაკეთეთ ჩვენი ყუთი 19 ინჩი სიგანე 17 ინჩი სიგრძით 25 ინჩი სიმაღლით. ჩვენ გამოვიყენეთ CNC მანქანა ჩვენი ხის მოსაჭრელად. ჩვენ გამოვიყენეთ solidworks, რომ შევქმნათ სახეები და შემდეგ გადავაკეთეთ ისინი ჩვენი CNC პროგრამული უზრუნველყოფის ფაილის ტიპებზე. ჩვენ დავხურეთ კიდეები და შემდეგ ჩავახურეთ ისინი 1 ¼”. ჩვენ დავამაგრეთ წინა პანელი სახვევით და გამოვიყენეთ ¼ „ხრახნები, ისე რომ ხრახნები არ გადავიდეს მეორე მხარეს. ჩვენ ასევე გამოვიყენეთ აკრილის მინა, რომელსაც ჩვენ ვჭრით თაროებისთვის და წინა პანელისთვის.

ნაბიჯი 3: ელექტრონიკა

ელექტრონიკა
ელექტრონიკა
ელექტრონიკა
ელექტრონიკა
ელექტრონიკა
ელექტრონიკა
ელექტრონიკა
ელექტრონიკა

არდუინო

ჩვენ გამოვიყენეთ Arduino Mega 2560 დაფა. ჩვენ ასევე გამოვიყენეთ ადაფრუტის საავტომობილო დაფები, რათა მათ შეეძლოთ სტეპერიანი ძრავების გაშვება. ჩვენ დავამატეთ ქინძისთავები ადაფრუტს, რათა ერთმანეთთან დაკავშირება მოხდეს. ისინი ჩასვეს ერთმანეთზე. თითოეულს შეუძლია 2 ძრავის გაშვება. ასევე, გთხოვთ გაითვალისწინოთ, რომ ჯუმბერი უნდა იყოს დაკავშირებული.

დესკტოპის კვების წყარო

Bestek ATX კვების ბლოკი ადაპტერის გამოყენებით დენის წყაროს შესანარჩუნებლად. ადაპტერი არის sparkfun.com– დან და უზრუნველყოფს სხვადასხვა ძაბვას.

ბრუნავს მოტორში

ჩვენ შევქმენით მყარი მოდელები, რომ შევინარჩუნოთ ძრავა, დავიჭიროთ კოჭა და მივმართოთ კოჭას თაროზე. ჩვენ მივაღწიეთ ჩვენს კოჭებს ebay– დან და დავჭრათ ისინი განზომილებაში. ჩვენ ასევე გვქონდა 3 მათგანის დახრა, ვინაიდან ჩვენ არ მივიღეთ 6 სწორი ბოლოებით, რათა დაკავშირებულიყო კოჭის მთაზე. შემდეგ ჩვენ 3D ბეჭდვა მათ და მიმაგრებული მათ coil და საავტომობილო. სტეპერიანი ძრავები, რომელიც გვქონდა, მთაში ჩავდეთ. ის დაიჭერდა ძრავას და წარმართავდა ხვეულს სწორი გზით.

LCD და კლავიატურა

ჩვენ გამოვიყენეთ არდუინოს კლავიატურა და LCD ეკრანი, რომელიც დაკავშირებულია დენის წყაროს ადაპტერთან 5V კაბელთან და შემდეგ იმავე Arduino დაფაზე

გაყვანილობა

ჩვენ გირჩევთ გამოიყენოთ 18 ლიანდაგიანი მავთულები. ჩვენს შემთხვევაში, ჩვენ გვქონდა კომპრომისზე წასვლა სხვადასხვა გამზომი საშუალებების გამოყენებით, რადგან ჩვენ 18 გამრიცხველი გვქონდა

LED ზოლები

ჩვენ გამოვიყენეთ LED ზოლები აპარატის გასანათებლად. ჩვენ მას დავუკავშირდით კვების ბლოკის ადაპტერზე 12 ვ. LED ზოლს, რომელსაც ჩვენ ვიყენებდით საბედნიეროდ, ჰქონდა + და - მასზე, რამაც გაადვილა მისი დაკავშირების პროცესი.

ნაბიჯი 4: ბილ მიმღები

ბილ აქცეპტორი
ბილ აქცეპტორი
ბილ აქცეპტორი
ბილ აქცეპტორი
ბილ აქცეპტორი
ბილ აქცეპტორი
ბილ აქცეპტორი
ბილ აქცეპტორი

ჩვენ გამოვიყენეთ Coinco BA30B, როგორც ჩვენი კანონპროექტის მიმღები. ის პირდაპირ კედელთან უნდა იყოს დაკავშირებული, როგორც ენერგიის წყარო. ჩვენ გავაერთიანეთ 24-პინიანი ადაპტერი ატქსის დენის წყაროსგან, რათა შევიყვანოთ და დავუშვათ უფრო ადვილი გაყვანილობა. პინუტები, რომლებსაც ჩვენ მივყვებოდით, ნაპოვნია შემდეგ ბმულზე:

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

ჩვენს შემთხვევაში, ჩვენ უნდა შევქმნათ მთა, რომ აღვადგინოთ კანონპროექტის მიმღები, რადგან წინააღმდეგ შემთხვევაში ეს ძალიან დაბალი იქნებოდა ჩვენი გარსაცმისთვის.

ნაბიჯი 5: ტესტირება

შეამოწმეთ ელექტრონიკა გარსაცმის გარეთ, რათა დარწმუნდეთ, რომ კომპონენტები მუშაობენ. ნებისმიერი პრობლემა, რომელიც წარმოიქმნება, უნდა მოგვარდეს გარსაცმის შიგნით მოთავსებამდე.

ნაბიჯი 6: ელექტრონიკა გარსაცმისთვის

მას შემდეგ რაც შეამოწმეთ ელექტრონიკა და დაკმაყოფილდებით მათი შედეგებით, დაიწყეთ მათი განთავსება თქვენს გარსაცმში. შეცვალეთ მავთულის სიგრძე ისე, რომ ისინი კომფორტულად მოერგოს შიგნით.

ნაბიჯი 7: საბოლოო ტესტირება

მას შემდეგ, რაც მოთავსებულია გარსაცმში, კიდევ ერთხელ შეამოწმეთ ყველაფერი. თუ ყველაფერი მუშაობს ისე, როგორც თქვენ ელოდით, გილოცავთ! თქვენ შექმენით გამყიდველი მანქანა.

ნაბიჯი 8: Arduino კოდი + ბმულები

ჩამოტვირთვები:

არდუინოს კოდი

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

SolidWorks საქაღალდე ნაწილობრივი ფაილებით და შეკრებით

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

იმ შემთხვევაში, თუ რაიმე მოხდა ბმულზე, აქ არის arduino კოდი სრულად ნაჩვენები. არდუინოს კოდი <<

#მოიცავს #მოიცავს #მოიცავს #Arduino.h " #მოიცავს #მოიცავს #მოიცავს #სასარგებლო"/Adafruit_MS_PWMServoDriver.h " #მოიცავს

const int stepsPerRevolution = 200; const byte ROWS = 4; // ოთხი სტრიქონი const byte COLS = 3; // სამი სვეტი char ღილაკები [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // დაკავშირება კლავიატურის ბაიტის კოლიტების რიგის პინუტებთან [COLS] = {2, 3, 4}; // დაკავშირება კლავიატურის სვეტის პინუტებთან Keypad keypad = კლავიატურა (makeKeymap (გასაღებები), rowPins, colPins, ROWS, COLS); Adafruit_MotorShield AFMS1 = Adafruit_MotorShield (); Adafruit_StepperMotor *myMotor1 = AFMS1.getStepper (-200, 1); Adafruit_StepperMotor *myMotor2 = AFMS1.getStepper (-200, 2); Adafruit_MotorShield AFMS2 = Adafruit_MotorShield (0x61); Adafruit_StepperMotor *myMotor3 = 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); // ციფრული ქინძისთავები lcd არის დაკავშირებული // მუდმივები // // პინი კანონპროექტის დამტკიცების საკრედიტო (-) ხაზი const int billValidator = 22;

// ცვლადები /

/ პულსის ხანგრძლივობის ჩაწერა (მილიწამი) ხელმოუწერელი ხანგრძლივი ხანგრძლივობა;

// მთლიანი დოლარის ჩაწერა int dollarCounter = 0; void setup () {lcd.begin (16, 1); // დააყენეთ lcd ტექსტის კოორდინატები lcd.print ("ჩადეთ მხოლოდ $ 1"); // ტექსტის დაყენება Serial.begin (9600); // კომუნიკაციისთვის სერიული პორტების ინიციალიზაცია. Serial.println ("სტეპერი ტესტი!"); // ჩაწერეთ სტეპერის ტესტი სერიულ მონიტორში ისე, რომ ვიცოდეთ რომელ სტეპერ ძრავაზეა დაჭერილი. AFMS1.დაწყება (); AFMS2.დაწყება (); AFMS3. დასაწყისი (); AFMS4. დასაწყისი (); myMotor1-> setSpeed (100); // დააყენეთ ძრავის სიჩქარე, რომლის დროსაც ისინი გაუშვებენ myMotor2-> setSpeed (100); myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // ანგარიშის დამტკიცების და ღილაკის pinMode ღილაკების დაყენება (billValidator, INPUT); // ადგენს ბილაცეპტერს

// კომუნიკაციისთვის სერიული პორტების ინიციალიზაცია. სერიული.დაწყება (9600); Serial.println ("დოლარის მოლოდინში …"); } void loop () {{ხანგრძლივობა = pulseIn (billValidator, HIGH); // იწყებს პულსის მიმღების სიგრძის ძებნას, თუ (ხანგრძლივობა> 12000) // რომლის ღირებულებაც მას უნდა გადააჭარბოს, რათა დამტკიცდეს როგორც დამუშავებული და ავთენტური დოლარი {// ითვლი დოლარი დოლარი Counter ++; // Serial.print- ის გაგების შემოწმება ("დოლარი აღმოჩენილია. / N სულ:"); // ახალი დოლარის რაოდენობის ჩვენება Serial.println (dollarCounter); // მარყუჟი, რათა დაელოდოთ სანამ ღილაკს არ დააჭერთ სანამ (ხანგრძლივობა> 12000) {char key = keypad.getKey (); // უკავშირდება კლავიშს და იწყებს იმის დანახვას, თუ რომელზეა დაჭერილი თუ (გასაღები! = NO_KEY) {// ეძებს დაჭერილ გასაღებს Serial.println (გასაღები); // გვაცნობს რომელი იყო დაჭერილი სერიულ მონიტორში} {if (key == '1') {// თუ Key 1 დაჭერილია, აკეთებს შემდეგს: int keyPressed = key - '1'; myMotor8-> ნაბიჯი (580, წინ, ორმაგი); // იწყებს ძრავას და ბრუნავს 350 გრადუსით წინ მიმართულებით. myMotor8-> გამოშვება (); // ათავისუფლებს ძრავას მდგომარეობიდან თავის შეკავების მდგომარეობიდან. დაბრუნების; // ბრუნდება მარყუჟის კოდის დასაწყისში}

if (გასაღები == '2') {// თუ გასაღები 2 დაჭერილია, აკეთებს შემდეგს: int keyPressed = გასაღები - '2'; myMotor7-> ნაბიჯი (400, წინ, ორმაგი); // იწყებს ძრავას და ბრუნავს 350 გრადუსით წინ მიმართულებით. myMotor7-> გამოშვება (); // ათავისუფლებს ძრავას მდგომარეობიდან თავის შეკავების მდგომარეობიდან. დაბრუნების; // ბრუნდება მარყუჟის კოდის დასაწყისში} if (გასაღები == '3') {// თუ გასაღები 3 დაჭერილია, აკეთებს შემდეგს: int keyPressed = გასაღები - '3'; myMotor6-> ნაბიჯი (400, წინ, ორმაგი); // იწყებს ძრავას და ბრუნავს 350 გრადუსით წინ მიმართულებით. myMotor6-> გამოშვება (); // ათავისუფლებს ძრავას მდგომარეობიდან თავის შეკავების მდგომარეობიდან. დაბრუნების; // ბრუნდება მარყუჟის კოდის დასაწყისში} if (გასაღები == '4') {// თუ გასაღები 4 დაჭერილია, აკეთებს შემდეგს: int keyPressed = გასაღები - '4'; myMotor5-> ნაბიჯი (180, წინ, ორმაგი); // იწყებს ძრავას და ბრუნავს 350 გრადუსით წინ მიმართულებით. myMotor5-> გამოშვება (); // ათავისუფლებს ძრავას მდგომარეობიდან თავის შეკავების მდგომარეობიდან. დაბრუნების; // ბრუნდება მარყუჟის კოდის დასაწყისში} if (გასაღები == '5') {// თუ გასაღები 5 დაჭერილია, აკეთებს შემდეგს: int keyPressed = გასაღები - '5'; myMotor4-> ნაბიჯი (6900, წინ, ორმაგი); // იწყებს ძრავას და ბრუნავს 350 გრადუსით წინ მიმართულებით. myMotor4-> გამოშვება (); // ათავისუფლებს ძრავას მდგომარეობიდან თავის შეკავების მდგომარეობიდან. დაბრუნების; // ბრუნდება მარყუჟის კოდის დასაწყისში} თუ (გასაღები == '6') {// თუ გასაღები 6 დაჭერილია, აკეთებს შემდეგს: int keyPressed = გასაღები - '6'; myMotor3-> ნაბიჯი (400, წინ, ორმაგი); // იწყებს ძრავას და ბრუნავს 350 გრადუსით წინ მიმართულებით. myMotor3-> გამოშვება (); // ათავისუფლებს ძრავას მდგომარეობიდან თავის შეკავების მდგომარეობიდან. დაბრუნების; // ბრუნდება მარყუჟის კოდის დასაწყისში} if (გასაღები == '7') {// თუ გასაღები 7 დაჭერილია, აკეთებს შემდეგს: int keyPressed = გასაღები - '7'; myMotor7-> ნაბიჯი (400, წინ, ორმაგი); // იწყებს ძრავას და ბრუნავს 350 გრადუსით წინ მიმართულებით. myMotor7-> გამოშვება (); // ათავისუფლებს ძრავას მდგომარეობიდან თავის შეკავების მდგომარეობიდან. დაბრუნების; // ბრუნდება მარყუჟის კოდის დასაწყისში} თუ (გასაღები == '8') {// თუ გასაღები 8 დაჭერილია, აკეთებს შემდეგს: int keyPressed = გასაღები - '8'; myMotor8-> ნაბიჯი (400, წინ, ორმაგი); // იწყებს ძრავას და ბრუნავს 350 გრადუსით წინ მიმართულებით. myMotor8-> გამოშვება (); // ათავისუფლებს ძრავას მდგომარეობიდან თავის შეკავების მდგომარეობიდან. დაბრუნების; // ბრუნდება მარყუჟის კოდის დასაწყისში}}}}}} >>

გირჩევთ: