Foto af en kontrolboks indeni

Del II: Hvordan overvåger man belastningsfeedback fra en lineær aktuator?

Guest Writer
Guest Writer
PA Engineer

Velkommen til del II af vores guide om, hvordan man overvåger belastningsfeedbacken for en lineær aktuatorI Del I Vi gennemgik ledningsprocessen og den grundlæggende kodning, der er nødvendig for eksemplet. I dagens guide vil vi gennemgå de forskellige dele af kodningen i detaljer samt nogle måder at redigere den på. Til at begynde med vil vi se på latchButtons()-sektionen af koden.

Det første vi vil se er knappens debounce-tid, så når venstre knap trykkes ned, skal tiden siden det forrige knaptryk beregnes. For at gøre dette skal vi bruge den sidste værdi, der blev gemt i koden, og derefter bruge funktionen millis() til at kontrollere tiden. Når tiden er større end debounce-tiden, vil funktionen kontrollere, om aktuatoren kan forlænges. Når begge betingelser er opfyldt, vil funktionen kunne fortsætte.

hvis (digitalRead(buttonLeft)==LOW)//venstre er fremad

{
currentTimedebounce = millis() - sidsteKnaptryk;// tjek tid siden sidste tryk
hvis (currentTimedebounce> debounceTime && dontExtend == false)//når du har aktiveret dontExtend, ignorer alle fremadgående tryk
{
leftlatch = !leftlatch;// Hvis motoren bevæger sig, stop, hvis den er stoppet, start bevægelse
firstRun = true;// sæt firstRun-flaget til at ignorere den aktuelle spids
fuldt tilbagetrukket = falsk; // når du bevæger dig fremad, er du ikke helt tilbagetrukket
sidste knaptryk = millis();//gemmer tidspunktet for sidste knaptryk
tilbagevenden;
}//slut hvis
}//slut btnLEFT


Det næste afsnit er løkken i motorForward()-funktionen, nærmere bestemt de to forsinkelser. Løkken starter ved at aktivere motorstyringen, som starter den lineære aktuatormotor. Hvis det er den første gennem løkken, vil der være en større forsinkelse. Forsinkelsen ignorerer den strømstigning, der opstår, når motoren aktiveres. Sørg for ikke at indstille forsinkelsen for stor, da du ikke vil have nogen kontrol over den, når den starter. Når motoren starter, bruges getFeedback()-sektionen til at kontrollere strømsensoren.

mens (dontExtend == false && leftlatch == HIGH) {

digitalWrite(EnablePin, HØJ);
analogWrite(PWMPinA, hastighed);
analogWrite(PWMPinB, 0); // flyt motor
hvis (firstRun == true) delay(firstfeedbacktimedelay);
ellers delay(feedbacktimedelay); //lille forsinkelse for at komme i gang
hentFeedback();
førsteKørsel = falsk;
låseKnapper();
}//slut mens

Photo of a control box inside

Dernæst gennemgår vi afsnittene i `get feedback()` rutinen, som starter med at aflæse den analoge pin, der er forbundet til sensoren. Den starter med at kontrollere, om motoren er nået sine grænser, og om koden kender sine grænser, 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 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1; 
ellers hitLimits = 0; // tjek om motoren er ved grænserne, og om strømmen er stoppet


Derefter går der hitgrænser. Når lineær aktuator Motoren bevæger sig fremad, når den når grænsen, og den vil deaktivere den højre lås. Hvis motoren bevæger sig baglæns, vil den deaktivere den venstre lås. Koden nedenfor viser kun den højre lås, men koden for den venstre lås er den samme.

hvis (hitLimits == hitLimitsmax && rightlatch == HØJ) {

højrelås = LAV;
hitLimits = 0;
}//slut hvis

Strømgrænsen kontrolleres, og den maksimale grænse defineres. Hvis grænsen er overskredet, vil den venstre lås blive deaktiveret, og motoren vil ikke længere kunne forlænges. For at starte forlængelsen skal motoren vendes.
hvis (CRaw> maks. amps) {

dontExtend = sandt;
leftlatch = LAV; //stop hvis feedback er over maksimum
}//slut hvis

Det bringer os til slutningen af del II at overvåge belastningsfeedbacken fra 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 os at bestille via telefon. Hvis du har spørgsmål eller bekymringer vedrørende vores produkter, er vi altid klar til at hjælpe.