Nachrüstbare motorisierte Rollos
Stromüberwachung eines Linearantriebs

Dieser Beispielcode verwendet MegaMoto Plus und einen Arduino Uno, um den Strom eines Linearantriebs zu überwachen, jedoch können ähnliche Produkte als Ersatz dienen.

/*  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
Mehrere Linearantriebe mit dem MultiMoto Arduino Shield steuern
Wasp-Motorsteuerung zur Steuerung eines Linearantriebs
Verwendung von Relais zur Steuerung von Linearantrieben
Zeitsteuerung der Bewegung eines einzelnen Linearantriebs
Einen Linearantrieb mit bürstenlosem Gleichstrommotor kontinuierlich aus- und einfahren
Beispielcodes für den PA-12 Micro-Servo-Linearantrieb
Wo finde ich weitere Informationen zu Ihren Produkten?

Wir haben Datenblätter, Benutzerhandbücher, 3D-Modelle, Schaltpläne und mehr in unseren Ressourcen und Lernzentrum Bereichen.

Wie kann ich ermitteln, welcher Linearantrieb von Progressive Automations am besten für meine Anwendung geeignet ist?
Was ist der Arbeitszyklus und wie wird er berechnet?
Kann ich Ihre Linearantriebe als Ersatz für meinen vorhandenen Antrieb verwenden?
Was bedeutet Hublänge? Woher soll ich wissen, welche Größe ich wählen soll?
Wie weiß ich, welche Kraftangabe für meine Anwendung die richtige ist?
Kann ich mein eigenes Netzteil als Stromquelle für meine Linearantriebe verwenden?
Wie kann ich Aktuatoren so steuern, dass sie gleichzeitig verfahren?
Warum ist mein Linearantrieb so laut?
Kann ich einen Linearantrieb nach meinen Spezifikationen anpassen?
Kann ich meine Linearantriebe synchronisieren?
Sind Linearantrieb-Kits erhältlich?
Beeinflusst die Temperatur meinen Linearantrieb?
Kann ich einen Ihrer Linearantriebe in einen Mechanismus eines Drittanbieters integrieren?
Wie ist die Pinbelegung meines Linearantriebs?
Kann ich 3D-CAD-Modelle für meinen Linearantrieb erhalten?
Welche Steuerbox-Optionen gibt es für meinen Linearantrieb?
Kann ich Ihre Steuerboxen mit einem Produkt eines Drittanbieters verwenden?
Verkaufen Sie Wi-Fi-Steuerboxen?
Sind alle Ihre Steuerboxen mit allen Ihren Linearantrieben kompatibel?
Kann ich meine eigene Steuerbox verwenden?
Haben Sie Beispielcode, den ich verwenden kann?
Ich habe keine Stromquelle – was kann ich tun?
Kann ich mein eigenes Netzteil verwenden?
Haben Sie Netzteile für 220 VAC verfügbar?
Kann ich die Hubsäulen mit einem Controller eines Drittanbieters steuern?
Kann ich zwei der LG-11-Hubsäulen zusammen verwenden?
Welche Steuerbox sollte ich mit meinen Hubsäulen koppeln?
Sind Ihre Tisch-/Schreibtisch-/TV-Lifte anpassbar?
Welche TV-Größen können Ihre TV-Lifte aufnehmen?
Wie hoch ist die Tragfähigkeit Ihrer Tisch-/Schreibtischlifte?
Wird mein Linearantrieb mit Montagehalterungen geliefert?
Wo finde ich eine Schritt-für-Schritt-Anleitung für mein Produkt?
Ich bin dem Schaltplan gefolgt, aber es funktioniert nicht – was soll ich tun?
Flussdiagramm zur Auswahl eines Linearantriebs
Sind die FLTCON-Steuerboxen mit meinen Linearantrieben kompatibel?
Was ist Backdriving? -- Was bedeuten dynamische und statische Lastangaben? -- Was ist eine Querbelastung?
Wie kann ich eine Bestellung aufgeben?

Bestellungen können auf eine der folgenden Arten aufgegeben werden:

Online: Nutzen Sie unseren Online-Bestellprozess mit der Möglichkeit, per Kreditkarte oder PayPal zu bezahlen.

Telefon: 1-800 – 676 – 6123

E-Mail: sales@progressiveautomations.com

Bieten Sie Mengenrabatte an?
Welche Zahlungsmethoden akzeptieren Sie?
In welcher Währung sind Ihre Preise angegeben?
Woher weiß ich, ob das gewünschte Produkt auf Lager ist?
Wie hoch sind die Versandkosten und welche Versandmethoden bieten Sie an?

Die Versandgebühren von Progressive Automations werden anhand verschiedener Faktoren berechnet, darunter unter anderem: Standort, Bestellmengen und das Gesamtgewicht Ihrer Bestellung. Kleinere Artikel werden per Paketdienst verschickt, während größere Artikel und Großbestellungen per Speditionsdienst versendet werden. Wir bemühen uns stets, allen unseren Kunden wettbewerbsfähige Versandpreise zu bieten.

Versandmethoden sind bei Online- und telefonischen Bestellungen verfügbar. Wenn Sie eine geschätzte Versandkostenangabe für Ihre Bestellung wünschen, können Sie diese einsehen, indem Sie Ihren endgültigen Warenkorb überprüfen.

Welche Speditionsunternehmen nutzen Sie?
Muss ich Zollgebühren zahlen?
Wie lautet Ihre Rückgaberichtlinie?
Wie lange dauert die Lieferung?
Bieten Sie kostenlosen Versand an?
Ich möchte, dass die längere Seite meiner Tischplatte links ist. Kann der L-förmige Stehschreibtischrahmen links oder rechts installiert werden?

Ja, der L-förmige Stehschreibtisch ist orientierungsfreundlich und kann nach Ihren Wünschen installiert werden. Hier ist ein Schritt-für-Schritt-Artikel, der erklärt, wie dies möglich ist: FLT-05 Benutzerhandbuch

Wie stelle ich die maximalen/minimalen Höhen für meine Stehschreibtischrahmen ein?

HINWEIS: Die folgenden Schritte können je nach dem Modell der Fernbedienung, das Sie haben, variieren. Die folgenden Anweisungen wurden für die Standard-Fernbedienung RT-11 erstellt. Um die maximale Höhe für Ihren Rahmen einzustellen, gehen Sie zur gewünschten Höhe, die Sie einstellen möchten, und folgen Sie den folgenden Schritten:

  1. Drücken Sie M und sehen Sie [5 -] auf dem Display angezeigt
  2. Drücken Sie die AUF-Taste und beachten Sie, dass [5 -] blinkt
  3. Halten Sie die M-Taste gedrückt, bis [999] auf dem Display angezeigt wird
  4. Die maximale Höhe wurde nun eingestellt

Um die minimale Höhe für Ihren Rahmen einzustellen, gehen Sie zur gewünschten Höhe, die Sie einstellen möchten, und folgen Sie den folgenden Schritten:

  1. Drücken Sie M und sehen Sie [5 -] auf dem Display angezeigt
  2. Drücken Sie die RUNTER-Taste und beachten Sie, dass [5 -] blinkt
  3. Halten Sie die M-Taste gedrückt, bis [000] auf dem Display angezeigt wird
  4. Die minimale Höhe wurde nun eingestellt

Um die Grenzen zurückzusetzen, folgen Sie den folgenden Schritten:

  1. Drücken Sie M und sehen Sie [5 -] auf dem Display angezeigt und lassen Sie los
  2. Halten Sie die M-Taste gedrückt, bis Sie [555] sehen
  3. Die Grenzen wurden zurückgesetzt
Ich muss die Tasten der Fernbedienung gedrückt halten, um meine voreingestellte Höhe zu erreichen. Gibt es eine Möglichkeit, dies mit nur einem Druck zu tun?

HINWEIS: Die folgenden Schritte können je nach dem Modell der Fernbedienung, das Sie haben, variieren. Die folgenden Anweisungen wurden für die Standard-Fernbedienung RT-11 erstellt.

Wenn Sie die Tasten der Fernbedienung gedrückt halten müssen, um zu Ihrer voreingestellten Höhe zu gelangen, bedeutet dies, dass Ihre Steuerbox im momentanen Modus ist. Um Ihre Fernbedienung auf den nicht-momentanen Modus einzustellen, folgen Sie den folgenden Schritten

  1. Stellen Sie sicher, dass sich nichts unter Ihrem Schreibtisch befindet, da wir in das Rücksetzverfahren eintreten müssen
  2. Drücken und halten Sie die RUNTER-Taste, bis das Display [ASr] anzeigt
  3. Sobald [ASr] angezeigt wird, drücken und halten Sie [1] gedrückt und Sie sehen möglicherweise zwei Werte:

    a. 10.1 = Nicht-momentaner Modus
    b. 10.2 = Momentaner Modus

  4. Schließen Sie das Rücksetzverfahren ab, indem Sie die RUNTER-Taste gedrückt halten, bis Ihr Stehschreibtisch leicht absenkt und anhebt.
Wie ändere ich die Empfindlichkeit der Kollisionsdetektion?

Unsere Stehschreibtische haben 3 Einstellungen für die Kollisionsdetektion, und dies kann je nach Ihren Vorlieben eingestellt werden. Um fortzufahren, folgen Sie den folgenden Schritten:

  1. Stellen Sie sicher, dass sich nichts unter Ihrem Schreibtisch befindet, da wir in das Rücksetzverfahren eintreten müssen
  2. Drücken und halten Sie die RUNTER-Taste, bis das Display [ASr] anzeigt
  3. Sobald [ASr] angezeigt wird, drücken und halten Sie die AUF-Taste [ ^ ] und Sie sehen möglicherweise drei Werte:

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

  4. Schließen Sie das Rücksetzverfahren ab, indem Sie die RUNTER-Taste gedrückt halten, bis Ihr Stehschreibtisch leicht absenkt und anhebt.
Meine Fernbedienung zeigt einen Fehlercode auf dem Display an? Was soll ich tun?

Wir haben einige Schritte zur Fehlersuche für Sie, wenn Sie einen der folgenden Fehlercodes auf den Rahmen mit FLTCON-Serie Steuerboxen sehen:

Überprüfen Sie den Fehlercode hier.

Wenn das Problem, das Sie haben, nach Befolgung dieser Schritte weiterhin besteht, zögern Sie bitte nicht, unsere technischen Produktingenieure unter 1-800-676-6123 zu kontaktieren oder uns eine E-Mail an sales@progressiveautomations.com zu senden.