Orodha ya maudhui:

Mfano wa Kiyoyozi cha Arduino: Hatua 6
Mfano wa Kiyoyozi cha Arduino: Hatua 6

Video: Mfano wa Kiyoyozi cha Arduino: Hatua 6

Video: Mfano wa Kiyoyozi cha Arduino: Hatua 6
Video: Lesson 02 Arduino IDE Software | Robojax Arduino Step By Step Course 2024, Novemba
Anonim
Mfano wa Kiyoyozi cha Arduino
Mfano wa Kiyoyozi cha Arduino

Kama sehemu ya onyesho la uwezo wa timu yetu kuunda mfano wa kifaa mahiri cha treni kwa madhumuni ya uuzaji, lengo lilikuwa kuunda mfumo ambao sensor ya joto husoma data kutoka kwa mzunguko na kubadilisha habari kuwa thamani ya joto ambayo ni huonyeshwa kwenye skrini iliyowashwa na kulenga ikiwa shabiki anawasha au kuzima. Kusudi ni kusaidia kubeba hali ya wanaoendesha abiria kwa kutumia mfumo wa kiotomatiki ambao pia hufanya kazi kuonyesha joto katika maeneo ya karibu.

Kwa kutumia kitanda cha kudhibiti microcontroller cha Arduino na matoleo ya MATLAB 2016b na 2017b, tuliweza kuonyesha matokeo haya kwa mafanikio kidogo.

Hatua ya 1: Vifaa

Vifaa
Vifaa

Microcontroller Kit na yafuatayo:

-Bodi Nyekundu ya Sparkfun

Bodi ya mkate ya Sparkfun

-Bodi ya LCD

-Potentiometer

Sensorer ya Joto

-Servo

-USB / adapta ya Arduino

-Wiring waya (25, kiwango cha chini)

Laptop (Windows 10) na uingizaji wa USB

Kitu kilichochapishwa cha 3D (hiari)

Hatua ya 2: Usanidi wa Microcontroller

Usanidi wa Microcontroller
Usanidi wa Microcontroller
Usanidi wa Microcontroller
Usanidi wa Microcontroller
Usanidi wa Microcontroller
Usanidi wa Microcontroller
Usanidi wa Microcontroller
Usanidi wa Microcontroller

Fikiria hili: mfumo mzima umeundwa na vitengo moja ambavyo kila moja hutumia jambo muhimu kuelekea matokeo ya mwisho. Kwa sababu hii, inashauriwa sana kuweka picha ya mzunguko kabla ya kushikamana na waya katika fujo lenye mchanganyiko.

Picha za kila mfano zinaweza kupatikana katika mwongozo wa zana ya vifaa vya Microcontroller au kwenye wavuti yake kwa

Anza na kuambatisha sensorer ya joto, potentiometer, viunganishi vya servo na LCD kwenye bodi. Inapendekezwa kuwa kwa sababu ya saizi ya LCD na mahitaji ya idadi ya waya zake, inapaswa kuwekwa kwenye nusu yake ya ubao wa mkate na vipande vingine kwenye nusu nyingine na kwa potentiometer kuwa katika eneo la mtu geuza kitovu chake kwa urahisi.

Kwa kumbukumbu:

LCD: c1-16

Servo: i1-3 (GND + -)

Sensorer ya Muda: i13-15 (- GND +)

Potentiometer: g24-26 (- GND +)

Ifuatayo, anza kuunganisha waya za kuruka kwa kila pini ya vitengo vya microcontroller; ingawa holela katika mpango mkuu, muundo uliundwa na miunganisho hii muhimu:

Kuunganisha Potentiometer kwa LCD: f25-e3

Waya ya Servo GND: j1 - Ingizo la Dijitali 9

Sensor ya Muda GND: j14 - Ingizo la Analog 0

Pembejeo za LCD: e11-e15 - Uingizaji wa Dijiti 2-5

e4 - Uingizaji wa Dijiti 7

e6 - Uingizaji wa Dijiti 6

(Kumbuka: Ikiwa imefanikiwa, taa zote mbili kwenye ukingo wa LCD zinapaswa kuwasha na potentiometer inaweza kusaidia kurekebisha mwangaza wake mara moja ikipewa nguvu kutoka kwa adapta.)

