Përmbajtje:

UCL Embedded - B0B ndjekësi i linjës: 9 hapa
UCL Embedded - B0B ndjekësi i linjës: 9 hapa

Video: UCL Embedded - B0B ndjekësi i linjës: 9 hapa

Video: UCL Embedded - B0B ndjekësi i linjës: 9 hapa
Video: Oscar Bobb | What has Erling Haaland told his fellow Norweigan during his journey to first team? 2024, Korrik
Anonim
UCL Embedded - B0B ndjekësi i linjës
UCL Embedded - B0B ndjekësi i linjës

Ky është B0B.*

B0B është një makinë e përgjithshme e kontrolluar nga radio, që shërben përkohësisht në bazë të një roboti që ndjek linjën.

Ashtu si shumë robotë që ndiqnin linjën para tij, ai do të bëjë çmos për të qëndruar në një linjë të shkaktuar nga një kalim midis dyshemesë dhe një materiali të kundërt, në rastin tonë shirit ngjitës.

Ndryshe nga kaq shumë robotë të tjerë që ndjekin linjën, B0B gjithashtu mbledh të dhëna dhe i dërgon ato përmes WiFi.

Tepër i tepërt për një projekt hobi, ai përfshin një numër lëndësh që mund të gjeni interesante. Ky udhëzues përshkruan lindjen e tij, funksionet e tij dhe sesi mund ta bëni një të tillë si ai.

Ai gjithashtu përfshin zemërimin ndaj pajisjeve të ndryshme elektronike për të mos punuar siç donim ne, dhe hapat që ndërmorëm për të kapërcyer ato vështirësi, (Unë po ju shikoj ESP 8266-01).

Ekzistojnë 2 kode për ta bërë projektin të funksionojë. Kodi i parë është për modulin ESP8266 të cilin ne e përdorim Arduino si programues, dhe kodi i dytë do të ekzekutohet në Arduino.

Hapi 1: Përbërësit

Për këtë projekt do t'ju duhet:

Hardware:

• 1x makinë kontrolluese radio, (duhet të ketë ESC dhe servo drejtues).

Ne ishim duke përdorur një stok kryesisht Traxxas 1/16 E-Revo VXL, kryesisht sepse kjo ishte ajo që kishim, dhe ishim mjaft të sigurt se do të ishim në gjendje ta kontrollonim atë me një Arduino. Gjithashtu sepse do të përfundojë duke mbajtur një sasi jo të parëndësishme të pajisjeve shtesë, ne ishim të sigurt se kjo nuk do të ishte një çështje për 1/16 E-Revo.

Sidoqoftë, shumica e makinave me radio të kontrolluar (që mund të ndahen lehtësisht) ndoshta mund të përdoren në vend të tij, dhe procesi do të jetë shumë i ngjashëm.

• Një ton shirit ngjitës.

Ngjyra duhet të kontrastojë dyshemenë sa më shumë që të jetë e mundur. Në mjedisin tonë të testimit ne përdorëm shirit të bardhë në një dysheme të errët.

• 1x Arduino Mega 2560.

Arduino -të më të vegjël ndoshta janë gjithashtu mirë, por do të shtypeni për kunjat.

• 1x dërrasë e madhe bukë.

Njëra është e mjaftueshme, por ne gjithashtu kishim një më të vogël për të ndarë linjat e tjera të energjisë të tensionit për të zvogëluar rrezikun e gabimit të përdoruesit.

• 1x sensor analog TCRT5000 IR (përdoret për shmangien e përplasjes).

Marka/modeli i saktë nuk ka rëndësi nëse është i pajtueshëm me Arduino dhe mat distancën. Kërkoni për fjalë kyçe të tilla si "Distanca", "pengesa" sensor. Teknikisht një sensor dixhital do të funksiononte gjithashtu me ndryshime të vogla të kodit, por ne po përdorim një analog.

• Graviteti 1x ose 2x: Sensori Analog i Shkallës së Gri v2

Njëra është një domosdoshmëri për ndjekësin e linjës. Modeli i saktë nuk ka rëndësi, përderisa shikon intensitetin e dritës së reflektuar dhe nxjerr një sinjal analog. E dyta për zbulimin e "dhomës" nuk ishte aq mirë sa pritej dhe mund të hiqet, ose mund të gjendet një alternativë, si një sensor ngjyrash RGB, me sa duket për një efekt më të mirë. Ne ende duhet ta testojmë këtë.

