Foto av en kontrollbox inuti

Del II: Hur man övervakar belastningsåterkopplingen från ett linjärt ställdon?

Välkommen till del II av vår guide om hur man övervakar laståterkopplingen för en linjär ställdonI Del I Vi gick igenom kopplingsprocessen och den grundläggande kodning som behövs för exemplet. I dagens guide kommer vi att gå igenom de olika avsnitten av kodningen i detalj samt några sätt att redigera den. Till att börja med kommer vi att titta på latchButtons()-avsnittet i koden.

Det första vi vill se är knappens debounce-funktion, så när vänster knapp trycks ned måste tiden sedan föregående knapptryckning beräknas. För att göra detta måste vi använda det senaste värdet som lagrades i koden och sedan använda funktionen millis() för att kontrollera tiden. När tiden är större än debounce-tiden kommer funktionen att kontrollera om ställdonet kan expandera. När båda villkoren är uppfyllda kommer funktionen att kunna fortsätta.

om (digitalRead(buttonLeft)==LOW)//vänster är framåt

{
currentTimedebounce = millis() - sistaKnapptryckning;// kontrollerar tiden sedan senaste tryckning
om (currentTimedebounce> debounceTime && dontExtend == false)//när du har utlöst dontExtend, ignorera alla framåttryckningar
{
leftlatch = !leftlatch;// Om motorn rör sig, stanna, om den stannar, börja röra sig
firstRun = true;// sätt firstRun-flaggan för att ignorera aktuell topp
helt indragen = falsk; // när du rör dig framåt är du inte helt indragen
sista knapptryckning = millis();//lagra tid för senaste knapptryckning
återvända;
}//slut om
}//slut btnLEFT


Nästa avsnitt är loopen inom funktionen motorForward(), specifikt de två fördröjningarna. Loopen startar genom att aktivera motorstyrenheten, vilket startar den linjära ställdonsmotorn. Om det är den första genom loopen kommer det att bli en större fördröjning. Fördröjningen ignorerar strömtopparna som uppstår när motorn aktiveras. Se till att inte ställa in fördröjningen för högt eftersom du inte kommer att ha någon kontroll över den när den väl startar. När motorn startar används sektionen getFeedback() för att kontrollera strömsensorn.

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

digitalWrite(EnablePin, HÖG);
analogWrite(PWMPinA, hastighet);
analogWrite(PWMPinB, 0); // flytta motorn
om (firstRun == true) delay(firstfeedbacktimedelay);
annars delay(feedbacktimedelay); //liten fördröjning för att komma igång
fåÅterkoppling();
firstRun = false;
spärrKnappar();
}//slut medan

Photo of a control box inside

Härnäst ska vi gå igenom avsnitten i rutinen get feedback(), som börjar med att läsa av den analoga pinnen som är ansluten till sensorn. Den börjar med att kontrollera om motorn är vid sina gränser och att koden känner till sina gränser när strömmen visar 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.

 

om (CRaw == 0 && träffLimits < träffLimitsmax) träffLimits = träffLimits + 1; 
annars hitLimits = 0; // kontrollera om motorn är vid gränserna och strömmen har slutat


Efter det finns det träffgränser. När linjär ställdon Motorn rör sig framåt, när den når gränsen stänger den av det högra spärren. Om motorn rör sig bakåt stänger den av det vänstra spärren. Koden nedan visar bara det högra spärren, men den vänstra spärrkoden är densamma.

om (hitLimits == hitLimitsmax && rightlatch == HÖG) {

högerspärr = LÅG;
träffgränser = 0;
}//slut om

Strömgränsen kontrolleras och maxgränsen definieras. Om gränsen överskrids kommer den vänstra spärren att stängas av och motorn kommer inte längre att förlängas. För att starta förlängningen måste motorn reverseras.
om (CRaw> maxAmp) {

dontExtend = true;
vänsterspärr = LÅG; //stoppa om återkopplingen är över maximum
}//slut om

Det leder oss till slutet av del II att övervaka laståterkopplingen för en linjär ställdon. 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 kontakta oss att beställa via telefon. Om du har några frågor eller funderingar gällande våra produkter är vi alltid redo att hjälpa till.