Hiari: Kitu kilichochapishwa cha 3D kilitumika kama sehemu ya mahitaji. Ili kuzuia uwezekano wa uharibifu wa sehemu dhaifu zaidi, kesi iliyopanuliwa iliwekwa kama sleeve karibu na LCD. Vipimo vya skrini ya LCD vimeonekana kuwa takriban 2-13 / 16 "x 1-1 / 16" x 1/4 ", na kwa hivyo urefu tu ulibadilishwa sana. Ikiwa printa ya 3D inapatikana kwa urahisi, fikiria kuongeza kitu cha kibinafsi, ingawa sio lazima. Pia, fahamu kuwa vipimo vinaweza kutofautiana.

Hatua ya 3: Usanidi wa MATLAB

Usanidi wa MATLAB
Usanidi wa MATLAB
Usanidi wa MATLAB
Usanidi wa MATLAB

Sakinisha toleo lililosasishwa zaidi la MATLAB (2016a na kuendelea), inayopatikana katika wavuti ya MathWorks https://www.mathworks.com/products/matlab.html?s_tid=srchtitle. Mara baada ya kufunguliwa, nenda kwenye Viongezeo kwenye kichupo cha Nyumbani na upakue "MATLAB Kifurushi cha Usaidizi cha Vifaa vya Arduino" ili maagizo ya mdhibiti mdogo yapatikane.

Mara baada ya kukamilika, mtihani unaweza kufanywa ili kupata muunganisho wa microcontroller kwa kompyuta / laptop ya mtu. Baada ya kuwaunganisha na adapta ya USB kutoka kwa zana ya vifaa, ingiza amri "fopen (serial ('nada'))."

Ujumbe wa hitilafu utaibuka ukisema kontakt kama "COM #", ambayo itahitajika kuunda kitu cha arduino mradi ni pembejeo sawa wakati wote.

Kwa sababu LCD haina uhusiano wa moja kwa moja na maktaba ya Arduino, maktaba mpya inapaswa kuundwa ili kuonyesha ujumbe. Pendekezo ni kuunda faili ya LCDAddon.m kutoka kwa mfano wa LCD uliopatikana kwenye Dirisha la usaidizi la MATLAB baada ya kutafuta "Arduino LCD" na kuiweka kwenye folda ya + arduinoioaddons, au tumia folda iliyoshinikizwa iliyoambatanishwa na kunakili yaliyomo kwenye yaliyotajwa hapo juu. folda.

Ikiwa imefanikiwa, basi nambari ya kuunda kitu cha Arduino katika MATLAB imeonyeshwa hapa chini.

a = arduino ('com #', 'uno', 'Maktaba', 'MfanoLCD / LCDAddon');

Hatua ya 4: Kazi

Kazi
Kazi
Kazi
Kazi

Unda kazi ya MATLAB. Kwa pembejeo, tunatumia anuwai "eff" na "T_min"; kwa matokeo, ingawa sio lazima katika muundo wa jumla, tulitumia "B" inayobadilika kama njia ya kuwa na data kutoka kwa matokeo. Uingizaji wa "eff" unaruhusu kudhibiti kasi ya juu ya servo, na pembejeo ya "T_min" inadhibiti kiwango cha chini cha joto kinachotakiwa. Thamani "B" inapaswa hivyo kuzalisha tumbo ambayo ina safu tatu kwa wakati, joto na ufanisi wa shabiki. Pia, kama ziada kwa undani, nambari iliyoorodheshwa hapa chini pia ina taarifa-kama kwamba kasi ya shabiki itapungua kwa asilimia hamsini inapokaribia joto la chini linalotakiwa.

Ikiwa pembejeo zote na waya za kuruka zimewekwa haswa na kudhani bandari ya unganisho la arduino ni COM4 na jina la kazi ni "fanread", nambari ifuatayo inapaswa kuwa ya kutosha:

kazi [B] = fanread (Tmin, eff)

wazi a; wazi lcd; a = arduino ('com4', 'uno', 'Maktaba', 'MfanoLCD / LCDAddon');

t = 0; t_max = 15; % wakati kwa sekunde

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

anzishaLCD (LCD, 'Safu', 2, 'Nguzo', 2);

ikiwa eff> = 1 || e <0

kosa ('Shabiki hataamilisha isipokuwa ufanisi umewekwa kati ya 0 na 1.')

mwisho

kwa t = 1: 10% idadi ya vitanzi / vipindi

wazi c; % kuzuia kurudia kosa

v = somaVoltage (a, 'A0');

TempC = (v-0.5) * 100; Ukadiriaji wa% kwa viwango vya voltage 2.7-5.5 V

ikiwa TempC> Tmin ikiwa TempC

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

andikaPWMDutyCycle (a, 'D9', eff / 2); Washa servo kwa kasi ya nusu

spd = 50;

mwingine

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

andikaPWMDutyCycle (a, 'D9', eff); Washa servo kwa kasi iliyotolewa

spd = 100;

mwisho

mwingine

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

andikaPWMDutyCycle (a, 'D9', 0); % funga ikiwa tayari imewashwa

spd = 0;

mwisho

chapishaLCD (LCD, c);

pause (3); Sekunde tatu hupita kwa kitanzi

wakati (t) = t. * 3;

tempplot (t) = TempC;

kitendo (t) = spd;

kiwanja (2, 1, 1)

njama (saa, templeti, 'bo')% grafu ya mstari

mhimili ([0 33 0 40])

xlabel ('Saa (sekunde)')

ylabel ('Joto (C)')

subiri

kiwanja ([0 33], [Tmin Tmin], 'r-')

subiri

njama ([0 33], [Tmin + 2 Tmin + 2], 'g-')

kiwanja (2, 1, 2)

bar (saa, kitendo)% bar ya grafu

xlabel ('Saa (sekunde)')

ylabel ('Ufanisi (%)')

mwisho

B = transpose ([wakati; tempplot; act]);

mwisho

Sasa kwa kuwa kazi imekamilika, ni wakati wa kujaribu.

Hatua ya 5: Upimaji

Upimaji
Upimaji
Upimaji
Upimaji

Sasa jaribu kazi kwenye dirisha la amri kwa kuingiza "jina la kazi (jina_wa_uingizaji, kiingilio_uhimu_2)" na utazame. Hakikisha kuwa hakuna kitu cha Arduino tayari kipo; ikiwa ni hivyo, tumia amri "wazi a" kuiondoa. Ikiwa hitilafu zinatokea, angalia na uone ikiwa viunganisho viko mahali pabaya au ikiwa pembejeo zisizofaa za dijiti au analog hutumiwa. Matokeo yanatarajiwa kutofautiana, ingawa hii inaweza kusababishwa na kuwekwa kwa waya fulani za kuruka na sensorer ya joto.

Matarajio ya matokeo yanapaswa kutoa mabadiliko katika utendaji wa servo na data kwenye LCD. Kwa kila muda wa sekunde tatu, mstari wa maandishi unapaswa kuonyesha joto katika Celsius na ikiwa shabiki anafanya kazi au la wakati shabiki anaendesha kwa kasi kamili, nusu kasi au hana kasi. Takwimu hazipaswi kuwa sawa, ingawa ikiwa inataka matokeo anuwai, weka "Tmin" karibu na joto la wastani linalozalishwa na mzunguko.

Hatua ya 6: Hitimisho

Hitimisho
Hitimisho

Ingawa ilikuwa kazi ngumu kutimiza kwa kujaribu na makosa, matokeo ya mwisho yalionekana kuwa ya kufurahisha na ya kuridhisha. Mfumo kama huo husaidia kuonyesha ni mashine ngapi ngumu, au hata sehemu zingine, zinaweza kuonekana kama mkusanyiko wa sehemu huru zilizowekwa pamoja kutimiza lengo fulani.

Kwa sababu ya muundo rahisi wa mradi wa mwisho, wale ambao wana nia ya kuboresha utendaji wake wanaweza kufanya maboresho na mabadiliko katika bidhaa ya mwisho ambayo inaweza kufanya mradi kuwa bora na kufafanua zaidi. Walakini, inaonyesha udhaifu katika mzunguko kama uanzishaji wa servo na kusababisha kushuka kwa nadra katika usomaji wa voltage ya mzunguko, ambayo inaweza kusababisha mfumo kamwe kutoa matokeo yanayofanana. Pia, kumekuwa na maswala na kuona mabadiliko katika kasi ya servo wakati "eff" imewekwa 0.4 na zaidi. Ikiwa sensorer ya joto na unyevu ingetumika, mtindo wa mwisho ungekuwa mgumu zaidi lakini unatoa maadili thabiti zaidi. Walakini, hii ni uzoefu ambao unaonyesha mashine ngumu inaweza kufanya kazi kama mchanganyiko wa sehemu zake rahisi.

Ilipendekeza: