Archivi tag: arduino

Livelli logici TTL e CMOS – cosa si nasconde dietro un HIGH o LOW di una digitalWrite di Arduino?

ttl-cmos-atmega328-bannerSpesso, durante i miei corsi su Arduino ricorrono le domande sui livelli logici in elettronica digitale, il tutto nasce quando è indispensabile introdurre la differenza tra segnali analogici e digitali o quando si parla di livelli logici 1 o 0. Mi preme quindi fare un’estensione agli appunti che utilizzo durante le lezioni con un breve post, nulla di complicato, spiegato per chi si avvicina per la prima volta all’uso di Arduino. Vediamo di capire cosa si nasconde, dal punto di vista elettronico dietro le parole HIGH e LOW che si utilizzano sempre nei nostri sketch Arduino.

Viviamo in un mondo pieno di segnali analogici, si pensi ad esempio alla temperatura, alla pressione atmosferica al suono emessa da un flauto e mille di questi esempi si potrebbero fare. Come ben sapete in elettronica digitale vengono utilizzati due stati logici ON e OFF, ACCESO e SPENTO, o in altro modo 1 e 0. Con questi due livelli logici potete codificare e trasportare una grande quantità di informazioni e far colloquiare tra loro dispositivi elettronici.
Per fare un esempio per chi ha incominciato con il classico “Blink”, provate a pensare cosa si può fare con sequenze ACCESO e SPENTO di LED, potete comunicare ad esempio informazione con il codice morse.

Cos’è un livello logico

In estrema sintesi possiamo dire che un livello logico è una tensione specifica o uno stato in cui un segnale può esistere.
Spesso, come detto nell’introduzione di questo post, ci riferiamo a due stati logici ON e OFF dove traduciamo ON con il numero binario 1 e OFF si traduce in uno 0 binario. In Arduino noi identifichiamo lo 0 binario in LOW e 1 binario in HIGH.
I livelli di tensione elettrica che definiscono l’1 binario o lo 0 binario possono differire in funzione della tecnologia utilizzata per la costruzione dei dispositivi elettronici digitali.

Attivo alto e attivo basso

Dal punto di vista elettrico a cosa corrisponde un HIGH o un LOW?
Se avete incominciato a lavorare con circuiti integrati e microcontrollori è molto probabile che troverete pin che sono attivi bassi o attivi alti, ciò indica quando il pin è attivo. Spesso capita che un circuito integrato per poter funzionare o per abilitare alcune sue funzionalità necessita che su un pin prestabilito vi sia un livello logico basso o alto si dice quindi quindi che quel particolare pin è attivo basso o alto ovvero deve esserci un livello logico 1 (tensione di 5V o 3,3V) o un livello logico 0 (tensione di 0V o poco più).

Per fare un esempio è come se paragonassimo la vostra automobile ad un circuito integrato (vedi ad esempio il microcotrollore su Arduino) e la chiave di accensione ad un pin dell’integrato, allora diciamo che: “l’automobile si avvia se giriamo la chiave, il circuito integrato fa quello che desideriamo se su un particolare pin abbiamo un livello logico stabilito (alto o basso)”.

Ad esempio, per chi ha già fatto qualche sperimentazione con gli shift register avrà notato che questo integrato possiede un pin Enable identificato con CE. Se sul data datasheet notate che sulla lettere CE è presente una linea, vuol dire che il pin è attivo basso ovvero lo shift register può funzionare se su CE è presente una tensione di 0V, in altro modo il pin deve essere collegato a GND. Se invece sulle lettere CE non è presente una linea allora vuol dire che il pin CE è attivo alto e quindi l’integrato potrà funzionare solo se il pin è portato ad un livello logico 1 (5V o 3,3V).

I dispositivi elettronici digitali vengono suddivisi in famiglie logiche le quali differiscono le una dalle altre per la tecnologia usata per costruirli e per la tipologia di circuiti di base (componenti elettronici usati) su cui si basa il loro funzionamento.
Inoltre capita che nell’ambito di una stessa famiglia logica vi siano alcune serie di componenti che hanno caratteristiche migliori, ad esempio temperature limite di funzionamento.

Le famiglie logiche più utilizzate sono la TTL (Transistor Transistor Logic) e la CMOS (Complementary MOS).
La prima prende il nome da TTL in quanto sono costituiti da transito sia nello stadio di ingresso che di uscita. La seconda detta CMOS perché usa dei MOSFET (Transistor ad Effetto di Campo MOS, Metallo Ossido Semiconduttore).

Per chi affronta per la prima volta questo argomento consideri questi due acronimi, TTL e CMOS, come il nome per specificare la tecnologia usata per realizzare il dispositivo elettronico digitale, per fare un’analogia e come dire: “l’automobile ci serve per spostarci, ma l’automobile può essere a GASOLIO (ad es. TTL) o a BENZINA (ad es. CMOS) entrambe comunque ci consentiranno di spostarci”.
Sappiamo però che le auto a gasolio hanno certe problematiche/pregi e quelle a benzina allo stesso modo hanno problematiche/pregi è in funzione delle performance che ci interessano: consumi, potenza, velocità, ecc… si deciderà quale automobile acquistare.

Esistono alcune convenzioni che sarà utile conoscere per meglio districarsi ad esempio nella lettura dei manuali tecnici dei componenti elettronici digitali.

Per convenzione, le correnti e le tensioni di qualsiasi terminale di un dispositivo logico hanno due suffissi come pedice:

  • il primo indica se il terminale è di ingresso (I=input) o di uscita (O=output)
  • il secondo indica lo stato logico alto (H=high) o basso (L=low)

Inoltre ogni terminale di ciascuna porta logica assorbe o eroga corrente.

Logica TTL

I circuiti elettronici digitali della famiglia TTL sono alimentati (funzionano con…) con una Vcc=+5V. Come già accennato sono basati su circuiti costituiti da transistor bipolari utilizzati per ottenere variazioni (commutazioni di livelli) e mantenere stati logici (memorizzare), possiamo definirli come dei microinterruttori. Sono caratterizzati da una serie (numeri identificativi) che ha come cifra iniziali, 74, serie commerciale che funziona tra 0°C e 70 °C e la serie 54 che costituisce la serie militare che funziona tra -55°C e +125°C.

Esistono  sottofamiglie della TTL:

  • L – serie a basso consumo (L indica Low power), ormai obsoleta
  • S – serie che utilizza i transito veloci Schottly
  • LS – serie che riunisce le caratteristiche delle due precedenti
  • AS – serie S con prestazioni avanzate
  • ALS – serie LS con prestazioni avanzate

Ad ogni famiglia logica (TTL e CMOS) è associata una serie di tensioni che identificano quando si ha 0 logico e quando l’1 logico.

I livelli di tensione da applicare in ingresso sono:

  • VIL – compreso tra 0 e VILmax =+0,8V per il riconoscimento del livello logico basso (LOW), quindi una tensione tra 0V e +0,8V sarà identificata come un LOW
  • VIH – tensione compresa tra VIHmin=+2V e +5V per il riconoscimento del livello logico alto (HIGH), quindi una tensione tra +2V e +5V sarà identificata come un HIGH

I livelli di tensione che si ottengono in uscita sono:

  • VOL – compreso tra 0 e VOLmax =+0,4V purchè la corrente entrante sia IOL<16mA
  • VOH – compreso tra VOHmin=2,7V e circa 4V purché la corrente di ingresso sia IOH<400uA

Il disegno chiarisce meglio questi intervalli di tensione:

ttl-small

I valori di tensione compresi tra +0,8V e +2V individuano una zona di indeterminazione che non è da utilizzare.

Consideriamo ad esempio una porta NOT, l’intervallo dei segnali di input e output accettabili per avere un livello alto o basso sono quelli indicati in figura:

livelli-in-out-ttl

Logica CMOS

Tutti i circuiti integrati della famiglia logica CMOS utilizzano al loro interno MOSFET di tipo P o di tipo N e caratteristica principale di un CMOS è la ridottissima potenza dissipata e ampio intervallo di tensioni di alimentazione: da +3V a +15V.
Come per la famiglia TTL anche la CMOS ha delle sottofomiglie:

  • CD4000 ormai obsoleta
  • 74C compatibile, nella piedinatura (posizione funzionalità) ai corrispondenti integrati della famiglia TTL
  • 74HC e 74HCT come la serie precedenti, ma con tempi di propagazione (del segnale) ridotti e valori di tensione compresi tra +2V e +6V (HC) e +5V (HCT)
  • 74 AHC simile alla HC ma con prestazioni avanzate

Se si usano dispositivi in tecnologia CMOS bisogna tener conto di alcune regole:

  • la tensione applicata in ingresso deve essere compresa tra 0V e Vcc
  • a differenza della famiglia TTL tutti i piedini di ingresso devono essere utilizzati collegandoli a livello alto o basso
  • il terminale di uscita può essere collegato a massa o all’alimentazione senza pericolo di avarie
  • le tensioni di commutazioni di soglia (le tensioni che identificano il passaggio dallo 0 a 1 o viceversa) sono circa la metà della tensione di alimentazione applicata al dispositivo

Considerando dispositivi CMOS alimentati a tensione di +3,3V i livelli di tensione da considerare sono quelli rappresentati nel disegno che segue:

cmos-small

Si noti come, al fine di garantire la compatibilità generale, che la maggior parte dei livelli di tensione sono uguali ai dispositivi alimentati a +5V. Un dispositivo alimentato a +3,3V potrà in generale, con alcune cautele, essere interfacciato ad un dispositivo a +5V senza componenti aggiuntivi. Ad esempio, un 1 logico (HIGH) per un dispositivo a +3,3 V sarà almeno +2,4 V e tale tensione sarà ancora interpretato come un 1 logico (HIGH) in un sistema a+5V perché è sopra la VIG di 2 V.

Quando bisogna interfacciare (in senso opposto) un dispositivo a 5V con uno a 3,3V bisogna verificare che il dispositivo a 3,3V possa funzionare a 5V, cioè che la tensione massima di ingresso sia di 5V. Su alcuni dispositivi 3,3 V, tensioni superiori a 3,6 V causeranno danni permanenti al componente. Sarà sufficiente utilizzare un semplice partitore di tensione (ad esempio una resistenze da 1kOhm ed una da 2kOhm) per abbattere segnali da 5V a 3,3V.

Livelli logici in Arduino

Guardando il datasheet dell’ATMega328, (microcontrollore presente nell’Arduino UNO) i livelli di tensione sono leggermente diversi da quelli indicati per le famiglie TTL e CMOS:

atmega328-small

La differenza più evidente è che la regione di interdizione (da non usare) di tensioni è tra 1,5 V e 3,0 V. Il margine di rumore è maggiore sul Arduino ed ha una soglia più elevata per l’identificazione di una tensione che indica un segnale basso (LOW) ed una soglia minima per l’identificazione di un segnale alto (HIGH) più elevata. In altro modo i livelli di tensione massima di identificazione dello 0 logico e di tensione minima di identificazione dell’1 logico rientrano all’interno degli intervalli di diverse tipologie di famiglie logiche, sia TTL che CMOS, in questo modo la costruzione di interfacce risulta più semplice.

Paragonado i grafici dei livelli di tensione per TTL, CMOS e ATMega328 abbiamo:

ttl-cmos-atmega328

Corso Arduino – FabLab di Brescia: conoscere Arduino imparare ad usarlo e costruire i tuoi primi progetti

Il prossimo 15 novembre sarò al FabLab di Brescia per un nuovo corso su Arduino.

FabLab-Brescia-Maffucci

L’obiettivo del workshop è quello di fornire ai partecipanti le basi teorico-pratiche per muovere i primi passi nel mondo della prototipazione robotica, utilizzando in particolare la piattaforma opensource made in Italy.

REQUISITI
Il workshop è per i principianti, non occorre, pertanto, alcuna conoscenza preliminare di informatica o di elettronica.

PROGRAMMA

Sabato 15 novembre
Orario: 10.00 13.00 – 14.00 17.00

  • Cos’è Arduino
  • Schede disponibili sul mercato
  • ambiti di utilizzo
  • Descrizione dettagliata scheda Arduino Uno Rev. 3
  • Presentazione IDE Arduino
  • Introduzione al linguaggio di programmazione
  • Variabili e funzioni
  • Introduzione e descrizione dei componenti elettronici di base
  • Input digitali
  • Condizioni logiche

Durante l’intero svolgimento del workshop, in linea con la filosofia del learning by doing, sono previsti numerosi momenti di interazione mediante lo svolgimento di esercitazioni pratiche e progetti sui vari punti del programma.

COSA PORTARE

Per partecipare alle esercitazioni è fondamentale avere un computer con installato il software necessario (http://arduino.cc/en/Main/Software)
Inoltre, per chi fosse interessato all’acquisto dello Starter Kit in promozione può contattare direttamente FabLab Brescia, mandando una mail a carucciofabio@gmail.com (almeno 7 giorni prima dell’inizio dell’inizio del workshop).

COSTI

La quota di partecipazione al workshop è pari a 40 euro per gli associati al FabLab Brescia, mentre, per i non associati la quota è pari a 60 euro.

Per maggiori info:
Fabio Caruccio +39 338 11 09 073
Michele Faini +39 339 15 24 481
Mail: bresciafablab@gmail.com

Per registrarsi all’evento tramite eventbrite seguire il LINK

Corso Arduino – un grazie ai partecipanti del corso dell’11.10.14

Alcune foto della giornata di formazione al FabLab di Biella l’11.10.14: I miei primi esperimenti con Arduino di cui sono stato formatore.
Un sincero grazie a tutti i partecipanti che con passione hanno seguito il corso ed hanno dimostrato un forte interesse ponendomi numerose domande sia per quanto riguarda la didattica, nello specifico didattica della robotica, ma anche suggerimenti per soluzioni aziendali, questi appuntamenti sono per me momenti in cui si manifesta, insieme ai partecipanti, lo spirito maker e la voglia di cambiamento. Come dicevo qualche tempo fa presso il FabLab di Torino, forse stiamo vivendo senza averne la consapevolezza, della  rinascita del settore terziario della nostra economia è questa la sensazione che si respira nei luoghi in cui è collocato il FabLab di Biella (Via Corradino Sella, 10) antichi stabili industriali un tempo forza economica trainate di quei luoghi.

Il prossimo appuntamento è il corso di tre giorni: corso base di Arduino – impariamo l’uso della scheda che ha rivoluzionato il mondo (sono aperte ancora le iscrizioni). Per maggiori informazioni: www.fablabbiella.it e per tutte le attività del FabLab consultare la sezione eventi: www.fablabbiella.it/calendario-attivita/

Allego galleria fotografica della giornata:

Consigli di lettura: Arduino e le tecniche di programmazione dei microcontrollori ATMEL

Voglio incominciare con un ringraziamento al Dott. Michele Menniti che ha avuto la gentilezza di farmi avere il suo libro tecnico pratico: Arduino e le tecniche di programmazione dei microcontrollori ATMEL (Edizione Futura Group).
Questo testo è certamente un sussidio didattico di grande interesse perché ha un taglio estremamente pratico e di rado si trovano produzioni editoriali italiane con una forte componente laboratoriale che guidano passo passo, con moduli didattici ben strutturati ad assimilare competenze tecniche importanti.
Il libro si rivolge indistintamente a studenti, neofiti e professionisti ed il suo scopo principale è quello di insegnare ad usare Arduino in veste di programmatore, ricorrendo a diverse tecniche, avendo come target la stragrande maggioranza dei modelli di microcontrollori ATMEL delle famiglie ATmega e ATtiny, al fine di poter realizzare circuiti in stand-alone.
Da questo lavoro emerge un’accuratezza ed una chiarezza espositiva che ben si adatta in ambito didattico, ho apprezzato molto l’enorme quantità di esempi illustrati esposti con  particolare precisione in cui la descrizione delle sperimentazioni è fatta con schemi di collegamenti molto chiari, a tal punto che è praticamente impossibile commettere errori di esecuzione.
Il manuale quindi non può non mancare nel laboratorio di chiunque voglia progettare circuiti basati su microcontrollori ATMEL.
Per il percorso didattico, da me impostato in questi anni sulla piattaforma Arduino, il libro propone argomenti che mi aiutano enormemente e concludono il percorso pratico di programmazione sui microcontrollori ATMEL.
Quindi ringrazio il Dott. Michele Menniti per avermi dato la possibilità di aggiungere e migliorare la mia didattica con gli argomenti trattati nel suo libro, testo che consiglierò ai miei allievi e ovviamente a tutti coloro che desiderano sviluppare tecnologie con questa famiglia di microcontrollori.

Alla pubblicazione è stato associato un Blog con una ricchissima sezione di download, per tutto l’occorrente materiale illustrato nel Manuale:

http://manualearduinoatmel.elettronicain.it/

Maggiori informazioni e l’acquisto del testo possono essere reperite seguendo i link:

Dott. Michele Menniti
Docente di Informatica e Sistemi di Elaborazione delle Informazioni presso l’Università “Magna Grecia” di Catanzaro.
http://www.michelemenniti.it

 

Potrete ritrovare post nella sezione libri della pagina Arduino di questo sito.

atmel

Corsi Arduino: in programma secondo corso presso FabLab di Biella

maffucci-fablab-biella-corso-arduino

In programma il mio corso:

Arduino: impariamo l’uso della scheda che ha rivoluzionato il mondo
corso introduttivo alla tecnologia Arduino

Rivolto a tutti quelli che non hanno mai usato un’Arduino e vogliono essere guidati a fare il primo passo.
La finalità del corso è permetterti di gestire e progettare in autonomia le tue idee sfruttando a pieno la piattaforma Arduino. Il corso è basato sui componenti dell’Arduino Starter kit.

REQUISITI
Essere curiosi ed appassionati delle nuove tecnologie elettroniche.

TECNOLOGIA
Arduino Starter kit.

PROGRAMMA
il programma si sviluppa su 6 moduli suddivisi in tre incontri:
lunedì 20 ottobre – 27 ottobre – 3 novembre
ORARIO: Dalle 18:30 alle 21:30
Corso a pagamento (indispensabile prenotazione)

Modulo 1.
Cosa è Arduino – L’IDE di programmazione – Installiamo Arduino – Conosciamo la scheda – Principi di elettrotecnica – Principi di elettronica – Strumenti di misura – Uso della breadboard.

Modulo 2.
Il vostro primo circuito – Far lampeggiare un LED – Usare un potenziometro – Usare LED RGB – Comandare più LED

Modulo 3.
Usare i pulsanti – Fotoresistenze – Utilizzo dei sensori di temperatura, gas, flessione, pressione e accelerometro.

Modulo 4.
Usare buzzer ed altoparlanti – Uso dei display – Controllare un motore CC – Servomotori.

Modulo 5.
Usare i relè – Shift registrer – Uso degli shield più comuni

Modulo 6.
Realizza la tua idea

I moduli svolti potrebbero subire variazioni in funzione delle esigenze degli utenti.

Importante: venite con il vostro portatile

Per iscrizioni seguire il link