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 di cablaggio e altro nelle sezioni Risorse e Centro di apprendimento .

Come posso determinare quale Attuatore lineare di Progressive Automations è più adatto alla mia applicazione?
Che cos’è il ciclo di lavoro e come si calcola?
Posso usare i vostri attuatori per sostituire quello che ho già?
Che cosa significa corsa? Come faccio a sapere quale misura scegliere?
Come faccio a sapere quale valore di forza è adatto alla mia applicazione?
Posso utilizzare il mio alimentatore come sorgente per i miei attuatori?
Come posso controllare gli attuatori in modo che si muovano contemporaneamente?
Perché il mio attuatore lineare fa così tanto rumore?
Posso personalizzare un attuatore lineare in base alle mie specifiche?
Posso sincronizzare i miei attuatori lineari?
Sono disponibili kit di attuatori lineari?
La temperatura influirà sul 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 di centralina di controllo per il mio attuatore?
Posso usare 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 usare la mia centralina di controllo?
Avete esempi di codice che potrei usare?
Non ho una fonte di alimentazione: cosa posso fare?
Posso usare il mio alimentatore?
Avete alimentatori a 220 VAC disponibili?
Posso controllare le colonne di sollevamento con un controller di terze parti?
Posso usare insieme due colonne di sollevamento LG-11?
Quale centralina di controllo dovrei abbinare alle mie colonne di sollevamento?
I vostri sollevatori per tavolo/scrivania/TV sono personalizzabili?
Quali dimensioni di TV possono sostenere i vostri sollevatori TV?
Qual è la capacità di carico dei vostri sollevatori da tavolo/scrivania?
Il mio attuatore lineare viene fornito con staffe di montaggio?
Dove posso trovare una guida passo‑passo per il mio prodotto?
Ho seguito lo schema di cablaggio ma non funziona: cosa dovrei fare?
Diagramma di flusso per la scelta dell’attuatore
Le centraline di controllo FLTCON possono funzionare con i miei attuatori?
Che cos’è il backdriving? -- Cosa significano i valori di Carico dinamico e statico? -- Che cos’è un carico laterale?
Come posso effettuare un ordine?

Gli ordini possono essere effettuati in uno dei seguenti modi:

Online: Usa il nostro processo di ordine online con opzioni di pagamento con Carta di Credito o PayPal.

Telefono: 1-800 – 676 – 6123

Email: sales@progressiveautomations.com

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

Le spese di spedizione di Progressive Automations sono calcolate in base a una varietà di fattori tra cui, a titolo esemplificativo: posizione, quantità e peso totale dell’ordine. Gli articoli più piccoli vengono spediti tramite corriere per pacchi, mentre quelli più grandi e gli ordini all’ingrosso vengono spediti tramite servizi di trasporto merci. Ci impegniamo sempre a offrire prezzi di spedizione competitivi a tutti i nostri clienti.

I metodi di spedizione sono disponibili per gli ordini online e telefonici. Se desideri ricevere una stima dei costi di spedizione del tuo ordine, puoi ottenerla rivedendo il carrello finale.

Quali società di spedizione utilizzate?
Mi verranno addebitati dazi doganali?
Qual è la vostra politica di reso?
Quali sono i tempi di 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.