Hoe om twee lineêre aandrywers te sin...
Hierdie handleiding is nie 'n noukeurige behandeling van die stappe wat benodig word om sinchroniese beheer met Arduino te bewerkstellig nie, maar 'n breë oorsig om u te help om u eie program te skryf. Hierdie tutoriaal is gevorderd en veronderstel dat u al vertroud is met Arduino-hardeware, sagteware en ideaal is met ervaring met pulsbreedte-modulasie (PWM) -seine, onderbrekingsdiensroetine (ISR), afbreek van sensors en motor-enkodeerders. Die voorbeeld in hierdie handleiding is 'n primitiewe proporsionele beheerder. Baie verbeterings kan op die volgende voorbeeld geïmplementeer word, insluitend, maar nie beperk nie tot: implementering van 'n PID-beheerlus en afskaling na meer as twee lineêre aandrywers. Let daarop dat ons nie oor die hulpbronne beskik om tegniese ondersteuning vir Arduino-toepassings te bied nie, en dat ons nie foute kan kry, of wysig, kode of bedradingsdiagramme sal verskaf buite hierdie openbaar beskikbare tutoriale nie.
Maak bogenoemde bedradingaansluitings. Kyk altyd na die draadkleure wat uit die lineêre aandrywer kom, want die kleurkonvensie kan verander van wat in die diagram hierbo getoon word.
Nadat u een keer volledig ingetrek het (om die oorsprong te identifiseer), kan u albei lineêre aandrywers sinchronies beweeg deur op die drie knoppies te druk wat ooreenstem met die opdragte vir verlenging, intrek en stop. Die aandrywers sal selfs onder ongelyke belastings sinkronies bly deur hul relatiewe pols tellers te vergelyk en die spoed tussen hulle aan te pas sodat dit altyd sinkronies sal bly. Let daarop dat die huidige program 'n eenvoudige proporsionele beheerder, lyn 93, implementeer, aangesien dit onderhewig is aan oorskiet en ossillasie rondom die ewewig. U kan dit afstel deur die veranderlike K_p, gedefinieerd in reël 37, te varieer. Dit word maklik gedoen deur 'n potensiometer aan die analoogpen A0 te heg en die kode te wysig om die potensiometer te lees en die map () -funksie te gebruik: K_p = map (analogRead (A0), 0, 1023, 0, 20000);
Soos met baie sensors, is dit belangrik om op die hoogte te wees van weerkaatsende seine. Soos met meganiese skakelaars, kan enkodeerders ook weerkaats. In die bostaande voorbeeld is die afbreekproses deur 'n eenvoudige vertraging hanteer (gedefinieer deur die falsepulseDelay-veranderlike), dit is belangrik om dit te hanteer in enige sagtewareveranderings wat u aanbring of met fisiese stroombane om die weerkaats te filter.
Hantering rol om
As u die kode wysig, moet u kennis dra van die omrol wanneer u met die millis () -funksie werk. Beide millis () en die lastDebounceTime-skikking word as ongetekende lang veranderlikes verklaar, wat beteken dat hulle waardes tot 4 294 967 295 (32 ^ 2-1) kan stoor. Dit kom neer op ongeveer 'n omlooptydperk van 49,7 dae. Die huidige program is ontwerp om die rollover in die ISR-funksies (onderbrekingsdiensroetine) te hanteer: count_0 & count_1, maar as u hierdie program wysig, moet u die veranderlike rollover korrek hanteer, anders val u program na ~ 49,7 dae se deurlopende gebruik. Vir meer inligting, verwys na: https://www.norwegiancreations.com/2018/10/arduino-tutorial-avoiding-the-overflow-issue-when-using-millis-and-micros/