Photo of a control box inside

Parte II: Como monitorar o feedback de carga de um atuador linear?

Guest Writer
Guest Writer
PA Engineer

Bem-vindo à Parte II do nosso guia sobre como monitorar o feedback de carga de um atuador linear. Na Parte I passamos pelo processo de cabeamento e pela programação básica necessária para o exemplo. No guia de hoje, veremos em detalhes as diferentes seções do código, além de algumas formas de editá-lo. Para começar, veremos a seção de código latchButtons().

A primeira coisa que queremos observar é o anti-repique (debounce) do botão; assim, quando o botão esquerdo for pressionado, é preciso calcular o tempo desde a pressão anterior. Para isso, utilizaremos o último valor armazenado no código e, em seguida, a função millis() para verificar o tempo. Quando esse tempo for maior que o tempo de debounce, a função verificará se o atuador pode se estender. Quando ambas as condições forem atendidas, a função poderá continuar.

if (digitalRead(buttonLeft)==LOW)//left is forwards

{
currentTimedebounce = millis() - lastButtonpress;// check time since last press
if (currentTimedebounce > debounceTime && dontExtend == false)//once you've tripped dontExtend, ignore all forwards presses
{
leftlatch = !leftlatch;// if motor is moving, stop, if stopped, start moving
firstRun = true;// set firstRun flag to ignore current spike
fullyRetracted = false; // once you move forwards, you are not fully retracted
lastButtonpress = millis();//store time of last button press
return;
}//end if
}//end btnLEFT


A próxima seção é o loop dentro da função motorForward(), especificamente os dois delays. O loop começa acionando o controlador do motor, o que inicia o motor do atuador linear. Se for a primeira passagem pelo loop, haverá um atraso maior. Esse atraso ignora o pico de corrente que ocorre quando o motor é acionado. Certifique-se de não definir um atraso muito grande, pois você não terá controle sobre ele depois que começar. Quando o motor inicia, a seção getFeedback() é usada para verificar o sensor de corrente.

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

digitalWrite(EnablePin, HIGH);
analogWrite(PWMPinA, speeed);
analogWrite(PWMPinB, 0);//move motor
if (firstRun == true) delay(firstfeedbacktimedelay);
else delay(feedbacktimedelay); //small delay to get to speed
getFeedback();
firstRun = false;
latchButtons();
}//end while

Foto de uma caixa de controle por dentro

Em seguida, veremos as seções da rotina get feedback(), que começa lendo o pino analógico conectado ao sensor. Ela começa verificando se o motor está em seus limites; o código reconhece os limites quando a corrente é 0.

Infelizmente, às vezes pode haver uma leitura falsa, então é importante configurar um contador. Esse código de contagem precisa contar até hitLimitsmax antes que o motor pare e, se contar menos que isso, será reiniciado.

 

if (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1;  

else hitLimits = 0; // check to see if the motor is at the limits and the current has stopped


Depois disso, são tratados os limites atingidos. Quando o motor do atuador linear se move para frente e atinge o limite, ele desativa o travamento direito. Se o motor se mover para trás, ele desativa o travamento esquerdo. O código abaixo mostra apenas o travamento direito, mas o do travamento esquerdo é igual.

if (hitLimits == hitLimitsmax && rightlatch == HIGH)  {

rightlatch = LOW;
hitLimits = 0;
}//end if

O limite de corrente é verificado e o limite máximo é definido. Se o limite for excedido, o travamento esquerdo será desativado e o motor não se estenderá mais. Para iniciar a extensão, é necessário inverter o motor.
if (CRaw > maxAmps)  {

dontExtend = true;
leftlatch = LOW; //stop if feedback is over maximum
}//end if

Isso nos leva ao fim da Parte II do monitoramento do feedback de carga de um atuador linear. Desta vez, entramos em detalhes sobre seções específicas do código e explicamos como elas funcionam. Se você quiser encomendar quaisquer unidades usadas neste exemplo, pode fazer o pedido on-line ou entrar em contato conosco para comprar por telefone. Se tiver dúvidas ou preocupações sobre nossos produtos, estamos sempre prontos para ajudar.