Welkom bij Deel II van onze gids over het monitoren van de belastingterugkoppeling van een lineaire actuator. In Deel I hebben we het bekabelingsproces en de basiscode besproken die voor het voorbeeld nodig is. In de gids van vandaag gaan we de verschillende secties van de code in detail doornemen en ook enkele manieren bespreken om deze te bewerken. We beginnen met het gedeelte latchButtons() van de code.
Het eerste dat we willen bekijken is het debouncen van de knop; wanneer de linkerknop wordt ingedrukt, moet de tijd sinds de vorige indruk worden berekend. Hiervoor gebruiken we de laatst opgeslagen waarde in de code en vervolgens de functie millis() om de tijd te controleren. Wanneer de tijd groter is dan de debounce-tijd, controleert de functie of de actuator kan uitschuiven. Zodra aan beide voorwaarden is voldaan, kan de functie doorgaan.
if (digitalRead(buttonLeft)==LOW)//links is vooruit
{
currentTimedebounce = millis() - lastButtonpress;// tijd sinds de laatste indruk controleren
if (currentTimedebounce > debounceTime && dontExtend == false)//zodra dontExtend is geactiveerd, alle voorwaartse indrukken negeren
{
leftlatch = !leftlatch;// als de motor beweegt, stoppen; als hij stilstaat, starten
firstRun = true;// firstRun-vlag zetten om stroompiek te negeren
fullyRetracted = false; // zodra je vooruit beweegt, ben je niet volledig ingetrokken
lastButtonpress = millis();// tijd van de laatste knopindruk opslaan
return;
}//einde if
}//einde btnLEFT
De volgende sectie is de lus binnen de functie motorForward(), specifiek de twee vertragingen. De lus begint met het inschakelen van de motorcontroller, die de motor van de lineaire actuator start. Als het de eerste keer is dat de lus wordt doorlopen, is er een grotere vertraging. De vertraging negeert de stroompiek die optreedt wanneer de motor wordt geactiveerd. Zorg ervoor dat je de vertraging niet te groot instelt, want zodra die start, heb je er geen controle meer over. Wanneer de motor start, wordt het gedeelte getFeedback() gebruikt om de stroomsensor te controleren.
while (dontExtend == false && leftlatch == HIGH) {
digitalWrite(EnablePin, HIGH);
analogWrite(PWMPinA, speeed);
analogWrite(PWMPinB, 0);//motor bewegen
if (firstRun == true) delay(firstfeedbacktimedelay);
else delay(feedbacktimedelay); //kleine vertraging om op snelheid te komen
getFeedback();
firstRun = false;
latchButtons();
}//einde while

Vervolgens bespreken we de secties in de routine get feedback(), die begint met het uitlezen van de analoge pin die met de sensor is verbonden. Er wordt eerst gecontroleerd of de motor zijn limieten heeft bereikt; de code weet dat de limiet is bereikt wanneer de stroom 0 aangeeft.
Helaas kan er soms een foutieve meting zijn, dus het is belangrijk om een teller in te stellen. Deze teller moet tot hitLimitsmax tellen voordat de motor stopt, en als hij minder telt, wordt hij gereset.
if (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1;
else hitLimits = 0; // controleren of de motor de limieten heeft bereikt en de stroom is gestopt
Daarna worden de limieten geraakt. Wanneer de motor van de lineaire actuator vooruit beweegt en de limiet bereikt, wordt de rechter vergrendeling uitgeschakeld. Als de motor achteruit beweegt, wordt de linker vergrendeling uitgeschakeld. De onderstaande code toont alleen de rechter vergrendeling, maar de code voor de linker is hetzelfde.
if (hitLimits == hitLimitsmax && rightlatch == HIGH) {
rightlatch = LOW;
hitLimits = 0;
}//einde if
De stroomlimiet wordt gecontroleerd en de maximale limiet gedefinieerd. Als de limiet wordt overschreden, wordt de linker vergrendeling uitgeschakeld en zal de motor niet meer uitschuiven. Om het uitschuiven te starten, moet de motor worden omgekeerd.
if (CRaw > maxAmps) {
dontExtend = true;
leftlatch = LOW; //stoppen als de terugkoppeling boven het maximum ligt
}//einde if
Daarmee zijn we aan het einde van Deel II van het monitoren van de belastingterugkoppeling van een lineaire actuator gekomen. We zijn ditmaal dieper ingegaan op specifieke secties van de code en hebben uitgelegd hoe ze werken. Als je een van de units wilt bestellen die we in dit voorbeeld gebruikten, kun je online bestellen of contact met ons opnemen om telefonisch te bestellen. Als je vragen of opmerkingen hebt over onze producten, helpen we je graag.