Sine wave generator PCF8591 I2C Arduino

The topic of this post is building sine wave generator based on Arduino UNO and PCF8591 8-bit A/D and D/A converter. For similar design with PIC micro-controller look at this linkPCF8591 is a single-chip low-power 8-bit CMOS data acquisition device with four analog inputs, one analog output and a serial I2C-bus interface. For this project only D/A converter will be used. All communications to and from the device including address, control and data  transfer are done serially via the two-line bidirectional I2C-bus. Arduino Wire library was used to communicate with DAC device. Current design generates only sine wave using LUT. See attached Arduino sketch here. The maximum frequency is limited by PCF8591 conversion rate and is given by the maximum speed of the I2C-bus.
Sine wave generator PCF8591 I2C Arduino Schematic

I’ve tried to increase the clock speed by changing I2C Clock setting as has been suggested on several Arduino forums, however it looks like it doesn’t have any effect on PCF8591 output. Max sine frequency using 256 LUT values is just 12 Hz.


Leave a Reply

Your email address will not be published. Required fields are marked *