OVERVIEW
PCF8591 A/D D/A CONVERTER MODULE
The PCF8591 is a monolithically integrated, and a
separate power supply, low-power, 8-bit CMOS data acquisition devices. The
PCF8591 has the four analog inputs, one analog output and a serial I2C bus
interface. PCF8591 three address pins A0, A1 and A2 can be used in hardware
address programmed 8 PCF8591 device allows access to the same I2C bus, without
the need for additional hardware. On the PCF8591 device input and output of the
address, control and data signals are transmitted in serial fashion via the
two-wire bidirectional I2C bus.
FEATURES
BLOCK
DIAGRAM
PCF8591 AD/DA Converter Module
Circuit Diagram
FEATURES
- A module chip using PCF8951
- Single-Supply Operation
- PCF8591 operating voltage range of 2.5V to 6V
- Low standby current through the I2C bus serial input / output
- PCF8591 by 3 hardware address pins addressing
- Sampling rate PCF8591 I2C bus rate decided
- 4 analog inputs programmable as single-ended or differential inputs
- Automatic incremental channel selection
- PCF8591 analog voltage range from VSS to VDD
- PCF8591 built-in track and hold circuit
- 8-bit successive approximation A / D converter through an analog output DAC gain.
- module supports external voltage input capture (input voltage range 0-5v)
- The five-module integrated 1 channel 0-5V voltage input acquisition (blue potentiometer to adjust the input voltage).
- High quality PCB FR4 Grade with FPT Certified.
BLOCK
DIAGRAM
PCF8591 AD/DA Converter Module PIN Description:
- AOUT chip DA output interface
- AINO chip analog input interface 0
- AIN1 chip analog input interface 1
- AIN2 chip analog input interface 2
- AIN3 chip analog input interface 3
- SCL IIC interface clock microcontroller IO port
- SDA IIC digital interface by microcontroller IO port
- GND module to earth
- VCC power supply interface 3.3 v to 5 v.
PCF8591 AD/DA Converter Module
Circuit Diagram
CODES
ATMEL
http://researchdesignlab.com/ad/da-atmel-code.html
RASBERRY PI
https://drive.google.com/file/d/0BzrGD4zr88GnWWExa2l2SnBtOVk/view?pli=1
NOTE:you can connect from AN0 to
AN0,AN1,AN2,AN3 n check the variation of
the corresponding analog pin
ARDUINO CODE
/*
* Project name:
PCF8591 AD/DA Converter Module
* Copyright
(c) Researchdesignlab.com
* Description:
* Project name:
PCF8591 AD/DA Converter Module
* Copyright
(c) Researchdesignlab.com
* Description:
* Test configuration:
MCU: ATMEGA328
Dev.Board: Arduinouno
Oscillator: 16 MHz
Software: Arduino
MCU: ATMEGA328
Dev.Board: Arduinouno
Oscillator: 16 MHz
Software: Arduino
*/
#include <Wire.h>
#define PCF8591 (0x90>> 1) // I2C bus address
#define ADC00x00 // control bytes for reading individual ADCs
#define ADC10x01
#define ADC20x02
#define ADC30x03
byte value0, value1, value2, value3;
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
Wire.beginTransmission(PCF8591); // wake up PCF8591
Wire.write(ADC0); // control byte - read ADC0
Wire.endTransmission(); // end tranmission
Wire.requestFrom(PCF8591, 2);
value0=Wire.read();
value0=Wire.read();
Wire.beginTransmission(PCF8591); // wake up PCF8591
Wire.write(ADC1); // control byte - read ADC1
Wire.endTransmission(); // end tranmission
Wire.requestFrom(PCF8591, 2);
value1=Wire.read();
value1=Wire.read();
Wire.beginTransmission(PCF8591); // wake up PCF8591
Wire.write(ADC2); // control byte - read ADC2
Wire.endTransmission(); // end tranmission
Wire.requestFrom(PCF8591, 2);
value2=Wire.read();
value2=Wire.read();
Wire.beginTransmission(PCF8591); // wake up PCF8591
Wire.write(ADC3); // control byte - read ADC3
Wire.endTransmission(); // end tranmission
Wire.requestFrom(PCF8591, 2);
value3=Wire.read();
#define PCF8591 (0x90>> 1) // I2C bus address
#define ADC00x00 // control bytes for reading individual ADCs
#define ADC10x01
#define ADC20x02
#define ADC30x03
byte value0, value1, value2, value3;
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
Wire.beginTransmission(PCF8591); // wake up PCF8591
Wire.write(ADC0); // control byte - read ADC0
Wire.endTransmission(); // end tranmission
Wire.requestFrom(PCF8591, 2);
value0=Wire.read();
value0=Wire.read();
Wire.beginTransmission(PCF8591); // wake up PCF8591
Wire.write(ADC1); // control byte - read ADC1
Wire.endTransmission(); // end tranmission
Wire.requestFrom(PCF8591, 2);
value1=Wire.read();
value1=Wire.read();
Wire.beginTransmission(PCF8591); // wake up PCF8591
Wire.write(ADC2); // control byte - read ADC2
Wire.endTransmission(); // end tranmission
Wire.requestFrom(PCF8591, 2);
value2=Wire.read();
value2=Wire.read();
Wire.beginTransmission(PCF8591); // wake up PCF8591
Wire.write(ADC3); // control byte - read ADC3
Wire.endTransmission(); // end tranmission
Wire.requestFrom(PCF8591, 2);
value3=Wire.read();
value3=Wire.read();
Serial.print(value0);
Serial.print(value0);
Serial.print(" ");
Serial.print(value1);
Serial.print(value1);
Serial.print(" ");
Serial.print(value2);
Serial.print(value2);
Serial.print(" ");
Serial.print(value3);
Serial.print(value3);
Serial.print(" ");
Serial.println();
delay(1000);
}
Serial.println();
delay(1000);
}
OUTPUT
RELATED PRODUCTS
Bi-Directional Logic Level Converter DC-DC Adjustable step up power
converter module LM2577 4-35V