• 1 x ESP 8266-01.

Ka shumë versione të ESP 8266 në dispozicion. Ne kemi vetëm përvojë me 8266-01 dhe nuk mund të garantojmë që kodi ESP do të punojë me një version tjetër.

• 1 x ESP8266-01 mburojë Wi-Fi.

Teknikisht opsionale, por nëse nuk e përdorni këtë, gjithçka që përfshin modulin Wi-Fi do të bëhet shumë më e komplikuar. Udhëzuesi, megjithatë, do të supozojë se e keni këtë, (nëse jo, gjeni udhëzuesit në internet për lidhjen e saktë të ESP-01 në Arduino), pasi ta bëni këtë gabimisht mund dhe ndoshta do të dëmtojë modulin.

• Bateri për veturën dhe bateri për të fuqizuar elektronikën shtesë.

Ne përdorëm një palë me kapacitet 2.2 AH, bateri Lipo 7.4V paralelisht për të fuqizuar gjithçka. Ju duhet të jeni në gjendje të përdorni çfarëdo baterie që normalisht do të përdorni me automjetin tuaj të zgjedhur. Nëse jeni mbi 5V por nën 20V, kapaciteti është më i rëndësishëm se tensioni nominal.

• Shumë kabllo kërcyes.

Kam hequr dorë nga numërimi i numrit të saktë të këtyre. Nëse mendoni se keni mjaft, me siguri jo.

• Së fundi, për të bashkangjitur gjithçka, do t'ju duhet të montoni Arduino-n, sensorët, panelin (et) dhe modulin Wi-Fi në automjetin e zgjedhur nga ju. Rezultati juaj do të ndryshojë në varësi të asaj që përdorni si bazë dhe çfarë materialesh janë në dispozicion.

Ne përdorëm:

• Lidhëse zip.

• Disa super zam.

• Copa të vogla letre skrap/tub rrëshirë që kishim me një diametër të përshtatshëm.

• Një pllakë e vjetër masonite nga një kornizë fotografie, e prerë në madhësi.

• Pak më shumë shirit ngjitës.

• Çdo mjet i nevojshëm për të punuar në makinën tuaj të zgjedhur me radio.

Ne përdorëm kryesisht një set të vogël vidë me copa të shumta, por herë pas here duhej të tërhiqnim grupin e mjeteve të stokut që vinte me makinën.

Softuer:

• Nyje-e kuqe

Një pjesë e rëndësishme e mbledhjes së të dhënave.

• Një server MQTT.

Njeriu i mesëm midis automjetit tonë dhe Node-red. Fillimisht, për testim, ne përdorëm test.mosquitto.org

Më vonë ne përdorëm:

• CloudMQTT.com

Kjo ishte shumë më e besueshme e cila më shumë se sa u kompensua për të qenë pak më e komplikuar për tu vendosur.

• WampServer.

Pjesa e fundit e mbledhjes së të dhënave. Në mënyrë të veçantë, ne do të përdorim bazën e të dhënave SQL për ruajtjen e të dhënave tona të mbledhura.

Hapi 2: Diagrami Elektrik

Diagrami Elektrik
Diagrami Elektrik

Hapi 3: Ndërtimi Fizik

Ndërtim Fizik
Ndërtim Fizik
Ndërtim Fizik
Ndërtim Fizik
Ndërtim Fizik
Ndërtim Fizik

Zgjidhja jonë ka një qasje të drejtpërdrejtë përpara asamblesë fizike.

Marrësi origjinal dhe rrethimi i tij i papërshkueshëm nga uji u hoq nga makina RC, pasi nuk është e nevojshme.

Ne zbuluam se ishte një vend i përshtatshëm midis rrotave të përparme për sensorin tonë të ndjekjes së linjës, kështu që ne e mbajtëm atë në vend duke rrethuar një ziptie mbi pllakën e përparme të rrëshqitjes.

Sensori që përdorim për anti-përplasje është disi i fiksuar pas parakolpit të përparmë. It'sshtë ende duke u mbrojtur nga ndikimet, dhe fërkimi i tij përshtatet. Përfundon duke parë përpara në një kënd lartësie kaq të vogël. Kjo eshte perfekte.

Pllaka masonite, (pllaka e pasme nga korniza e vjetër e figurës), në krye ka pjesë të vogla të tubit të letrës/rrëshirës të prera në madhësi dhe të ngjitura në pjesën e poshtme. Këto përputhen me montuesit për shtyllat e trupit dhe thjesht ulen në majë, duke mbajtur gjithçka në mënyrë të sigurt. Duke supozuar se zamja që ngjit tubin në pjatë mban, dhe se nuk anohet shumë, kjo do të qëndrojë në vend. Vlen gjithashtu të përmendet se pllaka është brenda sferës mbrojtëse të rrotave dhe parakolpave. Arduino Mega dhe dy dërrasat e bukës janë ngjitur në pjatë ose me shirit anësor të dyfishtë, ose me një lak shirit ngjitës të rrethuar, ngjitur.

Asnjë masë e veçantë nuk është marrë për të siguruar modulin WiFi. Nuk është e jona, kështu që ngjitja ose ngjitja e tij u konsiderua e panevojshme pasi është aq e lehtë sa nuk do të lëvizë shumë, dhe telat janë të mjaftueshëm për ta mbajtur atë në vend.

Së fundi, ne kemi një sensor për zbulimin e "dhomave", i cili u zipua në përbërësit e pezullimit nga njëra nga rrotat e pasme. Gjatë funksionimit, kjo duhet të jetë larg linjës që shënon automjeti për të lundruar.

Hapi 4: Moduli ESP8266

Moduli ESP8266
Moduli ESP8266
Moduli ESP8266
Moduli ESP8266

Moduli WiFi, ESP8266, kërkon dy konfigurime të ndryshme pin. Një konfigurim do të përdoret kur ndizni modulin me një program të ri dhe përdorni Arduino Mega 2560 si programues. Konfigurimi tjetër është për modulin kur përdoret dhe dërgon informacion tek ndërmjetësi MQTT.

Duke përdorur Arduino IDE për të ngarkuar kodin në modulin ESP8266 do t'ju duhet të instaloni një menaxher të bordit dhe një menaxher shtesë të bordeve

Nën menaxherin e bordit instaloni menaxherin e bordit esp8266. Do të gjendet lehtësisht duke kërkuar "esp". Crucialshtë vendimtare që të instaloni versionin 2.5.0, jo më të vjetër, jo më të ri.

Nën cilësimet në URL -të shtesë të menaxherit të bordeve, kopjoni në këtë rresht:

arduino.esp8266.com/stable/package_esp8266c…

Për të qenë në gjendje të ngarkoni ndonjë gjë në modulin ESP8266, do t'ju duhet të përdorni një konfigurim specifik të pinit në mënyrë që të ndizni modulin. Kjo duhet të bëhet çdo herë që dëshironi të bëni një ndryshim në kodin aktual që funksionon në modul. Mos harroni të zgjidhni modulin e duhur ESP8266 nga menaxheri i bordit para se ta ndizni modulin. Në këtë projekt ne zgjodhëm tabelën e përgjithshme ESP8266. Konfigurimi i kunjave për ndezjen e modulit gjendet në foton e parë në këtë segment.

Pasi të keni ndezur modulin ESP8266, duhet të ndryshoni konfigurimin e pinit. Ju gjithashtu mund të zgjidhni të përdorni një përshtatës për ta bërë konfigurimin më të lehtë për ju. Në këtë projekt ne zgjodhëm të kishim një përshtatës sa herë që kishim modulin në punë. Konfigurimi i kunjave me përshtatës gjendet në figurën e dytë në këtë segment.

Kodi që do të shfaqet në modulin ESP8266 vendos lidhjen me një WiFi dhe një ndërmjetës MQTT, në këtë rast me një emër përdoruesi dhe fjalëkalim, por mund të bëhet pa bërë ndryshimet e nevojshme të përshkruara në komentet e kodit. Për këtë projekt, ndërmjetësi ynë kërkoi një emër përdoruesi dhe fjalëkalim për të punuar. Moduli lexon mesazhet hyrëse nga porti serik me të cilin është i lidhur. Do të lexojë çdo rresht të ri të krijuar nga kodi Arduino, do të deshifrojë mesazhin dhe do të rikrijojë mesazhin. Më pas ai dërgon mesazhin tek ndërmjetësi MQTT që është specifikuar në kod. Kodi për modulin ESP8266:

Hapi 5: Arduino

Pasi të kemi konfiguruar modulin WiFi, ne shikojmë programin që do të përdoret për kontrollin e motorit dhe servo në makinën RC. Makina do të reagojë sipas një informacioni të shkallës gri nga sensori qendror, i njohur gjithashtu si "Detektori i Linjës" në këtë projekt. Ai thjesht synon mbajtjen e informacionit nga Detektori i Linjës pranë një vlere të paracaktuar që është e barabartë me informacionin e regjistruar në ndryshimin midis dritës dhe errësirës ose në këtë projekt, të bardhë dhe të zi. Pra, nëse vlera ndryshon shumë larg, dalja përkatëse në servo do ta drejtojë makinën pranë vlerës së paracaktuar të linjës.

Programi ka dy butona i cili funksionon si buton start dhe stop për makinën RC. Teknikisht butoni "stop" është një buton "armatosjeje" i cili në aspektin e barabartë me një vlerë PWM të dërguar në motor që shkakton ndalimin e makinës RC. Butoni i nisjes dërgon një vlerë PWM që është e barabartë me makinën RC mezi duke ecur përpara pasi do të ngasë shumë shpejt nëse fiton shumë vrull.

Një detektor i shmangies së përplasjes i shtohet pjesës së përparme të makinës RC për të zbuluar nëse rruga përpara është e qartë apo e bllokuar. Nëse bllokohet, makina RC do të ndalet derisa pengesa të zhduket/hiqet. Sinjali analog nga detektori përdoret për të përcaktuar nëse diçka po e bllokon rrugën apo jo dhe është bërë një kriter për të qenë në gjendje të ecë përpara si dhe ndalimi.

Një sensor dytësor i shkallës gri, "Detector Room", përdoret për të zbuluar se në cilën dhomë ka hyrë makina RC. Ai funksionon në një parim të ngjashëm me Detektorin e Linjës, por nuk kërkon ndryshimin midis dritës dhe errësirës, por më tepër vlerat brenda një diapazoni të caktuar që korrespondon me dhoma të ndryshme në varësi të vlerës së parë nga Detektori i Dhomës.

Së fundmi, programi krijon një linjë informacioni nga sensorët që moduli WiFi të lexohet dhe më pas të dërgohet te ndërmjetësi MQTT. Linja e informacionit krijohet si një varg dhe shkruhet në serialin përkatës të të cilit është lidhur moduli WiFi. Importantshtë e rëndësishme që shkrimi në serial të ndodhë vetëm aq shpesh sa moduli WiFi mund të lexojë mesazhin në hyrje, por mos harroni të mos përdorni asnjë vonesë në këtë kod pasi do të ndërhyjë në aftësinë e makinës RC për të ndjekur linjën. Në vend të kësaj përdorni "millis" pasi do të lejojë që programi të funksionojë pa vonesë, por pasi të kalojë një sasi e përcaktuar e milis që kur Arduino është aktivizuar, do t'i shkruajë një mesazh serisë pa bllokuar kodin në të njëjtën mënyrë siç bën vonesa.

Kodi për Arduino Mega 2560:

Hapi 6: Baza e të dhënave MySQL

WampServer është një mjedis zhvillimi i uebit për Windows që na lejon të krijojmë aplikacione me PHP dhe një bazë të dhënash MySQL. PhpMyAdmin na lejon të menaxhojmë bazat e të dhënave tona në një mënyrë të lehtë.

Për të filluar, shkoni në:

Në këtë projekt ne përdorim versionin 3.17 x64 bit për Windows. Pas instalimit, sigurohuni që të gjitha shërbimet po funksionojnë, që do të thotë se ikona e vogël bëhet e gjelbër në vend të kuqe ose portokalli. Nëse ikona është jeshile, atëherë mund të hyni në PhpMyAdmin për të menaxhuar bazën e të dhënave tuaja MySQL.

Hyni në MySQL duke përdorur PhpMyAdmin dhe krijoni një bazë të dhënash të re. Emërtojeni atë diçka të përshtatshme që mund ta mbani mend, në këtë projekt u quajt "line_follow_log". Pas krijimit të bazës së të dhënave, duhet të krijoni një tabelë në bazën e të dhënave. Sigurohuni që numri i kolonave të përshtatet. Në projekt ne përdorim 4 kolona. Një kolonë është për një etiketë kohore dhe tre të fundit përdoret për të ruajtur të dhënat nga automjeti. Përdorni llojin e duhur të të dhënave për secilën kolonë. Ne përdorëm "tekstin e gjatë" për kolonën e afatit kohor dhe "mesazhin e mesëm" për pjesën tjetër.

Kjo duhet të jetë gjithçka që duhet të bëni në PhpMyAdmin dhe MySQL. Mbani mend bazën tuaj të të dhënave dhe tabelën për pjesën për Node-Red.

Hapi 7: Nyja-Kuqe

Për të trajtuar mbledhjen e të dhënave, ne do të përdorim një rrjedhë mjaft të thjeshtë në Node-red. Ai lidhet me serverin tonë MQTT dhe shkruan në bazën e të dhënave tona MYSQL.

Për ta bërë këtë, na duhen disa paleta që funksionet e ndryshme të funksionojnë, dhe na nevojitet një kod aktual që ai të funksionojë.

Gjërat e para në fillim. Do të na duhen paletat e mëposhtme.

Ndërmjetësi Node-red-contrib-mqtt: Kjo është lidhja me ndërmjetësin tonë MQTT.

Nyja-e kuqe-pult: Paneli ynë, i nevojshëm për të përfaqësuar vizualisht të dhënat e mbledhura.

Nyja-red-node-mysql: Lidhja jonë me bazën e të dhënave SQL.

Ky nuk ka për qëllim të jetë një udhëzues i plotë për Node-red, por unë do të shpjegoj atë që bën rrjedha e kuqe Node.

Herët, ne kishim probleme me serverin tonë MQTT të zgjedhur që vdiste/shkëputet, në dukje rastësisht, gjë që e bëri bërjen e çdo ndryshimi një përpjekje frustruese pasi ishte e paqartë nëse ndryshimet kishin qenë të dobishme, apo jo kur nuk mund ta shihnim rezultatin. Pra, butoni 'A vdiq serveri?' injekton 'Jo' blloku i mëposhtëm e injekton atë në serverin tonë MQTT. Nëse nuk ka vdekur, 'Jo' do të shfaqet në dritaren Debug. Kjo bëhet jo vetëm për të testuar, por për të detyruar Node-red të përpiqet të lidhet përsëri me serverin MQTT.

'Test string' i dërgon një varg kostumesh ndërmjetësit MQTT. Ne e formatuam këtë varg që të jetë i ngjashëm me atë që do të merrnim nga Arduino. Kjo do të kishte një kohë më të lehtë për të konfiguruar rrjetin që deshifron mesazhet, pa pasur nevojë që projekti të funksionojë, duke mbledhur të dhëna.

Rrjedha e fundit në hapësirën e punës mund të ndahet në dy segmente. Dega e poshtme thjesht lexon mesazhet që vijnë, i poston ato në dritaren e korrigjimit dhe i ruan ato në serverin SQL.

Rrjeti i madh i ndërprerësve të lidhur duke ndjekur një nyje funksioni nëse ndodh 'magjia' e vërtetë.

Funksioni procedues lexon vargun në hyrje, duke e ndarë atë me çdo gjysmë-zorrë dhe kalon seksionet në secilën prej daljeve. Çelsat e mëposhtëm kërkojnë një nga dy pjesët e ndryshme të informacionit në hyrje. Një pjesë specifike e informacionit kalohet gjithmonë nga një dalje, opsioni tjetër largohet nga dalja e dytë. Pas kësaj, është një grup i dytë i blloqeve ndërrues. Ata do të aktivizohen vetëm me një hyrje specifike dhe do të nxjerrin diçka tjetër.

Një shembull, 'pengesë', si të gjithë të tjerët janë një zgjedhje binare, ose është e qartë për të drejtuar, ose nuk është. Pra, do të marrë një 0, ose një 1. Një 0 do të dërgohet në degën 'e qartë', një 1 do t'i dërgohet degës 'Të penguar'. Çelsat 'Clear', 'Obstructed', nëse aktivizohen do të nxjerrin diçka specifike, Clear, ose obstruktuar, respektivisht. Blloqet e gjelbra të procedimit do të postohen në dritaren e korrigjimit, bluja do të shkruajë në pultin tonë.

Degët e "statusit" dhe "vendndodhjes" funksionojnë saktësisht të njëjta.

Hapi 8: Ndërmjetësi MQTT

Një ndërmjetës është një server i cili përcjell mesazhet nga klientët tek klientët e destinacionit të përshtatshëm. Një ndërmjetës MQTT është ai ku klientët përdorin një Bibliotekë MQTT për t'u lidhur me ndërmjetësin përmes një rrjeti.

Për këtë projekt ne krijuam një ndërmjetës MQTT duke përdorur shërbimin CloudMQTT me pajtim falas për një version "Cute Cat". Ka kufizimet e veta, por ne nuk i tejkalojmë ato në këtë projekt. Moduli WiFi mund të lidhet me ndërmjetësin dhe ndërmjetësi pastaj i përcjell mesazhet në një klient destinacioni të përshtatshëm. Në këtë rast klienti është Node-Red ynë. Shërbimi CloudMQTT vendos një emër përdoruesi dhe fjalëkalim për serverin e tyre, kështu që neve na garantohet një siguri më e lartë. Në thelb do të thotë që vetëm ata me emrin e përdoruesit dhe fjalëkalimin mund të hyjnë në këtë shërbim specifik CloudMQTT. Emri i përdoruesit dhe fjalëkalimi janë vendimtar kur vendosni lidhjen në kodin ESP8266 si Node-Red.

Statistikat e vazhdueshme për mesazhet që merr ndërmjetësi është një veçori e këndshme, e cila mund të përdoret për të parë se sa mirë plani juaj i pajtimit po trajton informacionin që drejton.

Një veçori e bukur është mundësia për të dërguar mesazhe nga ndërmjetësi në modulin WiFi, por ne nuk i përdorëm ato në këtë projekt.

Hapi 9: Elektronikë Hobi

Para fillimit ne e dinim nga një projekt i mëparshëm se servo drejtues i aksioneve mund të kontrollohej nga një Arduino me një sinjal PWM, që kishte tela të ngjashëm, dhe lidhej me kanale të ndryshme në të njëjtin marrës radio të stokut, supozuam Kontrollin Elektronik të Shpejtësisë, (ESC nga tani e tutje), që kontrollon motorin, në mënyrë të ngjashme mund të kontrollohet përmes PWM nga Arduino.

Për të testuar këtë teori, ne vendosim një skicë të vogël Arduino. Skica lexon një hyrje analoge nga një potenciometër, rimarr vlerën nga 0, 1024 në 0, 255 dhe nxjerr vlerën që rezulton në një kunj PWM, duke përdorur analogWrite () ndërsa kishte makinën R/C në një kuti të vogël dhe kishte rrotat u hoqën.

Pasi përfshiu gamën në njehsorin e tenxhere, ESC dukej se "zgjohej" dhe ne mund ta mbysnim atë lart e poshtë, ne gjithashtu kishim që Arduino të printonte vlerat në lidhjen serike, në mënyrë që t'i monitoronim ato.

ESC dukej se nuk i pëlqente vlerat nën një prag të caktuar, në këtë rast 128. Ai e shihte sinjalin 191 si mbytje neutrale, dhe 255 ishte mbytje maksimale.

Ne nuk kishim nevojë të ndryshonim shpejtësinë e automjetit dhe në mënyrë të përkryer e mbanim atë në shpejtësinë më të ngadaltë që do ta bënte atë të lëvizë. 192 ishte vlera më e ulët që do të kthente motorin, megjithatë ne ende nuk kemi montuar gjithçka dhe nuk jemi të sigurt nëse ky prodhim do të ishte i mjaftueshëm për të lëvizur automjetin pas montimit përfundimtar, megjithatë futja e një vlere pak më të madhe duhet të jetë e parëndësishme.

Anashkalimi i potenciometrit dhe vendosja e vlerës fikse në kod, megjithatë, nuk funksionoi. Aksionet ESC thjesht vezulluan dhe nuk do të rrotullojnë motorin, "rregullo rregullimin e mbytjes" sipas manualit.

Problemet e furishme të shtënat, hedhja e vlerave të ndryshme në të, përdorimi i telave të ndryshëm, dhe madje edhe eksperimentimi me ndryshimin e frekuencës PWM që Arduino përdor të gjitha rezultoi në më shumë çuditshmëri.

Dukej se ishte një çështje me ndërprerje, ndonjëherë ajo do të zgjidhej, herë të tjera refuzonte të bënte asgjë. Thjesht vazhdoi të vezullonte. Një test me kontrolluesin dhe marrësin origjinal konfirmoi se ESC ishte ende duke punuar saktësisht siç ishte menduar, gjë që i bëri çështjet edhe më të çuditshme. Vlerat më të larta, ajo injoroi dhe vazhdoi të vezullojë, vlerat më të ulëta ESC u kthye në shkëlqimin e një jeshile të lumtur, por ende nuk u kthye.

Çfarë ndryshonte nga konfigurimi me potenciometrin, ose transmetuesin dhe marrësin e stokut, dhe versionin që siguronte vlera fikse?

Ndonjëherë të punosh sipas synimit dhe të punosh siç pritej nuk mbivendosen vërtet shumë në diagramin e Venit. Në këtë rast, duke qenë një lodër, nuk duhet të ketë asnjë mundësi që modeli thjesht të heqë ose të thyejë gishtat ose të kapë flokët në rrota ose të ngasë trenin kur modeli ndizet, edhe nëse diçka si mbajtja e transmetuesit në mënyrë të çuditshme ka mbytjen çdo pozicion tjetër përveç atij neutral.

'Rregulloni rregullimin e mbytjes', kjo është pikërisht ajo që do të thotë. ESC po pret një sinjal neutral kur të ndizet, para se të marrë se nuk do të bëjë asgjë. Normalisht transmetuesi do të ishte gjithmonë neutral kur ESC është ndezur dhe prej andej me kënaqësi do të ngasë. Në rast se nuk është, me siguri do të kthehet në pozicionin neutral të paktën një herë derisa modeli të jetë vendosur në tokë dhe operatori të ndihet gati për të garuar.

Ndërsa përdorim potenciometrin, ne po 'fshihnim' nëpër vargje, dhe pastaj do të fillonte të funksiononte. Ai thjesht u armatos ndërsa potenciometri kaloi pozicionin neutral dhe më pas funksionoi.

Gama më e ulët, megjithatë ende dukej se nuk i pëlqente ESC. Kjo rezulton se është produkt i cikleve të punës PWM.

Ose nga dizajni ose bërë për një arsye teknike, si servo drejtues ashtu edhe ESC injorojnë sinjalet nën 50% të cikleve të punës. Kjo mund të ndodhë në rast se marrësi/transmetuesi ndalon punën ose mbaron fuqinë, modeli do të kthehej në neutral dhe nuk do të ngrihej në distancë me mbytje të plotë të kundërt. Në mënyrë të barabartë, servo rrotullohet vetëm 180 gradë dhe nuk ka nevojë për gamën e plotë.

Me këtë njohuri të re në dorë, u krijua një skicë e re Arduino. Versioni fillestar pranon vargjet e futura në monitorin Serial, e konverton atë në një numër të plotë dhe e zhvendos atë në pin PWM, duke përdorur bibliotekën servo dhe shkruaj ()*. Nëse një vlerë e re futet në monitorin serik, vlera e shkrimit () azhurnohet.

Gjatë testimit, aksionet Traxxas ESC u zëvendësuan me një Mtroniks G2 Micro, megjithatë ato duhet të funksionojnë njësoj, edhe pse vlerat e sakta mund të jenë paksa të ndryshme.

Kjo bibliotekë e trajton ESC si një servo, kjo është mirë me sa duket. Funksioni i shkrimit () nga biblioteka Servo.h shkon nga 0 në 180, sinjali i armatosur i pritur pritet të jetë rreth mesit.

G2 Micro armët në një shkrim () në një sërë vlerash afër 90 megjithatë ishte e vështirë të përcaktohej me saktësi pasi duket se "mbani mend" të keni qenë të armatosur.

Traxxas VXL-s3 pritet të armatoset me një vlerë shkrimi () 91.

Pas sinjalit të armatosjes, ose ESC pranoi me kënaqësi sinjalet PWM, pavarësisht funksioneve Arduino të thirrura për t'i gjeneruar ato, dhe kontrollon motorin në përputhje me rrethanat.

Duke folur për funksionet; standard analogWrite (), si dhe shkruaj () dhe shkruaj Mikrosekonda () nga biblioteka Servo.h të gjitha mund të përdoren në mënyrë të ndërsjellë, vetëm mbani në mend se çfarë bën, dhe në fund asgjë tjetër përveç ciklit të punës ka rëndësi. WriteMicroseconds () mund të përdoren nëse kërkohet grimcim më i madh, vetëm mbani në mend se diapazoni këtu është nga 1000 në 2000, me armatosje ose 'neutrale' që pritet të jetë në 1500. Me analogWrite standarde () vargu i përdorshëm pritet të të jetë nga 128 në 255 me rreth 191 të jetë neutral.

Recommended: