Բովանդակություն:

Arduino օդորակման մոդել `6 քայլ
Arduino օդորակման մոդել `6 քայլ

Video: Arduino օդորակման մոդել `6 քայլ

Video: Arduino օդորակման մոդել `6 քայլ
Video: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Հուլիսի
Anonim
Arduino օդորակման մոդել
Arduino օդորակման մոդել

Որպես շուկայավարման նպատակով խելացի գնացքի սարքի մոդել ստեղծելու մեր թիմի ունակության մաս, նպատակն էր ստեղծել այնպիսի համակարգ, որի դեպքում ջերմաստիճանի տվիչը կարդում է տվյալները միացումից և տեղեկատվությունը փոխակերպում ջերմաստիճանի արժեքի ցուցադրվում է լուսավորված էկրանին և կենտրոնացած է օդափոխիչի միացման կամ անջատման վրա: Նպատակն է օգնել հարմարեցնել ուղևորների ձիավարման պայմանները ՝ օգտագործելով ավտոմատացված համակարգ, որը նաև գործում է ջերմաստիճանը ցուցադրելու համար անմիջական հարևանությամբ:

Օգտագործելով Arduino միկրոկառավարիչի հավաքածուն և MATLAB տարբերակները 2016b և 2017b, մենք կարողացանք համեմատաբար հաջողությամբ ցուցադրել այս արդյունքները:

Քայլ 1: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ

Միկրոկառավարիչների հավաքածու ՝ հետևյալով.

-Sparkfun Red Board

-Sparkfun Breadboard

-LCD խորհուրդ

-Պոտենցիոմետր

-emերմաստիճանի ցուցիչ

-Սերվո

-USB/Arduino ադապտեր

-Jumper Wires (նվազագույնը 25)

Նոթբուք (Windows 10) USB մուտքով

3D տպված օբյեկտ (ըստ ցանկության)

Քայլ 2: Միկրոհսկիչի կարգավորում

Միկրոհսկիչի կարգաբերում
Միկրոհսկիչի կարգաբերում
Միկրոհսկիչի կարգավորում
Միկրոհսկիչի կարգավորում
Միկրոհսկիչի կարգավորում
Միկրոհսկիչի կարգավորում
Միկրոհսկիչի կարգավորում
Միկրոհսկիչի կարգավորում

Նկատի ունեցեք սա. Ամբողջ համակարգը բաղկացած է մեկ միավորից, որոնցից յուրաքանչյուրը նշանակալի գործոն է կիրառում վերջնական արդյունքի նկատմամբ: Այդ պատճառով խիստ խորհուրդ է տրվում նախքան խճճված խառնաշփոթի մեջ լարեր ամրացնելը, միացման սխեմա տեղադրել:

Յուրաքանչյուր առանձին մոդելի պատկերներ կարելի է գտնել Microcontroller գործիքների հավաքածուի ձեռնարկում կամ դրա կայքում ՝

Սկսեք `տախտակի վրա ամրացնելով ջերմաստիճանի տվիչը, պոտենցիոմետրը, servo միակցիչները և LCD- ը: Խորհուրդ է տրվում, որ LCD- ի չափի և դրա համար լարերի քանակի պահանջի պատճառով այն պետք է տեղադրվի տախտակի իր կեսի վրա, իսկ մյուս մասերում `մյուս կեսին, և պոտենցիոմետրը լինի ինչ -որ մեկի տարածքում: հեշտությամբ պտտեք իր բռնակը:

Հղման համար:

LCD ՝ c1-16

Voառայություն ՝ i1-3 (GND + -)

Pերմաստիճանի տվիչ ՝ i13-15 (- GND +)

Պոտենցիոմետր ՝ g24-26 (- GND +)

Հաջորդը, սկսեք jumper լարերը միացնել միկրոկառավարիչի միավորների յուրաքանչյուր քորոցին. Չնայած ընդհանուր մեծ սխեմայում կամայական լինելուն, դիզայնը ստեղծվեց այս կարևոր կապերով.

Պոտենցիոմետրի միացում LCD- ին ՝ f25 - e3

Servo GND մետաղալար ՝ j1 - Թվային մուտք 9

Temp ցուցիչ GND: j14 - անալոգային մուտք 0

LCD մուտքեր ՝ e11-e15-թվային մուտք 2-5

e4 - Թվային մուտք 7

e6 - Թվային մուտք 6

(Նշում. Եթե հաջողվի, LCD- ի եզրին երկու լույսերը պետք է վառվեն, և պոտենցիոմետրը կարող է օգնել հարմարեցնել դրա պայծառությունը ադապտորից էներգիա ստանալուց հետո):

Լրացուցիչ. 3D տպագիր առարկան օգտագործվել է որպես պահանջի մաս: Ավելի փխրուն մասերի պոտենցիալ վնասներից խուսափելու համար երկարացված պատյան տեղադրվեց որպես թև LCD- ի շուրջը: LCD- ի էկրանի չափումները ցույց տվեցին, որ մոտավորապես 2-13/16 "x 1-1/16" x 1/4 "են, և դրանով իսկ միայն բարձրությունը զգալիորեն փոխվել է: Եթե 3D տպիչը մատչելի է, ապա հաշվի առեք անձնական իր ավելացնելը:, չնայած ավելորդ է: Նաև տեղյակ եղեք, որ չափումները կարող են տարբեր լինել:

Քայլ 3: MATLAB- ի կարգավորում

MATLAB- ի կարգավորում
MATLAB- ի կարգավորում
MATLAB- ի կարգավորում
MATLAB- ի կարգավորում

Տեղադրեք MATLAB- ի ավելի թարմացված տարբերակ (2016 ա և ավելի), որը հասանելի է MathWorks կայքում ՝ https://www.mathworks.com/products/matlab.html?s_tid=srchtitle: Բացելուց հետո գնացեք Հիմնական ներդիրի Լրացումներ և ներբեռնեք «MATLAB Support Package for Arduino Hardware» ՝ միկրոկառավարիչի հրամանների հասանելիության համար:

Ավարտվելուց հետո կարող է կատարվել թեստ `միկրոկառավարիչի միացումը համակարգչին/նոութբուքին գտնելու համար: Գործիքի հավաքածուից դրանք USB ադապտերին միացնելուց հետո տեղադրեք «fopen (serial ('nada')) հրամանը:"

Սխալ հաղորդագրություն կբացվի, որտեղ միակցիչը նշվում է որպես «COM#», որը կպահանջվի arduino օբյեկտ ստեղծելու համար, քանի դեռ այն միշտ նույն մուտքն է:

Քանի որ LCD- ն անմիջական կապ չունի Arduino գրադարանի հետ, հաղորդագրությունները ցուցադրելու համար պետք է ստեղծվի նոր գրադարան: Խորհուրդ է տրվում ստեղծել LCDAddon.m ֆայլ MATLAB օգնության պատուհանում հայտնաբերված LCD օրինակից ՝ «Arduino LCD» որոնելուց և այն տեղադրել +arduinoioaddons պանակում, կամ օգտագործել կցված սեղմված թղթապանակը և պատճենել դրա ամբողջ բովանդակությունը վերը նշվածում թղթապանակ:

Եթե հաջողված է, ապա MATLAB- ում Arduino օբյեկտ ստեղծելու ծածկագիրը հետևյալն է.

a = arduino ('com#', 'uno', 'Libraries', 'ExampleLCD/LCDAddon');

Քայլ 4: Գործառույթներ

Գործառույթներ
Գործառույթներ
Գործառույթներ
Գործառույթներ

Ստեղծեք MATLAB գործառույթ: Մուտքերի համար մենք օգտագործում ենք «eff» և «T_min» փոփոխականները; արդյունքների համար, չնայած ընդհանուր նախագծում ավելորդ է, մենք օգտագործեցինք «B» փոփոխականը ՝ որպես արդյունքներից տվյալները պարունակելու միջոց: «Eff» մուտքագրումը թույլ է տալիս կառավարել սերվոյի առավելագույն արագությունը, իսկ «T_min» մուտքը վերահսկում է ցանկալի նվազագույն ջերմաստիճանը: «B» արժեքը պետք է արտադրի մատրիցա, որը պարունակում է երեք սյունակ ժամանակի, ջերմաստիճանի և օդափոխիչի արդյունավետության համար: Բացի այդ, որպես մանրամասնության բոնուս, ստորև թվարկված ծածկագրում կա նաև if- հայտարարություն, որի դեպքում օդափոխիչի արագությունը կնվազի հիսուն տոկոսով, երբ այն մոտենա ցանկալի նվազագույն ջերմաստիճանին:

Եթե բոլոր մուտքերն ու jumper լարերը տեղադրված են ճշգրիտ և ենթադրելով, որ arduino միացման նավահանգիստը COM4 է, և գործառույթի անունը «fanread» է, ապա պետք է բավարար լինի հետևյալ ծածկագիրը.

գործառույթ [B] = fanread (Tmin, eff)

մաքրել a; մաքրել lcd; a = arduino ('com4', 'uno', 'Libraries', 'ExampleLCD/LCDAddon');

t = 0; t_max = 15; % ժամանակը վայրկյանների ընթացքում

lcd = addon (a, 'ExampleLCD/LCDAddon', {'D7', 'D6', 'D5', 'D4', 'D3', 'D2'});

initializeLCD (lcd, 'Rows', 2, 'Columns', 2);

եթե eff> = 1 || ե <0

սխալ («Երկրպագուն չի ակտիվանա, եթե eff- ը 0 -ից 1 սահմանվի»)

վերջ

t = 1: օղակների/ընդմիջումների 10 % -ի համար

հստակ գ; % կանխել սխալի կրկնությունը

v = readVoltage (a, 'A0');

TempC = (v-0.5)*100; % գնահատում լարման տիրույթների համար 2.7-5.5 Վ

եթե TempC> Tmin եթե TempC

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff/2); % միացրեք servo- ն կես արագությամբ

spd = 50;

ուրիշ

c = ['Temp', num2str (TempC, 3), 'C On'];

writePWMDutyCycle (a, 'D9', eff); % միացրեք servo- ն տրված արագությամբ

spd = 100;

վերջ

ուրիշ

c = ['Temp', num2str (TempC, 3), 'C Off'];

writePWMDutyCycle (a, 'D9', 0); % անջատված է, եթե արդեն միացված է

spd = 0;

վերջ

printLCD (LCD, c);

դադար (3); Մեկ օղակի համար անցնում է երեք վայրկյան

ժամանակ (t) = t.*3;

tempplot (t) = TempC;

ակտ (t) = spd;

ենթահող (2, 1, 1)

գծապատկեր (ժամանակ, tempplot, 'b-o') % գծային գրաֆիկ

առանցք ([0 33 0 40])

xlabel ('Timeամանակ (վայրկյան)')

ylabel ('peratերմաստիճանը (C)')

սպասիր

հողամաս ([0 33], [Tmin Tmin], 'r-')

սպասիր

հողամաս ([0 33], [Tmin+2 Tmin+2], 'g-')

ենթահող (2, 1, 2)

բար (ժամանակ, գործողություն) % բար գրաֆիկ

xlabel ('Timeամանակ (վայրկյան)')

ylabel («Արդյունավետություն (%)»)

վերջ

B = փոխակերպում ([ժամանակ; tempplot; գործողություն]);

վերջ

Այժմ, երբ գործառույթը ավարտված է, ժամանակն է փորձարկել:

Քայլ 5: Փորձարկում

Փորձարկում
Փորձարկում
Փորձարկում
Փորձարկում

Այժմ փորձարկեք հրամանի պատուհանի գործառույթը ՝ տեղադրելով «ֆունկցիայի_անունը (մուտքագրման_արժեքը, մուտքագրման_արժեքը_2» ») և դիտեք: Համոզված եղեք, որ Arduino- ի ոչ մի օբյեկտ արդեն գոյություն չունի. եթե այո, ապա այն հեռացնելու համար օգտագործիր «clear a» հրամանը: Եթե սխալներ են առաջանում, ստուգեք և տեսեք, արդյոք որևէ միակցիչ սխալ տեղում է, թե սխալ թվային կամ անալոգային մուտքեր են օգտագործվում: Ակնկալվում է, որ արդյունքները կարող են տարբեր լինել, չնայած դա կարող է պայմանավորված լինել որոշ ցատկող լարերի և ջերմաստիճանի տվիչի տեղադրմամբ:

Արդյունքների ակնկալիքները պետք է փոփոխություններ կատարեն servo- ի աշխատանքի և LCD- ի տվյալների վրա: Յուրաքանչյուր երեք վայրկյան ընդմիջումով տեքստի տողում պետք է ցուցադրվի ջերմաստիճանը Celsius- ում և անկախ նրանից ՝ օդափոխիչն ակտիվ է, թե ոչ, մինչդեռ օդափոխիչը աշխատում է ամբողջ արագությամբ, կես արագությամբ կամ առանց արագության: Տվյալները, ամենայն հավանականությամբ, չպետք է համահունչ լինեն, չնայած ավելի բազմազան արդյունքներ ցանկանալու դեպքում տեղադրեք «Tmin» արժեքը շղթայի արտադրած միջին ջերմաստիճանին մոտ:

Քայլ 6: Եզրակացություն

Եզրակացություն
Եզրակացություն

Չնայած փորձությամբ և սխալով կատարելու դժվարին խնդիր, վերջնական արդյունքները բավականին հետաքրքիր և գոհացուցիչ էին: Համակարգը, որպես այդպիսին, օգնում է լուսաբանել, թե որքան բարդ մեքենաներ, կամ նույնիսկ դրանց մասերից մի քանիսը, կարող են դիտվել որպես առանձին նպատակների իրականացման համար միասին տեղադրված անկախ մասերի հավաքածու:

Վերջնական ծրագրի բավականին պարզեցված դիզայնի շնորհիվ, նրանք, ովքեր շահագրգռված են բարելավել դրա կատարողականը, կարող են փոփոխություններ և փոփոխություններ կատարել վերջնական արտադրանքի մեջ, ինչը կարող է նախագիծը դարձնել ավելի լավը և ավելի մշակված: Այնուամենայնիվ, այն բացահայտում է սխեմաների թույլ կողմերը, ինչպիսիք են servo- ի ակտիվացումը, ինչը հանգեցնում է շղթայի լարման ընթերցման պարբերական տատանումների, ինչը կարող է ստիպել համակարգին երբեք նույնական արդյունքներ չտալ: Բացի այդ, խնդիրներ են առաջացել սերվոյի արագության փոփոխություն տեսնելիս, երբ «eff» - ը սահմանվում է 0.4 և ավելի բարձր: Եթե օգտագործվեր ջերմաստիճանի և խոնավության տվիչ, վերջնական մոդելը կլիներ ավելի բարդ, բայց ավելի համաչափ արժեքներ: Այնուամենայնիվ, սա փորձ է, որը ցույց է տալիս, որ բարդ մեքենան կարող է գործել որպես իր պարզ մասերի համադրություն:

Խորհուրդ ենք տալիս: