Willkommen zu Teil II unseres Leitfadens, wie man das Lastfeedback eines linearen Aktuators überwacht. In Teil I haben wir den Verkabelungsprozess und die grundlegende Codierung für das Beispiel durchgegangen. In unserem heutigen Leitfaden werden wir die verschiedenen Abschnitte des Codes im Detail durchgehen sowie einige Möglichkeiten, ihn zu bearbeiten. Zunächst werden wir uns den Abschnitt latchButtons() des Codes ansehen.
Das erste, was wir sehen möchten, ist das Entprellen des Buttons, sodass, wenn der linke Button gedrückt wird, die Zeit seit dem vorherigen Buttondruck berechnet werden muss. Dazu müssen wir den letzten Wert verwenden, der im Code gespeichert wurde, und dann die Funktion millis() verwenden, um die Zeit zu überprüfen. Wenn die Zeit größer ist als die Entprellzeit, wird die Funktion dann überprüfen, ob der Aktuator sich ausdehnen kann. Sobald beide Bedingungen erfüllt sind, kann die Funktion fortfahren.
if (digitalRead(buttonLeft)==LOW)//links ist vorwärts
{
currentTimedebounce = millis() - lastButtonpress;// Zeit seit dem letzten Druck überprüfen
if (currentTimedebounce > debounceTime && dontExtend == false)//wenn dontExtend aktiviert wurde, alle Vorwärtsdrücke ignorieren
{
leftlatch = !leftlatch;// wenn der Motor sich bewegt, stoppt er, wenn er stoppt, beginnt er sich zu bewegen
firstRun = true;// setze das firstRun-Flag, um den aktuellen Spike zu ignorieren
fullyRetracted = false; // wenn du vorwärts bewegst, bist du nicht vollständig zurückgezogen
lastButtonpress = millis();// Zeit des letzten Buttondrucks speichern
return;
}//Ende if
}//Ende btnLEFT
Der nächste Abschnitt ist die Schleife innerhalb der Funktion motorForward(), speziell die beiden Verzögerungen. Die Schleife beginnt mit der Aktivierung des Motorcontrollers, der den Motor des linearen Aktuators startet. Wenn es das erste Mal ist, dass die Schleife durchlaufen wird, wird es eine größere Verzögerung geben. Die Verzögerung ignoriert den Stromspitzenwert, der auftritt, wenn der Motor aktiviert wird. Stelle sicher, dass du die Verzögerung nicht zu groß einstellst, da du keine Kontrolle darüber hast, sobald sie beginnt. Wenn der Motor startet, wird der Abschnitt getFeedback() verwendet, um den Stromsensor zu überprüfen.
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 Verzögerung, um die Geschwindigkeit zu erreichen
    getFeedback();
    firstRun = false;
   
    latchButtons();
  }//Ende while

Als nächstes werden wir die Abschnitte in der Routine get feedback() durchgehen, die damit beginnt, den analogen Pin zu lesen, der mit dem Sensor verbunden ist. Sie beginnt damit, zu überprüfen, ob der Motor an seinen Grenzen ist, und der Code kennt seine Grenzen, wenn der Strom 0 anzeigt.
Leider kann es manchmal zu einer falschen Ablesung kommen, daher ist es wichtig, einen Zähler einzurichten. Dieser Zähler-Code muss bis hitLimitsmax zählen, bevor der Motor stoppt, und wenn er weniger zählt, wird er zurückgesetzt.
if (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1;
else hitLimits = 0; // überprüfen, ob der Motor an den Grenzen ist und der Strom gestoppt hat
Danach kommen die Treffergrenzen. Wenn der lineare Aktuator Motor vorwärts bewegt, wird er, wenn er die Grenze erreicht, den rechten Riegel ausschalten. Wenn der Motor rückwärts fährt, wird er den linken Riegel ausschalten. Der folgende Code zeigt nur den rechten Riegel, aber der Code für den linken Riegel ist derselbe.
if (hitLimits == hitLimitsmax && rightlatch == HIGH)  {
    rightlatch = LOW;
    hitLimits = 0;
  }//Ende if
Das aktuelle Limit wird überprüft und das maximale Limit definiert. Wenn das Limit überschritten wird, wird der linke Riegel ausgeschaltet und der Motor wird sich nicht mehr ausdehnen. Um die Ausdehnung zu starten, muss der Motor umgekehrt werden.
if (CRaw > maxAmps)  {
    dontExtend = true;
    leftlatch = LOW; //stoppen, wenn das Feedback über dem Maximum liegt
  }//Ende if
Das bringt uns zum Ende von Teil II der Überwachung des Lastfeedbacks eines linearen Aktuators. Wir haben diesmal detailliert auf spezifische Abschnitte des Codes eingegangen und erklärt, wie sie funktionieren. Wenn du eine der Einheiten bestellen möchtest, die wir in diesem Beispiel verwendet haben, kannst du online bestellen oder uns kontaktieren, um telefonisch zu bestellen. Wenn du Fragen oder Bedenken zu unseren Produkten hast, sind wir immer bereit zu helfen.
 
             
                               
             
            