Lavorando con un sensore e un motore, posso usare entrambi o dovrei usare una protezione del motore?


11

Aggiornamento: attualmente sto cambiando alcune cose con il progetto. Ho seguito alcuni dei tuoi consigli. Sono passato da un motore passo-passo a un servo RC (controllato tramite PWM) e se incontro qualche problema e non riesco a capirlo, te lo chiederò. Grazie per l'aiuto!

Sto lavorando a un progetto con un amico ed è la prima volta che utilizziamo un Arduino. Stiamo usando un Arduino per acquisire i dati da un sensore (accelerometro) e quindi accendere il motore (6 V, CC).

Ho fatto qualche ricerca e sembra che l'alimentazione da Arduino potrebbe non essere sufficiente per il motore e il sensore allo stesso tempo. Forse una sorta di ritardo potrebbe funzionare (sarebbe possibile?).

Sto pensando di usare uno scudo motore . Sarò ancora in grado di controllare l'accelerometro insieme al motore?

Sto cercando di utilizzare una singola fonte di alimentazione esterna (max: 6 batterie AA; sto cercando di limitare la quantità di batterie poiché stiamo cercando di mantenerla portatile), quindi c'è un modo per utilizzare una fonte dal Arduino e lo scudo del motore hanno bisogno di due alimentatori diversi (dalla mia comprensione).


Dovresti comunque essere in grado di utilizzare gli altri pin. Questo scudo motorio agirà come un fratello potente e ascolterà ciò che dice il perno e farà esattamente questo, ovviamente, con molta potenza, è il fratello maggiore! Potresti modificare la tua domanda in modo da essere più specifico sulla quantità di batterie AA che utilizzerai?
Abdullah Kahraman,

Va bene ho aggiornato il numero di batterie. Pensi che un motore passo-passo sarebbe un sostituto migliore poiché ho sentito che funzionano davvero bene con gli Arduinos.
Om23,

@ Om23 La scelta di stepper, servo, DC brushless o DC brushless sarebbe determinata dallo scopo che il motore è tenuto a soddisfare e (ad es. Per i motori BLDC) l'hardware disponibile per il controllo del motore. Potrebbe fare una nuova domanda interessante, verso la determinazione di quale motore è meglio usato per quale dei diversi scopi che puoi pensare. Non sono sicuro che una domanda del genere sia ideale per il sito di Arduino, forse qualcun altro può darci dentro.
Anindo Ghosh,

Risposte:


12

Problema 1 : guidare un motore direttamente da un Arduino

Non è consigliabile guidare un motore direttamente dai pin di Arduino per diversi motivi:

  • Corrente di carico , specialmente in condizioni di avviamento e stallo del motore. Come giustamente sottolineato nella domanda, i pin Arduino potrebbero semplicemente non essere classificati per fornire corrente sufficiente. L'Arduino potrebbe surriscaldarsi o addirittura danneggiarsi a causa di un elevato assorbimento di corrente.
    Mentre ogni pin Arduino per Arduinos basato su ATmega è valutato per 40 mA, personalmente preferisco mantenere qualsiasi carico prolungato a meno di 30 mA, la tua propensione al rischio può differire. Senza vedere la scheda tecnica del motore in questione, è impossibile ipotizzare quanta corrente richiede il motore
  • Back-EMF dal motore, sia durante lo spegnimento del motore, sia eventualmente durante la commutazione del motore - Mentre un motore CC gira, le spazzole di contatto "commutano" tra gli anelli divisi, almeno nei tipi tradizionali di motori CC spazzolati, generando piccoli piccoli scintille ogni volta.
    L'EMF posteriore è sostanzialmente la tensione inversa generata dalle bobine del motore (o da qualsiasi carico induttivo allo spegnimento), dai transitori (picchi) che possono momentaneamente superare di molto l'intervallo di tensione accettabile che i pin del microcontrollore possono tollerare.
    L'EMF posteriore rimane un rischio, sebbene ridotto, anche se un diodo veloce è collegato con polarizzazione inversa tra i conduttori del motore, una pratica fortemente raccomandata.
  • Pertanto, è fortemente raccomandato un isolamento di qualche tipo tra Arduino e l'azionamento del motore. Per semplicità di implementazione, questo sarebbe uno scudo motorio.
    Se si ha dimestichezza con l'elettronica di base, ciò può essere ottenuto anche collegando direttamente un IC driver motore adatto e diodi flyback. ( Modifica : questo è descritto in modo eccellente nella risposta di Manishearth )
    Il driver del motore, sia esso uno schermo o un circuito integrato, dovrebbe essere alimentato indipendentemente dall'Arduino, ma con le due linee di terra della sorgente di alimentazione collegate insieme. Vedi più in basso.

Problema 2 : controllo dell'accelerometro e della protezione del motore contemporaneamente

  • Sì, l'accelerometro può essere controllato e letto dall'Arduino con la protezione del motore in posizione, assicurando che i pin selezionati per accedere all'accelerometro non siano effettivamente utilizzati dalla protezione del motore. Sarebbero tutti collegati allo schermo, ma senza funzione interna o connessione all'interno dello schermo. La documentazione per lo scudo selezionato in genere fornirà queste informazioni.
    Per comodità, cerca uno scudo motore con intestazioni impilabili, ovvero con i perni di intestazione Arduino replicati sullo scudo motore per collegare hardware aggiuntivo, nel tuo caso l'accelerometro. Non tutti gli scudi forniscono intestazioni impilabili. Quindi complica l'uso dei perni non utilizzati dallo schermo, la necessità di saldare i fili ai relativi cuscinetti di intestazione sul PCB o di una tale disposizione.
    Nel caso in cui lo scudo del motore selezionato utilizzi tutti i pin GPIO, come nel caso degli scudi per il pilotaggio di più motori, potresti avere un problema. Poiché deve essere pilotato solo 1 motore, evitare gli schermi multi-motore che non lasciano abbastanza pin GPIO inutilizzati.

Problema 3 : distribuzione dell'alimentazione tra Arduino e protezione del motore

  • Il problema con la disposizione suggerita 6 x AA (massimo 9 Volt nominali) è che mentre fornisce una tensione sufficiente per il jack di ingresso CC disponibile su molti Arduinos (generalmente valutato per un ingresso da 7 a 12 Volt), è troppo alto per il motore essere scacciato direttamente da esso.
  • Esistono, tuttavia, diversi schermi motore che accettano un ingresso di potenza diretto (ad esempio da 7 a 25 Volt), e quindi forniscono 5 Volt ben regolati all'Arduino a cui sono collegati. Quindi Arduino non ha bisogno di essere alimentato separatamente e non dovrebbe esserlo neanche. Questo è assolutamente l'unico tipo di protezione del motore che uno dovrebbe comprare .
  • Le alternative di Kludgier includono toccando 4 delle 6 celle AA per alimentare il motore e tutte e 6 le celle per alimentare il jack DC (PWRIN) dell'Arduino, oppure usando un regolatore buck da 6 Volt separato per l'alimentazione del motore, mentre alimenta i 9 Volt direttamente alla presa DC Arduino.
  • Tentare di alimentare Arduino con il pacco batteria e quindi alimentare il motore dal pin Vin dell'Arduino è una cattiva idea perché
    • Il diodo M7 tra jack DC e pin Vin su diversi design di riferimento Arduino è valutato per 1 Ampere, il motore potrebbe concepibilmente disegnare di più, almeno momentaneamente
    • Tutto il rumore elettromagnetico generato dal motore, il rumore di commutazione più i transienti di ritorno, verrà reinserito nella scheda Arduino a meno che non sia implementato un disaccoppiamento molto rigido, non è una questione semplice. Questo feedback EMI causerà problemi intermittenti, difficili da eseguire il debug, con il funzionamento di Arduino.

10

La maggior parte degli scudi occupa alcuni pin e lascia il resto per te (ecco perché molti hanno una replica del sistema di pin Arduino su di essi usando intestazioni impilabili). Sono progettati per essere il più agevoli possibile, quindi ottenere uno scudo è il modo più semplice per aggirare questo.

Personalmente non alimento direttamente i motori dalla scheda; invece per questo utilizzo driver del motore come l'L293D. I pin non sono davvero buoni per l'estrazione di corrente, e generalmente è meglio alimentare i sensori direttamente invece che tramite i pin Arduino. Ricorda, i pin hanno un limite di corrente e se li sovraccarichi si bruciano.

L'uso di un L293D è semplice:

inserisci qui la descrizione dell'immagine

Collega i pin 1,9,16 alla tua sorgente Vcc (terminale positivo di qualsiasi sorgente 5V con cui alimenti Arduino. Per me è generalmente una linea estratta da un LM7805). Ora collega i pin 4,5,13,12 al tuo GND (terminale negativo). Ora collega il pin 8 a una sorgente di tensione più elevata (6 V, 12 V o qualsiasi cosa tu voglia alimentare ai tuoi motori). Si noti che i terminali negativi di tutte le sorgenti di tensione devono essere cortocircuitati a GND.

Ora collega il tuo motore attraverso i due pin di uscita in un sito (3,4 a sinistra). Collegare i pin di input (2,7) a due pin diversi su Arduino. Quando si dà lo stesso segnale (ALTO o BASSO) a entrambi i pin, il motore si ferma. Se si dà ALTO da un pin e BASSO dall'altro, il motore andrà in senso orario o antiorario, a seconda del pin che ha ricevuto il segnale.

Se si desidera un motore unidirezionale e si desidera salvare i pin, cortocircuitare uno dei pin di ingresso su GND. Ora, quando l'altro pin di ingresso è BASSO, il motore sarà spento e quando sarà ALTO, il motore sarà acceso.

Se lo si desidera, è possibile collegare un altro motore usando la stessa procedura sull'estremità opposta del chip.

L'L293D assorbe una piccola quantità di corrente dall'Arduino e alimenta il motore dalla corrente assorbita attraverso il pin 8, e di solito è l'ideale per tali situazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.