Retrofit Motorized Shades
Gas Springs
Monitoring the current of a linear actuator

Tämä esimerkkikoodi käyttää MegaMoto Plussaa ja Arduino Uno -lautaa lineaarisen toimilaitteen virran seurantaan; vastaavat tuotteet voivat toimia korvaavina.

/*  Koodi toimilaitteen virrankulutuksen (A) valvontaan ja virran katkaisuun,
  jos se nousee tietyn raja-arvon yli.

  Kirjoittanut Progressive Automations
  19. elokuuta 2015

  Laitteisto:
  - RobotPower MegaMoto -ohjainkortit
  - Arduino Uno
  - 2 painiketta
 */

const int EnablePin = 8;
const int PWMPinA = 11;
const int PWMPinB = 3; // Megamoto-nastat

const int buttonLeft = 4;
const int buttonRight = 5;//painikkeet moottorin liikuttamiseen

const int CPin1 = A5;  // moottorin palaute

int leftlatch = LOW;
int rightlatch = LOW;//moottorin lukot (koodilogiikkaa varten)

int hitLimits = 0;//start at 0
int hitLimitsmax = 10;//arvot, joista tiedetään, onko liikerajat saavutettu

long lastfeedbacktime = 0; // oltava long, muuten ylivuoto
int firstfeedbacktimedelay = 750; // ensimmäinen viive käynnistysvirtapiikin ohittamiseksi
int feedbacktimedelay = 50; // viive palautesykleissä; kuinka usein moottori tarkistetaan
long currentTimefeedback = 0; // oltava long, muuten ylivuoto

int debounceTime = 300; // painikkeiden poimintojen suodatus; pienempi arvo = herkempi
long lastButtonpress = 0; // ajastin poimintojen suodatukseen
long currentTimedebounce = 0;

int CRaw = 0;      // syötearvo virtalukemille
int maxAmps = 0; // laukaisuraja 

bool dontExtend = false;
bool firstRun = true;
bool fullyRetracted = false;//ohjelmalogiikka

void setup()
{
  Serial.begin(9600);
  pinMode(EnablePin, OUTPUT);
  pinMode(PWMPinA, OUTPUT);
  pinMode(PWMPinB, OUTPUT);//Aseta moottorin lähdöt
  pinMode(buttonLeft, INPUT);
  pinMode(buttonRight, INPUT);//painikkeet
  
  digitalWrite(buttonLeft, HIGH);
  digitalWrite(buttonRight, HIGH);//ota sisäiset vetovastukset käyttöön
  pinMode(CPin1, INPUT);//aseta palautteen tulo
  
  currentTimedebounce = millis();
  currentTimefeedback = 0;//Aseta alkuarvot

  maxAmps = 15;// ASETTAA MAKSIMIVIRRAN TÄHÄN

}//setup loppu

void loop()
{
  latchButtons();//tarkista painikkeet, pitääkö liikuttaa

  moveMotor();//tarkista lukot, liikuta moottoria sisään tai ulos

}//pääsilmukan loppu

void latchButtons()
{
  if (digitalRead(buttonLeft)==LOW)//vasen = eteenpäin
  {
    currentTimedebounce = millis() - lastButtonpress;// aika viime painalluksesta
    if (currentTimedebounce > debounceTime && dontExtend == false)//kun dontExtend on aktivoitu, ohita kaikki eteenpäin-painallukset
    {
      leftlatch = !leftlatch;// jos moottori liikkuu, pysäytä; jos pysähdyksissä, käynnistä
      firstRun = true;// ohita käynnistysvirtapiikki
      fullyRetracted = false; // kun liikut eteenpäin, et ole enää täysin sisäänvedetty
      lastButtonpress = millis();//tallenna viime painalluksen aika
      return;
    }//if loppu
  }//btnLEFT loppu

  if (digitalRead(buttonRight)==LOW)//oikea = taaksepäin
  {
    currentTimedebounce = millis() - lastButtonpress;// aika viime painalluksesta

    if (currentTimedebounce > debounceTime)
    {
      rightlatch = !rightlatch;// jos moottori liikkuu, pysäytä; jos pysähdyksissä, käynnistä
      firstRun = true;// ohita käynnistysvirtapiikki
      lastButtonpress = millis();//tallenna viime painalluksen aika
      return;    }//if loppu
  }//btnRIGHT loppu
}//latchButtons loppu

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

}//moveMotor loppu

void motorForward(int speeed)
{
  while (dontExtend == false && leftlatch == HIGH)
  {
    digitalWrite(EnablePin, HIGH);
    analogWrite(PWMPinA, speeed);
    analogWrite(PWMPinB, 0);//liikuta moottoria
    if (firstRun == true) delay(firstfeedbacktimedelay); // pidempi viive, jotta käynnistysvirtapiikki ohitetaan
    else delay(feedbacktimedelay); //pieni viive nopeuteen pääsemiseksi

    getFeedback();
    firstRun = false;
    
    latchButtons();//tarkista painikkeet uudelleen
  }//while loppu

}//motorForward loppu

void motorBack (int speeed)
{
  while (rightlatch == HIGH)
  {
    digitalWrite(EnablePin, HIGH);
    analogWrite(PWMPinA, 0);
    analogWrite(PWMPinB, speeed);//liikuta moottoria
    if (firstRun == true) delay(firstfeedbacktimedelay);// pidempi viive, jotta käynnistysvirtapiikki ohitetaan
    else delay(feedbacktimedelay); //pieni viive nopeuteen pääsemiseksi
    getFeedback();

    firstRun = false;
    
    latchButtons();//tarkista painikkeet uudelleen

  }//while loppu

  dontExtend = false;//salli moottorin pidentyä uudelleen sisäänvedon jälkeen

}//motorBack loppu

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

  digitalWrite(EnablePin, LOW);
  firstRun = true;//kun moottori on pysähtynyt, ota firstRun uudelleen käyttöön käynnistysvirtapiikkien varalta

}//stopMotor loppu

void getFeedback()
{
  CRaw = analogRead(CPin1); // Lue virta

  if (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1;
  else hitLimits = 0; // tarkista, onko moottori rajoissa ja onko virta loppunut 

  if (hitLimits == hitLimitsmax && rightlatch == HIGH)
  {
    rightlatch = LOW; // pysäytä moottori
    fullyRetracted = true;
  }//if loppu

  else if (hitLimits == hitLimitsmax && leftlatch == HIGH)
  {
    leftlatch = LOW;//pysäytä moottori
    hitLimits = 0;
  }//if loppu

  if (CRaw > maxAmps)
  {
    dontExtend = true;
    leftlatch = LOW; //pysäytä, jos palaute ylittää maksimin
  }//if loppu

  lastfeedbacktime = millis();//tallenna edellinen palautteen vastaanottoaika
}//getFeedback loppu
Controlling multiple actuators with the multimoto Arduino shield
Wasp motor controller for linear actuator control
Using relays to control linear actuators
Controlling the timing of a single linear actuators motion
Continuously extend & retract a linear actuator with brushless DC motor
PA-12 micro servo actuator sample codes
Where can I find additional information on your products?

We have data sheets, user manuals, 3D models, wiring diagrams and more in our Resources and Learning Center sections.

How can I determine which progressive automations linear actuator is best suited for my application?
What is duty cycle and how is it calculated?
Can I use your actuators to replace the one that I already have?
What does stroke mean? How am I supposed to know which size to choose?
How do I know which force rating is right for my application?
Can I use my own power supply as a source for my actuators?
How can I control actuators to travel at the same time?
Why is my linear actuator making so much noise?
Can I customize a linear actuator to my specifications?
Can I synchronize my linear actuators?
Are linear actuator kits available?
Will temperature affect my linear actuator?
Can I implement one of your actuators into a third-party mechanism?
What is the pin out for my linear actuator?
Can I get 3D CAD models for my linear actuator?
What are the control box options for my actuator?
Can I use your control boxes with a third-party product?
Do you sell Wi-Fi control boxes?
Are all of your control boxes compatible with all of your linear actuators?
Can I use my own control box?
Do you have sample coding I could use?
I don’t have a power source – what can I do?
Can I use my own power supply?
Do you have 220 VAC power supplies available?
Can I control the lifting columns with a third-party controller?
Can I use two of the LG-11 lifting columns together?
What control box should I pair with my lifting columns?
Are your table/desk/TV lifts customizable?
What TV sizes can your TV lifts hold?
What is the weight capacity of your table/desk lifts?
Does my linear actuator come with mounting brackets?
Where can I find a step-by-step guide for my product?
I followed the wiring diagram but it’s not working – what should I do?
Flowchart for actuator selection
Can the FLTCON control boxes work with my actuators?
What is backdriving? -- What does dynamic and static load ratings mean? -- What is lateral loading?
How can I place an order?

Orders can be placed by one of the following ways:

Online: Use our online order process with options to pay by Credit Card or PayPal.

Phone: 1-800 – 676 – 6123

Email: sales@progressiveautomations.com

Do you offer quantity discounts?
What methods of payment do you accept?
What form of currency are your prices in?
How do I know if the product I want is in stock?
How much will shipping cost and what methods do you offer?

Progressive Automations’ shipping fees are calculated based on a variety of factors including but not limited to: location, quantities, and the total weight of your order. Smaller items are shipped via parcel while larger items and bulk orders are shipped via a freight carrier service. We always endeavor to provide competitive shipping prices for all our customers.

Shipping methods are available through online and phone orders. If you wish to receive an estimated shipping cost of your order, this can be done by reviewing your final shopping cart.

What freight companies do you use?
Will I be charged with any duty tax?
What is your return policy?
How long is delivery?
Do you offer free shipping?
Haluan pöytälevyni pidemmän sivun vasemmalle. Voiko L-muotoinen seisomapöydän runko asentaa sekä vasemmalle että oikealle?

Kyllä, L-muotoinen seisomapöytä on suunnan suhteen joustava ja voidaan asentaa toiveidesi mukaan. Tässä on vaiheittainen artikkeli, joka selittää, miten tämä on mahdollista: FLT-05-käyttöohje

Miten asetan seisomapöydän rungon/runkoni enimmäis-/vähimmäiskorkeuden?

HUOM: Alla olevat vaiheet voivat vaihdella sen mukaan, mikä kaukosäädinmalli sinulla on. Seuraavat ohjeet on tehty vakio RT-11 -kaukosäätimelle. Asettaaksesi rungon enimmäiskorkeuden siirry haluamaasi korkeuteen ja seuraa alla olevia vaiheita:

  1. Paina M ja näet näytössä [5 -]
  2. Paina UP-painiketta ja huomaat, että [5 -] vilkkuu
  3. Pidä M-painiketta pohjassa, kunnes näytössä näkyy [999]
  4. Enimmäiskorkeus on nyt asetettu

Asettaaksesi rungon vähimmäiskorkeuden siirry haluamaasi korkeuteen ja seuraa alla olevia vaiheita:

  1. Paina M ja näet näytössä [5 -]
  2. Paina DOWN-painiketta ja huomaat, että [5 -] vilkkuu
  3. Pidä M-painiketta pohjassa, kunnes näytössä näkyy [000]
  4. Vähimmäiskorkeus on nyt asetettu

Palauttaaksesi rajat, toimi seuraavasti:

  1. Paina M, kunnes näytössä näkyy [5 -], ja vapauta
  2. Pidä M pohjassa, kunnes näet [555]
  3. Rajat on nollattu
Minun täytyy pitää kaukosäätimen painikkeita pohjassa, jotta pääsen esiasetettuun korkeuteeni. Onko tätä mahdollista tehdä yhdellä painalluksella?

HUOM: Alla olevat vaiheet voivat vaihdella sen mukaan, mikä kaukosäädin sinulla on. Seuraavat ohjeet on tehty vakio RT-11 -kaukosäätimelle.

Jos sinun täytyy pitää kaukosäätimen painikkeita pohjassa päästäksesi esiasetettuun korkeuteen, ohjainrasiasi toimii hetkellisessä ohjauksessa (momentary). Vaihtaaksesi kaukosäätimen pysyvään tilaan (non-momentary), toimi näin

  1. Varmista, ettei pöytäsi alla ole mitään, koska meidän on aloitettava nollausmenettely
  2. Paina ja pidä DOWN-painiketta, kunnes näytössä näkyy [ASr]
  3. Kun [ASr] näkyy, paina ja pidä [1]; voit nähdä kaksi arvoa:

    a. 10.1 = Non-momentary Mode
    b. 10.2 = Momentary Mode

  4. Viimeistele nollausmenettely pitämällä DOWN-painiketta, kunnes seisomapöytäsi laskeutuu hieman ja nousee takaisin.
Miten muutan törmäyksen tunnistuksen herkkyyttä?

Seisomapöydissämme on 3 asetusta törmäyksen tunnistukselle, ja sen voi asettaa mieltymystesi mukaan. Jatka seuraavasti:

  1. Varmista, ettei pöytäsi alla ole mitään, koska meidän on aloitettava nollausmenettely
  2. Paina ja pidä DOWN-painiketta, kunnes näytössä näkyy [ASr]
  3. Kun [ASr] näkyy, paina ja pidä UP- [ ^ ] -painiketta; voit nähdä kolme arvoa:

    a. 10.5 = 11 lbs
    b. 10.6 = 22 lbs
    c. 10.7 = 33 lbs

  4. Viimeistele nollausmenettely pitämällä DOWN-painiketta, kunnes seisomapöytäsi laskeutuu hieman ja nousee takaisin.
Kaukosäätimeni näyttää virhekoodin näytössä? Mitä minun pitäisi tehdä?

Tässä on joitakin vianmääritysvaiheita, jos näet minkä tahansa seuraavista virhekoodeista FLTCON-sarjan ohjainrasioilla varustetuissa rungoissa:

Tarkista virhekoodi täällä.

Jos kokemasi ongelma jatkuu näiden vaiheiden jälkeen, ota rohkeasti yhteyttä teknisiin tuoteinsinööreihimme numeroon 1-800-676-6123 tai lähetä meille sähköpostia osoitteeseen sales@progressiveautomations.com.