arduino – Sciamanna Lucio https://www.sciamannalucio.it Consulenze per la didattica e l'elettronica Fri, 21 Jun 2019 12:52:43 +0000 it-IT hourly 1 Sensore Distanza LIDAR Laser Scanner VL53L0X https://www.sciamannalucio.it/sensore-distanza-lidar-laser-scanner-vl53l0x/ Fri, 26 Apr 2019 13:54:39 +0000 https://www.sciamannalucio.it/?p=3134 Sensore di distanza a fascio laser VL53L0X: come funziona? Questo sensore di distanza integra, in un singolo piccolissimo chip, un emettitore laser e un sensore a infrarossi IR. Per calcolare la distanza il chip misura il tempo trascorso tra l’emissione del fascio laser e la ricezione della luce, invisibile a occhio nudo. Il laser ha […]

L'articolo Sensore Distanza LIDAR Laser Scanner VL53L0X sembra essere il primo su Sciamanna Lucio.

]]>
Sensore di distanza a fascio laser VL53L0X: come funziona?

Questo sensore di distanza integra, in un singolo piccolissimo chip, un emettitore laser e un sensore a infrarossi IR. Per calcolare la distanza il chip misura il tempo trascorso tra l’emissione del fascio laser e la ricezione della luce, invisibile a occhio nudo.

Il laser ha una bassa Potenza di emissione ed è in classe 1.

Sensore Distanza VL53L0X lidar laser sensor - potenze di emissione
Sensore Distanza VL53L0X lidar laser sensor – potenze di emissione
Sensore Distanza VL53L0X lidar laser sensor - classi di emissione
Sensore Distanza VL53L0X lidar laser sensor – classi di emissione

E’ un alternativa ai sensori di distanza a ultrasuoni (tipo HC-SR04) o LED IR infrarossi.

Il chip costa circa 2€ per quantità di 5000 pezzi. Si può acquistare anche un solo chip al costo di circa 4€.

Sensore Distanza VL53L0X lidar laser sensor - vista ingrandimento
Sensore Distanza VL53L0X lidar laser sensor – vista ingrandimento
Sensore Distanza VL53L0X lidar laser sensor - come funziona
Sensore Distanza VL53L0X lidar laser sensor – come funziona – cono di emissione e cono di ricezione del fascio laser

Come usare sensore di distanza con Arduino?

Il chip comunica la misura di distanza in formato digitale. Si deve utilizzare il protocollo di comunicazione I2C. Il produttore ST fornisce una libreria API da integrare nel Vostro firmware sviluppato con la IDE di Arduino.

Il chip funziona con una tensione di alimentazione continua di 2,8 Volt, pertanto se volete usarlo con schede Arduino UNO o MEGA dovete adattare i segnali digitali da 5V a 3 Volt.

Puoi usare una delle tante piccolo schedine che trovi in commercio. Sono già pronte per essere utilizzate su tutte le versioni delle schede Arduino.

Rimuovi il foglietto di plastica che protegge la parte ottica del sensore.

Se non lo fai avrai degli errori di misura di distanza.

Schema di collegamento

Sensore Distanza VL53L0X lidar laser sensor - schema di collegamento con Arduino UNO
Sensore Distanza VL53L0X lidar laser sensor – schema di collegamento con Arduino UNO

Download delle librerie per Arduino

DOWNLOAD Adafruit_VL53L0X-master

per avere la libreria più aggiornata clicca sul link: https://github.com/adafruit/Adafruit_VL53L0X

Dalla IDE di Arduino Strumenti -> Gestione Librerie, cerca nel filtro “Adafruit_VL53L0X” e clicca su “Installa”.

Programma la tua scheda con la demo che trovi negli esempi della libreria.

Sensore Distanza VL53L0X lidar laser sensor - demo Arduino software
Sensore Distanza VL53L0X lidar laser sensor – demo Arduino software

Verifica con il monitor seriale che cambiando la distanza alla quale hai posizionato un oggetto la misura di distanza varia.

Sensore Distanza VL53L0X lidar laser sensor - risultati demo Arduino software
Sensore Distanza VL53L0X lidar laser sensor – risultati demo Arduino software

 

Precisione misura di distanza con VL53L0X

Ci sono varie versioni di questo sensore di distanza integrato prodotto dalla ST. Il VL53L0X può rilevare oggetti a una distanza massima di 2000 mm, 200 centimetri, oppure 2 metri. Il campo di misura può essere impostato tramite software.

Il campo di misura standard è da 0 a 1200 mm.

Sensore Distanza VL53L0X lidar laser sensor - confronto versioni e distanze
Sensore Distanza VL53L0X lidar laser sensor – confronto versioni e distanze

La precisione nella misura di distanza varia a seconda del colore dell’oggetto posto di fronte al sensore. Il sensore è in grado, con una velocità minima di 33 millisecondi, di rilevare un oggetto ad una distanza di 1200 millimetri con un errore Massimo di 84 millimetri.

Sensore Distanza VL53L0X lidar laser sensor - accuratezza di misura
Sensore Distanza VL53L0X lidar laser sensor – accuratezza di misura

La precisione della misura varia in base alla distanza dell’oggetto posto di fronte al sensore.

Sensore Distanza VL53L0X lidar laser sensor - grafico precisione di misura
Sensore Distanza VL53L0X lidar laser sensor – grafico precisione di misura vs distanza
Sensore Distanza VL53L0X lidar laser sensor -cono di emissione ricezione
Sensore Distanza VL53L0X lidar laser sensor -cono di emissione ricezione
Sensore Distanza VL53L0X lidar laser sensor - grafico confronto sensori vari
Sensore Distanza VL53L0X lidar laser sensor – grafico confronto sensori vari

 

Link e Video sul sensore di distanza VL53L0X a tecnologia laser scanner

Sensore di distanza a tecnologia LASER VL53L0X – ADAFRUIT product

Cos’è e come funziona un LIDAR

DOWNLOAD datasheet vl53l0x laser scanner sensor ST

Mouser al 26-04-19 circa 50’000 pezzi in pronta consegna

Articolo comparazione sensori vari (Francese)

DOWNLOAD libreria Pololu

L'articolo Sensore Distanza LIDAR Laser Scanner VL53L0X sembra essere il primo su Sciamanna Lucio.

]]>
Arduino sensore di colore https://www.sciamannalucio.it/arduino-sensore-di-colore/ https://www.sciamannalucio.it/arduino-sensore-di-colore/#respond Wed, 19 Oct 2016 13:13:23 +0000 https://www.sciamannalucio.it/?p=2251   Come usare un sensore di colore RGB con Arduino Come si formano i colori Quando hai l’esigenza di “leggere” o discriminare un colore devi usare uno speciale sensore chiamato, per l’appunto, sensore di colore. Questa occasione può essere tra le più disparate. Nel mio caso mi sono trovato a dover discriminare il verde, dal bianco […]

L'articolo Arduino sensore di colore sembra essere il primo su Sciamanna Lucio.

]]>
 

Come usare un

sensore di colore

RGB con Arduino


Come si formano i colori

Quando hai l’esigenza di “leggere” o discriminare un colore devi usare uno speciale sensore chiamato, per l’appunto, sensore di colore. Questa occasione può essere tra le più disparate. Nel mio caso mi sono trovato a dover discriminare il verde, dal bianco e dal nero, per fare un percorso di RoboCup Rescue.

Interfacciare un sensore di colore alla scheda Arduino è un po’ come interfacciare un sensore ad un microprocessore. Avremo bisogno di “misurare” una intensità di segnale che dipende dal colore che “incontra” il sensore che abbiamo scelto.

Ci facciamo aiutare dalla fisica per richiamare il concetto di colore: è una “frequenza di energia luminosa”. L’arcobaleno è il risultato della scomposizione della luce bianca nelle sue componenti di frequenza di colore (spettro luminoso).

Quando illumino un oggetto con luce bianca, l’oggetto assorbe le frequenze luminose in base alla sua particolare forma o materiale. L’oggetto riflette il resto delle frequenze luminose, ed il risultato è il colore che viene percepito dal nostro occhio, che per inciso mischia automaticamente le frequenze luminose e crea la percezione di un unico colore.

arduino-e-sensore-di-colore-spettro-luminoso
sensore di colore e spettro luminoso

I colori RGB

E’ importante comprendere come si forma il colore per capire come funziona questo sensore. Nei computer esiste un formato, chiamato RGB, che definisce un colore con tre numeri che misurano l’intensità dei tre colori principali Red-Green-Blue (in italiano Rosso-Verde-Blu).  Mischiando questi tre colori, con proporzioni variabili, si ottengono i vari colori intermedi. L’intensità di ogni colore principale viene suddivisa con una scala di 256 livelli. Questo si trasforma in un numero che varia tra 0 e 255 (in esadecimale da 0x00 a 0xFF).

Un singolo colore viene definito da tre coppie di numeri esadecimali che variano tra 0x000000 (nessun colore = Nero) e 0xFFFFFF (tutti i colori che mischiati formano il Bianco). Per Arduino questo si traduce in un numero che varia tra 0 e 16’777’215.

Sfruttando questo concetto usiamo tre differenti LED in modalità di generatori attivi, e misuriamo l’uscita elettrica degli stessi quando investiti dalla luce riflessa dall’oggetto di cui ci interessa rilevare il colore.

I tre LED saranno di colore Rosso, Verde e Blu e verranno interfacciati con un amplificatore operazionale di modo che la poca corrente che generano viene trasformata in tensione proporzionale alla luce che li colpisce.

arduino-e-sensore-di-colore-colori-rgb
sensore di colore, il formato RGB e il metodo additivo

Sensore di colore analogico

Abbiamo stabilito che un led di colore definito è sensibile alla frequenza di luce corrispondente. Il LED viene normalmente utilizzato per generare luce, ma può essere utilizzato al contrario, cioè misurare l’intensità di luce che lo colpisce.

arduino-e-sensore-di-colore-misura-di-corrente
Misura della corrente generata da un LED utilizzato come sensore di luce

La corrente generata da un LED colpito dalla luce è molto bassa e dipende dalla superficie totale utilizzata per produrre il semiconduttore (LED chip). Nella misura effettuata con multimetro sono risultati 29 uA.

arduino-e-sensore-di-colore-led-come-fatto
Com’è fatto un LED

Realizzato con semplici LED e fototransistor

I fototransistor sono dotati di un amplificatore interno che aumenta questa corrente. I normali diodi LED devono essere amplificati. Il circuito è semplicemente un amplificatore operazionale utilizzato come amplificatore di corrente. L’amplificatore deve avere la possibilità di funzionare con una tensione singola di 5 Volt, così può essere alimentato con la tensione della scheda Arduino ed essere direttamente compatibile con gli ingressi analogici.  Un amplificatore integrato adatto a questo circuito è il LT1006.

La resistenza R1 determina il fattore di amplificazione della corrente generata dal LED usato come sensore di colore. Questo valore dipende da quanta corrente genera il LED ad una determinata intensità di luce. Dovrai provare partendo dal valore indicato. Aumentando il valore della resistenza aumenti la sensibilità del sensore, cioè misuri luci più deboli.

