Orodha ya maudhui:

Kipimo cha Mkanda wa Anga wa Arduino / MS5611 GY63 GY86 Maonyesho: Hatua 4 (na Picha)
Kipimo cha Mkanda wa Anga wa Arduino / MS5611 GY63 GY86 Maonyesho: Hatua 4 (na Picha)

Video: Kipimo cha Mkanda wa Anga wa Arduino / MS5611 GY63 GY86 Maonyesho: Hatua 4 (na Picha)

Video: Kipimo cha Mkanda wa Anga wa Arduino / MS5611 GY63 GY86 Maonyesho: Hatua 4 (na Picha)
Video: Книга - Моя первая схема ArduMikron 2024, Julai
Anonim
Kipimo cha Tepe ya Anga ya Arduino / MS5611 GY63 GY86 Maandamano
Kipimo cha Tepe ya Anga ya Arduino / MS5611 GY63 GY86 Maandamano

Hii ni barometer / altimeter lakini utaona sababu ya kichwa kwa kutazama video.

Sensor ya shinikizo ya MS5611, iliyopatikana kwenye bodi za kuzuka za Arduino GY63 na GY86, hutoa utendaji mzuri. Siku ya utulivu itapima urefu wako hadi ndani ya 0.2m. Hii ni kupima kwa usawa umbali kutoka kichwa chako hadi angani na kuiondoa kutoka umbali wa miguu yako hadi angani (kwa kupima shinikizo - huo ndio uzito wa hewa hapo juu). Kifaa hiki cha kuvutia kina masafa ambayo yatapima vizuri urefu wa Everest - na pia inaweza kupima hadi inchi chache.

Mradi huu ulilenga kama: mradi wa shule, mfano wa kurekebisha nambari ya Arduino na mahali pazuri pa kuanza kuchunguza kwa kutumia sensa ya MS5611. Kuna maswali mengi ya kongamano kutoka kwa wale walio na shida na sensor hii. Njia hapa inafanya kuitumia moja kwa moja. Baada ya kufanya mradi huu utakuwa na vifaa vya kutosha kukuza programu zingine zinazohusiana na shinikizo.

Kila sensa ina vifungo vyake vya calibration ambavyo vinahitaji kusomwa na kutumiwa kurekebisha data. Kuna maktaba inayopatikana kusaidia kuendesha hizi. Nambari iliyoonyeshwa hapa hutumia maktaba kuchukua usomaji na kisha kuibadilisha iwe urefu na kuionesha kwenye LCD Shield.

Kwanza tutatuma data kwa mfuatiliaji wa serial kwenye PC / laptop kwa vipimo vya awali. Hizi zinaonyesha kelele kadhaa na kwa hivyo tunaongeza kichujio ili kulainisha. Kisha tutaongeza onyesho la LCD ili kitengo kiweze kukimbia kwa uhuru na unaweza kujaribu kupima urefu wako - au kitu kingine chochote.

Kumbuka bodi ya GY63 ina tu sensor ya shinikizo ya MS5611. GY86 inaitwa digrii 10 za bodi ya uhuru na pia inajumuisha accelerometer ya mhimili 3, gyro 3 ya axis na magnetometer ya mhimili 3 kwa $ chache tu.

Utahitaji:

1. Arduino UNO (au nyingine iliyo na pinout ya kawaida) na kebo yake ya USB

2. Bodi ya kuzuka ya GY63 au GY86

3. 4 Dupont inaongoza kiume-kike - au waya inayounganisha

4. Arduino LCD keypad ngao

5. 9v betri na risasi

6. Ukanda wa tundu 2.54mm (hiari lakini inapendekezwa)

Maandalizi

Pakua Arduino IDE (mazingira jumuishi ya maendeleo) kutoka:

Baiti zingine za kiufundi kwa riba

MS5611 inatoa utendaji wake mzuri kwa wastani wa idadi kubwa ya vipimo. Inaweza kufanya 4096 3 byte (24bit) vipimo vya analojia katika 8ms tu na kutoa thamani ya wastani. Inapaswa kupima shinikizo na joto kwa hivyo data ya shinikizo inaweza kusahihishwa kwa joto la ndani. Kwa hivyo inaweza kutoa karibu jozi 60 za usomaji wa shinikizo na joto kwa sekunde.

Karatasi ya data inapatikana kwa:

Mawasiliano ni kupitia I2C. Kwa hivyo sensorer zingine za I2C zinaweza kushiriki basi (kama ilivyo kwenye ubao wa GY86 10DOF ambapo chips zote ziko kwenye I2C).

Hatua ya 1: Pata Maktaba ya MS5611

Sensorer nyingi za Arduino hutumia maktaba ya kawaida ambayo imejumuishwa na IDE ya Arduino au hutolewa na faili ya zip na maktaba ambayo inaweza kusanikishwa kwa urahisi. Hii huwa sio kesi kwa sensorer za MS5611. Walakini utafutaji ulipatikana: https://github.com/gronat/MS5611 ambayo ina maktaba ya MS5611, pamoja na kufanya marekebisho ya joto.

Chaguo 1

Nenda kwenye wavuti hapo juu, bonyeza 'Clone au Pakua' na uchague 'Pakua ZIP'. Hii inapaswa kutoa MS5611-master.zip kwenye saraka yako ya upakuaji. Sasa, ikiwa unataka, isonge kwa folda ambapo unaweza kuipata baadaye. Ninatumia saraka inayoitwa 'data' iliyoongezwa kwenye folda zangu za Arduino.

Kwa bahati mbaya faili ya.zip iliyopakuliwa haijumuishi michoro yoyote ya mfano na itakuwa nzuri kuongeza maktaba na mifano kwa IDE ya Arduino. Kuna mfano mdogo katika faili ya README.md ambayo inaweza kunakiliwa na kubandikwa kwenye mchoro na kuhifadhiwa. Hii ni njia moja ya kwenda.

Chaguo 2

Ili kurahisisha kuendesha nambari katika hii inayoweza kufundishwa nimeongeza mfano wa chini hapo juu na mifano iliyoonyeshwa hapa kwenye maktaba na kushikamana na faili ya.zip hapa chini ambayo itaingiza kwenye Arduino IDE.

Pakua faili ya zip hapa chini. Hamisha hii kwa folda bora ikiwa unataka.

Anza IDE ya Arduino. Bonyeza Mchoro> Jumuisha Maktaba> Ongeza faili ya zip na uchague faili. Anzisha tena IDE. IDE sasa zote mbili zitawekwa maktaba pamoja na mifano yote iliyoonyeshwa hapa. Angalia kwa kubofya Faili> mifano >> MS5611-master. Michoro mitatu inapaswa kuorodheshwa.

Hatua ya 2: Unganisha Sensorer kwenye Arduino na Jaribio

Unganisha Sensor kwa Arduino na Jaribio
Unganisha Sensor kwa Arduino na Jaribio
Unganisha Sensor kwa Arduino na Jaribio
Unganisha Sensor kwa Arduino na Jaribio

Bodi za GY63 / GY86 kawaida huja na vichwa lakini hazijauzwa. Kwa hivyo ni chaguo lako kugeuza vichwa vilivyowekwa na utumie mwongozo wa Dupont wa kiume na wa kike, au (kama nilivyoamua) solder inaongoza moja kwa moja kwa bodi na kuongeza pini kwa risasi ili kuziba kwenye Arduino. Chaguo la mwisho ni bora ikiwa unafikiria ungependa kutia bodi kwenye mradi baadaye. Ya zamani ni bora ikiwa unataka kutumia bodi kwa majaribio. Kuongoza kwa kufungia ni rahisi zaidi kuliko kichwa cha pini.

Uunganisho unaohitajika ni:

GY63 / GY86 Arduino

VCC - 5v Power GND - GND Ground SCL - saa A5 I2C> data ya SDA - A4 I2C

Ambatisha bodi ya sensorer kwa Arduino kama ilivyo hapo juu na unganisha Arduino kwenye PC / laptop kupitia mwongozo wake wa USB. Pia funika sensorer na vifaa vya opaque / nyeusi. Sensor ni nyeti kwa nuru (kama ilivyo kwa aina nyingi ya sensa).

Anza IDE ya Arduino. Bonyeza:

Faili> mifano >> MS5611-master> MS5611data2serial.

Mfano mpya wa IDE utaonekana na mchoro. Bonyeza kitufe cha kupakia (mshale wa kulia).

Halafu anza mpangaji wa serial - bonyeza Zana> Mpango wa Serial na ikiwa ni lazima weka baud hadi 9600. Takwimu zinazotumwa ni shinikizo katika Pascals. Baada ya sekunde moja au hivyo itaongeza tena na kuinua na kupunguza sensor kwa kusema 0.3m inapaswa kuonyesha kama kupungua na kuinua athari (urefu wa chini ni shinikizo kubwa).

Takwimu zina kelele. Tazama njama ya kwanza hapo juu. Hii inaweza kulainishwa kwa kutumia kichujio cha dijiti (zana muhimu sana).

Mlinganisho wa kichujio ni:

thamani = thamani + K (thamani mpya)

ambapo 'thamani' ni data iliyochujwa, na 'mpya' ndio kipimo cha hivi karibuni. Ikiwa K = 1 hakuna uchujaji. Kwa maadili ya chini ya K data imerekebishwa na wakati wa T / K ambapo T ni wakati kati ya sampuli. Hapa T iko karibu na 17ms kwa hivyo thamani ya 0.1 inatoa wakati wa kudumu wa 170ms au karibu 1 / 6s.

Kichujio kinaweza kuongezwa na:

Ongeza ubadilishaji wa data iliyochujwa kabla ya kusanidi ():

kuchujwa kuelea = 0;

Kisha ongeza usawa wa kichungi baada ya shinikizo =…. mstari.

iliyochujwa = iliyochujwa + 0.1 * (iliyochujwa kwa shinikizo);

Ni wazo nzuri kuanzisha thamani iliyochujwa kwa usomaji wa kwanza. Kwa hivyo ongeza taarifa ya 'ikiwa' karibu na mstari hapo juu ambayo inafanya hivi kwa hivyo inaonekana kama:

ikiwa (imechujwa! = 0) {

iliyochujwa = iliyochujwa + 0.1 * (iliyochujwa kwa shinikizo); } mwingine {kuchujwa = shinikizo; // kusoma kwanza ili kuchujwa kwa kusoma}

Jaribio '! =' Sio 'sawa'. Kwa hivyo ikiwa 'kuchujwa' sio sawa na 0 usawa wa kichungi unatekelezwa lakini ikiwa ndio basi imewekwa kwenye usomaji wa shinikizo.

Mwishowe tunahitaji kubadilisha 'shinikizo' na 'kuchujwa' katika taarifa ya Serial.println ili tuone thamani iliyochujwa.

Ujifunzaji bora unapatikana kwa kufanya mabadiliko hapo juu kwa mikono. Walakini nilijumuisha hizi katika mfano MS5611data2serialWfilter. Kwa hivyo ikiwa kuna shida mfano unaweza kupakiwa.

Sasa pakia nambari hiyo kwa Arduino na uone maboresho. Tazama njama ya pili hapo juu na angalia kipimo cha Y kinapanuliwa x2.

Jaribu thamani ya chini kwa kichungi kila wakati, sema 0.02 badala ya 0.1, na uone tofauti. Takwimu ni laini lakini na majibu ya polepole. Huu ni maelewano ambayo yanapaswa kutafutwa wakati wa kutumia kichungi hiki rahisi. Tabia hiyo ni sawa na kichujio cha RC (upinzani na uwezo) kinachotumiwa sana katika nyaya za elektroniki.

Hatua ya 3: Ifanye iwe ya pekee

Sasa tutaongeza ngao ya keypad ya LCD, kubadilisha shinikizo kuwa urefu wa mita, na kuionyesha kwenye onyesho. Pia tutaongeza uwezo wa kuweka thamani kwa kubonyeza kitufe cha "Chagua".

Pamoja na ngao ya LCD kwenye Arduino sensor italazimika kuunganishwa na ngao ya LCD. Kwa bahati mbaya ngao za LCD kawaida huja bila soketi zinazofaa. Kwa hivyo chaguzi ni kutengeneza unganisho la solder au kupata ukanda wa tundu. Ukanda wa soketi unapatikana kwenye ebay sio zaidi ya gharama ya posta. Tafuta kwenye 'kipande cha tundu 2.54mm' na utafute zile zinazofanana na zile zilizo kwenye Arduino. Hizi kawaida huja kwa urefu wa pini 36 au 40. Ningeepuka zile zilizobadilishwa kwa kuwa hazina kina cha kutosha kwa mwongozo wa kawaida wa Dupont.

Ukanda wa tundu lazima ukatwe kwa urefu na ukate unapaswa kutengenezwa mahali pamoja na pini. Kwa hivyo kwa kipande cha pini 6 - ondoa pini ya 7 na koleo laini, kisha ukate mahali hapo ukitumia ujanja mdogo. Ninaweka ncha ili kuzifanya nadhifu.

Hakikisha kuwa hakuna madaraja ya solder wakati wa kuyaunganisha kwenye bodi.

Pamoja na uamuzi unaofaa wa kuunganisha sensorer kuziba ngao ya LCD kwenye Arduino na unganisha sensor pini sawa - lakini sasa kwenye ngao ya LCD.

Pia pata betri na risasi tayari. Nilitengeneza uongozi wangu kutoka kwa sehemu kwenye pipa langu la chakavu lakini pia zinapatikana kwenye ebay - pamoja na chaguo nzuri ambayo ni pamoja na sanduku la betri na ubadilishe. Tafuta kwenye 'PP3 2.1mm lead'.

Matumizi ya sasa ni karibu 80ma. Kwa hivyo ikiwa unataka kukimbia kwa zaidi ya dakika chache fikiria betri kubwa ya 9v kuliko PP3.

Hatua ya 4: Ongeza Msimbo wa Urefu na LCD

Image
Image

Tunahitaji kufanya usimbuaji kidogo zaidi ili kubadilisha shinikizo kuwa urefu na kuendesha onyesho.

Mwanzoni mwa mchoro ongeza maktaba ya onyesho na sema hii ni pini gani zinazotumiwa:

# pamoja

// anzisha maktaba na nambari za pini za interface LiquidCrystal lcd (8, 9, 4, 5, 6, 7);

Ifuatayo tunahitaji vigeuzi kadhaa na kazi kusoma vitufe vya vitufe. Hizi zote zimeunganishwa na pembejeo ya analog A0. Kila kifungo hutoa voltage tofauti kwa A0. Utafutaji kwenye 'nambari ya vifungo vya ngao za lydd lcd' ulipata nambari nzuri kwa:

www.dfrobot.com/wiki/index.php/Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009)# Mfano wa Nambari

Ongeza nambari hii kabla ya kusanidi ():

// fafanua maadili kadhaa yanayotumiwa na paneli na vifungo

int lcd_key = 0; int adc_key_in = 0; #fafanua btnRIGHT 0 #fafanua btnUP 1 #fafanua btnDOWN 2 #fafanua btnLEFT 3 #fafanua btnSELECT 4 #fafanua btNNONE 5 // soma vifungo ndani ya kusoma_LCD_buttons () {adc_key_in = analogRead (0); // soma thamani kutoka kwa sensorer // vifungo vyangu vinaposomwa viko katikati ya vali hizi: 0, 144, 329, 504, 741 // tunaongeza takriban 50 kwa maadili hayo na angalia ikiwa tuko karibu ikiwa (adc_key_in> 1000) kurudi btnNONE; // Tunafanya hii kuwa chaguo la 1 kwa sababu za kasi kwani itakuwa matokeo ya uwezekano mkubwa ikiwa (adc_key_in <50) itarudi btnRIGHT; ikiwa (adc_key_in <250) kurudi btnUP; ikiwa (adc_key_in <450) inarudi btNDOWN; ikiwa (adc_key_in <650) inarudi btnLEFT; ikiwa (adc_key_in <850) inarudi btnSELECT; kurudi btnNONE; // wakati wengine wote watashindwa, rudisha hii…}

Urefu kawaida hupigwa wakati wa kuanzia. Kwa hivyo tunahitaji vigeuzi kwa urefu wote na kumbukumbu. Ongeza hizi kabla ya kuanzisha () na kazi hapo juu:

kuelea mtr;

kuelea Ref = 0;

Ubadilishaji kutoka kwa shinikizo katika Pascals hadi mita ni karibu mgawanyiko na 12 kwenye usawa wa bahari. Fomula hii ni nzuri kwa vipimo vingi vya msingi. Kuna fomula sahihi zaidi ambazo zinafaa zaidi kwa ubadilishaji kwenye urefu wa juu. Tumia hizi ikiwa utatumia hii kurekodi urefu wa ndege ya puto.

Rejea inapaswa kuwekwa kwa usomaji wa kwanza wa shinikizo ili tuanze kwa urefu wa sifuri na wakati kitufe cha CHAGUA kinabanwa. Ongeza, baada ya msimbo wa kichungi, na kabla ya taarifa ya Serial.println:

ikiwa (ref == 0) {

Ref = iliyochujwa / 12.0; } ikiwa (kusoma_LCD_buttons () == btnSELECT) {ref = kuchujwa / 12.0; }

Baada ya hii ongeza hesabu ya urefu:

mtr = ref - iliyochujwa / 12.0;

Mwishowe badilisha taarifa ya Serial.println kutuma 'mtr' badala ya 'kuchujwa', na ongeza nambari ya kutuma 'mtr' kwa LCD:

Serial.println (mtr); // Tuma shinikizo kupitia serial (UART)

lcd.setCursor (0, 1); // mstari wa 2 LCD.print (mtr);

Mabadiliko yote hapa yamejumuishwa katika mfano MS5611data2lcd. Pakia hii kama katika hatua ya 2.

Kuna mod moja ya mwisho ambayo inasaidia. Onyesho ni ngumu kusoma wakati inasasishwa mara 60 kwa sekunde. Kichujio chetu kinalainisha data na wakati wa mara kwa mara karibu 0.8s. Kwa hivyo kusasisha onyesho kila 0.3s kunaonekana kuwa ya kutosha.

Kwa hivyo ongeza kaunta baada ya ufafanuzi mwingine wote wa kutofautisha mwanzoni mwa mchoro (k.m baada ya kuelea ref = 0;):

int i = 0;

Kisha ongeza nambari ya kuongeza 'i' na 'if' taarifa ya kukimbia ikifika 20 na kuiweka tena kwa sifuri na kusonga amri za Serial na lcd ndani ya taarifa ya 'if' kwa hivyo hizi zinatekelezwa kila kusoma kwa 20:

i + = 1;

ikiwa (i> = 20) {Serial.println (mtr); // Shinikizo la kutuma kupitia serial (UART) lcd.setCursor (0, 1); // mstari wa 2 LCD.print (mtr); i = 0; }

Sikujumuisha mfano na mabadiliko haya ya mwisho ili kuhamasisha kuingiza nambari kwa mikono ambayo inasaidia ujifunzaji.

Mradi huu unapaswa kutoa mwanzo mzuri kwa mfano kwa barometer ya dijiti. Kwa wale ambao wangependa kuzingatia matumizi ya modeli za RC - tafuta OpenXvario kwa nambari inayowezesha altimeter na variometer kwa mifumo ya telemetry ya Frsky na Turnigy 9x.

Ilipendekeza: