Tende a rullo motorizzate installabili a posteriori
Monitoraggio della corrente di un attuatore lineare

Questo esempio di codice utilizza MegaMoto Plus e un Arduino Uno per monitorare la Corrente di un Attuatore lineare; tuttavia, prodotti simili possono essere usati come sostituti.

/*  Codice per monitorare l'assorbimento di Corrente dell'Attuatore e togliere alimentazione se
  sale oltre una certa soglia.

  Scritto da Progressive Automations
  19 agosto 2015

  Hardware:
  - Schede di controllo RobotPower MegaMoto
  - Arduino Uno
  - 2 pulsanti
 */

const int EnablePin = 8;
const int PWMPinA = 11;
const int PWMPinB = 3; // pin per Megamoto

const int buttonLeft = 4;
const int buttonRight = 5;//pulsanti per muovere il Motore

const int CPin1 = A5;  // Feedback del Motore

int leftlatch = LOW;
int rightlatch = LOW;//latch del Motore (usati per la logica del codice)

int hitLimits = 0;//inizia a 0
int hitLimitsmax = 10;//valori per sapere se sono stati raggiunti i limiti di Corsa

long lastfeedbacktime = 0; // deve essere long, altrimenti va in overflow
int firstfeedbacktimedelay = 750; // primo ritardo per ignorare il picco di Corrente
int feedbacktimedelay = 50; // ritardo tra i cicli di Feedback, quanto spesso vuoi che il Motore venga controllato
long currentTimefeedback = 0; // deve essere long, altrimenti va in overflow

int debounceTime = 300; // tempo per il debounce dei pulsanti; valori più bassi rendono i pulsanti più sensibili
long lastButtonpress = 0; // timer per il debounce
long currentTimedebounce = 0;

int CRaw = 0;      // valore di ingresso per le letture di Corrente
int maxAmps = 0; // soglia di intervento 

bool dontExtend = false;
bool firstRun = true;
bool fullyRetracted = false;//logica del programma

void setup()
{
  Serial.begin(9600);
  pinMode(EnablePin, OUTPUT);
  pinMode(PWMPinA, OUTPUT);
  pinMode(PWMPinB, OUTPUT);//Imposta le uscite del Motore
  pinMode(buttonLeft, INPUT);
  pinMode(buttonRight, INPUT);//pulsanti
  
  digitalWrite(buttonLeft, HIGH);
  digitalWrite(buttonRight, HIGH);//abilita le pull-up interne
  pinMode(CPin1, INPUT);//imposta l'ingresso di Feedback
  
  currentTimedebounce = millis();
  currentTimefeedback = 0;//Imposta i tempi iniziali

  maxAmps = 15;// IMPOSTA QUI LA CORRENTE MASSIMA

}//fine setup

void loop()
{
  latchButtons();//controlla i pulsanti, verifica se dobbiamo muoverci

  moveMotor();//controlla i latch, muovi il Motore avanti o indietro

}//fine main loop

void latchButtons()
{
  if (digitalRead(buttonLeft)==LOW)//sinistra = avanti
  {
    currentTimedebounce = millis() - lastButtonpress;// controlla il tempo dall'ultima pressione
    if (currentTimedebounce > debounceTime && dontExtend == false)//una volta attivato dontExtend, ignora tutte le pressioni in avanti
    {
      leftlatch = !leftlatch;// se il Motore è in movimento, fermalo; se è fermo, avvialo
      firstRun = true;// imposta il flag firstRun per ignorare il picco di Corrente
      fullyRetracted = false; // una volta che ti muovi in avanti, non sei completamente retratto
      lastButtonpress = millis();//memorizza l'ora dell'ultima pressione del pulsante
      return;
    }//fine if
  }//fine btnLEFT

  if (digitalRead(buttonRight)==LOW)//destra = indietro
  {
    currentTimedebounce = millis() - lastButtonpress;// controlla il tempo dall'ultima pressione

    if (currentTimedebounce > debounceTime)
    {
      rightlatch = !rightlatch;// se il Motore è in movimento, fermalo; se è fermo, avvialo
      firstRun = true;// imposta il flag firstRun per ignorare il picco di Corrente
      lastButtonpress = millis();//memorizza l'ora dell'ultima pressione del pulsante
      return;    }//fine if
  }//fine btnRIGHT
}//fine latchButtons

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

}//fine moveMotor

void motorForward(int speeed)
{
  while (dontExtend == false && leftlatch == HIGH)
  {
    digitalWrite(EnablePin, HIGH);
    analogWrite(PWMPinA, speeed);
    analogWrite(PWMPinB, 0);//muovi il Motore
    if (firstRun == true) delay(firstfeedbacktimedelay); // ritardo maggiore per ignorare il picco di Corrente
    else delay(feedbacktimedelay); //breve ritardo per raggiungere la Velocità

    getFeedback();
    firstRun = false;
    
    latchButtons();//controlla di nuovo i pulsanti
  }//fine while

}//fine motorForward

void motorBack (int speeed)
{
  while (rightlatch == HIGH)
  {
    digitalWrite(EnablePin, HIGH);
    analogWrite(PWMPinA, 0);
    analogWrite(PWMPinB, speeed);//muovi il Motore
    if (firstRun == true) delay(firstfeedbacktimedelay);// ritardo maggiore per ignorare il picco di Corrente
    else delay(feedbacktimedelay); //breve ritardo per raggiungere la Velocità
    getFeedback();

    firstRun = false;
    
    latchButtons();//controlla di nuovo i pulsanti

  }//fine while

  dontExtend = false;//consenti di nuovo l'estensione del Motore, dopo che è stato retratto

}//fine motorBack

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

  digitalWrite(EnablePin, LOW);
  firstRun = true;//una volta che il Motore si è fermato, riabilita firstRun per tenere conto dei picchi di Corrente all'avvio

}//fine stopMotor

void getFeedback()
{
  CRaw = analogRead(CPin1); // Leggi la Corrente

  if (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1;
  else hitLimits = 0; // verifica se il Motore è ai limiti e la Corrente si è fermata 

  if (hitLimits == hitLimitsmax && rightlatch == HIGH)
  {
    rightlatch = LOW; // ferma il Motore
    fullyRetracted = true;
  }//fine if

  else if (hitLimits == hitLimitsmax && leftlatch == HIGH)
  {
    leftlatch = LOW;//ferma il Motore
    hitLimits = 0;
  }//fine if

  if (CRaw > maxAmps)
  {
    dontExtend = true;
    leftlatch = LOW; //ferma se il Feedback supera il massimo
  }//fine if

  lastfeedbacktime = millis();//memorizza l'ora precedente per la ricezione del Feedback
}//fine getFeedback
Controllare più attuatori con la shield Arduino MultiMoto
Controller motore Wasp per il controllo di un attuatore lineare
Uso di relè per controllare attuatori lineari
Controllare la temporizzazione del movimento di un singolo attuatore lineare
Estendere e ritrarre continuamente un attuatore lineare con motore CC brushless
Codici di esempio per il micro attuatore servo PA-12
Dove posso trovare ulteriori informazioni sui vostri prodotti?

Abbiamo schede tecniche, manuali utente, modelli 3D, schemi elettrici e altro ancora nel nostro Risorse E Centro di apprendimento sezioni.

Come posso determinare quale attuatore lineare di Progressive Automation è più adatto alla mia applicazione?
Che cos'è il duty cycle e come viene calcolato?
Posso utilizzare i vostri attuatori per sostituire quello che già possiedo?
Che cosa significa ictus? Come faccio a sapere quale taglia scegliere?
Come faccio a sapere qual è il valore di forza nominale più adatto alla mia applicazione?
Posso utilizzare il mio alimentatore come fonte di alimentazione per i miei attuatori?
Come posso controllare gli attuatori in modo che si muovano contemporaneamente?
Perché il mio attuatore lineare fa così tanto rumore?
È possibile personalizzare un attuatore lineare in base alle mie specifiche?
È possibile sincronizzare gli attuatori lineari?
Sono disponibili kit per attuatori lineari?
La temperatura influirà sul funzionamento del mio attuatore lineare?
Posso integrare uno dei vostri attuatori in un meccanismo di terze parti?
Qual è la piedinatura del mio attuatore lineare?
Posso ottenere modelli CAD 3D per il mio attuatore lineare?
Quali sono le opzioni per la centralina di controllo del mio attuatore?
Posso utilizzare le vostre centraline di controllo con un prodotto di terze parti?
Vendete centraline di controllo Wi-Fi?
Tutte le vostre centraline di controllo sono compatibili con tutti i vostri attuatori lineari?
Posso utilizzare la mia centralina di controllo?
Avresti per caso un esempio di codice che potrei utilizzare?
Non ho una fonte di alimentazione elettrica: cosa posso fare?
Posso utilizzare il mio alimentatore?
Avete a disposizione alimentatori a 220 V CA?
È possibile controllare le colonne di sollevamento con un controller di terze parti?
Posso utilizzare due colonne di sollevamento LG-11 insieme?
Quale quadro di controllo devo abbinare alle mie colonne di sollevamento?
I vostri supporti per tavoli/scrivanie/TV sono personalizzabili?
Quali dimensioni di televisori possono essere supportate dai vostri sollevatori per TV?
Qual è la capacità di carico dei vostri sollevatori per tavoli/scrivanie?
Il mio attuatore lineare viene fornito con le staffe di montaggio?
Dove posso trovare una guida passo‑passo per il mio prodotto?
Ho seguito lo schema elettrico ma non funziona: cosa devo fare?
Diagramma di flusso per la selezione dell'attuatore
Le centraline di controllo FLTCON sono compatibili con i miei attuatori?
Che cos'è il backdriver? -- Cosa significano i valori nominali di carico dinamico e statico? -- Che cos'è il carico laterale?
Come posso effettuare un ordine?

Gli ordini possono essere effettuati in uno dei seguenti modi:

Online: Utilizza il nostro sistema di ordinazione online con opzioni di pagamento tramite carta di credito o PayPal.

Telefono: 1-800 – 676 – 6123

E-mail: sales@progressiveautomations.com

Offrite sconti per acquisti in grandi quantità?
Quali metodi di pagamento accettate?
In quale valuta sono espressi i vostri prezzi?
Come faccio a sapere se il prodotto che desidero è disponibile in magazzino?
Quanto costerà la spedizione e quali metodi di spedizione offrite?

Le spese di spedizione di Progressive Automations vengono calcolate in base a diversi fattori, tra cui, a titolo esemplificativo: la località di destinazione, le quantità e il peso totale dell'ordine. Gli articoli di piccole dimensioni vengono spediti tramite pacco postale, mentre gli articoli più grandi e gli ordini all'ingrosso vengono spediti tramite corriere specializzato. Ci impegniamo sempre a offrire prezzi di spedizione competitivi a tutti i nostri clienti.

È possibile effettuare ordini online o telefonicamente per ricevere una stima dei costi di spedizione. Per visualizzare il riepilogo del carrello, consultare il carrello.

Quali compagnie di trasporto merci utilizzate?
Mi verrà addebitata qualche tassa doganale?
Qual è la vostra politica sui resi?
Quanto tempo ci vuole per la consegna?
Offrite la spedizione gratuita?
Voglio che il lato più lungo del mio piano sia a sinistra. Il telaio della scrivania ad L può essere installato sia a sinistra che a destra?

Sì, la scrivania ad L è reversibile e può essere installata secondo le tue preferenze. Ecco un articolo passo passo che spiega come fare: Manuale utente FLT-05

Come imposto l’altezza massima/minima per il telaio della mia scrivania regolabile?

NOTA: I passaggi seguenti possono variare a seconda del modello di telecomando in tuo possesso. Le seguenti istruzioni sono per il telecomando standard RT-11. Per impostare l’altezza massima del telaio, porta la scrivania all’altezza desiderata e segui questi passaggi:

  1. Premere M e verificare che sul display compaia [5 -]
  2. Premere il pulsante UP e notare che [5 -] lampeggia
  3. Tenere premuto il pulsante M finché non compare [999] sul display
  4. L’altezza massima è stata impostata

Per impostare l’altezza minima del telaio, porta la scrivania all’altezza desiderata e segui questi passaggi:

  1. Premere M e verificare che sul display compaia [5 -]
  2. Premere il pulsante DOWN e notare che [5 -] lampeggia
  3. Tenere premuto il pulsante M finché non compare [000] sul display
  4. L’altezza minima è stata impostata

Per reimpostare i limiti, segui i passaggi seguenti:

  1. Premere M, verificare che sul display sia indicato [5 -], quindi rilasciare
  2. Tenere premuto M finché non vedi [555]
  3. I limiti sono stati reimpostati
Devo tenere premuti i pulsanti del telecomando per raggiungere l’altezza preimpostata. Posso farlo con una sola pressione?

NOTA: I passaggi seguenti possono variare a seconda del modello di telecomando in tuo possesso. Le seguenti istruzioni sono per il telecomando standard RT-11.

Se devi tenere premuti i pulsanti del telecomando per raggiungere l’altezza preimpostata, significa che la centralina è in modalità momentanea. Per impostare il telecomando in modalità non momentanea, segui i passaggi seguenti

  1. Assicurati che non ci sia nulla sotto la scrivania, perché dobbiamo avviare la procedura di reset
  2. Premi e tieni premuto il pulsante DOWN finché sul display non compare [ASr]
  3. Quando appare [ASr], premi e tieni premuto [1] e potresti vedere due valori:

    a. 10.1 = Modalità non momentanea
    b. 10.2 = Modalità momentanea

  4. Completa la procedura di reset tenendo premuto il pulsante DOWN finché la scrivania non si abbassa leggermente e poi risale.
Come posso modificare la sensibilità del rilevamento delle collisioni?

Le nostre scrivanie regolabili hanno 3 impostazioni per il rilevamento delle collisioni, regolabili in base alle tue preferenze. Per procedere, segui i passaggi seguenti:

  1. Assicurati che non ci sia nulla sotto la scrivania perché dobbiamo avviare la procedura di reset
  2. Premi e tieni premuto il pulsante DOWN finché sul display non compare [ASr]
  3. Quando appare [ASr], premi e tieni premuto il pulsante UP [ ^ ] e potresti vedere tre valori:

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

  4. Completa la procedura di reset tenendo premuto il pulsante DOWN finché la scrivania non si abbassa leggermente e poi risale.
Il mio telecomando mostra un codice di errore sul display. Cosa devo fare?

Ecco alcuni passaggi di risoluzione dei problemi da eseguire se vedi uno dei seguenti codici di errore sui telai con centraline della serie FLTCON:

Controlla il codice di errore qui.

Se il problema persiste dopo aver seguito questi passaggi, contatta pure i nostri ingegneri tecnici di prodotto al 1-800-676-6123 oppure inviaci un’email a sales@progressiveautomations.com.