Circuito elettrico sensore di colore analogico

Con una resistenza R1 di valore 1 MΩ si ha un fattore di amplificazione Av = 1’000’000 (la banda passante, cioè la velocità di lettura della luce, dipende dall’amplificatore usato). Se, come nella misura precedente, il LED genera 29 uA (che corrispondono a 0,000029 A) la tensione di uscita dall’amplificatore operazionale sarà di  1’000’000 x 0,000029 = 29 Volt.

arduino-e-sensore-di-colore-schema-elettrico-amplificatore-di-corrente-led
schema elettrico sensore di colore analogico

Spettro cromatico e sensibilità ai colori

Ogni LED ha la sua sensibilità al colore. Dovrai provare alcuni LED in modo da verificare se vanno bene per la tua applicazione. I LED con il corpo trasparente sono consigliabili in quanto non sono dotati di filtro di colore.

arduino-e-sensore-di-colore-sensibilita-e-spettro-dei-led
sensibilità e spettro dei LED

Ogni LED ha un angolo di maggiore sensibilità, che può variare tra i 8° e i 120°. I LED con angolo di illuminazione stretto (Narrow angle Beam) a parità di corrente di alimentazione illuminano più lontano.

arduino-e-sensore-di-colore-beam-angle
arduino-e-sensore-di-colore-beam-angle

Ci sono altri modi di misurare il colore per esempio usando i led RGB (cioè che hanno tutti e tre i LED Rosso, Verde e Blu integrati in un chip) e un sensore di luce a fotoresistenza. La fotoresistenza non ha bisogno di esser amplificata e può essere utilizzata direttamente come partitore di tensione. Ci sono chip integrati come il S9702 della Hamamatsu che sono dotati di LED RGB con una grande area di esposizione alla luce.

arduino-e-sensore-di-colore-s9702-spectral-response
arduino-e-sensore-di-colore-s9702-spectral-response

Circuito elettrico con fotoresistore

La fotoresistenza ha una sensibilità su un ampio spettro luminoso e questo ci obbliga ad usare LED colorati per generare la luce con il cromatismo/colore desiderato. E’ un metodo che necessita di una taratura preventiva (pesatura) della luce ambiente.

Ha il vantaggio di usare un numero molto limitato di componenti elettronici. Come funziona? Si accende un LED di colore diverso ed ogni volta si misura il valore della fotoresistenza, tramite l’ingresso Analog In di Arduino. Si può realizzare una variazione utilizzando un fototransistor al posto del fotoresistore. Questo sistema migliora sensibilmente quando accoppiato ad una schermatura nera che “intuba” la luce riflessa dall’oggetto.

arduino-e-sensore-di-colore-schema-con-fotoresistenza
Arduino e sensore di colore. schema elettrico con fotoresistenza

Sensore di colore digitale

I sensori di colore digitali usano lo stesso principio descritto in precedenza, ma forniscono una informazione pronta all’uso e non necessitano di circuiti analogici. L’informazione viene letta per esempio attraverso la comunicazione I2C.

Puoi trovare molte schede già pronte per essere utilizzate con Arduino o altri microprocessori.

arduino-e-sensore-di-colore-tsc3200
Schema elettrico pratico scheda Arduino e sensore di colore con integrato TSC3200

Questi circuiti si basano su Chip integrati: TSC3200, TCS34725, ISL29125.

TSC3200

è un chip che contiene 16 LED in parallelo per ogni colore RGB + il bianco. La misura del colore viene trasmetta tramite un segnale PWM a frequenza proporzionale alla intensità luminosa. I LED devono essere selezionati tramite i pin S2 e S3. Funziona con una tensione da 2,7 a 5,5 Volt. Usando un divisore di frequenza integrato, e attivato tramite i pin S0 e S1, la intensità di luce viene convertita in una frequenza di fondo scala che varia tra 12 kHz fino ai 600 kHz.

La sensibilità ed il fondo scala variano dai 35 ai 47 uW/cm2 (dagli 0,35 ai 0,47 W/m2). Dal grafico della risposta spettrale noto che c’è una debole differenza nel riconoscimento del blu e del verde. La scheda integra anche 4 LED bianchi per l’illuminamento dell’oggetto da misurare. Arduino dovrà essere programmato per “leggere” la frequenza in uscita da questo chip con la funzione “pulseIn(pin, polarità);”. Questa funzione ritorna la durata dell’impulso cioè mezzo periodo della frequenza da misurare. Per conoscere la frequenza si deve applicare la formula 1/(Ton+Toff), da cui 1/(2*pulseIn).

arduino-e-sensori-di-colore-tsc3200-sensibilita-ai-colori
arduino-e-sensori-di-colore-tsc3200-sensibilita-ai-colori

 

TCS34725

è una scheda pronta all’uso per Arduino. E’ dotata di un sensore RGB con una sensibilità di contrasto di 3’800’000 : 1. I LED sono filtrati per non misurare la luce IR. La alimentazione varia dai 3,3 ai 5 Volt. Può essere usata sia on microprocessori con bus da 3,3V che 5V. Ha un LED bianco neutro che può essere usato per illuminare l’oggetto da misurare. La trasmissione dei dati avviene tramite la comunicazione I2C. Qui un tutorial su questo sensore RGB. Grazie alla sua alta sensibilità può essere utilizzato dietro vetri scuri. E’ dotato di un uscita interrupt che può essere utilizzata per comunicare velocemente al microprocessore quando è attivo un livello di luce prestabilito. E’ dotato di una libreria direttamente utilizzabile con Arduino.

arduino-e-sensore-di-colore-tcs34725-spectral-responsivity
arduino-e-sensore-di-colore-tcs34725-spectral-responsivity

ISL29125

Questo integrato è simile al TCS34725 in quanto ha delle caratteristiche simili e trasmette i dati con il protocollo I2C. Lavora con tensione a 3,3V, per cui servirà un traslatori di segnale per le comunicazioni a 5 Volt. La scheda non è dotata di LED bianco di illuminazione dell’oggetto.

arduino-e-sensore-di-colore-isl29125
arduino-e-sensore-di-colore-isl29125

Programma Arduino per sensore di colore

Al momento ti rimando ai produttori delle schede già pronte. Nella prossima puntata realizzerò il circuito analogico più semplice e valuterò le caratteristiche e le prestazioni che si possono ottenere.

Pubblicità

Credits

https://makezine.com/projects/make-36-boards/how-to-use-leds-to-detect-light/

https://forrestmims.org

LT1006 datasheet

Link al metodo di misura con fotoresistenza

ISL29125 datasheet

color phototransistor S9702 datasheet

TCS3200 datasheet

MTCSiCS datasheet

S9702 datasheet

TSC34725 datasheet

L'articolo Arduino sensore di colore sembra essere il primo su Sciamanna Lucio.

]]>
https://www.sciamannalucio.it/arduino-sensore-di-colore/feed/ 0
Programmare Arduino con S4A e Bitbloq https://www.sciamannalucio.it/programmare-arduino-con-s4a-e-bitbloq/ https://www.sciamannalucio.it/programmare-arduino-con-s4a-e-bitbloq/#respond Thu, 11 Feb 2016 21:34:30 +0000 https://www.sciamannalucio.it/?p=1773 Scopri quanto è facile programmare Arduino con i software semplificati S4A e Bitbloq Per programmare Arduino si usa il suo software di sviluppo, chiamato anche IDE, che utilizza un linguaggio di programmazione derivato dal linguaggio C. La IDE di arduino è scaricabile, in modo gratuito e open source, dal sito ufficiale di Download IDE Arduino […]

L'articolo Programmare Arduino con S4A e Bitbloq sembra essere il primo su Sciamanna Lucio.

]]>
Scopri quanto è facile programmare Arduino

con i software semplificati S4A e Bitbloq

Per programmare Arduino si usa il suo software di sviluppo, chiamato anche IDE, che utilizza un linguaggio di programmazione derivato dal linguaggio C.

La IDE di arduino è scaricabile, in modo gratuito e open source, dal sito ufficiale di Download IDE Arduino ufficiale. Le fasi per programmare con Arduino sono:

  • collegare i componenti elettronici alla scheda Arduino (sensori ed attuatori)
  • scrivere il programma che fa eseguire ad Arduino quello che ci serve che faccia
  • programmare Arduino eseguendo il download del file eseguibile nel microprocessore
  • verificare che Arduino esegua quello che ci serve che faccia

Scrivere un programma che la scheda a microprocessore chiamata Arduino eseguirà, comporta scrivere le righe di programma. Ogni riga di programma coincide con uno o più comandi che verranno eseguiti dalla scheda Arduino.

Programmare con IDE di Arduino

Nell’immagine sotto all’interno della funzione “loop” (ciclo infinito) ci sono quattro righe di programmazione che eseguono 4 comandi. Come vedi bisogna imparare la “grammatica” per far capire ad Arduino cosa si vuole che esegua. Queste quattro righe di programma servono per far lampeggiare un LED con un ciclo infinito che accende il LED per 1 secondo e lo spegne per 1 secondo.

Programmare Arduino - IDE Arduino ufficiale

Per semplificare il processo di programmazione sono stati sviluppati dei software gratuiti e open source derivati dal programma scratch, sviluppato dal MIT di Boston. Puoi vedere come funziona scratch nel mio video che trovi qui: impara a programmare con scratch da zero.

Programmare Arduino con S4A

S4A è un IDE visuale. Ci sono vari blocchi colorati che corrispondo ad altrettanti comandi. I blocchi si uniscono avvicinandoli con il mouse. Per ogni tipologia di comandi i blocchi hanno colori differenti. E’ un software gratuito che devi installare sul tuo computer. Qui sotto vedi l’immagine della videata che apparirà sul tuo computer quando programmerai con S4A. Si può installare su quasi tutti i sistemi operativi, Windows, Mac, Linux, Ubuntu.

Programmare Arduino - S4A

Programmare Arduino con Bitbloq

Bitbloq è un IDE visuale. Come con S4A ci sono vari blocchi colorati che corrispondono ad altrettante famiglie di comandi. Come S4A è gratuito, non devi installarlo sul tuo PC, ma funziona solo online e con il browser google chrome. E’ dotato di interfaccia in Italiano. Nell’immagine in basso puoi vedere come i blocchi creano il programma che abbiamo visto prima con la IDE di Arduino originale.

Programmare Arduino - Bitbloq

Ho fatto un video per farti vedere come si usa Bitbloq:



Pubblicità

L'articolo Programmare Arduino con S4A e Bitbloq sembra essere il primo su Sciamanna Lucio.

]]>
https://www.sciamannalucio.it/programmare-arduino-con-s4a-e-bitbloq/feed/ 0
Programmare Arduino per usare motori elettrici https://www.sciamannalucio.it/programmare-arduino-per-usare-motori-elettrici/ https://www.sciamannalucio.it/programmare-arduino-per-usare-motori-elettrici/#respond Mon, 01 Feb 2016 23:57:10 +0000 https://www.sciamannalucio.it/?p=1727 Impara a usare i motori elettrici Tutorial per programmare Arduino + schema elettrico con breadboard “Programmare Arduino” è dedicato al Sig. Di Santi che a 60 anni ha ancora voglia di mettersi in gioco. Grazie alla sua richiesta ho cercato di rendermi utile con questo tutorial pratico che ti spiega come utilizzare i motori in continua […]

L'articolo Programmare Arduino per usare motori elettrici sembra essere il primo su Sciamanna Lucio.

]]>
Impara a usare i motori elettrici

Tutorial per programmare Arduino + schema elettrico con breadboard

“Programmare Arduino” è dedicato al Sig. Di Santi che a 60 anni ha ancora voglia di mettersi in gioco. Grazie alla sua richiesta ho cercato di rendermi utile con questo tutorial pratico che ti spiega come utilizzare i motori in continua con Arduino.

Lo scopo del tutorial è variare la velocità di un motore in continua, alimentato a 12 Volt (ma gli stessi concetti sono validi per tensioni di 5, 6, 9, 12 e 15 Volt cc) utilizzando la scheda a microprocessore Arduino UNO.

Alla fine del tutorial avrai imparato a:

  • collegare la scheda Arduino ad un motore elettrico
  • regolare la velocità del motore
  • scrivere un programma per Arduino che esegua delle temporizzazioni
  • programmare Arduino

Programmare Arduino per usare i motori elettrici: lo schema elettrico

Programmare Arduino per usare motori elettrici
Arduino – motori elettrici – scema elettrico

 

La scheda Arduino può alimentare un piccolo motore elettrico, alimentato a 5 Volt cc (tensione e corrente continua), usando solamente i pin di cui è dotata.

Ma quanta corrente massima può fornire un pin della scheda Arduino?

Secondo il datasheet la corrente massima è di circa 40 milliAmpère (equivalenti a 0,04 Ampère). Dato che la tensione di uscita del pin di una scheda Arduino UNO è di 5 Volt, la potenza massima del motore non può essere superiore a 0,2 Watt.

Se alimentate direttamente un motore in continua con un pin di Arduino, e il motore non gira, sapete il perchè? La potenza richiesta dal motore è maggiore di quella che può fornire la sola scheda Arduino.

Per risolvere questo problema dobbiamo utilizzare un amplificatore di corrente (o anche di potenza elettrica). Non entro nel dettaglio, ma prendi per buono che il miglior dispositivo elettronico che risolve questo problema è il transistor Mosfet. Il mosfet è anche, nella maggior parte delle applicazioni, utilizzabile direttamente con un pin di Arduino.

Dobbiamo utilizzare un Mosfet di tipo N, qui ti elenco alcune sigle di Mosfet che costano poco e possono alimentare motori con una discreta potenza elettrica:

Per regolare la velocità di un motore in corrente continua, oltre ad un mosfet, ci serve un diodo di flyback. Questo diodo impedisce di rompere il mosfet per sovratensione indotta dal repentino spegnimento del circuito di commutazione, quando utilizzato con un segnale PWM.

Quando colleghi i condensatori elettrolitici ricordati di rispettarne le polarità negativa e positiva.

Schema pratico di montaggio con breadboard

Programmare Arduino per usare motori elettrici
Arduino – motori elettrici – breadboard

Programmare Arduino con motori in continua: i comandi

Il programma completo di spiegazioni per usare il PWM

Il programma varia la velocità del motore cambiando il duty cycle del PWM che viene generato con il comando “analogWrite”.

Il valore del numero del PWM può variare tra 0 e 255, che corrispondono ad una velocità proporzionale tra 0 e 100% (velocità massima).

Cambiando il numero all’interno del comando “delay” si aumenta o diminuisce il tempo di motore spento, ed il tempo di motore acceso.

Il circuito elettrico è molto semplice, ma ha il limite di poter far girare il motore in una sola direzione. Questo programma NON può cambiare il senso di marcia del motore elettrico.

Per poter cambiare il senso di marcia bisogna necessariamente utilizzare una scheda di controllo motore, una shield, dotata di un sistema a ponte H. Cicca sul link per un tutorial che ti spiega come funziona una shield motor driver.

Copia e incolla il listato nella IDE di Arduino e poi puoi programmare Arduino UNO.

/*
 Genera un PWM che cambia la velocità di un motore elettrico
 il Gate del mosfet N è collegato al pin 9 di Arduino
 PROGRAMMA:
 Il motore rimane spento per 1 secondo.
 Il motore gira a metà velocità per 1 secondo.
 
 www.sciamannalucio.it
 */
 // dichiara le variabili
 int OUT = 9; // collega il gate del mosfet al pin 9
 // programma le impostazioni alla partenza del programma:
 void setup() {
    pinMode(OUT, OUTPUT); // imposta il pin 9 come uscita
 }

 // il ciclo loop legge all'infinito le righe di programma:
 void loop() {
    // tiene spento il motore per 1 secondo
    analogWrite(OUT, 0); // velocità motore 0%
    delay(1000); // aspetta 1 secondo 
    // accende il motore per 1 secondo
    analogWrite(OUT, 127); // velocità motore 50%
    delay(1000); // aspetta 1 secondo 
 }

LINK utili per programmare Arduino ed i motori elettrici


Pubblicità

L'articolo Programmare Arduino per usare motori elettrici sembra essere il primo su Sciamanna Lucio.

]]>
https://www.sciamannalucio.it/programmare-arduino-per-usare-motori-elettrici/feed/ 0
Arduino: encoder conta impulsi-giri motore https://www.sciamannalucio.it/arduino-encoder-conta-impulsi-giri-motore/ https://www.sciamannalucio.it/arduino-encoder-conta-impulsi-giri-motore/#respond Wed, 06 Jan 2016 17:37:51 +0000 https://www.sciamannalucio.it/?p=1635 A cosa serve un conta impulsi? Un conta impulsi serve a contabilizzare gli impulsi elettrici che arrivano da sensori, cioè a stabilirne la quantità in base ad una unità di tempo. I sensori normalmente sono dei contagiri del motore (encoder), oppure dei sensori di posizione. Servo nei robot per stabilire il tragitto percorso e la direzione […]

L'articolo Arduino: encoder conta impulsi-giri motore sembra essere il primo su Sciamanna Lucio.

]]>
A cosa serve un conta impulsi?

Un conta impulsi serve a contabilizzare gli impulsi elettrici che arrivano da sensori, cioè a stabilirne la quantità in base ad una unità di tempo. I sensori normalmente sono dei contagiri del motore (encoder), oppure dei sensori di posizione. Servo nei robot per stabilire il tragitto percorso e la direzione da prendere.

Il conta impulsi può servire per contare le persone che entrano in una stanza o in una fiera. Ci sono misuratori di energia che emettono impulsi in proporzione ai Watt consumati. Attualmente anche i contatori di acqua e gas possono presentare delle uscite a impulsi per il conteggio dei consumi.

Ci sono dei potenziometri che all’interno hanno un encoder rotativo per stabilirne la posizione. Vengono utilizzati in abbinamento ad un microprocessore, come Arduino, per cambiare numeri nelle memorie o menù nei display.

Come funziona un conta impulsi

Il conta impulsi può essere diviso in almeno tre parti principali:

  • la base dei tempi T in cui vengono contabilizzati gli impulsi elettrici
  • la sezione elettronica che somma i singoli impulsi S
  • il circuito di ingresso che adatta il segnale entrante e lo rende compatibile con la sezione elettronica che esegue il conteggio A

La base dei tempi può essere fissa con un certo lasso di tempo, oppure senza tempo. In quest’ultimo caso il contatore di impulsi è assoluto, e conteggia fino a quando non viene spento/azzerato. Ogni impulso incrementa un contatore, aumentando il numero memorizzato. Quando è terminato il tempo massimo per la conta il numero viene visualizzato su un display o altro dispositivo di visualizzazione. Il contatore ed il timer vengono azzerati e si ricomincia a contare gli impulsi in ingresso.

La sezione che somma gli impulsi, via via che arrivano all’ingresso, può essere di tipo elettromeccanico, oppure elettronica a circuiti integrati o a microprocessore. Un particolare conta impulsi di tipo elettromeccanico lo potresti trovare in casa tua sotto forma di interruttore per le luci di casa. Quando si hanno più di 3 punti luce da accendere/spegnere si utilizza un particolare dispositivo, il relè passo passo, che ad ogni impulso ricevuto attiva o disattiva un relè. In passato i mouse sfruttavano gli encoder ottici per contare gli spostamenti in base agli impulsi ricevuti.

Arduino e encoder - mouse
Arduino e encoder – mouse

Il circuito di adattamento del segnale di ingresso è da usare quando la tensione dell’impulso è maggiore della tensione di alimentazione del circuito integrato/microprocessore che conta gli impulsi. Un semplice partitore di tensione può essere, in molti casi, sufficiente.

Come contare i giri del motore con Arduino e un encoder

Per contare i giri di un motore dobbiamo accoppiare al rotore un encoder rotativo. Nella immagine un motore è stato dotato di un disco che alterna parti nere a parti trasparenti. Un sensore di prossimità ad infrarossi riconosce quando viene a contatto con una superficie nera, e quando invece la superficie è trasparente (passaggio di luce).

Arduino e encoder - encoder fai da te
Arduino e encoder – encoder fai da te
Arduino e encoder - sensore di prossimità a infrarossi
Arduino e encoder – sensore di prossimità a infrarossi

Si creano così degli impulsi di luce che, attraverso il sensore di prossimità, diventano impulsi elettrici. Se conti gli impulsi puoi calcolare la posizione angolare del disco, e di conseguenza del rotore (la parte che gira del motore).

Per calcolare la velocità basta contare gli impulsi ogni TOT di tempo, utilizzando un timer. Facendo un esempio pratico possiamo ipotizzare che il disco ha 36 spicchi colorati di nero e 36 di trasparente. Questo significa che, per ogni giro completo dell’asse del motore, la fotocellula (sensore di prossimità ad infrarossi) genera 36 impulsi elettrici. Se nell’intervallo di tempo di 1 secondo conto 360 impulsi significa che il motore ha compiuto 10 giri in un secondo (600 RPM giri per minuto).

Così facendo conosciamo la velocità, ma non la direzione con cui gira il motore. Per sapere anche questo dobbiamo avere due fotocellule, messe in due posizioni diverse. Quando il perno dell’encoder viene ruotato si formano due segnali elettrici in quadratura, definiti così perchè sono sfasati tra loro di 90° elettrici. Questi due impulsi forniscono la velocità, con cui ruota il perno, ma anche la direzione calcolata “vedendo” quale dei due impulsi arriva prima dell’altro. I segnali vengono chiamati A e B.

Arduino e encoder - segnale elettrico a quadratura
Arduino e encoder – segnale elettrico a quadratura

Come programmare Arduino per usare un encoder

Abbiamo visto che i due segnali elettrici A e B vanno “interpretati”.

Se sei interessato a misurare solo la velocità/spostamento del motore basta contare il totale degli impulsi in un dato arco di tempo.

Se ti serve conoscere anche la direzione dello spostamento allora dovrai misurare sia il numero degli impulsi, sia la fase tra gli impulsi A e B.

In alcuni casi non serve calcolare la velocità, ma solo di quale quantità è stato ruotato il perno di un encoder. In questi casi non serve tenere conto del tempo trascorso, e questo semplifica il programma di Arduino. Ci sono almeno due modi per rilevare il numero degli impulsi prodotti da un encoder:

  • con il metodo “polling”: ogni TOT tempo (una quantità di tempo definita a priori nel programma) si misura lo stato elettrico dei pin di ingresso a cui è collegato l’encoder. Si decodifica lo stato che varia nel tempo e si estrapola l’informazione. Con questo metodo si deve decidere a priori, ed in base al tipo/velocità del segnale elettrico, il timer che “sveglia” la misura dello stato dei segnali elettrici. Si possono perdere scatti/spostamento perchè il microprocessore sta eseguendo altre parti del programma. Si possono utilizzare indistintamente tutti i pin della scheda Arduino.
  • con il metodo “interrupt”: ogni volta che all’ingresso del pin c’è una variazione del segnale elettrico viene chiamata una funzione speciale “interrupt” (alle volte definita ISR). Questa funzione è speciale perchè ha la priorità massima, cioè il microprocessore della scheda Arduino ferma la riga di comando che sta eseguendo per eseguire la funzione “interrupt”. Si devono utilizzare solo i pin che possono diventare interrupt hardware: per esempio nella scheda Arduino UNO solo il pin 2 e 3 digitali sono fisicamente collegati agli interrupt esterni INT0 (digital pin 2) e INT1 (digital pin 3). Nel caso vuoi utilizzare un qualsiasi pin della scheda Arduino UNO allora puoi usare una libreria chiamata PinChangeInt.

il diagramma temporale delle variazioni del segnale elettrico di un encoder incrementale a quadratura le vedi nella figura che segue. CW significa senso orario, mentre CCW significa senso anti-orario:

arduino e encoder - segnale elettrico encoder a quadratura
arduino e encoder – segnale elettrico encoder a quadratura

 

Schema elettrico ARDUINO senza e con de-bounce

Lo schema più semplice è utilizzare il rotary encoder direttamente collegato ai pin digitali 2 e 3 della scheda Arduino (attivando le resistenze di pull-up). Se si ha la possibilità è meglio implementare il circuito di de-bounce che elimina i falsi contatti, i quali possono provocare un conteggio errato degli impulsi dell’encoder (consigliato).

Arduino e encoder - collegamento elettrico pratico
Arduino e encoder – collegamento elettrico pratico

 

Il circuito dell’immagine che segue ha due versioni di de-bounce. A sinistra quella più elaborata che utilizza un filtro RC. A destra vengono utilizzati dei solo condensatori. Dalle mie prove pratiche è risultato sufficiente un solo condensatore da 10nF tra pin 2 e GND, e pin 4 e GND.

arduino e encoder - schema elettrico con debounce
arduino e encoder – schema elettrico con debounce

PROGRAMMA Arduino per calcolare il numero di impulsi encoder con metodo “interrupt”

Propongo un programma per Arduino UNO che ho utilizzato con un encoder ALPS dotato di pulsante.

Ogni volta che viene ruotato l’encoder i segnali elettrici cambiano in funzione del verso di rotazione. Nelle due immagini che seguono ho rappresentato il diagramma temporale. Le frecce indicano la variazione del segnale. Il programma utilizza i pin 2 e 4 per calcolare gli scatti dell’encoder, ed il pin 3 per rilevare l’attivazione del pulsante. I segnali elettrici provenienti dall’encoder rotativo sono filtrati con 3 condensatori ceramici da 10 nF (nano Farad) collegati tra i pin 2, 3 e 4 e il pin GND della scheda Arduino.

Ogni volta che viene ruotato l’encoder il programma invia il totale aggiornato degli scatti effettuati sulla porta seriale. Ogni volta che viene premuto il pulsante viene scritto sulla porta seriale “pulsante premuto” e viene azzerato il totale degli scatti. Puoi vedere cosa succede attivando il “Monitor seriale” nella IDE, interfaccia di programmazione, di Arduino.

Arduino e encoder - segnale elettrico scatto ORARIO
Arduino e encoder – segnale elettrico scatto in senso ORARIO

 

Arduino e encoder - segnale elettrico scatto ANTI ORARIO
Arduino e encoder – segnale elettrico scatto in senso ANTI ORARIO

 

// Programma che utilizza un rotary encoder a quadratura
// il pin A dell'encoder va collegato al pin 2 di Arduino
// il pin B dell'encoder va collegato al pin 4 di Arduino
// il pin del pulsante va collegato al pin 3 di Arduino
// i rimanenti pin dell'encoder vanno collegati al pin GND di Arduino
//
// vengono utilizzati 3 condensatori ceramici da 10 nF per creare
// il circuito elettrico di de-bounce che evita i falsi contatti
//
// www.sciamannalucio.it
//
// Pin utilizzati per gli ingressi dell'encoder
#define encoder0PinA 2
#define encoder0PinSwitch 3
#define encoder0PinB 4
volatile char encoder0Pos = 0;
volatile boolean encoder0Switch = 0;
unsigned int tmp = 0;

// imposta i dati iniziali del programma
void setup() {
// I pin sono impostati come ingresso e viene
// attivata la resistenza di pull-up
// la logica è NEGATIVA
// utilizzare condensatore da 10nF tra il Pin e la GND
  pinMode(encoder0PinA, INPUT_PULLUP); 
  pinMode(encoder0PinB, INPUT_PULLUP);
  pinMode(encoder0PinSwitch, INPUT_PULLUP);
// Il pin attiva l'interrupt hardware sul fronte di salita
  attachInterrupt(digitalPinToInterrupt(encoder0PinA), doEncoderA, RISING);
// Il pin attiva l'interrupt hardware sul fronte di salita
  attachInterrupt(digitalPinToInterrupt(encoder0PinSwitch), doSwitch, RISING);
// Attiva la comunicazione seriale 115200 baud
  Serial.begin (115200);
}

void loop(){
  // Ogni volta che l'encoder fa uno scatto
  // entra nel IF e invia alla seriale lo stato dell'encoder
  if (tmp != encoder0Pos) {
    Serial.println(encoder0Pos, DEC);
    tmp = encoder0Pos;
  }
  if (encoder0Switch) {
    Serial.println("Pulsante premuto");
    encoder0Switch = 0; // riarma il trigger del pulsante
    encoder0Pos = 0; // azzera il contatore degli impulsi di rotazione
  }
}
// Il pin A dell'encoder ha variato il suo stato elettrico
void doEncoderA(){
  if(digitalRead(encoder0PinB)) encoder0Pos--;
    else encoder0Pos++;
}
// Il pin abbinato al pulsante dell'encoder ha variato il suo stato elettrico
void doSwitch(){
  encoder0Switch = 1;
}

Mappatura Pin di un encoder rotativo con pulsante

Vista dall’alto di un rotary encoder con l’associazione tra il nome del Pin e la sua posizione.

Arduino e encoder - mappatura pin di un encoder rotativo con pulsante
Arduino e encoder – mappatura pin di un encoder rotativo con pulsante

vista di lato dell’encoder rotativo.

Arduino e e ncoder - pin rotary encoder con pulsante
Arduino e e ncoder – pin rotary encoder con pulsante

Schema elettrico SENZA utilizzare Arduino

E chi non vuole utilizzare Arduino come fa? Ci sono circuiti integrati che fungono da contatore di impulsi. Puoi vedere il circuito elettrico utilizzabile anche con un encoder a quadratura. Gli integrati utilizzabili sono il 74190 (versione con uscita BCD per collegamento diretto a display decimali) e 74191 per uscita binaria e puoi scaricare cliccando sul link datasheet_74190_191_counter. Questi integrati sono in tecnologia TTL e pertanto vanno alimentati con una tensione di 5 Volt. Se vogliamo utilizzare una tensione di alimentazione fino a 15 Volt usiamo gli integrati CMOS datasheet_cd40192_cd40193. Questo circuito può essere utilizzato per dividere la frequenza di un encoder per un numero che varia tra 2 e 256, basta collegarsi alle uscite U1-Q0 (divisione per 2), U1-Q1 (divisione per 4), U1-Q2 (divisione per 8), U1-Q3 (divisione per 16), U2-Q0 (divisione per 32), U2-Q1 (divisione per 64), U2-Q2 (divisione per 128) e U2-Q3 (divisione per 256). Si devono utilizzare gli integrati con uscita binaria 74191 oppure cd40193.

Arduino e encoder - schema elettrico versione senza microprocessore
Arduino e encoder – schema elettrico versione senza microprocessore

Segnali elettrici di un rotary encoder

Ho usato l’oscilloscopio per vedere, nella pratica, come le tensioni e i segnali elettrici di un encoder rotativo cambiano in funzione di come viene girata la sua manopola.

Il rotary encoder è girato in senso orario con un movimento lento. Il segnale elettrico A da zero diventa 5 Volt. Passati 5 millisecondi anche il segnale B diventa 5 Volt. Tutti i segnali sono a logica positiva. Quando utilizzate Arduino e i resistori di pull-up contenuti nei pin la logica diventa negativa, cioè i segnali passano da 5 Volt a zero.

Arduino e encoder - segnale elettrico CW lento
Arduino e encoder – segnale elettrico CW lento

Il rotary encoder è girato in senso orario con un movimento veloce. Nello stesso tempo del caso precedente, avvengono 15 variazioni di segnale, che corrispondono ad altrettanti scatti dell’encoder totativo.

Arduino e encoder - segnale elettrico CW veloce
Arduino e encoder – segnale elettrico CW veloce

Qui vediamo un ingrandimento temporale del segnale elettrico più veloce.

Arduino e encoder - segnale elettrico CW veloce ingrandimento
Arduino e encoder – segnale elettrico CW veloce ingrandimento

In questo caso l’encoder rotativo l’ho girato in senso anti-orario. Puoi verificare come la teoria è confermata: il segnale B arriva prima, temporalmente parlando, del segnale A.

Arduino e encoder - segnale elettrico CCW lento
Arduino e encoder – segnale elettrico CCW lento

Link a risorse di approfondimento:


Pubblicità

L'articolo Arduino: encoder conta impulsi-giri motore sembra essere il primo su Sciamanna Lucio.

]]>
https://www.sciamannalucio.it/arduino-encoder-conta-impulsi-giri-motore/feed/ 0
Arduino e i pannelli fotovoltaici https://www.sciamannalucio.it/arduino-e-i-pannelli-fotovoltaici/ https://www.sciamannalucio.it/arduino-e-i-pannelli-fotovoltaici/#respond Mon, 21 Dec 2015 18:56:05 +0000 https://www.sciamannalucio.it/?p=1587 Guida per programmare Arduino e usarlo con i pannelli fotovoltaici Uno studente, Nicola, sta svolgendo una tesina su un inseguitore solare comandato con Arduino. Il progetto è interessante e volevo dare il mio piccolo contributo scrivendo questo post. Un lavoro simile l’ho trovato nella tesi di Mattia, “sistema di controllo per un inseguitore fotovoltaico“, dove […]

L'articolo Arduino e i pannelli fotovoltaici sembra essere il primo su Sciamanna Lucio.

]]>
Guida per programmare Arduino e usarlo con i pannelli fotovoltaici

Uno studente, Nicola, sta svolgendo una tesina su un inseguitore solare comandato con Arduino. Il progetto è interessante e volevo dare il mio piccolo contributo scrivendo questo post. Un lavoro simile l’ho trovato nella tesi di Mattia, “sistema di controllo per un inseguitore fotovoltaico“, dove troverai un pò di teoria e dati simulati e misurati con il piccolo inseguitore solare da lui realizzato.

Cosa sono e come utilizzare i pannelli fotovoltaici?

I pannelli fotovoltaici producono energia elettrica quando sono in presenza di luce solare. L’ultima parola “solare” non deve mai essere sottovalutata perchè? Alcune persone pensano che la sola luce della Luna, alle volte, può bastare per produrre energia elettrica. Ma questo non è del tutto vero.

Il pannello fotovoltaico, un insieme di più celle fotovoltaiche, converte energia solare (fotoni) in energia elettrica (elettroni) con un rendimento, in altre parole con un rapporto di trasformazione. Questo significa che, per conoscere quanta energia elettrica può produrre un pannello fotovoltaico, devi conoscere quanta energia solare investe la superficie del pannello. Moltiplicando l’energia solare misurata per un numero (fattore di rendimento), sempre inferiore ad 1, puoi calcolare l’energia elettrica teorica che può produrre il pannello.

Bene e adesso in pratica come faccio? L’energia solare viene misurata in Watt su metro quadrato (W/m^2). Sulla superficie della terra arrivano fino a 1000 Watt su metro quadrato (condizioni di prova standard STC CEI EN 60904-3). Se ipotizziamo di utilizzare un pannello fotovoltaico di area attiva di 1 metro quadrato, con un rendimento del 15% (fattore di trasformazione 0,15) otterremo 150 Watt di potenza elettrica massima. In pratica, quando compri un pannello fotovoltaico, devi guardare il dato, descritto nelle caratteristiche elettriche, come Wp. Questa è la potenza istantanea, Watt, che il pannello può produrre quando viene raggiunto da una luce con energia di 1000 W/m^2. Quando conosci la potenza Wp (Watt di picco) del pannello non hai più bisogno di sapere con che tecnologia è stato prodotto. Con questo dato puoi calcolare la producibilità giornaliera, mensile o annuale del tuo impianto fotovoltaico con software o l’atlante solare.

Quando il fotovoltaico produce la massima potenza? La potenza di picco è la potenza che il pannello fotovoltaico fornisce quando i raggi solari, perpendicolari alla cella fotovoltaica, hanno una potenza di 1000 W/m^2. Se i raggi solari non sono perpendicolari alla cella fotovoltaica la potenza convertita diminuisce, in proporzione al seno dell’angolo che si forma tra la superficie della cella e i raggi del sole. La formula per il calcolo la trovi su wikipedia. Riassumendo la potenza generata da un pannello fotovoltaico dipende da:

  • quanta luce, energia luminosa, arriva alla cella fotovoltaica
  • con che angolo la luce incide sulla superficie della cella fotovoltaica
  • il rendimento elettrico di conversione della cella fotovoltaica

Il rendimento di conversione è dato dal tipo di tecnologia utilizzato per costruire la cella fotovoltaica. E’ un dato che cambia molto lentamente nel tempo, diciamo nell’ordine degli anni. Per cui diventa una costante data.

Quanta energia luminosa arriva alla cella fotovoltaica dipende dal tipo di giornata/situazione del sole. I raggi partono dal sole per arrivare alla cella fotovoltaica. Tutto ciò che è “messo” in mezzo assorbe energia luminosa, e pertanto ne arriva di meno alla cella fotovoltaica. Vedi la figura sotto per capire come varia l’energia luminosa al variare delle condizioni del cielo.

Arduino e fotovoltaico - tabella irragiamento solare
Arduino e fotovoltaico – tabella irraggiamento solare

L’angolo di incidenza dei raggi luminosi determina quanta energia luminosa viene convertita in energia elettrica. Se il pannello fotovoltaico è installato in una posizione fissa è soggetto allo spostamento del sole. Il sole si sposta ogni giorno dall’alba al tramonto. Ma si sposta in modo meno percettibile di giorno in giorno, a seconda delle stagioni/mesi dell’anno. Questo produce una differenza sostanziale di energia ottenibile dal pannello fotovoltaico a seconda dei mesi dell’anno.

Arduino e fotovoltaico - grafico produzione giornaliera
Arduino e fotovoltaico – grafico produzione giornaliera
Arduino e fotovoltaico - grafico andamento mensile
Arduino e fotovoltaico – grafico andamento mensile

Le ore di sole equivalente servono per calcolare in modo semplice la produttività di un pannello fotovoltaico. La tabella che segue è stata ottenuta calcolando una produttività di un impianto da 1000 Wp posizionato in orizzontale (inclinazione 0°) e orientato verso Sud (orientamento 0°) installato nel Nord Italia. Hd sono le ore di sole equivalente giornaliere. Per calcolare quanti Watt produrrà l’impianto in un dato giorno (calcolo teorico-statistico), basta moltiplicare i Wp del pannello per le ore di sole equivalenti: Wp * Hd = Watt giornalieri. Ogni impianto ha un suo rendimento dato dalle variabili dei rendimenti degli inverter e delle perdite sui cavi elettrici, di cui andrà tenuto conto nei calcoli.

Arduino e fotovoltaico - tabella irraggiamento giornaliero
Arduino e fotovoltaico – tabella irraggiamento giornaliero

Applicazioni con Arduino e Pannelli fotovoltaici

Arduino è una scheda a microprocessore che può svolgere compiti di analisi/acquisizione/misura dei dati, oppure comandare attuatori di qualsiasi tipo. Per cui possibili applicazioni ricadono nel settore delle misure elettriche e nella produzione di energia da fonti rinnovabili. Le schede della famiglia Arduino hanno a loro disposizione dei pin/porte che possono misurare tensioni tra 0 e 5 Volt, e generare correnti elettriche tra 0 e 0,04 Ampere. La potenza disponibile su un singolo pin è di appena 0,2 Watt. Questo implica che, a parte qualche LED e piccoli relè, dovrai usare degli attuatori (dispositivi che amplificano la potenza) per comandare i dispositivi di potenza.

La tipica applicazione di un pannello fotovoltaico, nel caso specifico di utilizzo con un sistema fai da te con Arduino, è la ricarica di batterie, per esempio, per dei sistemi di acquisizione dati come i registratori delle condizioni atmosferiche. Può essere anche utilizzato, con Arduino e la sua capacità di misura e calcolo matematico, per un sistema di regolazione quale, per esempio, un inseguitore solare. In questo caso il pannello fotovoltaico può assumere la funzione di misuratore di energia luminosa, come di generatore di energia per la scheda di controllo, o entrambe le cose contemporaneamente. Non avendo limiti Arduino può essere utilizzato in una casa domotica, per alzare/abbassare tapparelle elettriche; oppure per regolare temperatura e umidità in un sistema HVAC in base alle condizioni atmosferiche; o anche regolare le luci del giardino in modo automatico. Puoi creare un sistema di allarme indipendente dalla rete elettrica di casa.

Arduino e fotovoltaico - sistema HVAC
Arduino e fotovoltaico – sistema HVAC

Ricaricare batterie con Arduino

Come faccio a ricaricare le batterie con Arduino? Arduino funge solo da misuratore e regolatore di carica, e pertanto va abbinato ad una fonte di energia quale: la corrente elettrica di casa o ad un pannello fotovoltaico. Possiamo comunque pensare che la batteria deve esser ricaricata tramite un alimentatore, quale che sia la tecnologia utilizzata.

Nel caso di ricarica di batterie al piombo (quelle della macchina ne sono un esempio) si deve prestare attenzione al loro punto di gassificazione. Quando la batteria incomincia ad essere quasi completamente carica non riesce più ad assorbire tutta l’energia generata dall’alimentatore, per cui una parte di questa energia viene dispersa in calore e produzione di gas infiammabile (e anche detonante). Per non incorrere in questo inconveniente, le batterie dell’automobile, sono semi chiuse ermeticamente (VRLA). Gli alternatori delle macchine forniscono una tensione massima di 14,1 Volt, leggermente al di sotto della tensione di inizio gassificazione che è circa 14,4 Volt.

Per le batterie di ultima generazione ai polimeri di Litio (LiPo) si devono utilizzare alcune accortezze. E’ possibile utilizzare una shield per Arduino come la Solar charger shield. Questa scheda utilizza un circuito integrato CN3065 che specificatamente cura tutte le fasi di ricarica della batteria al Litio. La prima fase di carica è a corrente costante, mentre la fase finale è a tensione costante a 4,2 Volt. Con questa shield si possono ricaricare batterie LiPo ad 1 cella da 3,7 Volt. Nella shield è presente un convertitore switching step-up che innalza la tensione di batteria fino a 5 Volt, la tensione di alimentazione delle schede della famiglia “Arduino Uno”. Questa scheda è utile per gestire potenze fino a 3 Watt di uscita al carico elettrico. Per gestire potenze di ingresso dal pannello fotovoltaico, e di uscita al carico si devono utilizzare circuiti elettronici diversi da questo, per esempio vedi MPPT regolatori fotovoltaici.

Arduino e fotovoltaico - fasi di carica della batteria
Arduino e fotovoltaico – fasi di carica della batteria

Inseguitore solare con Arduino

Un inseguitore solare è un dispositivo elettro-meccanico che ottimizza la produzione di energia elettrica dei pannelli fotovoltaici. Hai visto che la posizione ottimale della superficie del pannello deve essere perpendicolare, cioè formare un angolo di 90°, rispetto ai raggi luminosi. Quando questa condizione viene a mancare l’energia convertita dal pannello fotovoltaico diminuisce.

Per eseguire un tracking del sole (inseguimento) si possono utilizzare almeno due metodi: calcolare la posizione del sole in base alla data e ora corrente, conoscendo le coordinate geografiche del luogo di installazione dell’impianto fotovoltaico (link a tesina sistema di inseguimento solare per moduli fotovoltaici con Arduino). Creare un algoritmo iterativo (prova-misura-riprova) che cerca il migliore posizionamento del pannello in base alla massima potenza ottenuta dall’algoritmo.

Nel caso del tracking orario si possono usare delle shield per Arduino quali i Real Time Clock RTC shield. In questo caso la IDE di Arduino fornisce le librerie necessarie per utilizzare questo orologio, da scaricare ed aggiungere alla directory delle librerie di Arduino (scarica da RTClib). La shield la puoi acquistare per esempio da futurashop, e per approfondire come funziona la scheda vedi RTC tutorial.

Il metodo iterativo può portare a dei risultati migliori, ma necessità di circuiti elettronici aggiuntivi. Oltre a dover muovere il motore che sposta i pannelli fotovoltaici, dovrai misurare la luce che arriva alla cella fotovoltaica e determinarne la direzione. Per fare questo si possono utilizzare due sensori di luce quali le resistenze LDR, due LED oppure due piccoli pannelli fotovoltaici. Le resistenze LDR variano la loro resistenza in base alla quantità di luce che arriva alla superficie del sensore. Invece i LED, che per inciso sono dei piccoli pannelli fotovoltaici in miniatura, come la cella fotovoltaica produce una corrente Isc (Corrente di corto circuito) che è proporzionale alla luce solare. Questo è il metodo di misura utilizzato nel settore fotovoltaico. Mettendo in corto circuito l’uscita elettrica della cella su uno shunt resistivo (una semplice resistenza di basso valore ohmmico) si misura in modo indiretto la corrente generata, e di conseguenza l’energia luminosa. Con lo stesso concetto si può misurare la temperatura di cella, ricordando che la cella fotovoltaica non è altro che un diodo e che la sua tensione diretta varia in modo negativo con l’aumentare della temperatura.

Poi andrebbero gestiti i casi particolari. Hai visto nella figura delle condizioni atmosferiche che non sempre c’è pieno sole. Per esempio le nuvole oscurano il sole e di conseguenza diminuisce la potenza fornita dal pannello. Un’altro dettaglio è la gestione di situazioni pericolose quali vento molto forte e grandine. I pannelli fotovoltaici sono a prova di grandine, ma hanno un limite di carico da non superare. Mettere, per esempio, in verticale i pannelli in situazione di grandine è sicuramente aumentare la sicurezza e la protezione dei pannelli. In caso di vento estremo i pannelli andrebbero orientati in posizione orizzontale, in modo da limitare l’effetto vela. Nel caso di grandine si può misurare la potenza sonora vicino al modulo e attraverso un microfono determinare la soglia massima oltre la quale posizionare i pannelli fotovoltaici nella zona di sicurezza. Il vento invece va misurato con un anemometro. Anche qui oltrepassata la soglia massima si attiva l’algoritmo che posiziona in sicurezza i pannelli fotovoltaici.

Tutti i dati dell’impianto possono essere visualizzati su di un sito internet tramite una shield ethernet e Arduino. La IDE di Arduino fornisce le librerie per creare un sistema di comunicazione con protocollo IP. Un tutorial completo lo trovi su Arduino ethernet shield tutorial.

Arduino e fotovoltaico - libreria ethernet e web server
Arduino e fotovoltaico – libreria ethernet e web server

La meccanica dell’inseguitore potrà avere uno o due gradi di libertà. Il che significa che si dovranno utilizzare uno o due motori per movimentare il pannello. Nel caso devi muovere un piccolo pannello dimostrativo allora potrai utilizzare motori passo passo o servo motori di piccola taglia. In tutti e due i casi la IDE di Arduino ha inclusa la libreria per questi due tipi di motori. Il servo motore può ruotare di 180° oppure di 360°. Mentre il motore passo passo si muove a piccoli scatti, denominati in gradi. Per esempio un motore passo passo che ha una risoluzione di 200 passi per giro ha la risoluzione di 1,8°.  In File->Esempi->Servo puoi trovare due esempi già pronti all’uso. In File->Esempi->Stepper trovi quattro esempi già pronti all’uso.

I sensori di luce, come anche i motori dovranno essere protetti dalla pioggia e dalla umidità.

 


Pubblicità

L'articolo Arduino e i pannelli fotovoltaici sembra essere il primo su Sciamanna Lucio.

]]>
https://www.sciamannalucio.it/arduino-e-i-pannelli-fotovoltaici/feed/ 0
Come usare Arduino e le fotoresistenze LDR https://www.sciamannalucio.it/come-usare-arduino-e-le-fotoresistenze-ldr/ https://www.sciamannalucio.it/come-usare-arduino-e-le-fotoresistenze-ldr/#respond Mon, 24 Aug 2015 16:59:09 +0000 https://www.sciamannalucio.it/?p=1420 Arduino, la piattaforma di programmazione più conosciuta al mondo, ha bisogno di sensori per tradurre la realtà in bit. Quali applicazioni utili con Arduino e le fotoresistenze LDR ? Le fotoresistenze LDR (Light Dependent Resistor), ma in generale i sensori di luce, possono essere utilizzati con la scheda Arduino per: – realizzare un circuito crepuscolare, […]

L'articolo Come usare Arduino e le fotoresistenze LDR sembra essere il primo su Sciamanna Lucio.

]]>
Arduino, la piattaforma di programmazione più conosciuta al mondo, ha bisogno di sensori per tradurre la realtà in bit.

Quali applicazioni utili con Arduino e le fotoresistenze LDR ?

Le fotoresistenze LDR (Light Dependent Resistor), ma in generale i sensori di luce, possono essere utilizzati con la scheda Arduino per:

– realizzare un circuito crepuscolare, che accende le luci di casa quando c’è buio

– misurare la luce in ufficio o in casa per regolare al meglio la luce delle lampadine alogene o a led (dimmer).

dirigere il robot con piattaforma Arduino verso fonti di luce

– regolare la direzione dei pannelli fotovoltaici automaticamente per costruire un inseguitore solare con Arduino

– regolatore di volume audio

Come usare le fotoresistenze LDR con Arduino ?

Il mio amico Aldo mi ha chiesto una applicazione con le fotoresistenze da utilizzare nel suo grandioso progetto didattico dedicato all’automazione industriale.

Prima di utilizzare questo sensore di luce vediamo come funziona una fotoresistenza. Comprenderemo meglio come utilizzarla nei nostri progetti con Arduino.

Una foto-resistenza, come suggerisce il nome, è una resistenza che ha la capacità di cambiare il suo valore ohmmico in funzione della luce che la illumina.

Se la luce è forte allora la sua resistenza è piccola. Al contrario al buio la sua resistenza è molto alta. Si dice che la fotoresistenza varia il suo valore ohmmico in modo inversamente proporzionale alla luce incidente sulla sua superficie attiva.

E adesso che so tutto questo come la uso con Arduino?

La scheda Arduino (questo discorso vale per la scheda Arduino UNO, come per tutti gli altri modelli) può misurare solo le tensioni in ingresso ai suoi pin/input analogici. Questo significa che si deve utilizzare un “trucco” per misurare indirettamente il valore resistivo attraverso la misura diretta di una tensione.

Il trucco è utilizzare una seconda resistenza di valore noto e collegarla in serie alla fotoresistenza. Si collega il 5 Volt di Arduino ad un polo della fotoresistenza, si collegano l’altro polo della fotoresistenza ad un polo della resistenza R e finalmente si collega l’altro polo della resistenza R al pin di Arduino chiamato GND. In questo modo hai creato un partitore di tensione.

Collegando un pin analogico della scheda Arduino al punto in cui sono collegati un polo della resistenza R ed uno della fotoresistenza puoi misurare la tensione proporzionale alla luce che illumina la fotoresistenza.

Se vuoi che la tensione salga all’aumentare della luce allora devi collegare la fotoresistenza al pin 5 V di Arduino. Se vuoi che la tensione sale all’aumentare del buio allora devi collegare la fotoresistenza al pin GND di Arduino.

Riporto sia lo schema elettrico che quello pratico per collegare i pin di Arduino con la breadboard. In questo circuito la tensione sale all’aumentare della luce che illumina la parte sensibile del fotoresistore (la parte sensibile è quella che vedi nell’immagine che precede l’articolo).

Arduino e fotoresistore - circuito elettrico partitore di tensione
Arduino e fotoresistore – circuito elettrico partitore di tensione
Arduino e fotoresistore - circuito pratico con breadboard
Arduino e fotoresistore – circuito pratico con breadboard

Come calcolare la resistenza di partitore con le fotoresistenze LDR ?

Partiamo col dire che dobbiamo conoscere le caratteristiche della fotoresistenza che stiamo utilizzando. I fotoresistori principalmente si differenziano per la resistenza che misurano quando li si sottopone ad una certa quantità di luce nota. Ci sono alcuni parametri per esempio:

R10 definisce la resistenza minima e massima che potresti misurare ai poli della fotoresistenza quando viene illuminata da una luce con quantità 10 lux

R100 definisce la resistenza tipica che potresti misurare ai poli della fotoresistenza quando viene illuminata da una luce con quantità 100 lux

R05 definisce la resistenza dopo che è stata messa al buio per almeno 5 secondi

La quantità di luce viene misurata in lux, ma per fare degli esempi pratici la luce della luna ha 1 lux, in un ufficio ben illuminato puoi misurare 500 lux, la luce del sole può variare dai 32’000 (cielo nuvoloso) ai 100’000 lux (cielo azzurro).

Questi parametri sono molto importanti e la fotoresistenza va acquistata in base a quanta luce dobbiamo misurare, cioè qual’è la sua applicazione finale. Se mettiamo il sensore di luce in un ufficio per accendere le lampadine solo quando la luce del sole è calata a sufficienza, allora il parametro R100 ci guiderà nella scelta del valore di resistenza da mettere nel partitore di tensione. In alternativa devi misurare la resistenza del sensore quando viene illuminato dalla luce di riferimento (quella a cui prevedi lavorerà il sensore).

Esempio pratico: misura di luce in ufficio/casa per crepuscolare

Ho un sensore fotoresistenza con un parametro R10 con 10 lux di luce, che varia dai 20 ai 50 kohm, ed un parametro R05 con buio completo che è maggiore di 10 Mohm. Se penso di utilizzarlo per misurare la luce di un ufficio o casa metterò una resistenza nel circuito del partitore di tensione uguale ad un valore compreso tra 20 e 50 kΩ. Mettiamo che per semplicità mettiamo una resistenza che ha un valore medio tra il minimo ed il massimo per cui una 39 kΩ. Se misuro la tensione nel punto dove collego il pin analogico di Arduino dovrei misurare una tensione che può variare tra un minimo di 2,2 Volt ed un massimo di 3,3 Volt. Ricordati di non mettere la mano davanti al sensore fotoresistenza quando fai le misure per non fare ombra alla fotoresistenza stessa.

ESEMPIO pratico: accendere un relè con una fotoresistenza LDR

Voglio accendere un relè miniatura da 5 Volt. La resistenza della bobina di eccitazione del relè può variare a seconda della potenza del relè tra i 35 e i 2000Ω. Nel nostro caso pratico abbiamo la bobina del relè che ha una resistenza di 125Ω. Il relè si accende quando lo alimento con un minimo di 4 Volt. Il che significa che se voglio accenderlo devo fornirgli una corrente minima di 32 mA. La fotoresistenza, quando illuminata, deve far passare all’interno di se la corrente che serve al relè per eccitarsi, cioè accendersi. Calcolando con la legge di Ohm la resistenza minima che deve avere la fotoresistenza, con una caduta di potenziale ai suoi poli di 1 Volt, si ottiene 31Ω. Guardando il grafico dell’andamento della resistenza del sensore di luce rispetto alla luce incidente possiamo vedere come un valore così basso di resistenza lo si ottiene esponendo la fotoresistenza solo alla luce del sole.

Arduino e fotoresistenza - grafico dipendenza con la luce
Arduino e fotoresistenza – grafico dipendenza con la luce

 

Il grafico ci dice anche che è molto difficile, se non impossibile, eccitare un relè direttamente con una fotoresistenza. In nostro aiuto ci viene l’elettronica. Utilizzando un transistor NPN possiamo aumentare la corrente, o meglio diminuire la quantità di luce che deve illuminare la fotoresistenza. Vediamo il circuito elettrico nell’immagine che segue. Quello a sinistra attiva il relè quando la fotoresistenza è in presenza di luce. Quello a destra in presenza di buio.

 

Arduino e fotoresistenza - circuito elettrico rele
Arduino e fotoresistenza – circuito elettrico rele

 

Come tarare il circuito elettrico con fotoresistenza

Si deve esporre il sensore di luce, la fotoresistenza, ad una quantità di luce che riteniamo quella che deve esserci per eccitare il relè. Questa quantità di luce varia a seconda della vostra applicazione, per cui è una quantità che devi scegliere tu. Girare il trimmer fino a che il relè si eccita/accende. Quando la bobina del relè si eccita produce un clack sonoro.

Aldo mi ha chiesto una cosa veloce per cui vi rimando ad un altro tutorial di programmazione Arduino fatto dall’amico Mauro Alfieri.

Qui trovi il datasheet dei sensori LDR tipicamente utilizzati con Arduino.

Se hai idee su come migliorare questo articolo scrivimi.


Pubblicità

L'articolo Come usare Arduino e le fotoresistenze LDR sembra essere il primo su Sciamanna Lucio.

]]>
https://www.sciamannalucio.it/come-usare-arduino-e-le-fotoresistenze-ldr/feed/ 0
Led RGB NeoPixel programmati con Arduino https://www.sciamannalucio.it/led-rgb-neopixel-programmati-con-arduino/ https://www.sciamannalucio.it/led-rgb-neopixel-programmati-con-arduino/#respond Wed, 22 Jul 2015 16:59:42 +0000 https://www.sciamannalucio.it/?p=1373 Impariamo a programmare i led RGB NeoPixel con la scheda Arduino. I led RGB NeoPixel sono particolari led a colori che devono essere programmati con un microprocessore. In questo articolo uso la scheda Arduino, che programmata opportunamente, permette di generare colori RGB con i led NeoPixel. Gli utilizzi di questo led sono i più disparati: […]

L'articolo Led RGB NeoPixel programmati con Arduino sembra essere il primo su Sciamanna Lucio.

]]>
Impariamo a programmare i led RGB NeoPixel con la scheda Arduino.

I led RGB NeoPixel sono particolari led a colori che devono essere programmati con un microprocessore. In questo articolo uso la scheda Arduino, che programmata opportunamente, permette di generare colori RGB con i led NeoPixel.

led RGB NeoPixel - ingrandimento
led RGB NeoPixel – ingrandimento

Gli utilizzi di questo led sono i più disparati: fra tutti creare effetti luminosi dinamici come riprodurre un video o un’immagine.

Essendo un led RGB, NeoPixel ti permette di creare teoricamente 16’777’215 possibili sfumature di colore.

NeoPixel è un led programmabile con 8 bit di risoluzione per ogni colore primario: Rosso, Verde e Blu.

Questo significa che per ogni colore posso variare l’intensità di luce da led spento a led acceso con 255 intensità intermedie.

Nell’articolo come usare i led RGB NeoPixel ho fatto una descrizione delle basi minime per usare questi led. Ora affronto in dettaglio il protocollo di comunicazione dei dati per capire a che velocità massima si possono usare questi led.

La velocità massima di scansione o refresh video è definita da un numero seguito da “fps”. Se trovate 30 fps significa: trenta immagini al secondo. Cioè ogni secondo vengono cambiate 30 immagini. Questo significa che ogni 33 mS vengono cambiati i colori di tutti i led che formano il video.

La velocità massima di trasmissione dei dati di programmazione dei led NeoPixel è di 800 kHz. Il led deve essere programmato inviando i bit che definiscono il colore. Per ogni colore ci servono 8 bit. Per i tre colori RGB ci servono 24 bit. Il tempo necessario a trasmette un bit, l’unità di informazione usata nei microprocessori, è di 1,25 uS. Questo significa che per trasmettere il colore che vogliamo far apparire su un led ci servono 24 bit x 1,25 uS = 30 uS.

Se vogliamo fare un refresh del video ogni 33 mS il massimo numero di led utilizzabili è 1’100.

Nell’ambiente di sviluppo di Arduino (l’IDE dove scrivete gli sketch/programmi) dovreste trovare la libreria “File -> Esempi -> NeoPixel”. Qui sono già pronti tre esempi interessanti:

– simple (accende tutti i led di un solo colore)

– buttoncycler (ogni volta che premete il pulsante i led formano dei giochi di colore diversi)

– strandtest (esegue gli stessi giochi di colori del programma buttoncycler ripetuti ciclicamente)

“Guardando” il file Adafruit_NeoPixel.cpp, che compone la libreria, scopriamo che le linee di programma sono state scritte direttamente in codice assembler. Tutti gli interrupt vengono disabilitati finchè non finisce la trasmissione dei dati.

Le porte del microprocessore utilizzabili sono la PortB e la PortD, per intenderci i pin che sulla scheda Arduino sono chiamati DIGITAL. Per cui con questa libreria non si possono utilizzare i pin ANALOG.

Le routine di scrittura dei dati sono “tarate” per i quarzi da 8MHz, 12MHz e 16MHz. La libreria funziona anche con Arduino DUE.


Le FASI di programmazione per usare i led sono:

il programma descritto è “file -> esempi -> NeoPixel -> simple”

– includere la libreria all’inizio del programma: “#include <Adafruit_NeoPixel.h>”

– scegliere il pin utilizzato per trasmettere i dati, nell’esempio il pin DIGITAL 2: “#define BUTTON_PIN   2”

– dichiarare quanti led NeoPixel si stanno utilizzando, nell’esempio sono sedici: “#define NUMPIXELS      16”

– creare l’istanza “pixels”, cioè attivare le funzioni di libreria: “Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);”

– nella funzione “setup” avviare la trasmissione dei dati: “pixels.begin();”

– nella funzione “loop” definire per ogni led, chiamato pixels, il colore che si vuole avere. Trovate come creare i colori qui tabella colori RGB.

– funzione che imposta il colore del led corrispondente al numero progressivo zero a partire dal primo led collegato al pin della scheda Arduino. In altre parole il led che è collegato al pin ha l’indirizzo 0: “pixels.setPixelColor(i, pixels.Color(0,150,0));” i = indirizzo del led,  Color(0, 255,0) colore verde come da tabella colori RGB.

– funzione che trasmette i dati e cambia i colori di tutti i led: “pixels.show();”


Esempio di tabella corrispondenza numeri RGB a colori 

led RGB NeoPixel - tabella colore
led RGB NeoPixel – tabella colore

 

 

 

 

 

 

 

 

 


Pubblicità

L'articolo Led RGB NeoPixel programmati con Arduino sembra essere il primo su Sciamanna Lucio.

]]>
https://www.sciamannalucio.it/led-rgb-neopixel-programmati-con-arduino/feed/ 0
Come usare scheda motor driver L298N con Arduino https://www.sciamannalucio.it/come-usare-scheda-motor-driver-l298n-con-arduino/ https://www.sciamannalucio.it/come-usare-scheda-motor-driver-l298n-con-arduino/#respond Sun, 12 Jul 2015 16:19:57 +0000 https://www.sciamannalucio.it/?p=1249 Impara ad usare il motor driver L298N con Arduino per comandare motori in continua e motori passo passo. Il mio amico Aldo ha recentemente acquistato una scheda “cinese” per comandare dei motori passo passo, ed all’occorrenza anche dei motori in continua. L’affare era troppo allettante per non farlo, ma spesso le “cinesate” non danno informazioni particolareggiate […]

L'articolo Come usare scheda motor driver L298N con Arduino sembra essere il primo su Sciamanna Lucio.

]]>
Impara ad usare il motor driver L298N con Arduino per comandare motori in continua e motori passo passo.

Il mio amico Aldo ha recentemente acquistato una scheda “cinese” per comandare dei motori passo passo, ed all’occorrenza anche dei motori in continua. L’affare era troppo allettante per non farlo, ma spesso le “cinesate” non danno informazioni particolareggiate su come utilizzare la scheda elettronica. Vediamo di analizzare la scheda ed imparare ad utilizzarla per i nostri progetti con Arduino.

La scheda elettronica, grande 60×56 millimetri, si basa sull’integrato L298N. Questo circuito integrato è composto da due ponti ad H. Il ponte H è una particolare configurazione elettronica che permette di invertire la marcia/direzione dei motori utilizzando un segnale di comando a 5V TTL. Le caratteristiche principali di questo integrato sono:

– può comandare 2 motori in corrente continua o 1 motore passo passo con correnti fino a 2A per motore/uscita

– può essere alimentato da 7,5 a 46V con tensione e corrente continua

– è dotato di protezione termica

– fornisce la possibilità di misurare la corrente assorbita dai motori

– può funzionare con un segnale PWM con frequenza massima di 40 kHz

Il circuito elettrico di questa scheda elettronica lo vedete nella figura sotto:

motor driver arduino con L298N - circuito elettrico
motor driver arduino con L298N – circuito elettrico

mentre nella immagine seguente vedete le connessioni elettriche:

motor driver arduino con L298N - vista connessioni elettriche
motor driver arduino con L298N – vista connessioni elettriche

Come alimentare la scheda motor driver:  per far funzionare il motore dobbiamo alimentare la scheda elettronica. Possiamo utilizzare una batteria o un alimentatore elettronico. La scheda funziona con un minimo di 7,5 Volt. Questo la rende ideale per far funzionare motori da 9 o 12 Volt. I segnali di comando di Arduino funzionano con 5 Volt. Questa scheda elettronica è dotata di un regolatore di tensione che abbassa la tensione di ingresso a 5 Volt. Così possiamo collegare direttamente i segnali di comando dalla scheda Arduino alla scheda motor driver senza problemi. Volendo possiamo alimentare la stessa scheda Arduino direttamente con la scheda motor driver. Il polo positivo della batteria/alimentatore (filo rosso) lo colleghiamo al morsetto chiamato VMS. Il polo negativo lo colleghiamo al morsetto chiamato GND. Al morsetto chiamato 5V possiamo collegare la scheda Arduino.

Impostazione dei ponticelli/jumper: tutto dovrebbe funzionare con i ponticelli collegati come vedete nella figura sopra “vista connessioni elettriche”.

Uscite motore: le due uscite chiamate “MOTORA” e “MOTORB” possono alimentare due motori separati, un singolo motore fino a 4A usando le uscite in configurazione parallelo. In alternativa possono alimentare un singolo motore passo passo a “quattro fili”.

Ingressi di comando: servono per avviare il motore o cambiarne il senso di rotazione. Il pin ENA abilita la marcia del motore collegato al morsetto “MOTORA”. Il pin ENA deve essere collegato ad una tensione positiva di 5V per far funzionare il motore. Nel caso usate la scheda con Arduino, questo pin va collegato ad una uscita PWM della scheda Arduino. I pin IN1 e IN2 decidono il senso di marcia, cioè se il motore gira in senso orario oppure antiorario. Se collegate il pin IN1 al +5V, e il pin IN2 al -GND il motore girerà in un senso. Se collegate il pin IN1 al -GND, ed il pin IN2 al +5V il motore “MOTORA” girerà in senso contrario a prima. Per il motore collegato al morsetto “MOTORB” valgono le stesse informazioni. Il pin ENB abilita il funzionamento del motore, in poche parole lo fa partire. I pin IN3 e IN4 decidono in quale senso gira il motore.

In basso come appaiono le connessioni elettriche dei due motori:

motor driver arduino con L298N - connessione elettrica motori
motor driver arduino con L298N – connessione elettrica motori

Con questa scheda motor driver con L298N possiamo anche non utilizzare Arduino per controllare i motori. Basta che colleghiamo ai pin IN1 e IN2 un deviatore che alternativamente fornisce i segnali di +5V e -GND in modo tale da scegliere il senso di marcia. Per diminuire o aumentare la velocità colleghiamo al pin ENA un segnale PWM, che può essere generato da un semplice circuito con timer NE555. La frequenza del PWM deve essere compresa tra gli 8 e i 40 kHz. Per il secondo motore valgono le stesse informazioni, cambiano solo i nomi dei pin di comando.

MOTORE PASSO PASSO: il motore passo passo necessita di segnali di comando generati con una successione ben precisa. In questo caso l’uso di Arduino è quasi obbligatorio. Sono già disponibili programmi gratuiti per utilizzare i motori passo passo con Arduino. Vediamo la connessione elettrica per utilizzare un motore passo passo con la scheda motor driver con L298N:

motor driver arduino con L298N - connessione elettrica motore passo passo
motor driver arduino con L298N – connessione elettrica motore passo passo

I segnali di comando vanno collegati alla scheda Arduino come in figura sotto (se utilizzate la scheda con Arduino in un robot alimentato a batteria dovrete collegare il pin di Arduino chiamato 5V al morsetto della scheda motor driver chiamato 5V. In questo modo la scheda Arduino viene alimentata direttamente dal +5Volt della scheda motor driver):

motor driver arduino con L298N - connessioren elettrica con Arduino
motor driver arduino con L298N – connessione elettrica con Arduino

I comandi ENA e ENB devono essere collegati al morsetto 5V. In alternativa si possono collegare ai pin di Arduino come riportato nell’immagine precedente. Si deve aggiungere al programma i comandi che impostano le uscite pin 10 e pin 9 positivi HIGH.

Il programma da caricare nella scheda Arduino è il seguente (il programma è semplice e serve a verificare che il motore passo passo e la scheda siano funzionanti):


/* 
 Programma controllo motore passo passo 
 
 Questo programma comanda un motore passo passo.
 I fili del motore sono collegati ai pin della scheda Arduino chiamati 5, 4, 3, 2. 
 
 Il motore dovrebbe compiere un giro in un senso e poi compiere un giro in senso opposto.

#include <Stepper.h>

const int passi_motore = 200; // cambia questo numero in base ai passi che compie il motore
 // che hai collegato

// inizializza la libreria con i pin utilizzati da Arduino:
Stepper motore(passi_motore,5,4,3,2); 

void setup() {
 // imposta la velocità di rotazione a 60 giri al minuto:
 motore.setSpeed(60);
 // apre la porta seriale di comunicazione:
 Serial.begin(9600);
// attiva i motori:
 pinMode(10, OUTPUT);
 digitalWrite(10, HIGH);
 pinMode(9, OUTPUT);
 digitalWrite(9, HIGH);
}

void loop() {
 // compie un giro in una direzione:
 Serial.println("clockwise");
 motore.step(passi_motore);
 delay(500); // ritardo
 
 // compie un giro nella direzione opposta:
 Serial.println("counterclockwise");
 motore.step(-passi_motore);
 delay(500); // ritardo
}

Pubblicità

L'articolo Come usare scheda motor driver L298N con Arduino sembra essere il primo su Sciamanna Lucio.

]]>
https://www.sciamannalucio.it/come-usare-scheda-motor-driver-l298n-con-arduino/feed/ 0
Piccoli Arduino crescono! piccoli anche nel prezzo? https://www.sciamannalucio.it/piccoli-arduino-crescono-piccoli-anche-nel-prezzo/ https://www.sciamannalucio.it/piccoli-arduino-crescono-piccoli-anche-nel-prezzo/#respond Thu, 15 Jan 2015 12:34:30 +0000 https://www.sciamannalucio.it/?p=889 C’è un alternativa ad Arduino, una scheda più piccola e a minor costo, ma compatibile con tutte le librerie Arduino? I cloni di Arduino, dobbiamo ricordare, sono nati grazie al fatto che Arduino è una piattaforma hardware e software open source. Il che significa che chiunque può farsi da se una scheda Arduino e può […]

L'articolo Piccoli Arduino crescono! piccoli anche nel prezzo? sembra essere il primo su Sciamanna Lucio.

]]>
C’è un alternativa ad Arduino, una scheda più piccola e a minor costo, ma compatibile con tutte le librerie Arduino?

I cloni di Arduino, dobbiamo ricordare, sono nati grazie al fatto che Arduino è una piattaforma hardware e software open source. Il che significa che chiunque può farsi da se una scheda Arduino e può migliorare il software per programmare il microprocessore utilizzato dalla scheda. Di fatto al crescere della fama di Arduino, sono nati altrettanti cloni. Mi interessa capire se ci sono dei cloni più piccoli, e meno costosi, per esempio da poter lasciare senza rimorsi sul progetto appena completato.

Ci sono molti progetti interessanti, alcuni di questi sono: Digispark, Microview, Femtoduino, LeoStickRFduino. Quali di questi è meglio?

Guardando le caratteristiche tecniche di questi progetti notiamo che tutti sono compatibili con l’IDE, l’Hardware ed il software Arduino. L’unica consistente differenza è che, mentre Arduino può essere programmato direttamente collegandolo alla porta USB, alcune di queste schede necessitano di adattatori aggiuntivi (con un costo in più). Altra differenza sono la quantità di pin utilizzabili, che nei cloni può risultare minore.


scheda elettronica Digispark
Digispark

DIGISPARK (video)

Prezzo: 7,61€

Microprocessore: Atmel Attiny85 (datasheet)

Memoria di programma: 6kB utili

Pin disponibili: massimo 6, usabili come 3 PWM, 4 ingressi analogici o 6 digitali

Comunicazione: USB (senza necessità di cavo di collegamento), I2C e SPI

Programmazione: diretta USB (uguale ad Arduino)

Alimentazione diretta con USB, o in alternativa ingresso per batteria/alimentatore in continua con regolatore di tensione incorporato.


Arduino microview
Microview

MICROVIEW (video)

Prezzo: 39,95$

Microprocessore: Atmel ATMega328 (datasheet)

Memoria di programma: 30kB utili

Pin disponibili: massimo 9, usabili come 3 PWM, 6 ingressi analogici

Comunicazione: USB (serve Microview Programmer un adattatore non compreso nel prezzo)

Programmazione: con adattatore Microview USB programmer (diversa da Arduino) costo 14,95$

Alimentazione da 3,3 a 16V in tensione continua da batteria o alimentatore con regolatore di tensione incorporato. Display Oled 64×48 pixel compreso nel prezzo. Completa di pin direttamente collegabili alla BreadBoard.


Arduino femtoduino
femtoduino

FEMTODUINO

Nato da un’idea di uno studente Italiano, Fabio Varesano,  morto prematuramente. Fabio ha scritto una bellissima tesi di laurea nel 2011 (varesano thesis) in cui esplorando il mondo Arduino si rendeva conto dell’utilità di miniaturizzare la scheda Arduino, mantenendone inalterate le caratteristiche tecniche e open source.

Essendo una scheda Arduino a tutti gli effetti le caratteristiche tecniche sono le stesse. La scheda necessita di un adattatore USB per essere programmata.

Di recente è stata introdotta, dai continuatori di questo progetto, una Femtoduino completa di adattatore USB incorporato.

Il sito per acquistare la Femtoduino non è ben fatto e non è chiaro come fare per acquistare.

Comunque Fabio ha rilasciato tutti i file per costruirsela da se perchè ha voluto un progetto libre hardware.


Arduino Leostick
LeoStick

LEOSTICK (video)

Prezzo: 29,95$

Microprocessore: Atmel ATMega32U4 (datasheet)

Memoria di programma: 30kB utili

Pin disponibili: massimo 20, usabili come 6 PWM, 6 ingressi analogici o 14 digitali

Comunicazione: USB (senza necessità di cavo di collegamento), I2C e SPI

Programmazione: diretta USB (uguale ad Arduino)

I plus di questa scheda sono un led RGB direttamente utilizzabile dai pin, un piccolo altoparlante piezo elettrico per produrre suoni. E’ meccanicamente compatibile con le breadBoard.


Arduino RFDuino
RFduino

RFDUINO (video)

Prezzo: 23,52€

Microprocessore: Nordic 16MHz ARM Cortex M0

Memoria di programma: 128kB

Pin disponibili: massimo 6 GPIO (general Purpose Input Output)

Comunicazione: Bluetooth, USB (necessita di adattatore)

Programmazione: USB con adattatore (diversa da Arduino)

I plus di questa scheda sono il transceiver Nordic per comunicare, in bluetooth, con i dispositivi smartphone. La tensione di alimentazione è tra 1,9 e 3,3V, il che rende la scheda delicata e per forza si deve usare un regolatore di tensione che loro forniscono con una scheda impilabile (shield). Anche la programmazione del microprocessore deve essere fatta con una scheda aggiuntiva USB shield.

Dove acquistare: modulo singolo Mouser; modulo completo di USB shield Mouser

sito internet produttore transceiver: Nordic , SparkFun

guida introduttiva: RFduino_quickstart_guide


Pubblicità

L'articolo Piccoli Arduino crescono! piccoli anche nel prezzo? sembra essere il primo su Sciamanna Lucio.

]]>
https://www.sciamannalucio.it/piccoli-arduino-crescono-piccoli-anche-nel-prezzo/feed/ 0