Arduino օդորակման մոդել `6 քայլ
Arduino օդորակման մոդել `6 քայլ
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 և ավելի բարձր: Եթե օգտագործվեր ջերմաստիճանի և խոնավության տվիչ, վերջնական մոդելը կլիներ ավելի բարդ, բայց ավելի համաչափ արժեքներ: Այնուամենայնիվ, սա փորձ է, որը ցույց է տալիս, որ բարդ մեքենան կարող է գործել որպես իր պարզ մասերի համադրություն:

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