Velkommen til del II av veiledningen vår om hvordan du overvåker lasttilbakemeldingen til en lineær aktuatorI Del I Vi gikk gjennom koblingsprosessen og den grunnleggende kodingen som trengs for eksemplet. I dagens guide skal vi gå gjennom de ulike delene av kodingen i detalj, samt noen måter å redigere den på. Til å begynne med skal vi se på latchButtons()-delen av koden.
Det første vi ønsker å se er knappens avhopping, så når venstre knapp trykkes ned, må tiden siden forrige knappetrykk beregnes. For å gjøre dette må vi bruke den siste verdien som ble lagret i koden, og deretter bruke millis()-funksjonen til å sjekke tiden. Når tiden er større enn avhoppingstiden, vil funksjonen sjekke om aktuatoren kan forlenges. Når begge betingelsene er oppfylt, vil funksjonen kunne fortsette.
hvis (digitalRead(buttonLeft)==LOW)//venstre er fremover
{
currentTimedebounce = millis() - sisteKnappetrykk;// sjekk tiden siden siste trykk
hvis (currentTimedebounce> debounceTime && dontExtend == false)//når du har utløst dontExtend, ignorer alle fremovergående trykk
{
leftlatch = !leftlatch;// Hvis motoren beveger seg, stopp, hvis den stopper, begynn å bevege seg
firstRun = true;// sett firstRun-flagget for å ignorere gjeldende topp
fullyRetracted = false; // når du beveger deg fremover, er du ikke helt trukket tilbake
siste knappetrykk = millis(); //lagre tidspunktet for siste knappetrykk
retur;
}//slutt hvis
}//slutt btnLEFT
Den neste delen er løkken i motorForward()-funksjonen, nærmere bestemt de to forsinkelsene. Sløyfen starter ved å aktivere motorkontrolleren, som starter den lineære aktuatormotoren. Hvis det er den første gjennom løfen, vil det være en større forsinkelse. Forsinkelsen ignorerer strømtoppen som oppstår når motoren aktiveres. Sørg for å ikke sette forsinkelsen for stor, da du ikke vil ha kontroll over den når den starter. Når motoren starter, brukes getFeedback()-delen til å sjekke strømsensoren.
mens (dontExtend == false && leftlatch == HIGH) {
digitalWrite(EnablePin, HØY);
analogWrite(PWMPinA, speed);
analogWrite(PWMPinB, 0); //flytt motor
hvis (firstRun == true) delay(firstfeedbacktimedelay);
ellers delay(feedbacktimedelay); //liten forsinkelse for å komme i gang
hentTilbakemelding();
førsteKjør = usann;
låseKnapper();
}//slutt mens

Deretter skal vi gå gjennom delene i get feedback()-rutinen, som starter med å lese den analoge pinnen som er koblet til sensoren. Den begynner med å sjekke om motoren er på sine grenser, og om koden kjenner sine grenser når strømmen viser 0.
Unfortunately, there can be a false reading sometimes so it's important to set a counter. This counter code has to count up to the hitLimitsmax before the motor stops and if it counts less then that it will reset.
hvis (CRaw == 0 && treffGrenser < treffGrensermaks) treffGrenser = treffGrenser + 1;
ellers hitLimits = 0; // sjekk om motoren er ved grensene og strømmen har stoppet
Etter det går det treffgrenser. Når lineær aktuator Motoren beveger seg fremover. Når den når grensen, vil den slå av den høyre låsen. Hvis motoren beveger seg bakover, vil den slå av den venstre låsen. Koden nedenfor viser bare den høyre låsen, men venstre låsekode er den samme.
hvis (hitLimits == hitLimitsmax && rightlatch == HØY) {
høyrelås = LAV;
treffGrenser = 0;
}//slutt hvis
Strømgrensen kontrolleres og maksimumsgrensen defineres. Hvis grensen er over, vil venstre lås slås av, og motoren vil ikke lenger forlenges. For å starte forlengelsen må motoren reverseres.
hvis (CRaw> maksampere) {
ikkeUtvid = sann;
leftlatch = LAV; //stopp hvis tilbakemeldingen er over maksimum
}//slutt hvis
Det bringer oss til slutten av del II å overvåke lasttilbakemeldingen til en lineær aktuator. We went into detail on specific sections of the code this time and explained how they work. If you'd like to order any units we used in this example you can order online or kontakt oss å bestille via telefon. Hvis du har spørsmål eller bekymringer angående produktene våre, er vi alltid klare til å hjelpe.