Мазмұны:

$ 1 Arduino негізіндегі сауда автоматы: 8 қадам
$ 1 Arduino негізіндегі сауда автоматы: 8 қадам

Бейне: $ 1 Arduino негізіндегі сауда автоматы: 8 қадам

Бейне: $ 1 Arduino негізіндегі сауда автоматы: 8 қадам
Бейне: Crypto Pirates Daily News – 31 января 2022 г. – последнее обновление новостей о криптовалютах 2024, Қараша
Anonim
Image
Image
Қаптама
Қаптама

Біз өз идеямызды инженер -мұғалімнен алдық - біз бәріміз өз сыныбымызға автомат сатып алғанымыз дұрыс болар еді деп ойладық және ол: «тамаша, жаса» деді. Сауда автоматы керемет аға жоба болатыны белгілі болды және ол аяқталғаннан кейін біздің инженерлік бағдарламамызға қаражат жинайтын болады.

Ол $ 1 сататын машина деп аталады, себебі оның құны 1 доллар тұрады, бірақ вексель акцепторы тек $ 1 вексельдерді алатын ескі модель болғандықтан:)

1 -қадам: Критерийлер

Біз үстелдің үстіне сыйатын және тым ұзын емес автомат сатып алғымыз келді. Біз үстелдің үстінде тұрған автомат жоқ екеніне көз жеткізу үшін үстелдің енінің өлшемдерін алдық.

2 -қадам: корпус

Қаптама
Қаптама
Қаптама
Қаптама
Қаптама
Қаптама

Біз қорапты ені 19 дюйм 17 дюйм ұзындығы 25 дюйм жасадық. Біз ағаш кесу үшін CNC машинасын қолдандық. Біз беттерді жобалау үшін қатты жұмыстарды қолдандық, содан кейін оларды CNC бағдарламалық жасақтамасының файл түрлеріне айналдырдық. Біз шеттерін тегістеп, содан кейін оларды 1 ¼ бұрап қойдық. Біз алдыңғы панельді топсамен бекітіп, бұрандалар екінші жағына өтпес үшін ¼ «бұрандаларын қолдандық. Біз сонымен қатар сөрелер мен алдыңғы панель үшін кесетін акрил әйнегін қолдандық.

3 -қадам: электроника

Электроника
Электроника
Электроника
Электроника
Электроника
Электроника
Электроника
Электроника

Ардуино

Біз Arduino Mega 2560 тақтасын қолдандық. Біз сондай -ақ Adafruit моторлы тақталарын қолдандық, олар қадамдық қозғалтқыштарды басқара алады. Біз адафрутқа түйреуіштерді бір -бірімен байланыстыру үшін қостық. Оларды бір -бірінің үстіне қойды. Олардың әрқайсысы 2 қозғалтқышты басқара алады. Сонымен қатар, секіргішті қосу қажет екенін ескеріңіз.

Жұмыс үстелінің қуат көзі

Bestek ATX Қуат көзін қосу үшін адаптерді қолданыңыз. Адаптер sparkfun.com сайтынан алынған және әр түрлі кернеуді қамтамасыз етеді.

Қозғалтқыштағы катушкалар

Біз қозғалтқышты ұстап тұру, катушканы ұстап алу және катушканы сөренің бойымен бағыттау үшін solidworks модельдерін жасадық. Біз ebay -ден катушкаларымызға қол жеткіздік және оларды өлшемге дейін қысқарттық. Біз сонымен қатар олардың 3 -ін бүгуге мәжбүр болдық, өйткені біз катушкаға қосылу үшін тік ұштары бар 6 алмадық. Содан кейін біз оларды 3D басып шығардық және оларды катушка мен қозғалтқышқа тіркедік. Бізде қадамдық қозғалтқыштар орнатылды. Ол қозғалтқышты ұстап тұрып, катушканы тура жолға бағыттайды.

СКД және пернетақта

Біз Arduino пернетақтасы мен СКД экранын қуат көзінің адаптеріндегі 5В сымға, содан кейін сол Arduino тақтасына жалғадық.

Сымдар

Біз 18 калибрлі сымды қолдануды ұсынамыз. Біздің жағдайда, әр түрлі өлшеуіштерді қолдану арқылы ымыраға келуге тура келді, себебі бізде 18 өлшеуіш таусылды

Жарықдиодты жолақ

Біз машинаны жарықтандыру үшін жарықдиодты жолақты қолдандық. Біз оны қуат көзінің адаптеріндегі 12В кернеуге жалғадық. Біз қолданған жарық диодты жолақта + және - болды, бұл оны қосу процесін жеңілдетті.

4 -қадам: Билл Акцепторы

Билл Акцепторы
Билл Акцепторы
Билл Акцепторы
Билл Акцепторы
Билл Акцепторы
Билл Акцепторы
Билл Акцепторы
Билл Акцепторы

Біз шотты қабылдаушы ретінде Coinco BA30B қолдандық. Қуат көзі ретінде оны қабырғаға тікелей қосу керек болды. Біз оны розеткаға қосуға және сымдарды жеңілдетуге мүмкіндік беру үшін оны 24 нүктелі адаптермен біріктірдік. Біз ұстанған түйіндер келесі сілтемеде орналасқан:

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

Біздің жағдайда, біз вексель акцепторын көтеру үшін тірек жасауымыз керек болды, себебі олай болмаған жағдайда біздің қаптамамыз үшін тым төмен болады.

5 -қадам: тестілеу

Бөлшектер жұмыс істейтініне көз жеткізу үшін алдымен электрониканы корпустың сыртында тексеріңіз. Кез келген туындаған мәселелер оларды корпусқа салмас бұрын шешілуі керек.

6 -қадам: Электроника корпусқа

Электрониканы тексеріп, олардың нәтижелеріне қанағаттанған соң, оларды корпусқа салуды бастаңыз. Сымның ұзындығын ішке ыңғайлы етіп реттеңіз.

7 -қадам: Қорытынды тестілеу

Қаптамаға салынғаннан кейін бәрін қайтадан тексеріңіз. Егер бәрі сіз күткендей болса, құттықтаймын! Сіз автомат сатып алдыңыз.

8 -қадам: Arduino коды + сілтемелер

Жүктеулер:

Arduino коды

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

Бөлшек файлдары мен құрастыруы бар SolidWorks қалтасы

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

Сілтемеде бірдеңе болған жағдайда, мұнда arduino коды толығымен көрсетіледі. Arduino коды <<

#қосу #қосу #қосу «Arduino.h» #қосу #қосу #қосу «утилитасы/Adafruit_MS_PWMServoDriver.h» #қосу

const int stepsPerRevolution = 200; const байт ROWS = 4; // төрт жолды const байт COLS = 3; // үш бағаннан тұратын char пернелері [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; байт rowPins [ROWS] = {5, 6, 7, 8}; // colPins байт пернетақтасының жол түйіндеріне қосылу [COLS] = {2, 3, 4}; // пернетақтаның бағаналық түйіндеріне қосылу Пернетақта пернетақтасы = Пернетақта (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); // Digital Pins lcd жалғанған // Тұрақтылар // // вексель валидаторының кредиті үшін пин (-) жолы const int billValidator = 22;

// Айнымалылар /

/ импульстің ұзақтығын жазу (миллисекундтар) белгісіз ұзақ уақыт;

// жазылған доллардың жалпы сомасы int dollarCounter = 0; void setup () {lcd.begin (16, 1); // lcd.print мәтіндік координаттарын орнату («Тек $ 1 кірістіру»); // Мәтінді орнату Serial.begin (9600); // Байланыс үшін сериялық порттарды инициализациялау. Serial.println («Stepper test!»); // Қадамдық қозғалтқыштың басылғанын білу үшін сериялық мониторға Stepper Test теріңіз. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); 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) үшін түйреуіштер; // Билакцептерді орнатады

// Байланыс үшін сериялық порттарды инициализациялау. Serial.begin (9600); Serial.println («Доллар күтілуде …»); } void loop () {{duration = pulseIn (billValidator, HIGH); // Вексель акцепторынан алынған импульстің ұзындығын іздей бастайды, егер (ұзақтығы> 12000) // өңделген және түпнұсқа доллар ретінде растау үшін мәні асып кетуі керек {// Count dollar dollarCounter ++; // Serial.print («Доллар анықталды. / N Барлығы:») түсінігі тексерілуде; // Доллардың жаңа санын көрсету Serial.println (dollarCounter); // цикл, түйме басылғанша күту үшін (ұзақтығы> 12000) {char key = keypad.getKey (); // пернетақтаны қосады және қайсысы басылғанын көре бастайды, егер (перне! = NO_KEY) {// басылған пернені іздейтін болса, Serial.println (перне); // сериялық мониторда қайсысы басылғанын білуге мүмкіндік береді} {if (key == '1') {// 1 пернесі басылса, келесі әрекеттерді орындайды: int keyPressed = key - '1'; myMotor8-> қадам (580, АЛҒА, ҚОС); // Моторды іске қосады және 350 градусқа алға бағытта айналады. myMotor8-> шығару (); // Қозғалтқышты орнында ұстау күйінен босатады. қайтару; // Цикл кодының басына қайтады}

if (key == '2') {// Егер 2 пернесі басылса, келесі әрекеттерді орындайды: int keyPressed = key - '2'; myMotor7-> қадам (400, АЛҒА, ҚОС); // Моторды іске қосады және 350 градусқа алға бағытта айналады. myMotor7-> шығару (); // Қозғалтқышты орнында ұстау күйінен босатады. қайтару; // цикл кодының басына қайтады} if (key == '3') {// Егер 3 пернесі басылса, келесі әрекеттерді орындайды: int keyPressed = key - '3'; myMotor6-> қадам (400, АЛҒА, ҚОС); // Моторды іске қосады және 350 градусқа алға бағытта айналады. myMotor6-> шығару (); // Қозғалтқышты орнында ұстау күйінен босатады. қайтару; // цикл кодының басына қайтады} if (key == '4') {// 4 пернесі басылса, келесі әрекеттерді орындайды: int keyPressed = key - '4'; myMotor5-> қадам (180, АЛҒА, ҚОС); // Моторды іске қосады және 350 градусқа алға бағытта айналады. myMotor5-> шығару (); // Қозғалтқышты орнында ұстау күйінен босатады. қайтару; // цикл кодының басына қайтады} if (key == '5') {// Егер 5 пернесі басылса, келесі әрекеттерді орындайды: int keyPressed = key - '5'; myMotor4-> қадам (6900, АЛҒА, ҚОС); // Моторды іске қосады және 350 градусқа алға бағытта айналады. myMotor4-> шығару (); // Қозғалтқышты орнында ұстау күйінен босатады. қайтару; // цикл кодының басына қайтады} if (key == '6') {// Егер 6 пернесі басылса, келесі әрекеттерді орындайды: int keyPressed = key - '6'; myMotor3-> қадам (400, АЛҒА, ҚОС); // Моторды іске қосады және 350 градусқа алға бағытта айналады. myMotor3-> шығару (); // Қозғалтқышты орнында ұстау күйінен босатады. қайтару; // цикл кодының басына қайтады} if (key == '7') {// Егер 7 пернесі басылса, келесі әрекеттерді орындайды: int keyPressed = key - '7'; myMotor7-> қадам (400, АЛҒА, ҚОС); // Моторды іске қосады және 350 градусқа алға бағытта айналады. myMotor7-> шығару (); // Қозғалтқышты орнында ұстау күйінен босатады. қайтару; // цикл кодының басына қайтады} if (key == '8') {// Егер 8 пернесі басылса, келесі әрекеттерді орындайды: int keyPressed = key - '8'; myMotor8-> қадам (400, АЛҒА, ҚОС); // Моторды іске қосады және 350 градусқа алға бағытта айналады. myMotor8-> шығару (); // Қозғалтқышты орнында ұстау күйінен босатады. қайтару; // Цикл кодының басына қайтады}}}}}} >>

Ұсынылған: