Ejemplo Conversor AD/DA I2C con PCF8591p

CONVERSOR AD/DA I2C PCF8591p

Para este ejemplo vamos a utilizar el integrado PCF8591, es un conversor ADC con comunicación I2C.

pcf8591t

 

El PCF8591 posee 4 entradas analógicas y una salida analógica.

En este ejemplo solo vamos a utilizar una entrada analógica.

Se puede observar en el esquema que hemos puesto todos los pines de direcciones a GND, eso quiere decir que nuestro periférico I2C tendrá la dirección 000, que traducido a nuestro código 0x48.

El esquema de nuestro conversor es el siguiente:

esquema-pcf8591

 

La siguiente imagen muestra lo que nos encontramos en la PCB, las 4 entradas analógicas y el conector de comunicación con la alimentación, que es el que principalmente nos interesa.pcb-bottom-pcf85911.jpg

 

La placa que he diseñado para el conversor tiene los pines compaibles con los conectores I2C que se preparan en el Motor Shiled Mioio, al igual que los ultrasonidos Srf04.

img_20140121_163613 img_20140121_163849

Para ponerlo en marcha en nuestro programa debemos incluir lo siguiente:

1. La librería que posee la comunicación I2C:

import ioio.lib.api.TwiMaster;

2. En el setup: (Fíjate como se usa el puerto número 1 de I2C que corresponde a los pines 47 y 48 de la MIOIO).

twi = ioio_.openTwiMaster(1, TwiMaster.Rate.RATE_100KHz, true);

3. En el loop:

final float sensorain1 = Readpcf8591(0x48, twi);
 setText(Float.toString(reading), Float.toString(sensorain1));

4. Las funciones utilizadas son las siguientes:

//Para la lectura de la conversión:
public float Readpcf8591(int address, TwiMaster port) {
float returnval = 0;
byte[] request = new byte[] { 0x30 };
 byte[] tempdata = new byte[2];
 try {
 port.writeRead(address, false, request,request.length,tempdata,tempdata.length);
float ain1 = tempdata[0];
ain1= -ain1;
return ain1;
 } catch (ConnectionLostException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } catch (InterruptedException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 } finally {}
return returnval;
 }
//La función settext para la visialización del dato en un textView que nos hayamos creado.
private void setText(final String str, final String str01) {
 runOnUiThread(new Runnable() {
 @Override
 public void run() {
 textView_.setText(str);
 textView_01.setText(str01);
 }
 });
 }

Deja un comentario

Tu dirección de correo electrónico no será publicada.