Բովանդակություն:
- Քայլ 1: Ստացեք MS5611 գրադարան
- Քայլ 2. Սենսորը միացրեք Arduino- ին և փորձարկեք
- Քայլ 3: Դարձրեք այն ինքնուրույն
- Քայլ 4: Ավելացրեք բարձրության և LCD- ի կոդ
Video: Arduino Atmospheric Tape Measure/ MS5611 GY63 GY86 onstուցադրություն. 4 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Սա իսկապես բարոմետր/բարձրաչափ է, բայց վերնագրի պատճառը կտեսնեք ՝ դիտելով տեսանյութը:
5նշման MS5611 սենսորը, որը գտնվում է Arduino GY63 և GY86 ճեղքման տախտակներում, զարմանալի կատարում է: Հանգիստ օրը ձեր բարձրությունը կհասնի 0,2 մ -ի սահմաններում: Սա արդյունավետորեն չափում է ձեր գլխից մինչև տիեզերք հեռավորությունը և այն հանում ձեր ոտքերի հեռավորությունից մինչև տիեզերք (ճնշումը չափելով ՝ դա վերևի օդի քաշն է): Այս տպավորիչ սարքն ունի մի շարք, որը հարմարավետորեն կչափի Էվերեստի բարձրությունը, և կարող է նաև չափվել մինչև մի քանի դյույմ:
Այս նախագիծը նպատակ ուներ. Կան բազմաթիվ ֆորումի հարցեր նրանցից, ովքեր դժվարություններ ունեն այս սենսորի հետ: Այստեղ մոտեցումը դարձնում է այն շատ պարզ: Այս նախագիծը կատարելուց հետո դուք լավ սարքավորված կլինեք ճնշման հետ կապված այլ ծրագրեր մշակելու համար:
Յուրաքանչյուր սենսոր ունի իր ճշգրտման հաստատունները, որոնք պետք է կարդալ և օգտագործել տվյալները շտկելու համար: Գոյություն ունի գրադարան, որը կօգնի դրանք քշել: Այստեղ ցուցադրված կոդը օգտագործում է գրադարանը ընթերցումներ կատարելու համար, այնուհետև դրանք վերածում է բարձրության և ցուցադրում դրանք LCD վահանի վրա:
Սկզբում մենք տվյալները կուղարկենք համակարգչի/նոութբուքի սերիական մոնիտորին `նախնական փորձարկումների համար: Դրանք ցույց են տալիս որոշակի աղմուկ, և մենք ավելացնում ենք զտիչ `դրանք հարթելու համար: Այնուհետև մենք կավելացնենք LCD էկրան, որպեսզի սարքը կարողանա ինքնուրույն աշխատել, և դուք կարող եք փորձել չափել ձեր բարձրությունը կամ որևէ այլ բան:
Ուշադրություն դարձրեք, որ GY63 տախտակը պարզապես ունի MS5611 ճնշման սենսոր: GY86- ը կոչվում է 10 աստիճանի ազատության տախտակ և ներառում է նաև 3 առանցքի արագացուցիչ, 3 առանցքի գիրո և 3 առանցքի մագնիսաչափ ընդամենը մի քանի դոլարով ավելի:
Ձեզ հարկավոր կլինի.
1. Arduino UNO (կամ այլ ստանդարտ pinout) և դրա USB մալուխը
2. GY63 բեկման տախտակ կամ GY86
3. 4 Dupont- ը տանում է տղամարդ -կին - կամ միացնող մետաղալար
4. Arduino LCD ստեղնաշարի վահան
5. 9 վ մարտկոց և կապար
6. 2.54 մմ վարդակից ժապավեն (ըստ ցանկության, բայց խորհուրդ է տրվում)
Պատրաստում
Ներբեռնեք Arduino IDE- ն (զարգացման ինտեգրված միջավայր) ՝
Որոշ տեխնիկական բիթեր հետաքրքրության համար
MS5611- ը մատուցում է իր հիանալի կատարումը `մեծ թվով չափումներ կատարելով: Այն կարող է կատարել 4096 3 բայթ (24 բիթ) անալոգային չափումներ ընդամենը 8 մ -ով և տալ միջին արժեք: Այն պետք է չափի ինչպես ճնշումը, այնպես էլ ջերմաստիճանը, որպեսզի ճնշման տվյալները ճշգրտվեն ներքին ջերմաստիճանի համար: Այսպիսով, այն կարող է ապահովել մոտ 60 զույգ ճնշման և ջերմաստիճանի ընթերցումներ վայրկյանում:
Տվյալների թերթիկը հասանելի է ՝
Հաղորդակցությունն իրականացվում է I2C- ի միջոցով: Այսպիսով, այլ I2C տվիչներ կարող են կիսել ավտոբուսը (ինչպես դա տեղի է ունենում GY86 10DOF տախտակի վրա, որտեղ բոլոր չիպերը I2C- ի վրա են):
Քայլ 1: Ստացեք MS5611 գրադարան
Arduino սենսորներից շատերը կամ օգտագործում են ստանդարտ գրադարան, որը ներառված է Arduino IDE- ի հետ, կամ տրվում են zip ֆայլ ՝ գրադարանով, որը կարող է հեշտությամբ տեղադրվել: Սա հակված չէ MS5611 տվիչների դեպքում: Այնուամենայնիվ, կատարվեց որոնում.
Տարբերակ 1
Գնացեք վերը նշված վեբ կայք, կտտացրեք «Կլոնավորել կամ ներբեռնել» և ընտրել «Ներբեռնել ZIP»: Սա պետք է MS5611-master.zip հասցնի ձեր ներլցումների գրացուցակին: Այժմ, եթե ցանկանում եք, տեղափոխեք այն թղթապանակ, որտեղ հետագայում կարող եք գտնել այն: Ես օգտագործում եմ «տվյալների» անունով գրացուցակ, որն ավելացվել է իմ Arduino պանակներին:
Unfortunatelyավոք, ներբեռնված.zip ֆայլը չի պարունակում էսքիզների օրինակ, և լավ կլիներ գրադարանը և օրինակները ավելացնել Arduino IDE- ին: README.md ֆայլում կա նվազագույն օրինակ, որը կարող է պատճենվել և տեղադրվել ուրվագծի մեջ և պահպանվել: Սա գնալու ճանապարհներից մեկն է:
Տարբերակ 2
Այս ուսուցողական կոդն ավելի դյուրին դարձնելու համար ես ավելացրել եմ վերը նշված նվազագույն օրինակը և այստեղ ցուցադրված օրինակները գրադարանին և ներքևում կցել.zip ֆայլ, որը տեղադրվելու է Arduino IDE- ում:
Ներբեռնեք zip ֆայլը ստորև: Thisանկության դեպքում սա տեղափոխեք ավելի լավ պանակ:
Սկսեք Arduino IDE- ն: Կտտացրեք Էսքիզներ> Ներառել գրադարան> Ավելացնել zip ֆայլ և ընտրեք ֆայլը: Վերագործարկեք IDE- ն: IDE- ն այժմ երկուսն էլ տեղադրելու է գրադարանը, գումարած այստեղ ցուցադրված բոլոր օրինակները: Ստուգեք ՝ կտտացնելով Ֆայլ> օրինակներ >> MS5611-master: Պետք է թվարկել երեք ուրվագիծ:
Քայլ 2. Սենսորը միացրեք Arduino- ին և փորձարկեք
GY63/GY86 տախտակները սովորաբար գալիս են վերնագրերով, բայց զոդված չեն: Այսպիսով, ձեր ընտրությունն է կամ վերնագրերը միացնել տեղում և օգտագործել Dupont- ի արական և իգական կապերը, կամ (ինչպես որոշեցի) զոդման տողերը ուղիղ տախտակին տանել, իսկ կապիչին ավելացնել կապող Arduino- ին: Վերջին տարբերակն ավելի լավ է, եթե կարծում եք, որ գուցե ցանկանաք հետագայում խորհուրդը միացնել նախագծի: Նախկինն ավելի լավ է, եթե ցանկանում եք օգտագործել տախտակը փորձերի համար: Չպահվող կապանքները շատ ավելի հեշտ են, քան կապի վերնագիրը:
Պահանջվող կապերն են.
GY63/GY86 Arduino
VCC - 5v Power GND - GND Ground SCL - A5 I2C ժամացույց> SDA - A4 I2C տվյալներ
Կցեք սենսորային տախտակը Arduino- ին, ինչպես վերևում, և Arduino- ն միացրեք համակարգչին/նոութբուքին `նրա USB լարով: Նաև ծածկեք սենսորը որոշ անթափանց/սև նյութով: Սենսորը զգայուն է լույսի նկատմամբ (ինչպես դա տեղի է ունենում այս տեսակի սենսորների մեծ մասի դեպքում):
Սկսեք Arduino IDE- ն: Սեղմել:
Ֆայլ> օրինակներ >> MS5611-master> MS5611data2serial.
Էսքիզով IDE- ի նոր օրինակ կհայտնվի: Կտտացրեք բեռնման կոճակին (աջ սլաք):
Հաջորդը սկսեք սերիական գծապատկերը - կտտացրեք Գործիքներ> Սերիական գծագիր և անհրաժեշտության դեպքում սահմանեք բաուդ 9600 -ը: Ուղարկվող տվյալները ճնշում են Պասկալում: Երկրորդ վայրկյանից հետո այն նորից կշարժվի և սենսորը բարձրացնելով և իջեցնելով, ասենք, 0.3 մ-ով պետք է ցույց տրվի որպես հետքի իջեցում և բարձրացում (ցածր բարձրությունը բարձր ճնշում է):
Տվյալները որոշակի աղմուկ ունեն: Տես վերևի առաջին սյուժեն: Սա կարելի է հարթել ՝ օգտագործելով թվային զտիչ (իսկապես օգտակար գործիք):
Theտիչի հավասարումը հետևյալն է.
արժեք = արժեք + K (նոր արժեք)
որտեղ «արժեքը» զտված տվյալներն են, իսկ «նորը» ՝ վերջին չափվածը: Եթե K = 1 չկա զտիչ: K- ի ավելի ցածր արժեքների համար տվյալները հարթվում են T/K ժամանակի հաստատունով, որտեղ T- ն նմուշների միջև ընկած ժամանակն է: Այստեղ T- ն մոտ 17ms է, ուստի 0.1 արժեքը տալիս է 170ms ժամանակի հաստատուն կամ մոտ 1/6 վայրկյան:
Ֆիլտրը կարող է ավելացվել ՝
Ավելացնել փոփոխական զտված տվյալների համար նախքան կարգավորումը ():
բոց ֆիլտրացված = 0;
Այնուհետև ճնշումից հետո ավելացրեք ֆիլտրի հավասարումը =… գիծ.
զտված = զտված + 0.1*(ճնշմամբ զտված);
Լավ գաղափար է ֆիլտրացված արժեքը սկզբնավորել առաջին ընթերցման համար: Այսպիսով, ավելացրեք «եթե» հայտարարություն վերևի տողի շուրջ, որը դա անում է, որպեսզի այն նման լինի.
եթե (ֆիլտրացված! = 0) {
զտված = զտված + 0.1*(ճնշմամբ զտված); } else {ֆիլտրացված = ճնշում; // առաջին ընթերցումը, այնպես որ զտված է ընթերցման համար}
«! =» Թեստը «հավասար չէ»: Այսպիսով, եթե «զտվածը» հավասար չէ 0 -ի, ֆիլտրի հավասարումը կատարվում է, բայց եթե դա այն է, ապա այն դրված է ճնշման ցուցանիշի վրա:
Վերջապես, մենք պետք է փոխենք «ճնշումը» դեպի «զտված» Serial.println հայտարարության մեջ, որպեսզի տեսնենք զտված արժեքը:
Լավագույն ուսումը ձեռք է բերվում ձեռքով վերը նշված փոփոխությունները կատարելու միջոցով: Այնուամենայնիվ, ես դրանք ներառեցի MS5611data2serialWfilter- ի օրինակում: Այսպիսով, եթե խնդիրներ կան, օրինակը կարող է բեռնվել:
Այժմ վերբեռնեք կոդը Arduino- ում և տեսեք բարելավումը: Տես վերևի երկրորդ գծապատկերը և նշեք, որ Y սանդղակը ընդլայնված է x2:
Փորձեք ավելի ցածր արժեք ֆիլտրի հաստատունի համար, ասենք 0,02 0,1 -ի փոխարեն և տեսեք տարբերությունը: Տվյալները ավելի հարթ են, բայց ավելի դանդաղ արձագանքով: Սա փոխզիջում է, որը պետք է փնտրել այս պարզ զտիչն օգտագործելիս: Բնութագիրը նույնն է, ինչ RC (դիմադրություն և հզորություն) ֆիլտր, որը լայնորեն օգտագործվում է էլեկտրոնային սխեմաներում:
Քայլ 3: Դարձրեք այն ինքնուրույն
Այժմ մենք կավելացնենք LCD ստեղնաշարի վահանը, ճնշումը կդարձնենք բարձրության մետրերով և կցուցադրենք այն էկրանին: Մենք նաև կավելացնենք արժեքը զրոյացնելու հնարավորությունը `սեղմելով ստեղնաշարի« Ընտրել »կոճակը:
Arduino- ի LCD վահանով սենսորը պետք է միացված լինի LCD վահանին: Unfortunatelyավոք, LCD վահանակները սովորաբար գալիս են առանց համապատասխան վարդակների: Այսպիսով, ընտրանքներն են զոդման միացումներ կատարել կամ մի քանի վարդակից ժապավեն ստանալ: Socket strip- ը ebay- ում հասանելի է ոչ ավելի, քան փոստային առաքման արժեքը: Որոնեք «2.54 մմ վարդակից» և փնտրեք նմաններ, որոնք նման են Arduino- ին: Սրանք սովորաբար գալիս են 36 կամ 40 փին երկարությամբ: Ես կխուսափեի շրջված քորոցներից, քանի որ դրանք բավականաչափ խորը չեն Dupont- ի ստանդարտ տողերի համար:
Խողովակի ժապավենը պետք է կտրվի երկարությամբ, իսկ կտրվածքը պետք է կատարվի քորոցի նույն տեղում: Այսպիսով, 6 պին շերտի համար - հեռացրեք 7 -րդ կապը որոշ տափակաբերան տափակաբերան աքցանով, այնուհետ կտրեք այդ վայրում ՝ օգտագործելով կրտսեր սղոց: Ես ավարտում եմ ծայրերը ՝ դրանք կոկիկ դարձնելու համար:
Տախտակին զոդելիս համոզվեք, որ կամուրջներ չկան:
Սենսորին միացնելու մասին համապատասխան որոշմամբ LCD վահանը միացրեք Arduino- ին և միացրեք սենսորը նույն կապումներով, բայց այժմ LCD վահանի վրա:
Նաև պատրաստեք մարտկոցը և կապարը: Ես կազմեցի իմ առաջատարը իմ ջարդոնի աղբարկղի մասերից, բայց դրանք նույնպես հասանելի են ebay- ում `ներառյալ մի գեղեցիկ տարբերակ, որը ներառում է մարտկոցի տուփ և անջատիչ: Որոնեք «PP3 2.1 մմ կապարի» վրա:
Ներկայիս սպառումը մոտ 80 մմ է: Այսպիսով, եթե ցանկանում եք մի քանի րոպեից ավելի աշխատել, հաշվի առեք ավելի մեծ 9 վ մարտկոց, քան PP3- ը:
Քայլ 4: Ավելացրեք բարձրության և LCD- ի կոդ
Մենք պետք է մի փոքր ավելի շատ կոդավորումներ անենք ՝ ճնշումը բարձրության փոխարկելու և էկրանը քշելու համար:
Էսքիզի սկզբում ավելացրեք ցուցադրման գրադարանը և ասեք, թե ինչ կապեր են օգտագործվում.
#ներառում
// գրադարանի սկզբնականացում LiquidCrystal lcd (8, 9, 4, 5, 6, 7) միջերեսային կապերի համարներով;
Հաջորդը մեզ անհրաժեշտ են որոշ փոփոխականներ և ստեղնաշարի կոճակները կարդալու գործառույթ: Սրանք բոլորը կապված են անալոգային մուտքի A0- ի հետ: Յուրաքանչյուր կոճակ տարբեր լարում է տալիս A0- ին: «Arduino lcd վահանի կոճակների կոդի» որոնման արդյունքում որոշ լավ ծածկագիր է գտնվել ՝
www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)#Sample_Code
Տեղադրելուց առաջ ավելացրեք այս ծածկագիրը ():
// սահմանել վահանակի և կոճակների կողմից օգտագործվող որոշ արժեքներ
int lcd_key = 0; int adc_key_in = 0; #սահմանել btnRIGHT 0 #սահմանել btnUP 1 #սահմանել btnDOWN 2 #սահմանել btnLEFT 3 #սահմանել btn SELECT 4 #սահմանել btn ՉԻ 5 5 // կարդալ կոճակները int read_LCD_buttons () {adc_key_in = analogRead (0); // կարդալ արժեքը սենսորից // իմ կոճակները կարդալիս կենտրոնացած են այս արժույթների վրա `0, 144, 329, 504, 741 // մենք այդ արժեքներին ավելացնում ենք մոտ 50 և ստուգում ՝ արդյոք մոտ ենք, եթե (adc_key_in> 1000) վերադարձնել btn ՉԻ; // Մենք արագության նկատառումներով սա դարձնում ենք 1 -ին տարբերակ, քանի որ դա կլինի ամենահավանական արդյունքը, եթե (adc_key_in <50) վերադառնա btnRIGHT; եթե (adc_key_in <250) վերադարձնել btnUP; եթե (adc_key_in <450) վերադարձնել btnDOWN; եթե (adc_key_in <650) վերադարձնել btnLEFT; եթե (adc_key_in <850) վերադարձնել btnSELECT; վերադարձնել btn ՈՉ ՄԵԿ; // երբ բոլոր մյուսները ձախողվեն, վերադարձիր սա…}
Բարձրությունը սովորաբար զրոյացվում է ելակետում: Այսպիսով, մեզ անհրաժեշտ են փոփոխականներ և՛ բարձրության, և՛ հղման համար: Ավելացրեք դրանք նախքան setup () և վերը նշված գործառույթը.
float mtr;
float ref = 0;
Պասկալում ճնշումից մետր փոխակերպումը գրեթե ճշգրիտ բաժանում է ծովի մակարդակին 12 -ի: Այս բանաձևը լավ է գետնի վրա հիմնված չափումների համար: Կան ավելի ճշգրիտ բանաձևեր, որոնք ավելի հարմար են բարձր բարձրության վրա դարձի գալու համար: Օգտագործեք դրանք, եթե մտադիր եք դա օգտագործել փուչիկներով թռիչքի բարձրությունը գրանցելու համար:
Տեղեկանքը պետք է դրվի ճնշման առաջին ընթերցման վրա, այնպես որ մենք սկսում ենք զրոյական բարձրությունից և երբ SELECT կոճակը սեղմվում է: Ֆիլտրի ծածկագրից հետո և Serial.println հայտարարությունից առաջ ավելացրեք.
եթե (ref == 0) {
ref = զտված/12.0; } if (read_LCD_buttons () == btnSELECT) {ref = զտված/12.0; }
Դրանից հետո ավելացրեք բարձրության հաշվարկը.
mtr = ref - ֆիլտրացված/12.0;
Վերջապես փոխեք Serial.println հայտարարությունը ՝ «զտված» -ի փոխարեն ուղարկելով «mtr», և LCD- ին «mtr» ուղարկելու համար ՝ ավելացրեք ծածկագիր.
Serial.println (mtr); // pressureնշում ուղարկեք սերիայի միջոցով (UART)
lcd.setCursor (0, 1); // տող 2 lcd.print (mtr);
Բոլոր փոփոխություններն այստեղ ներառված են MS5611data2lcd օրինակում: Բեռնել սա, ինչպես 2 -րդ քայլում:
Կա մեկ վերջին ռեժիմ, որն օգտակար է: Էկրանը դժվար է կարդալ, երբ այն վայրկյանում 60 անգամ թարմացվում է: Մեր զտիչը հարթեցնում է տվյալները 0,8 վրկ ժամանակային հաստատունով: Այսպիսով, էկրանը յուրաքանչյուր 0.3 վայրկյանում թարմացնելը բավական բավական է թվում:
Այսպիսով, ուրվագծի սկզբում մնացած բոլոր փոփոխական սահմանումներից հետո ավելացրեք հաշվիչ (օրինակ ՝ float ref = 0;) հետո.
int i = 0;
Այնուհետև ավելացրեք կոդը «i» հավելման վրա և «եթե» հայտարարությունը գործարկվի, երբ այն հասնի 20 -ի, այնուհետև այն նորից զրոյի հասցրեք և «եթե» հայտարարության մեջ տեղափոխեք Serial և lcd հրամանները, որպեսզի դրանք կատարվեն միայն յուրաքանչյուր 20 -րդ ընթերցմամբ:
i += 1;
եթե (i> = 20) {Serial.println (mtr); // pressureնշում ուղարկեք սերիական (UART) միջոցով lcd.setCursor (0, 1); // տող 2 lcd.print (mtr); i = 0; }
Այս վերջին փոփոխությամբ ես օրինակ չեմ ներառել, որպեսզի խրախուսեմ ձեռքով մուտքագրել ծածկագիրը, որն օգնում է սովորելուն:
Այս նախագիծը պետք է լավ ելակետ տա, օրինակ `թվային բարոմետրի համար: Նրանց համար, ովքեր գուցե ցանկանան օգտվել RC մոդելներից. Որոնեք OpenXvario- ում այնպիսի կոդը, որը հնարավորություն է տալիս բարձրաչափ և փոփոխաչափ չափել Frsky և Turnigy 9x հեռաչափության համակարգերի համար:
Խորհուրդ ենք տալիս:
Dr. Tape Head - Undead Media: 11 քայլ (նկարներով)
Dr. Tape Head - Undead Media: Dr. Tape Head- ը կատարյալ սարսափելի ուղեկից է, երբ լաբորատորիայում ուշ եք աշխատում: Նա օգտագործում է Amazon- ի Polly ծառայությունը ՝ Google Sheets աղյուսակից տեքստ կարդալու համար, որը բնակեցված է IFTTT ծառայությամբ և հավաքված Twitter- ից, SMS հաղորդագրություններից և տեսախցիկից
Duck Tape հեռախոսի պատյան դրամապանակով ՝ 3 քայլ (նկարներով)
Duck Tape հեռախոսի պատյան ՝ փողի քսակով. Հրաժարում. Այս գործը չի ապահովի ձեր հեռախոսին համապատասխան պաշտպանություն, եթե այն գցեք: Սակայն այս դեպքը
Pringles/Duct Tape IPod Dock: 6 քայլ
Ingվարճություն/ctորակ ժապավեն IPod Dock: Դա պարզ և հեշտ նավահանգիստ է, որը պատրաստված է կես թիթեղյա բանկայից և որոշ սոսնձող ժապավենից:
Magic Duct Tape դրամապանակը Roids- ի վրա `8 քայլ
Magic Duct Tape դրամապանակը Roids- ի վրա. Բարև: Քիչ առաջ հայտնաբերեցի այս կայքը: Մոտ մեկ շաբաթ առաջ ես պատրաստեցի կախարդական ժապավենով դրամապանակ ՝ շնորհիվ այս հրաշալի ուսանելի սոսնձի ժապավենի կախարդական դրամապանակի: Ինձ դա շատ դուր եկավ, բայց դեռ մի քանի բան էլ էի ուզում, ուստի ես կառուցեցի այս պատի գազանը
Duct Tape IPod Touch Slip պատյան կեղտոտ պայմանների համար ՝ 5 քայլ
Duct Tape IPod Touch Slip պատյան կեղտոտ պայմանների համար. Աշխատե՞լ, թե՞ խաղալ կեղտոտ միջավայրում: Ես դա անում եմ, և ես սիրում եմ լսել իմ iPod- ը, քանի դեռ դրանում եմ: Ես որոշեցի պատրաստել և կիսվել աշխարհի հետ: Այն, ինչ ձեզ հարկավոր կլինի