Contrôleurs de moteurs
Stores motorisés pour la rénovation
Vérins à gaz
Surveillance du courant d'un vérin linéaire

Ce code d’exemple utilise MegaMoto Plus et un Arduino Uno pour surveiller le courant d’un vérin linéaire; toutefois, des produits similaires peuvent être utilisés en remplacement.

/*  Code pour surveiller l’intensité de courant consommée par l’actionneur, et couper l’alimentation si elle
  dépasse un certain seuil.

  Rédigé par Progressive Automations
  19 août 2015

  Matériel:
  - Cartes de commande RobotPower MegaMoto
  - Arduino Uno
  - 2 boutons-poussoirs
 */

const int EnablePin = 8;
const int PWMPinA = 11;
const int PWMPinB = 3; // broches pour Megamoto

const int buttonLeft = 4;
const int buttonRight = 5;//boutons pour déplacer le moteur

const int CPin1 = A5;  // rétroaction du moteur

int leftlatch = LOW;
int rightlatch = LOW;//verrous du moteur (utilisés pour la logique du code)

int hitLimits = 0;//commencer à 0
int hitLimitsmax = 10;//valeurs pour savoir si les limites de course ont été atteintes

long lastfeedbacktime = 0; // doit être de type long, sinon dépassement
int firstfeedbacktimedelay = 750; //premier délai pour ignorer le pic de courant
int feedbacktimedelay = 50; //délai entre les cycles de rétroaction, fréquence de vérification du moteur
long currentTimefeedback = 0; // doit être de type long, sinon dépassement

int debounceTime = 300; //durée d’anti-rebond des boutons, des valeurs plus faibles rendent les boutons plus sensibles
long lastButtonpress = 0; // minuterie pour l’anti-rebond
long currentTimedebounce = 0;

int CRaw = 0;      // valeur d’entrée pour les mesures de courant
int maxAmps = 0; // seuil de déclenchement 

bool dontExtend = false;
bool firstRun = true;
bool fullyRetracted = false;//logique du programme

void setup()
{
  Serial.begin(9600);
  pinMode(EnablePin, OUTPUT);
  pinMode(PWMPinA, OUTPUT);
  pinMode(PWMPinB, OUTPUT);//Définir les sorties du moteur
  pinMode(buttonLeft, INPUT);
  pinMode(buttonRight, INPUT);//boutons
  
  digitalWrite(buttonLeft, HIGH);
  digitalWrite(buttonRight, HIGH);//activer les pull-up internes
  pinMode(CPin1, INPUT);//définir l’entrée de rétroaction
  
  currentTimedebounce = millis();
  currentTimefeedback = 0;//Définir les temps initiaux

  maxAmps = 15;// DÉFINIR ICI LE COURANT MAXIMUM

}//fin setup

void loop()
{
  latchButtons();//vérifier les boutons, voir s’il faut bouger

  moveMotor();//vérifier les verrous, faire avancer ou reculer le moteur

}//fin boucle principale

void latchButtons()
{
  if (digitalRead(buttonLeft)==LOW)//gauche = avancer
  {
    currentTimedebounce = millis() - lastButtonpress;// vérifier le temps depuis la dernière pression
    if (currentTimedebounce > debounceTime && dontExtend == false)//une fois dontExtend déclenché, ignorer toutes les pressions vers l’avant
    {
      leftlatch = !leftlatch;// si le moteur est en mouvement, arrêter; s’il est arrêté, démarrer
      firstRun = true;// définir l’indicateur firstRun pour ignorer le pic de courant
      fullyRetracted = false; // une fois que vous avancez, il n’est plus entièrement rétracté
      lastButtonpress = millis();//enregistrer l’heure de la dernière pression sur un bouton
      return;
    }//fin if
  }//fin btnLEFT

  if (digitalRead(buttonRight)==LOW)//droite = reculer
  {
    currentTimedebounce = millis() - lastButtonpress;// vérifier le temps depuis la dernière pression

    if (currentTimedebounce > debounceTime)
    {
      rightlatch = !rightlatch;// si le moteur est en mouvement, arrêter; s’il est arrêté, démarrer
      firstRun = true;// définir l’indicateur firstRun pour ignorer le pic de courant
      lastButtonpress = millis();//enregistrer l’heure de la dernière pression sur un bouton
      return;    }//fin if
  }//fin btnRIGHT
}//fin latchButtons

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

}//fin moveMotor

void motorForward(int speeed)
{
  while (dontExtend == false && leftlatch == HIGH)
  {
    digitalWrite(EnablePin, HIGH);
    analogWrite(PWMPinA, speeed);
    analogWrite(PWMPinB, 0);//déplacer le moteur
    if (firstRun == true) delay(firstfeedbacktimedelay); // délai plus long pour ignorer le pic de courant
    else delay(feedbacktimedelay); //petit délai pour atteindre la vitesse

    getFeedback();
    firstRun = false;
    
    latchButtons();//revérifier les boutons
  }//fin while

}//fin motorForward

void motorBack (int speeed)
{
  while (rightlatch == HIGH)
  {
    digitalWrite(EnablePin, HIGH);
    analogWrite(PWMPinA, 0);
    analogWrite(PWMPinB, speeed);//déplacer le moteur
    if (firstRun == true) delay(firstfeedbacktimedelay);// délai plus long pour ignorer le pic de courant
    else delay(feedbacktimedelay); //petit délai pour atteindre la vitesse
    getFeedback();

    firstRun = false;
    
    latchButtons();//revérifier les boutons

  }//fin while

  dontExtend = false;//permettre au moteur de s’étendre à nouveau après rétraction

}//fin motorBack

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

  digitalWrite(EnablePin, LOW);
  firstRun = true;//une fois le moteur arrêté, réactiver firstRun pour tenir compte des pics de courant au démarrage

}//fin stopMotor

void getFeedback()
{
  CRaw = analogRead(CPin1); // Lire le courant

  if (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1;
  else hitLimits = 0; // vérifier si le moteur est aux limites et si le courant s’est arrêté 

  if (hitLimits == hitLimitsmax && rightlatch == HIGH)
  {
    rightlatch = LOW; // arrêter le moteur
    fullyRetracted = true;
  }//fin if

  else if (hitLimits == hitLimitsmax && leftlatch == HIGH)
  {
    leftlatch = LOW;//arrêter le moteur
    hitLimits = 0;
  }//fin if

  if (CRaw > maxAmps)
  {
    dontExtend = true;
    leftlatch = LOW; //arrêter si la rétroaction est supérieure au maximum
  }//fin if

  lastfeedbacktime = millis();//enregistrer l’heure précédente pour la réception de la rétroaction
}//fin getFeedback
Contrôler plusieurs actionneurs avec le shield Arduino MultiMoto
Contrôleur de moteur Wasp pour le contrôle d'un vérin linéaire
Utiliser des relais pour commander des vérins linéaires
Contrôler la temporisation du mouvement d’un vérin linéaire unique
Étendre et rétracter en continu un vérin linéaire à moteur CC sans balais
Exemples de code pour l’actionneur micro-servo PA-12
Où puis-je trouver des informations supplémentaires sur vos produits ?

Nous proposons des fiches techniques, des manuels d’utilisation, des modèles 3D, des schémas de câblage et plus encore dans nos sections Ressources et Centre d’apprentissage .

Comment déterminer quel vérin linéaire Progressive Automations est le mieux adapté à mon application ?
Qu’est-ce que le cycle de service et comment est-il calculé ?
Puis-je utiliser vos vérins linéaires pour remplacer celui que j’ai déjà ?
Que signifie course ? Comment savoir quelle taille choisir ?
Comment savoir quelle force nominale convient à mon application ?
Puis-je utiliser ma propre alimentation comme source pour mes vérins ?
Comment puis-je contrôler des vérins pour qu’ils se déplacent en même temps ?
Pourquoi mon vérin linéaire fait-il autant de bruit ?
Puis-je personnaliser un vérin linéaire selon mes spécifications ?
Puis-je synchroniser mes vérins linéaires ?
Des kits de vérins linéaires sont-ils disponibles ?
La température affectera-t-elle mon vérin linéaire ?
Puis-je intégrer l’un de vos vérins à un mécanisme tiers ?
Quel est le brochage de mon vérin linéaire ?
Puis-je obtenir des modèles CAO 3D pour mon vérin linéaire ?
Quelles sont les options de boîtiers de commande pour mon vérin ?
Puis-je utiliser vos boîtiers de commande avec un produit tiers ?
Vendez-vous des boîtiers de commande Wi‑Fi ?
Tous vos boîtiers de commande sont-ils compatibles avec tous vos vérins linéaires ?
Puis-je utiliser mon propre boîtier de commande ?
Avez-vous des exemples de code que je pourrais utiliser ?
Je n’ai pas de source d’alimentation – que puis-je faire ?
Puis-je utiliser ma propre alimentation ?
Avez-vous des alimentations 220 VAC disponibles ?
Puis-je contrôler les colonnes de levage avec un contrôleur tiers ?
Puis-je utiliser deux des colonnes de levage LG-11 ensemble ?
Quel boîtier de commande dois-je associer à mes colonnes de levage ?
Vos élévateurs de table/bureau/TV sont-ils personnalisables ?
Quelles tailles de téléviseur vos élévateurs TV peuvent-ils accueillir ?
Quelle est la capacité de charge de vos élévateurs de table/bureau ?
Mon vérin linéaire est-il fourni avec des supports de montage ?
Où puis-je trouver un guide étape par étape pour mon produit ?
J’ai suivi le schéma de câblage, mais cela ne fonctionne pas – que dois-je faire ?
Organigramme pour la sélection d’un vérin
Les boîtiers de commande FLTCON peuvent-ils fonctionner avec mes vérins ?
Qu’est-ce que le backdriving ? -- Que signifient les charges nominales dynamique et statique ? -- Qu’est-ce qu’une charge latérale ?
Comment puis-je passer une commande ?

Les commandes peuvent être passées de l’une des manières suivantes :

En ligne : Utilisez notre processus de commande en ligne avec des options de paiement par carte de crédit ou PayPal.

Téléphone : 1-800 – 676 – 6123

Email : sales@progressiveautomations.com

Proposez-vous des remises sur quantité ?
Quels moyens de paiement acceptez-vous ?
En quelle devise sont affichés vos prix ?
Comment savoir si le produit que je veux est en stock ?
Combien coûtera l’expédition et quelles méthodes proposez-vous ?

Les frais d’expédition de Progressive Automations sont calculés en fonction de divers facteurs, notamment : emplacement, quantités et poids total de votre commande. Les articles plus petits sont expédiés par colis, tandis que les articles plus volumineux et les commandes en gros sont expédiés via un service de transport de fret. Nous nous efforçons toujours d’offrir des tarifs d’expédition compétitifs à tous nos clients.

Les méthodes d’expédition sont disponibles pour les commandes en ligne et par téléphone. Si vous souhaitez obtenir une estimation des frais d’expédition de votre commande, vous pouvez le faire en consultant votre panier final.

Quelles entreprises de transport utilisez-vous ?
Devrai-je payer des droits de douane ?
Quelle est votre politique de retour ?
Quel est le délai de livraison ?
Proposez-vous la livraison gratuite ?
Je veux que le côté le plus long de mon plateau soit à gauche. Le cadre de bureau assis-debout en L peut-il être installé à gauche ou à droite ?

Oui, le bureau assis-debout en L est adaptable à l'orientation et peut être installé selon vos préférences. Voici un article pas à pas qui explique comment procéder : Manuel d'utilisation FLT-05

Comment régler les hauteurs maximale/minimale de mon cadre de bureau assis-debout ?

REMARQUE : Les étapes ci-dessous peuvent varier selon le modèle de télécommande que vous possédez. Les instructions suivantes concernent la télécommande standard RT-11. Pour régler la hauteur maximale de votre cadre, allez à la hauteur souhaitée, puis suivez les étapes ci-dessous :

  1. Appuyez sur M et vérifiez que [5 -] s'affiche à l'écran
  2. Appuyez sur la touche HAUT et constatez que [5 -] clignote
  3. Maintenez la touche M enfoncée jusqu'à voir [999] sur l'écran
  4. La hauteur maximale est maintenant définie

Pour régler la hauteur minimale de votre cadre, allez à la hauteur souhaitée, puis suivez les étapes ci-dessous :

  1. Appuyez sur M et vérifiez que [5 -] s'affiche à l'écran
  2. Appuyez sur la touche BAS et constatez que [5 -] clignote
  3. Maintenez la touche M enfoncée jusqu'à voir [000] sur l'écran
  4. La hauteur minimale est maintenant définie

Pour réinitialiser les limites, suivez les étapes ci-dessous :

  1. Appuyez sur M, vérifiez que [5 -] s'affiche à l'écran, puis relâchez
  2. Maintenez la touche M enfoncée jusqu'à voir [555]
  3. Les limites ont été réinitialisées
Je dois maintenir les boutons de la télécommande enfoncés pour atteindre ma hauteur préréglée. Existe-t-il un moyen de le faire avec une seule pression ?

REMARQUE : Les étapes ci-dessous peuvent varier selon le modèle de télécommande que vous possédez. Les instructions suivantes concernent la télécommande standard RT-11.

Si vous devez maintenir les boutons de la télécommande enfoncés pour atteindre votre hauteur préréglée, cela signifie que votre boîtier de commande est en mode momentané. Pour passer votre télécommande en mode non momentané, suivez les étapes ci-dessous

  1. Assurez-vous qu'il n'y a rien sous votre bureau, car nous devons lancer la procédure de réinitialisation
  2. Appuyez et maintenez la touche BAS jusqu'à ce que l'écran affiche [ASr]
  3. Une fois [ASr] affiché, appuyez et maintenez [1] enfoncé et vous pouvez voir deux valeurs :

    a. 10.1 = Mode non momentané
    b. 10.2 = Mode momentané

  4. Terminez la procédure de réinitialisation en maintenant la touche BAS enfoncée jusqu'à ce que votre bureau assis-debout s'abaisse légèrement puis se relève.
Comment modifier la sensibilité de la détection des collisions ?

Nos bureaux assis-debout disposent de 3 réglages pour la détection des collisions, que vous pouvez ajuster selon vos préférences. Procédez comme suit :

  1. Assurez-vous qu'il n'y a rien sous votre bureau, car nous devons lancer la procédure de réinitialisation
  2. Appuyez et maintenez la touche BAS jusqu'à ce que l'écran affiche [ASr]
  3. Une fois [ASr] affiché, appuyez et maintenez la touche HAUT [ ^ ] et vous pouvez voir trois valeurs :

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

  4. Terminez la procédure de réinitialisation en maintenant la touche BAS enfoncée jusqu'à ce que votre bureau assis-debout s'abaisse légèrement puis se relève.
Ma télécommande affiche un code d'erreur à l'écran ? Que dois-je faire ?

Nous avons préparé quelques étapes de dépannage à suivre si vous voyez l'un des codes d'erreur suivants sur les cadres avec boîtiers de commande de la série FLTCON :

Vérifiez le code d'erreur ici.

Si le problème persiste après avoir suivi ces étapes, n'hésitez pas à contacter nos ingénieurs produits au 1-800-676-6123, ou à nous écrire à sales@progressiveautomations.com.