Мазмұны:

Arduino Cradle Rocker: 19 қадам (суреттермен)
Arduino Cradle Rocker: 19 қадам (суреттермен)
Anonim
Image
Image

Өкінішке орай, мен бейне өңдеуді ұсынған қатты музыкаға қарсы тұра алмадым.

Мен жақында тұңғыш баламды дүниеге әкелдім, оның үстіне жиеніме ағам (ағаш өңдеуде керемет) жасаған ағаш бесік болды. Менің жиенім оны әлдеқайда асырып жіберді, сондықтан мен оны қабылдауға қуаныштымын және барлық ақшаны анам блогерлердің әйелім айналдырған бесікке/бассейнге жұмсамауына қуаныштымын. Бесік - бұл өте қарапайым конструкция, негізі бесіктің корпусын тірейтін болттары бар екі тік. Оны орнына бекіту үшін алынбалы қазық бар.

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

Таңертең мен бұл баланы роботқа айналдыру үшін миға шабуыл жасай бастадым. Arduino енгізіңіз …

Жабдықтар

Жақсы, бұл менің алғашқы Arduino жобасы болды, сондықтан мен тәжірибе жасап көрдім, қателіктер жасадым, мен дизайнды жақсартуға орын бар екеніне сенімдімін, бірақ міне менің бөліктер тізімім: Arduino Uno ($ 13) барлығын басқаруға арналған сымдарды қосуға арналған жинақ ($ 10)

Қадамдық мотор ($ 14) Бұл ең қызықты бөлшек, өйткені бұл барлық жұмысты жасайды. Мен сәл төмен крутящий драйверден бастадым, бірақ содан кейін оны алдым және ол өте жақсы жұмыс істейді. Одан да қуаттысын алыңыз. Қозғалтқыштың драйверлері ($ 10-30) Бұл Arduino мен мотор арасында орналасқан. Бұл нақты қозғалтқышты басқаларға қарағанда тыныш басқаруға қабілетті, сондықтан мен онымен жүрдім, өйткені қозғалтқыш ұйықтап жатқанда менің (және менің ұлымның) басынан бірнеше фут қашықтықта болады. Мен бастапқыда бір TMC2209 драйверін ~ 10 долларға сатып алдым, бірақ соңында 4 пакетті сатып алдым, себебі менде біраз қиындық болды және мен тақтаны қуырмағаныма сенімді болдым. Мен 3 тақтаны өлтірдім, бұл мені келесі элементке әкеледі … Конденсаторлар! (10 доллар) Сізге шын мәнінде тек 1 47 uF 50V конденсатор қажет, сондықтан бұл 240 қорап өте жоғары болды. 36В қуат көзі ($ 17) Мен бастапқыда 12В кернеу сатып алдым, содан кейін бұл менің барлық қиындықтарымның көзі екенін білдім. және менің қадамдық моторым басқара алатын максималды кернеуге жақын біреуін алдым. Егер сіз басқа қозғалтқышты немесе сатылы драйверді қолдансаңыз, ол кернеуді (V) басқара алатындығына және қоректену күшінің (A) қозғалтқыш тартатын ең жоғары ампер шамасына дейін жоғары екеніне көз жеткізіңіз. $ 8) Қуат көзі осылайша қосылады. Бөлменің қалаған жеріне басқару элементтерін қою үшін үлкен тақтаны ($ 9) алу үшін сізге оларды сымдарға дәнекерлеу қажет.

Қосу/өшіру түймелері ($ 8) және т

Микрофон күшейткіші ($ 11) Ох, бұл дыбыстың қосылғанын білмедіңіз бе?

Кейбір шағын доңғалақтар ($ 8) Мен мұны қолдандым, бірақ жақсы балама болуы мүмкін. Бұл туралы толығырақ. Сізге моторды монтаждау үшін дәнекерлеу үтігі мен не қажет болса, міндетті түрде қажет болады. Мен өзім бұралған төрт ағаштан өрескел қорап жасадым, содан кейін оны бесіктің аяғының ені болатын басқа ағашқа бұрап қойдым. Әзірге мен оны қысамын, себебі мен ағамның бесігіне той жасағым келетінін білмеймін.

1 -қадам: Stepper драйверлерінің белгісімен танысыңыз

Arduino 5V/GND -ді тақтаға қосыңыз
Arduino 5V/GND -ді тақтаға қосыңыз

Мен қолданған модельдеу бағдарламасында дәл драйвер тақтасы болмаған, сондықтан сіз бұл суретке сілтеме жасауыңыз керек. Мен бәрін осы суреттегідей бағытта орналастырдым.

2 -қадам: Arduino 5V/GND тақтасына сымды қосыңыз

Ардуино 5В сымын нан тақтасының бір жағындағы «+» рельсіне жалғаңыз Arduino GND бірінің сымын нан тақтасының сол жағындағы «-» рельсіне қосыңыз.

(елемеу

3-қадам: +/- Рельстерді VIO/GND желісіне қосыңыз

+/- Рельстерді VIO/GND желісіне қосыңыз
+/- Рельстерді VIO/GND желісіне қосыңыз

«-» рельсінен сымды драйвер тақтасының төменгі сол жағындағы GND-ге жалғаңыз. «+» Рельсінен сымды VIO-ға қосыңыз.

4 -қадам: DIR/STEP -ті Arduino сандық түйреуіштеріне қосыңыз

DIR/STEP -ті Arduino сандық түйреуіштеріне қосыңыз
DIR/STEP -ті Arduino сандық түйреуіштеріне қосыңыз

DIR және STEP түйреуіштерін драйвер тақтасынан Arduino сандық екі түйреуішіне қосыңыз. Мен тиісінше 2 және 3 түйреуіштерді қолдандым, бірақ кейінірек кодқа түйреуіштерді орнатқаныңыз маңызды емес.

5 -қадам: Алға жылжып, конденсаторды қосуға рұқсат етіңіз …

Алға кетіп, конденсаторды қосуға рұқсат етіңіз …
Алға кетіп, конденсаторды қосуға рұқсат етіңіз …

Мен конденсатор болмағандықтан 2 қадамдық драйвер тақтасын күйдірдім, сондықтан жүргізуші тақтасындағы VM/GND түйреуіштеріне 47uF 50V конденсаторын қосуға рұқсат етіңіз. Конденсатордағы «-» түйреуіштің GND түйреуішінде орналасқанына көз жеткізіңіз (конденсатордың тиісті жағында «-» болады)

6 -қадам: Алға қарай жүріңіз және сол GND қосыңыз

Алға барыңыз және сол GND -ге қосылыңыз
Алға барыңыз және сол GND -ге қосылыңыз

Сіз жаңа конденсаторды қосқан GND-де, оны басқа GND сияқты «-» рельсіне қосыңыз.

7 -қадам: Моторды драйверге қосыңыз

Моторды драйверге қосыңыз
Моторды драйверге қосыңыз

Қандай түйреуіш қайда кететіні сіз сатып алған қозғалтқышқа байланысты болады, бірақ мен тізімінде Amazon тізіміндегі сымдардың схемасы бар.

Менің моторым үшін -

Жасыл және қара түстерді M2B және M2A -ға қосыңыз

Қызыл және көк түстерді M1A & M1B -ге жалғаңыз Ескертпе: Егер қандай да бір себеппен сіздің қозғалтқышыңызда диаграмма болмаса, мультиметр болса, қандай сымдар тізбекті құрайтынын оңай анықтай аласыз. Мультиметрді күшейткіштің төмен деңгейіне орнатыңыз және қозғалтқышты ажыратыңыз. Мультиметр сымдарының біреуін қозғалтқыш сымдарының біріне тигізіңіз, содан кейін басқа сымдардың әрқайсысын басқа сыммен сынап көріңіз. Егер сіз қарсылық көрсеткішін алсаңыз, онда бұл екі сым 1 тізбекті құрайды, ал қалған екеуі екіншісін құрайды.

8-қадам: EN, MS1 және MS2-ді «-» -ке қосыңыз

EN, MS1 және MS2 -ді қосыңыз
EN, MS1 және MS2 -ді қосыңыз

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

9 -қадам: Аналық қуат қосқышын екі сымға дәнекерлеу

Әйелдердің қуат қосқышын екі сымға дәнекерлеу
Әйелдердің қуат қосқышын екі сымға дәнекерлеу

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

10 -қадам: Жаңа дәнекерленген әйел коннекторын қосыңыз

Жаңа дәнекерленген әйел коннекторын қосыңыз
Жаңа дәнекерленген әйел коннекторын қосыңыз

Нақты қуат көзін әлі қоспаңыз, қызыл сымды «+» -ке, қара «-» -ке қосыңыз.

11 -қадам: Оларды VM/GND желісіне қосыңыз

Оларды VM/GND желісіне қосыңыз
Оларды VM/GND желісіне қосыңыз

Сол «+» және «-» рельстерін VM мен оның жанындағы GND-ге қосыңыз. Конденсаторы барлар.

12 -қадам: Сіздің қолөнер туындыңызды тамашалаңыз

Сіздің қолөнер туындыларыңызға сүйсініңіз
Сіздің қолөнер туындыларыңызға сүйсініңіз

Жарайды, сізде мотор мен драйвер толық дайын! Осыдан кейін біз тек бақылауды жасаймыз. Айтпақшы, алға қарай:

  • Егер сіз драйверді қандай да бір себеппен ажыратқан болсаңыз, оны 36 В қуат көзіне қосылып тұрғанда қосуға тырыспаңыз. Мен үшінші драйвер тақтасын осылай өлтірдім.
  • Arduino қуатын қоспас бұрын 36В кернеуін қосыңыз. Мен жеке Arduino қуырған жоқпын, бірақ мен бұл туралы көптеген ескертуді көрдім.

13 -қадам: Қосымша - VREF тексеріңіз

TMC2209 қозғалтқыштағы токты басқаратын потенциометр бар. Егер сізде мен сияқты жүргізуші болса, бұл туралы мына жерден оқи аласыз. Параметрді реттегіңіз келсе:

  • Барлық қуатты ажыратып, драйверден қозғалтқыш сымдарын ажыратыңыз.
  • Драйвердегі EN (қосу) түйреуішіне сымды ажыратыңыз. Бұл жоғарғы сол жақ бұрыштағы түйреуіш.
  • Қозғалтқышты қуат көзіне қосыңыз (36В)
  • 20В кернеуі бар мультиметрді қолданып, бір сымды GND көзіне тигізіңіз (мен «-» рельске сымды жалғауды қолдандым), ал екінші сымды VREF түйреуішіне тигізіңіз. Өтінемін, сымға басқа ештеңе тигізбеңіз, егер жүргізуші болса, оны қысқартуға болады.
  • Кішкентай бұрағышпен потенциометр бұрандасын ақырын реттеңіз. Менің тақтайшам үшін сағат тіліне қарсы = көп қуат. Менің VREF жеке ~ 0.6 В оқиды.

14 -қадам: түймелер

Түймелер!
Түймелер!

Әрі қарай, түймелерді осылайша қосыңыз. Оларға күш қажет емес.

  • Түйме тақтасының «-» жолағын Arduino GND-дің біріне қосыңыз. Қаласаңыз, оны басқа нан тақтасының «-» рельсінен ажыратуға болады.
  • Әр түйменің бір түйреуішін «-» рельсіне жалғаңыз
  • Әр түйменің басқа түйреуішін Arduino цифрлық түйреуішіне қосыңыз.

Мен 4 түймені қолдандым: қозғалтқышты қосу/өшіру

Мотор жалғастырады

Микрофон қосулы

Микрофон өшірулі

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

15 -қадам: Микрофон тақтасын қосыңыз

Микрофон тақтасын қосыңыз
Микрофон тақтасын қосыңыз

Бұл қарапайым және Adafruit -те жақсы нұсқаулар бар (және дәнекерлеу негіздері!).

  • GND-ге «-» қосыңыз
  • Микрофон тақтасындағы GND-ді «-» -ке қосыңыз (сіз GND-ті GND-ге тікелей қосып, алдыңғы қадамды өткізіп жібере аласыз)
  • VCC -ті Arduino -дегі 3.3 В қуат көзіне қосыңыз. Бұл өте маңызды, себебі бұл қуат көзі 5В қарағанда «шулы» емес, нәтижесінде микрофон жақсы оқылады
  • Артуинодағы ANALOG IN түйініне OUT қосыңыз. Мен А0 қолдандым.

16 -қадам: Бұл соңғы нәтиже болуы керек

Бұл соңғы нәтиже болуы керек!
Бұл соңғы нәтиже болуы керек!
Бұл соңғы нәтиже болуы керек!
Бұл соңғы нәтиже болуы керек!

Қазір бәрі дайын болуы керек. Міне, соңғы диаграмманың суреті мен шын мәнінде менің сымдардың араласуы. Кейбір кодты қарастырайық!

17 -қадам: код

Жарайды, кодты қарастырайық! Бұл менің ең таза жұмысым емес, бірақ бұл тапсырманы орындайды. Мен осында бәрін түсіндіру үшін түсініктеме қостым, бірақ мен шыдаймын. Мен мұның барлығына Arduino IDE қолдандым (Windows және Mac -та ақысыз қол жетімді). Бұл - қозғалтқыштың айналу жылдамдығы мен қашықтығын орнату.

Жасалатын жыныстардың санын (бұрылыстарды) орнатыңыз.

Белгіленген қашықтықты 1 айналдыру үшін бұрыңыз. Белгіленген ретпен айналдыру.

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

#қосу // «стандартты» қадамдық мотор кітапханасы

//#DEBUG 1 анықтау // микрофон деңгейлерін реттегіңіз келгенде бұған түсініктеме бермеңіз // Түймешікті орнату - бұл цифрлық түйреуіштер const int motorEnablePin = 10 түймелеріне қосылған жерге сәйкес келеді; const int ContinuePin = 11; const int micDisablePin = 12; const int micEnablePin = 13; // Микрофонды орнату - A0 - бұл микрофонның аналогы. Үлгі терезесі millis const int micPin = A0; const int sampleWindow = 1000; қол қойылмаған int үлгісі; bool micEnabled = жалған; қос микро сезімталдық = 0,53; // сіз мұны өзгертуіңіз керек шығар // Мен үшін.5 шамасында кішкене шиқылдамау үшін жеткілікті жақсы болды // бірақ кішігірім жылау үшін өрт шығады int stepsPerRevolution = 3200; // мұны сіздің қозғалтқышыңыз үшін бір айналымдағы қадамдар санына сәйкес етіп өзгертіңіз // Менің қозғалтқышым - 200 қадам/айналым // Бірақ мен драйверді 1/16 микростепке қойдым // сондықтан 200*16 = 3200… шынымды айтсам, бұл туралы ешқандай түсінік жоқ. бұл дұрыс әдіс // мұны істеу Stepper myStepper (stepsPerRevolution, 2, 3); // 2 & 3 - DIR & STEP түйреуіштері int stepCount = 0; int motorSpeed = 95; // мұны сіздің бесікке және нәресте салмағына қарай реттеу қажет int numSteps = 90; // Қозғалтқыш қозғалатын қашықтық. // Сіз мұны қозғалтқышқа бекітетін дөңгелектің радиусына // сәйкес реттеуіңіз керек. Бұл және жылдамдық сынақ және қателік болуы мүмкін. // Ескертпе - қадамдық қозғалтқыштарда жоғары жылдамдық = тиімді тиімді момент // Егер сізде жеткілікті момент болмаса, сіздің қозғалтқышыңыз oldmotorButtonValue = HIGH қадамдарын өткізіп жібереді (қозғалмайды); bool қосылған = жалған; // қозғалтқыш қосылды ма? int loopStartValue = 0; int maxRocks = 100; // int rockCount = 0 өшірмес бұрын оның қанша рет соғылғанын қалайсыз; void setup () {#ifdef DEBUG Serial.begin (9600); // отладтау журналына #endif pinMode (motorEnablePin, INPUT_PULLUP); // Бұл түйменің pinMode қуатсыз жұмыс істеуінің параметрі (ContinPin, INPUT_PULLUP); pinMode (micEnablePin, INPUT_PULLUP); pinMode (micDisablePin, INPUT_PULLUP); myStepper.setSpeed (motorSpeed); // қозғалтқыш жылдамдығын сіз бұрын көрсеткендей орнатады} void loop () {int motorButtonValue = digitalRead (motorEnablePin); // digitalRead түйменің мәндерін оқиды int continValue = digitalRead (ContinPin); // Бұл қозғалтқыш түймесінің басылуын анықтайды және егер (motorButtonValue == HIGH && oldmotorButtonValue == LOW) {қосылған =! Қосылған болса, оны бір рет басу кезінде бірнеше рет болдырмауға мүмкіндік береді; } micCheck (); // Егер қозғалтқыш өшірулі болса және микрофон қосулы болса, баланың жылауын тыңдаңыз, егер (! Қосылған && micEnabled) {if (getMicReading ()> = micSensitivity) қосылған = ақиқат; } егер (қосылған) {stepsPerRevolution = stepsPerRevolution * -1; // кері бағыт // Менің баптауларыммен // бірінші бұрылыста кері айналдыру тиімдірек. Мұны циклден кейін қоюға болады // егер бұл сіздікі болмаса // айналдыру қозғалтқышы үшін жоғарыда көрсетілген қашықтық (int i = loopStartValue; i <numSteps; i ++) {// өшіруді тексеріңіз int tempmotorButtonValue = digitalRead (motorEnablePin); if (tempmotorButtonValue! = motorButtonValue) {rockCount = 0; // Бұл келесі екі жол қозғалтқыштың позициясын «сақтайды», келесіде оны қосқанда // ол сіз оны өшірмегендей саяхатыңызды жалғастырады. Бұл лақтыруды болдырмайды // сіздің қозғалыс арақашықтықтары loopStartValue = i; // позицияны сақтау StepPerRevolution = stepsPerRevolution * -1; // бағытты ұстау oldmotorButtonValue = tempmotorButtonValue; үзіліс; } checkContinue (ContinueValue); // жалғастыру батырмасының басылғанын тексеріңіз micCheck (); myStepper.step (stepsPerRevolution / 50); // бір цикл үшін неше қадам жасау керек, // мұны реттеу қажет болуы мүмкін // егер цикл аяқталса, біз толық цикл арақашықтығын жалғастыратындығымызға көз жеткізіңіз // егер сіз моторды өзіңіз өшірсеңіз және ол «сақтап» қалса, бұл іске қосылады. позиция егер (i == numSteps - 1) {loopStartValue = 0; }}} кешіктіру (100); // келесі рокты жасамас бұрын 100 миллис кідірту. Сіз мұны реттеуіңіз керек. if (қосылған) checkComplete (); oldmotorButtonValue = motorButtonValue; // бұл екі рет басуды болдырмау үшін қолданылады} // Бұл код тікелей Adafruit -тен. double getMicReading () {unsigned long startMillis = millis (); қол қойылмаған int peakToPeak = 0; // шыңнан деңгейге дейін белгісіз int signalMax = 0; белгісіз int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); егер (digitalRead (motorEnablePin) == LOW) қосылған = ақиқат; үлгі = analogRead (micPin); if (үлгі signalMax) {signalMax = үлгі; // максималды деңгейлерді сақтаңыз} else if (үлгі = maxRocks) {қосылған = жалған; rockCount = 0; // орта позицияға оралу

үшін (int i = loopStartValue; i <numSteps/2; i ++) {

myStepper.step (stepsPerRevolution * -1 / 50); // революцияның 1/100 қадамы:

}

} }

18 -қадам: Дөңгелектерді орнату және орнату

Дөңгелектерді орнату және орнату
Дөңгелектерді орнату және орнату

Бұл мен үшін әлі де WIP, себебі мен айтқанымдай, мен әлі бесікке бұрандалар салғым келмейтініне сенімді емеспін.

  • Дөңгелегім түзу тартылуы үшін, бесігінен түсетін қол ретінде қысқыш қойыңыз
  • Қозғалтқышты салу үшін шикі қорапты бұрап, оны тіреу табағына бекітіп қойдым, оны мен бесіктің аяғына қыстым.
  • Кішкене баспалдақ шкивінің дөңгелегіне сәйкес келетін саңылауы бар арнайы ағаш шкив дөңгелегі жасалды. Мен орталық саңылауды өте тығыз етіп жасадым және қадамдық шкивтің дөңгелегіне ғана соғылдым. Мен дөңгелектің ортасына дейін тесік бұрғыладым, осылайша металл шкив дөңгелегіндегі бұранданы қадамдық қозғалтқышқа бекіту үшін қол жеткіздім.
  • Бесіктің «қолынан» доңғалаққа дейінгі жіп жүгірді. Мен жіпті бұрғыланған тесіктен өткізіп, орнына бекітіп қойдым.

Үшінші қадамның ең жақсы шешімі - бірінші кезекте үлкен диаметрлі шкивті дөңгелекті сатып алу. Менікі ойықтың ішінде диаметрі 3 дюймден аз және менің жеке бесігім үшін өте жақсы жұмыс істейді.

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

19 -қадам: соңғы орнату

Соңғы орнату
Соңғы орнату

Микрофонды балаңызға жақын жерге орнатыңыз, бірақ олар сымға түспейтін жерге қойыңыз. Соңғы нүктеге жету үшін сымдар жеткілікті болғанша түймелерді қалаған жеріңізге қойыңыз. Сіз түймені arduino -да Wi -Fi қондырғысымен ауыстыра аласыз, бірақ мен әлі тереңге түспедім. Сәттілік тілеймін!

Ұсынылған: