Мазмуну:

Ардуино Бешик Рокер: 19 кадам (Сүрөттөр менен)
Ардуино Бешик Рокер: 19 кадам (Сүрөттөр менен)

Video: Ардуино Бешик Рокер: 19 кадам (Сүрөттөр менен)

Video: Ардуино Бешик Рокер: 19 кадам (Сүрөттөр менен)
Video: How measure DC Voltage and Current and build Energy meter with LCD Display | Lesson 104 2024, Июль
Anonim
Image
Image

Кечиресиз, мен видеону түзөтүү боюнча сунуштаган катуу музыкага каршы тура алган жокмун.

Жакында мен биринчи баламды төрөдүм жана буга чейин таякем (жыгач устасы укмуштуудай) жээниме жасаган жыгач бешикти бар эле. Менин жээним аны эбак эле өстүрүп койгон, ошондуктан мен аны алып, апамдын блогерлери менин жубайымды сүзүп алган бардык бешикке/бассейнге АКЧАНЫН баарын сарптоодон кубанычтамын. Бешик - бул абдан жөнөкөй дизайн, негизинен бешиктин тулкусун колдогон болттор менен эки тик. Аны ордуна бекитүү үчүн алынуучу казык бар.

Бир нече жуманын ичинде биз балабыз отурганга чейин бешикти бир аз термөө менен жеңил түйшүктү басууга болорун билдик. Биз муну билген түнү, мен түн ичинде бир нече 10 мүнөткө созулган колумду капкактын астынан сунуп, уктап жатып аны чайкап жаттым, өзүмдү төшөктөн туруп туруп, аны сооротуунун жолун тапканыма кубанычтамын. Эртең менен колумду сунбай эле бешикти термелте алгыдай кылып жип менен кичинекей карабинди бекитип койгом.

Эртеси күнү мен бул баланы роботко айландыруунун жолун ойлоп баштадым. Arduino кирүү…

Жабдуулар

Макул, бул менин биринчи Arduino долбоорум болчу, ошондуктан мен бир аз эксперименттерди, сыноолорду жана каталарды жасадым, жана менин дизайнымды жакшыртуу үчүн орун бар экенине ишенем, бирок бул жерде менин тизмем: Arduino Uno ($ 13) бардыгын көзөмөлдөө үчүн комплект ($ 10) зымдарды туташтыруу үчүн

Степпер мотору ($ 14) Бул эң кызыктуу чыгарма, анткени ал бардык ишти жасайт. Мен бир аз төмөн момент айдоочу менен баштадым, бирок кийин муну алдым жана ал абдан жакшы иштеп жатат. Андан да кубаттуусун алуудан тартынбаңыз. Step step мотор драйверлери ($ 10-30) Бул Arduino менен мотордун ортосунда отурат. Бул конкреттүү бирөө моторду башкаларга караганда тынчыраак айдай алат окшойт, ошондуктан мен мунун менен бардым, анткени мотор уктап жатканда менин (жана уулумдун) башынан бир нече фут алыстыкта болот. Мен башында бир эле TMC2209 драйверин ~ 10 долларга сатып алдым, бирок аягында 4 пакетин сатып алдым, анткени башында бир аз кыйынчылыктар болгон жана такта куурулбаганын текшергим келген. Мен чындыгында 3 тактаны өлтүрүп бүттүм, бул мени кийинки нерсеге алып келет … Конденсаторлор! (10 $) Сизге чындап эле 1 47 uF 50V конденсатор керек, андыктан 240 кутучасы ашыкча эле. 36V электр менен камсыздоо ($ 17) Мен башында 12V жабдуусун сатып алдым, ошондо менин бардык кыйынчылыктарымдын булагы экенин билдим. жана менин тепкич моторум башкара ала турган максималдуу чыңалууга жакыныраак нерсени алдым. Эгерде сиз башка мотор же тепкич драйверин колдонсоңуз, анда ал чыңалууга (V) жана камсыздоонун ампери (A) мотор тарткан чыңалуу амперине чейин жетет экенине ынаныңыз. $ 8) Бул электр менен камсыздоо сайылып турат. Буларды панелдин ичине жабыш үчүн кээ бир зымдарга ширетүү керек болот. Чоң секирүүчүлөрдүн пакети ($ 9), ошондуктан мен көзөмөлдү бөлмөдө каалаган жерге коюп алам.

Баскычтар ($ 8) күйгүзүү/өчүрүү ж.б.

Микрофондун күчөткүчү ($ 11) Оо, yall бул үн иштетилгенин да билчү эмес беле?

Кээ бир кичинекей дөңгөлөктөр ($ 8) Мен муну колдонуп бүттүм, бирок жакшы альтернативалар болушу мүмкүн. Моторду орнотуу үчүн сиз каалаган ширетүүчү темирге жана каалаган нерсеге муктаж болосуз. Мен жеке эле 4 бурама жыгачтан орой кутуча жасап, анан аларды бешик бутумдун туурасы болгон башка жыгачка бурап койгом. Азырынча мен аны кысып койгом, анткени билбейм, таякемдин бешигине белек кылгым келет.

1 -кадам: Stepper Driver Pinout менен таанышыңыз

Wread Arduino 5V/GND Сиздин Breadboardго
Wread Arduino 5V/GND Сиздин Breadboardго

Мен колдонгон моделдөө программасында так айдоочу тактасы жок болчу, андыктан бул сүрөттү шилтемелешиңиз керек болот. Мен бардыгын ушул сүрөттөгүдөй эле жайгаштырдым.

2 -кадам: Wireless Arduino 5V/GND for your Breadboard

Ардуино 5Vдан зымды нан табыңыздын бир жагындагы "+" темир жолуна туташтырыңыз

(көңүл бурбаңыз

3-кадам: +/- Рельстерди VIO/GNDге туташтырыңыз

+/- Рельстерди VIO/GND менен туташтырыңыз
+/- Рельстерди VIO/GND менен туташтырыңыз

"-" темир жолунан тепкич айдоочунун тактысынын сол жагындагы GNDге зым туташтырыңыз. "+" Темир жолунан VIOго зым туташтырыңыз.

4 -кадам: DIR/STEPти Arduinoдогу Digital Pinsке туташтырыңыз

DIR/STEPти Arduinoдогу Digital Pinsке туташтырыңыз
DIR/STEPти Arduinoдогу Digital Pinsке туташтырыңыз

DIR жана STEP төөнөгүчтөрүн айдоочу тактасынан Arduinoдогу эки санарип казыкка туташтырыңыз. Мен тиешелүүлүгүнө жараша 2 жана 3 төөнөгүчтөрдү колдондум, бирок кийинчерээк кодуңузга төөнөгүчтөрдү койсоңуз, мааниге ээ эмес.

5 -кадам: Алдыга баралы жана бул конденсаторду кошолу …

Келгиле, бул конденсаторду кошолу …
Келгиле, бул конденсаторду кошолу …

Мен конденсаторум жок болгондуктан 2 тепкичтүү тактайчаларды өрттөп жибердим, андыктан алдыга чыгып, айдоочу тактасындагы VM/GND казыктарына 47uF 50V конденсаторун кошолу. Конденсатордун "-" пини нан панелиндеги GND пининде экенин текшериңиз (конденсатордун тиешелүү жагында "-" болот)

6 -кадам: Алдыга барып, ошол GNDге туташыңыз

Алдыга барыңыз жана ошол GNDге туташыңыз
Алдыга барыңыз жана ошол GNDге туташыңыз

Сиз жаңы эле конденсатор кошкон GNDде, аны башка GND сыяктуу "-" темир жолуна туташтырыңыз.

7 -кадам: Моторду айдоочуга туташтырыңыз

Моторду айдоочуга туташтырыңыз
Моторду айдоочуга туташтырыңыз

Кайсы пин кайсы жакка кетет, сиз сатып алган моторго жараша болот, бирок мен тизмектегенде Amazon тизмесиндеги электр схемасы бар.

Менин моторум үчүн -

Green & Black'ди M2B & M2A менен туташтырыңыз

Кызыл жана Көктү M1A & M1Bге туташтырыңызЭскертүү: Эгерде кандайдыр бир себептерден улам сиздин моторуңуздун схемасы жок болсо, сизде мультиметр болсо, кайсы зымдар чынжыр түзөрүн оңой эле аныктай аласыз. Мультиметрди төмөнкү амп параметрине коюп, моторуңузду ажыратыңыз. Мультиметр сымдарынын бирине тийип, мотор зымдарынын бирине өтүңүз, анан башка зымдарды башка коргошун менен сынап көрүңүз. Эгерде сиз каршылык көрсөткүчүн алсаңыз, анда ал эки зым 1 схеманы түзөт, ал эми калган экөө экинчисин түзөт.

8-кадам: EN, MS1 жана MS2ди туташтырыңыз "-"

EN, MS1 жана MS2'ге туташтырыңыз
EN, MS1 жана MS2'ге туташтырыңыз

Мен бул керек экендигине толук ишене албайм, бирок моторду TMC2209 драйвериндеги кичине микро кадамга орнотот деп ишенем. Сиз аларды "-" темир жолуна туташтырсаңыз болот, анткени биз аны башка тарапка кийинчерээк байланыштырабыз.

9 -кадам: Аялдын электр туташтыргычын эки зымга туташтырыңыз

Аялдын кубаттуулугун эки зымга туташтыруу
Аялдын кубаттуулугун эки зымга туташтыруу

Мен ширетүү боюнча дүйнөнүн мыктысы эмесмин, андыктан башка жактан издеш керек болот, бирок меники ушундай болгон. Мен зымдардын учтарын туташтыргыч сымдарга каршы тегиздикте жаткандай кылып бүгүп койдум, анан зымды коргошунга ширеттим. Менде эч кандай шнур жылытуучу нерселер жок болчу, ошондуктан мен аларды укмуштай электр лента менен ороп алдым.

10 -кадам: Жаңы туташкан аял коннекторуңузду туташтырыңыз

Жаңы Soldered аял Connector туташтыруу
Жаңы Soldered аял Connector туташтыруу

Сураныч, азырынча реалдуу электр энергияңызды сайбаңыз. Кызыл зым "+", кара "-"

11 -кадам: Буларды VM/GND менен туташтырыңыз

Буларды VM/GND менен туташтырыңыз
Буларды VM/GND менен туташтырыңыз

Ошол "+" жана "-" рельстерин VMге жана анын жанындагы GNDге туташтырыңыз. Конденсатору барлар.

12 -кадам: Сиздин кол эмгегиңизге суктаныңыз

Сиздин кол эмгегиңизге суктанам
Сиздин кол эмгегиңизге суктанам

Макул, сизде мотор жана айдоочу толугу менен орнотулган! Мындан ары биз жөн гана көзөмөлдү жүргүзөбүз. Баса, алдыга карай:

  • Эгерде сиз драйвериңизди кандайдыр бир себептерден ажыратып койгон болсоңуз, анда 36В кубаттуулугуңуз туташтырылган учурда аны туташтырууга аракет кылбаңыз. Мен 3 -айдоочу тактайымды ушинтип өлтүрдүм.
  • Arduino кубаттуулугун туташтыруудан мурун 36В кубатын сайыңыз. Мен жеке Arduino куурган жокмун, бирок жолдо бул тууралуу көптөгөн эскертүүлөрдү көрдүм.

13 -кадам: Кошумча - Сиздин VREFти текшериңиз

TMC2209 кыймылдаткычтагы токту көзөмөлдөгөн потенциометрге ээ. Эгерде сизде мен кылган айдоочу болсо, бул жөнүндө бул жерден окуй аласыз. Эгерде сиз жөндөөнү тууралоону кааласаңыз:

  • Бардык электр энергиясын ажыратып, айдоочунун мотор зымдарын ажыратыңыз.
  • Айдоочунун EN (иштетүү) пинине зымды ажыратыңыз. Бул жогорку сол бурчтагы төөнөгүч.
  • Моторуңузду электр менен камсыздоону сайыңыз (36V бири)
  • 20Вга орнотулган мультиметрди колдонуп, бир өткөргүчтү GND булагына тийиңиз (мен "-" темир жолума зым туташтырдым) жана башка өткөргүчтү VREF төөнөгүчүнө тийип коюңуз. Сураныч, коргошунду башка нерсеге тийгизбеңиз, эгерде сиз айдоочуңузду кыскарта алсаңыз.
  • Потенциометр бурамасын акырын жөндөө үчүн кичинекей отвертканы колдонуңуз. Менин тактайым үчүн, сааттын жебесине каршы = көбүрөөк күч. Менин VREF жеке ~ 0.6V окуйт.

14 -кадам: Баскычтар

Баскычтар!
Баскычтар!

Кийинки, баскычтарыңызды ушинтип туташтырыңыз. Аларга бийликтин кереги жок.

  • Ардуинонун GND'леринин бирине түймө панелинин "-" темир жолун туташтырыңыз. Кааласаңыз, аны башка нан тактасынын "-" темир жолунан ажыратып койсоңуз болот.
  • Ар бир баскычтын бир пинин "-" темир жолуна туташтырыңыз
  • Ар бир баскычтын башка пинин Arduinoдогу санариптик пинге туташтырыңыз.

Мен 4 баскычты колдондум: Моторду күйгүзүү/өчүрүү

Мотор уланат

Микрофон күйүк

Микрофон өчүк

Биз кодго келгенде булар тууралуу көбүрөөк билебиз, бирок мен микрофондун башка баскычтарын колдондум, анткени менде микрофондун күйүп же өчүп турганын билүү үчүн LEDлерим жок болчу, ошондуктан айырмаланган күйгүзүү/өчүрүү баскычтары аны акылга сыйбаган кылып койду.

15 -кадам: Микрофон тактасын кошуу

Микрофон тактасын кошуу
Микрофон тактасын кошуу

Бул жөнөкөй жана Adafruitте бул жерде жакшы көрсөтмөлөр (жана ширетүү негиздери!) Бар.

  • GNDге "-" туташыңыз
  • Микрофондогу GND'ди "-" менен туташтырыңыз (GND менен GNDди түз туташтырып, мурунку кадамды өткөрүп жибере аласыз)
  • VCCди Arduinoдогу 3.3V кубатына туташтырыңыз. Бул маанилүү, анткени бул электр энергиясы 5Вга караганда "ызы -чуу" аз, натыйжада микрофон жакшыраак окулат
  • OUTту Arduinoдогу ANALOG IN пинине туташтырыңыз. Мен А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 = false; кош микроСезгичтик = 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; // Мотор кыймылдай турган аралык. // Сиз муну моторуңузга тиркелген дөңгөлөктүн радиусуна карап // тууралашыңыз керек болот. Бул жана ылдамдык сыноо жана ката болуп калышы мүмкүн. // Эскертүү - тепкичтүү моторлордо жогорку ылдамдык = эффективдүү моменттин төмөндүгү // Эгерде моментиңиз жетишсиз болсо, моторуңуз кадамдарды өткөрүп жиберет (кыймылдабайт) int 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 кубатысыз иштөөсүнүн жөндөөсү (continuePin, 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) иштетилген = чындык; } if (иштетилген) {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); // бир циклге канча кадам жасоо керек, // муну тууралашыңыз керек болушу мүмкүн // цикл бүтсө, биз толук цикл аралыкты уланта тургандыгыбызга ишениңиз // бул сиз моторду өзүңүз өчүрүп койсоңуз, ал "сакталган" орду if (i == numSteps - 1) {loopStartValue = 0; }}} кечиктирүү (100); // кийинки рокту жасоодон мурун 100 миллис тыныгуу. Муну тууралашыңыз керек болот. if (иштетилген) checkComplete (); oldmotorButtonValue = motorButtonValue; // бул эки жолу чыкылдатууну алдын алуу үчүн колдонулат} // Бул код түз Adafruitтен. double getMicReading () {unsigned long startMillis = millis (); unsigned int peakToPeak = 0; // чокусунан чокусуна чейин деңгээл белгиси жок int signalMax = 0; белгисиз int signalMin = 1024; while (millis () - startMillis <sampleWindow) {micCheck (); if (digitalRead (motorEnablePin) == LOW) иштетилген = чындык; үлгү = analogRead (micPin); if (sampleMax) {signalMax = үлгү; // максималдуу деңгээлдерди сактаңыз} else if (sample = maxRocks) {иштетилген = жалган; rockCount = 0; // орто позицияга кайтуу

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

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

}

} }

18 -кадам: Монтаж жана дөңгөлөктү орнотуу

Монтаж жана дөңгөлөктү орнотуу
Монтаж жана дөңгөлөктү орнотуу

Бул дагы эле мен үчүн WIP, анткени мен азырынча бешигиме бурамаларды салгым келбейт деп ишенбейм.

  • Менин дөңгөлөгүм түз сызыкта тартылышы үчүн, бешиктен түшүүчү кол сыяктуу кыскычты коюңуз
  • Моторду коюу үчүн чийки кутучаны бириктирип, аны бешиктин бутуна кысып койгон базалык табакка бурап койдум
  • Ыңгайлаштырылган жыгач шкив дөңгөлөктүн ичине кичинекей тепкичтүү дөңгөлөктү орнотуу үчүн жасалган. Мен борбордук тешикти абдан бекем кылып, жөн гана тепкичтин дөңгөлөгүнө уруп койдум. Мен дөңгөлөктүн ортосуна чейин тешип койгом, ошону менен металлдын дөңгөлөгүнүн бурамасына кирип, мотордун моторуна бекемдейм.
  • Бешиктин "колунан" дөңгөлөккө чейин жип чуркады. Мен жипти бургулаган тешигимден өткөрүп, аны жөн эле скотч менен бекиттим.

3 -кадамдын эң жакшы чечими - биринчи кезекте чоңураак диаметри бар дөңгөлөктү сатып алуу. Меники диаметри 3 дюймдан бир аз кичине жана менин бешигим үчүн абдан жакшы иштейт.

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

19 -кадам: Акыркы орнотуу

Акыркы орнотуу
Акыркы орнотуу

Микрофонду балаңызга жакын жерге орнотуңуз, бирок алар эч кандай зымга тийбей турган жерге. Кнопкаларды каалаган жериңизге коюңуз, эгер акыркы зымга чуркоо үчүн жетиштүү зымдар болсо. Сиз ошондой эле баскычтарды arduinoдогу wifi орнотуусу менен алмаштыра аласыз, бирок мен азырынча тереңирээк бара элекмин.

Сунушталууда: