Controladores de motor
Retrofit de persianas motorizadas
Monitoramento da corrente de um atuador linear

Este código de exemplo usa o MegaMoto Plus e um Arduino Uno para monitorar a corrente de um atuador linear; no entanto, produtos similares podem ser utilizados como alternativas.

/* Code to monitor the current amp draw of the actuator, and to cut power if it
 rises above a certain amount.

 Written by Progressive Automations
 August 19th, 2015

 Hardware:
 - RobotPower MegaMoto control boards
 - Arduino Uno
 - 2 pushbuttons
 */

const int EnablePin = 8;
const int PWMPinA = 11;
const int PWMPinB = 3; // pins for Megamoto

const int buttonLeft = 4;
const int buttonRight = 5;//buttons to move the motor

const int CPin1 = A5; // motor feedback

int leftlatch = LOW;
int rightlatch = LOW;//motor latches (used for code logic)

int hitLimits = 0;//start at 0
int hitLimitsmax = 10;//values to know if travel limits were reached

long lastfeedbacktime = 0; // must be long, else it overflows
int firstfeedbacktimedelay = 750; //first delay to ignore current spike
int feedbacktimedelay = 50; //delay between feedback cycles, how often you want the motor to be checked
long currentTimefeedback = 0; // must be long, else it overflows

int debounceTime = 300; //amount to debounce buttons, lower values makes the buttons more sensitive
long lastButtonpress = 0; // timer for debouncing
long currentTimedebounce = 0;

int CRaw = 0; // input value for current readings
int maxAmps = 0; // trip limit 

bool dontExtend = false;
bool firstRun = true;
bool fullyRetracted = false;//program logic

void setup()
{
 Serial.begin(9600);
 pinMode(EnablePin, OUTPUT);
 pinMode(PWMPinA, OUTPUT);
 pinMode(PWMPinB, OUTPUT);//Set motor outputs
 pinMode(buttonLeft, INPUT);
 pinMode(buttonRight, INPUT);//buttons
 
 digitalWrite(buttonLeft, HIGH);
 digitalWrite(buttonRight, HIGH);//enable internal pullups
 pinMode(CPin1, INPUT);//set feedback input
 
 currentTimedebounce = millis();
 currentTimefeedback = 0;//Set initial times

 maxAmps = 15;// SET MAX CURRENT HERE

}//end setup

void loop()
{
 latchButtons();//check buttons, see if we need to move

 moveMotor();//check latches, move motor in or out

}//end main loop

void latchButtons()
{
 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

 if (digitalRead(buttonRight)==LOW)//right is backwards
 {
 currentTimedebounce = millis() - lastButtonpress;// check time since last press

 if (currentTimedebounce > debounceTime)
 {
 rightlatch = !rightlatch;// if motor is moving, stop, if stopped, start moving
 firstRun = true;// set firstRun flag to ignore current spike
 lastButtonpress = millis();//store time of last button press
 return; }//end if
 }//end btnRIGHT
}//end latchButtons

void moveMotor()
{
 if (leftlatch == HIGH) motorForward(255); //speed = 0-255
 if (leftlatch == LOW) motorStop();
 if (rightlatch == HIGH) motorBack(255); //speed = 0-255
 if (rightlatch == LOW) motorStop();

}//end moveMotor

void motorForward(int speeed)
{
 while (dontExtend == false && leftlatch == HIGH)
 {
 digitalWrite(EnablePin, HIGH);
 analogWrite(PWMPinA, speeed);
 analogWrite(PWMPinB, 0);//move motor
 if (firstRun == true) delay(firstfeedbacktimedelay); // bigger delay to ignore current spike
 else delay(feedbacktimedelay); //small delay to get to speed

 getFeedback();
 firstRun = false;
 
 latchButtons();//check buttons again
 }//end while

}//end motorForward

void motorBack (int speeed)
{
 while (rightlatch == HIGH)
 {
 digitalWrite(EnablePin, HIGH);
 analogWrite(PWMPinA, 0);
 analogWrite(PWMPinB, speeed);//move motor
 if (firstRun == true) delay(firstfeedbacktimedelay);// bigger delay to ignore current spike
 else delay(feedbacktimedelay); //small delay to get to speed
 getFeedback();

 firstRun = false;
 
 latchButtons();//check buttons again

 }//end while

 dontExtend = false;//allow motor to extend again, after it has been retracted

}//end motorBack

void motorStop()
{
 analogWrite(PWMPinA, 0);
 analogWrite(PWMPinB, 0);

 digitalWrite(EnablePin, LOW);
 firstRun = true;//once the motor has stopped, reenable firstRun to account for startup current spikes

}//end stopMotor

void getFeedback()
{
 CRaw = analogRead(CPin1); // Read current

 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 

 if (hitLimits == hitLimitsmax && rightlatch == HIGH)
 {
 rightlatch = LOW; // stop motor
 fullyRetracted = true;
 }//end if

 else if (hitLimits == hitLimitsmax && leftlatch == HIGH)
 {
 leftlatch = LOW;//stop motor
 hitLimits = 0;
 }//end if

 if (CRaw > maxAmps)
 {
 dontExtend = true;
 leftlatch = LOW; //stop if feedback is over maximum
 }//end if

 lastfeedbacktime = millis();//store previous time for receiving feedback
}//end getFeedback
Controlando múltiplos atuadores com o shield MultiMoto para Arduino
Controlador de motor Wasp para controle de atuador linear
Uso de relés para controlar atuadores lineares
Controlar o tempo do movimento de um único atuador linear
Estender e retrair continuamente um atuador linear com motor CC sem escovas
Códigos de exemplo do atuador micro servo PA-12
Onde posso encontrar mais informações sobre seus produtos?

Temos fichas técnicas, manuais do usuário, modelos 3D, diagramas de fiação e muito mais em nossas seções Recursos e Centro de Aprendizado .

Como posso determinar qual atuador linear da Progressive Automations é o mais adequado para minha aplicação?
O que é ciclo de trabalho e como é calculado?
Posso usar os seus atuadores para substituir o atuador que já tenho?
O que significa Recorrido? Como saber qual tamanho escolher?
Como sei qual classificação de força é adequada para a minha aplicação?
Posso usar minha própria fonte de alimentação para meus atuadores?
Como posso controlar os atuadores para que se movam ao mesmo tempo?
Por que meu atuador linear está fazendo tanto barulho?
Posso personalizar um atuador linear conforme minhas especificações?
Posso sincronizar meus atuadores lineares?
Há kits de atuadores lineares disponíveis?
A temperatura afetará meu atuador linear?
Posso integrar um dos seus atuadores a um mecanismo de terceiros?
Qual é a pinagem do meu atuador linear?
Posso obter modelos CAD 3D para o meu atuador linear?
Quais são as opções de caixa de controle para o meu atuador?
Posso usar suas caixas de controle com um produto de terceiros?
Vocês vendem caixas de controle Wi-Fi?
Todas as suas caixas de controle são compatíveis com todos os seus atuadores lineares?
Posso usar minha própria caixa de controle?
Vocês têm exemplos de código que eu possa usar?
Não tenho uma fonte de alimentação – o que posso fazer?
Posso usar minha própria fonte de alimentação?
Vocês têm fontes de alimentação de 220 VCA disponíveis?
Posso controlar as colunas de elevação com um controlador de terceiros?
Posso usar duas colunas de elevação LG-11 juntas?
Qual caixa de controle devo usar com minhas colunas de elevação?
Os elevadores para mesa/escrivaninha/TV são personalizáveis?
Quais tamanhos de TV os seus elevadores de TV suportam?
Qual é a capacidade de carga dos seus elevadores de mesa/escrivaninha?
Meu atuador linear vem com suportes de montagem?
Onde posso encontrar um guia passo a passo para o meu produto?
Eu segui o diagrama de fiação, mas não está funcionando – o que devo fazer?
Fluxograma para seleção de atuadores
As caixas de controle FLTCON são compatíveis com meus atuadores?
O que é backdriving? -- O que significam as capacidades de carga dinâmica e estática? -- O que é carga lateral?
Como posso fazer um pedido?

Os pedidos podem ser feitos de uma das seguintes maneiras:

Online: Use nosso processo de pedido online, com opções de pagamento por cartão de crédito ou PayPal.

Telefone: 1-800 – 676 – 6123

E-mail: sales@progressiveautomations.com

Vocês oferecem descontos por quantidade?
Quais formas de pagamento vocês aceitam?
Em qual moeda estão os preços?
Como sei se o produto que quero está em estoque?
Quanto custará o frete e quais métodos de envio vocês oferecem?

As taxas de frete da Progressive Automations são calculadas com base em uma variedade de fatores, incluindo, entre outros: localização, quantidades e o peso total do seu pedido. Itens menores são enviados como encomenda, enquanto itens maiores e pedidos em volume são enviados por serviço de transportadora de cargas. Sempre nos esforçamos para oferecer preços de frete competitivos para todos os nossos clientes.

Os métodos de envio estão disponíveis em pedidos online e por telefone. Se você deseja receber uma estimativa do custo de frete do seu pedido, isso pode ser feito ao revisar seu carrinho de compras antes de finalizar.

Quais transportadoras vocês utilizam?
Terei que pagar algum imposto de importação?
Qual é a sua política de devoluções?
Qual é o prazo de entrega?
Vocês oferecem frete grátis?
Quero que o lado mais longo do meu tampo fique à esquerda. A estrutura de mesa em L pode ser instalada tanto à esquerda quanto à direita?

Sim, a mesa em L é versátil quanto à orientação e pode ser instalada conforme sua preferência. Aqui está um artigo passo a passo que explica como isso é possível: Manual do usuário FLT-05

Como defino as alturas máxima/mínima da estrutura da minha mesa elevatória?

OBSERVAÇÃO: As etapas abaixo podem variar conforme o modelo do controle remoto que você possui. As instruções a seguir foram feitas para o controle padrão RT-11. Para definir a altura máxima da sua estrutura, vá até a altura desejada e siga as etapas abaixo:

  1. Pressione M e veja [5 -] indicado no display
  2. Pressione o botão UP e note que [5 -] pisca
  3. Mantenha o botão M pressionado até ver [999] no display
  4. A altura máxima foi definida

Para definir a altura mínima da sua estrutura, vá até a altura desejada e siga as etapas abaixo:

  1. Pressione M e veja [5 -] indicado no display
  2. Pressione o botão DOWN e note que [5 -] pisca
  3. Mantenha o botão M pressionado até ver [000] no display
  4. A altura mínima foi definida

Para redefinir os limites, siga as etapas abaixo:

  1. Pressione M e veja [5 -] indicado no display e solte
  2. Mantenha o M pressionado até ver [555]
  3. Os limites foram redefinidos
Preciso manter os botões do controle pressionados para alcançar minha altura predefinida. Dá para fazer isso com apenas um toque?

OBSERVAÇÃO: As etapas abaixo podem variar conforme o modelo do controle remoto que você possui. As instruções a seguir foram feitas para o controle padrão RT-11.

Se você precisa manter os botões do controle pressionados para chegar à sua altura predefinida, isso significa que sua caixa de controle está em modo momentâneo. Para mudar seu controle para o modo não momentâneo, siga as etapas abaixo

  1. Certifique-se de que não haja nada embaixo da sua mesa, pois precisamos entrar no procedimento de redefinição
  2. Pressione e segure o botão DOWN até o display mostrar [ASr]
  3. Assim que [ASr] aparecer, pressione e segure [1] e você poderá ver dois valores:

    a. 10,1 = Modo não momentâneo
    b. 10,2 = Modo momentâneo

  4. Conclua o procedimento de redefinição mantendo o botão DOWN pressionado até que sua mesa abaixe e levante levemente.
Como altero a sensibilidade de detecção de colisão?

Nossas mesas elevatórias têm 3 configurações de detecção de colisão, e você pode ajustá-las conforme sua preferência. Para continuar, siga as etapas abaixo:

  1. Certifique-se de que não haja nada embaixo da sua mesa, pois precisamos entrar no procedimento de redefinição
  2. Pressione e segure o botão DOWN até o display mostrar [ASr]
  3. Assim que [ASr] aparecer, pressione e segure o botão UP [ ^ ] e você poderá ver três valores:

    a. 10,5 = 11 lbs
    b. 10,6 = 22 lbs
    c. 10,7 = 33 lbs

  4. Conclua o procedimento de redefinição mantendo o botão DOWN pressionado até que sua mesa abaixe e levante levemente.
Meu controle está mostrando um código de erro no display? O que devo fazer?

Temos algumas etapas de solução de problemas para você seguir caso veja algum dos seguintes códigos de erro nas estruturas com caixas de controle da série FLTCON:

Verifique o código de erro aqui.

Se o problema persistir após seguir essas etapas, entre em contato com nossos engenheiros técnicos de produto pelo 1-800-676-6123, ou envie um e-mail para sales@progressiveautomations.com.