I2C

Netduino, utilizzare il PCF8574AP

Come espandere le porte IO del Netduino tramite PCF8574AP

Nel precedente articolo abbiamo visto come utilizzare l’integrato PCF8574AP per espandere le porte IO di Arduino. Lo stesso circuito può essere adattato anche alla scheda Netduino. Dato che ho utilizzato Arduino Leonardo, i pin SCL e SDA, relativi al bus I2C, sono dedicati, mentre Netduino rispecchia la pin function della Arduino UNO e quindi i pin SDA e SCL sono disponibili rispettivamente sui pin analogico 4 e pin analogico 5.

In definitiva, per far funzionare il circuito, dobbiamo collegare i pin secondo la tabella seguente

PCF8574APNetduino
PIN 14 SCLAnalog PIN 5 SCL
PIN 15 SDAAnalog PIN 4 SDA

Netduino e PCF8574AP

Continua a leggere

PCF8574AP come espandere porte IO

Utilizzare un PCF8574ap per espandere le porte IO di Arduino

Capita di trovarci a realizzare applicazioni in cui il numero dei pin digitali richiesti, supera quelli disponibili sulla scheda Arduino UNO. In questi casi potremmo utilizzare una scheda con un numero maggiore di pin IO (ad esempio la Arduino MEGA, la Arduino DUE …) o scegliere dei circuiti esterni che danno la possibilità di espandere le porte IO utilizzando una comunicazione seriale I2C o SPI.

L’integrato PCF8574AP permette di risolvere questo problema fornendo 8 porte IO che possono essere gestite utilizzando il collegamento seriale I2C. Lo schema elettrico seguente mostra come collegare il pcf8574ap alla scheda Arduino Leonardo. L’unica osservazione riguarda le uscite del PCF8574, infatti come potete osservare i led non sono collegati direttamente alle porte dell’integrato ma bensì sono collegati tramite una resistenza alla linea dei 5Vdc. Questo perché l’integrato non è in grado di fornire la corrente sufficiente per alimentare il led; è quindi necessaria una resistenza di pull-up.

Continua a leggere

Netduino impiegare la memoria 24LC256

Come usare la memoria 24LC256 con Netduino

dopo aver scritto l’articolo sull’utilizzo della memoria 24LC256 utilizzando una scheda Arduino ho realizzato questo piccolo tutorial per tutti gli utenti che possiedono una scheda Netduino.
La parte teorica e lo schema elettrico del circuito rimangono invariati, l’unica ovvia differenza è la scrittura del codice che in questo caso si basa sul linguaggio C#.

Continua a leggere

24LC256 utilizzare una memoria seriale su bus I2C

Come usare una memoria 24LC256 su bus I2C

Il limite di memoria di una scheda Arduino può essere superato utilizzando delle memorie esterne che permettono di aggiungere capacità di memorizzazione per tutte quelle applicazioni che richiedono la registrazione di dati. Possiamo scegliere tantissimi tipi di memorie a seconda del tipo di interfaccia (I2C, SPI, parallela…) e dalla loro capacità.

Per questo tutorial ho scelto una comunissima EEPROM Seriale prodotta da Microchip, la 24LC256. Questa memoria può essere collegata alle schede Arduino tramite bus I2C e offre 256 Kbits di memoria (32KB). La pin function della memoria è rappresentata in figura:

24LC256

Continua a leggere

Usare la porta DAC del PCF8591P

Come generare una tensione analogica da un dato digitale

Nel precedente articolo abbiamo imparato a gestire i quattro ingressi analogici del dispositivo PCF8591P. In questo tutorial impareremo a utilizzare la porta DAC (Digital to Analog Converter) per creare una tensione continua partendo da un dato digitale.

Lo schema elettrico rimane pressoché invariato. L’unica modifica riguarda l’eliminazione dei collegamenti sui pin analogici AIN ed il collegamento al pin AOUT di un diodo led rosso da 3mm e di una resistenza (R) da 100Ohm:

Usare DAC pcd8591p Continua a leggere

Come usare l’integrato PCF8591

Utilizzare Arduino per controllare l’integrato PCF8591

L’integrato PCF8591 prodotto da NXP dispone di 4 ingressi analogici con risoluzione di 8 bit e di una uscita analogica sempre ad 8 bit. La sua gestione avviene tramite bus I2C, permettendo così il collegamento nel bus di diversi integrati (per un massimo di 127 unità). Avendo una gestione software semplice ed un costo intorno ai 3€ viene impiegato in diversi shield Arduino per aumentare il numero di porte ADC, inoltre la presenza di una uscita analogica programmabile (DAC) permette di generare segnali utili in diversi progetti e applicazioni.

Nella figura seguente viene mostrato lo schema a blocchi del PCF8591:

Schema Blocchi PCD8591P

Continua a leggere

Comunicazione tra Arduino tramite I2C

Come collegare due Arduino usando il bus I2C.

Una caratteristica che reputo molto interessante è la possibilità di espandere Arduino tramite l’uso di shield. La maggior parte di queste schede aggiuntive sono però progettate per compiere una funzione specifica, non programmabile.
Esistono alcuni metodi che permettono di comunicare con altri dispositivi utilizzando come canale di trasmissione dati i protocolli seriali (I2C, SPI o RS232). Questo rende possibile demandare ad una scheda slave funzioni di elaborazione gravose, che non vogliamo far eseguire alla scheda master. Ho realizzato questo piccolo tutorial usando il bus I2C per creare uno scambio dati tra un Arduino ed un chip ATmega328 standalone.

Bus i2c

Il bus I2C, basandosi su due fili, non permette la comunicazione contemporanea tra Master e Slave. Lo scambio dati deve essere gestito dal Master tramite gli indirizzi (univoci) degli slave. Il flusso può essere sintetizzato in questo modo

  1. Il Master invia sul bus un bit di start
  2. Il Master invia sul bus l’indirizzo dello slave con cui vuole comunicare
  3. Il Master decide se scrivere o leggere dal dispositivo
  4. Lo Slave legge o scrive in base alla richiesta del Master

Continua a leggere

Protocollo I2C e sensore di temperatura MCP9803 (1°parte)

Protocollo I2C ed uso dell’integrato MCP8903

Il mondo dell’elettronica, come sapiamo, è composto da migliaia di componenti che svolgono funzioni dedicate, come un sensore di temperatura, oppure sono capaci di gestire diverse operazioni come nel caso dei microcontrollori.
La tecnologia analogica ha pian piano lasciato il posto a quella digitale e i componenti hanno iniziato a colloquiare tra loro utilizzando vari protocolli di comunicazione (insieme di regole che determinano il funzionamento della comunicazione).
Oggi, la maggior parte dei circuiti utilizza un microcontrollore, il cui compito è quello di gestire il circuito ed i componenti ad esso collegato.
Nel caso di sistemi complessi i componenti che creano il circuito sono diversi e possono saturare la capacità fisica di collegamento del microcontrollore, come nel caso proposto in figura.

Ben presto si è capito che per snellire questo tipo di circuiti era necessario creare un meccanismo capace di ottimizzare l’interconnessione tra componenti e microcontrollore. Il sistema più efficace è certamente quello di adottare un bus di collegamento, che permette lo scambio di dati, tra componenti e microcontrollore, utilizzando pochi fili comuni.
La figura seguente mostra un esempio di bus dove diversi componenti sono interconnessi utilizzando solo 2 fili. Il microcontrollore in questo caso deve gestire la comunicazione utilizzando un protocollo comune a tutti i componenti.
Continua a leggere

Rimani aggiornato

Sondaggi

Arduino.cc vs Arduino.org

Visualizza risultati

Loading ... Loading ...
Seguimi su Twitter