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 link. PCF8591 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.
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.