Go Back   Home > Forums > >
Home Forums Rules Articles diyAudio Store Blogs Gallery Wiki Register Donations FAQ Calendar Search Today's Posts Mark Forums Read

Digital Line Level DACs, Digital Crossovers, Equalizers, etc.

Arduino-based ADAU1701
Arduino-based ADAU1701
Please consider donating to help us continue to serve you.

Ads on/off / Custom Title / More PMs / More album space / Advanced printing & mass image saving
Reply
 
Thread Tools Search this Thread
Old 3rd March 2016, 09:53 PM   #1
Neil Davis is offline Neil Davis  United States
diyAudio Member
 
Join Date: Dec 2004
Location: Reston, Virginia
Arduino-based ADAU1701
Default Arduino-based ADAU1701

This project still has a ways to go, but much of it is actually working. I've got .NET code that sends commands to the Arduino Redboard, which controls the ADAU1701. You can specify filters, volume and delays and signal routing from the .NET code and hear the changes in real time.

I've still got a long ways to go, but I've got enough working to know that it will eventually work as intended. The goal is to have a low-cost active crossover circuit with an LCD display.

Just sharing to see if there is some interest...not selling anything, at least not yet .

Click the image to open in full size.

One of the nice tools that's working now is the ADAU1701 debugger. It lets you browse the Parameter RAM from the PC, and it shows the corresponding cell name. It also displays the Program RAM and Registers, although that information isn't too useful. The debugger window is shown in the lower right.


Click the image to open in full size.
  Reply With Quote
Old 4th March 2016, 09:51 AM   #2
2wice is offline 2wice  South Africa
diyAudio Member
 
Join Date: Feb 2013
Location: Pretoria
Looks good. Well done, I'm interested.
  Reply With Quote
Old 4th March 2016, 05:50 PM   #3
dudaindc is offline dudaindc  United States
diyAudio Member
 
dudaindc's Avatar
 
Join Date: Sep 2005
Location: Metro Washington DC
I am also interested...
__________________
"All measurements are wrong! Thus, measurement is the art of handling errors."
  Reply With Quote
Old 31st March 2016, 11:23 AM   #4
wyan is offline wyan
diyAudio Member
 
Join Date: Mar 2013
Arduino-based ADAU1701
I am always trying to find a good DSP to control the sub in my multiway system. Or maybe one for a subwoofer project later on. Thanks.
  Reply With Quote
Old 31st March 2016, 12:24 PM   #5
Neil Davis is offline Neil Davis  United States
diyAudio Member
 
Join Date: Dec 2004
Location: Reston, Virginia
Arduino-based ADAU1701
The project is moving along, but I took something of a detour by making an Arduino replacement CPU for the PGA2311 preamp kits that are sold on eBay. So you can buy the preamp chassis and preamp kit and throw away their CPU board, and connect the ADAU1701 shield to the I2C connector on my CPU. Or, just make an Arduino sandwich by stacking the LCD display on top of the ADAU1701 shield: Click the image to open in full size.. The same code will run on the Arduino Redboard or my PGA2311 replacement CPU.

My CPU replacement for the PGA2311 preamp allows you to customize the preamp, by adding new devices on the I2C bus (such as the ADAU1701 shield). It's also got a connector for controlling relays to use the PGA2311 preamp as a volume-compensated A/B box. And by using the pin-compatible Newhaven OLED displays in place of the LCD's, the preamp looks a lot classier. I don't have a picture yet for the CPU, but it looks like the CPU board for the PGA2311 kit, but with a lot more connectors on it.

So with this replacement Arduino CPU, the same software base can go in a lot of directions -- preamp, DSP/EQ, A/B box, 2.1 amplifier crossover, active crossover, etc.

The software is coming along. The menu system is working, the rotary encoder code is working, the IR remote control works, and the board loads the ADAU1701 program and can update parameters via the USB. There is still a lot of work left to control the ADAU1701 from the LCD display, but that's not going to be too hard.
  Reply With Quote
Old 19th May 2016, 12:50 PM   #6
Neil Davis is offline Neil Davis  United States
diyAudio Member
 
Join Date: Dec 2004
Location: Reston, Virginia
Arduino-based ADAU1701
Update:
All of the "hard stuff" for the local controller software is working. You can now "dial-a-crossover" and listen to the changes in real time. This version of the software supports 5 crossover types: BW1, BW3, LR2, LR4 and LR8. And there are seven frequencies: 1200Hz, 1600, 2000, 2400, 2800, 3200 and 3600. You can move through the menu and the crossover changes instantly, with no pops or clicks (all of the filter updates use the safeload write). Also, the master volume works.

There are several other menu items that still need to get implemented, but it is "more of the same". The coefficient tables take up a fair amount of space--right now I'm using 65% of the program space, and I've still got the biggest tables to finish (the 9-band EQ will use a lot of data). But pre-calculating everything makes the interface very fast, as it doesn't require the 8-bit micro to do a lot of floating point trig functions to calculate the coefficients.

But I might try doing the coefficient math in the micro for comparison. I know there be errors due to the single-precision math limitation, but it might be OK for these frequencies.

When this is done, it will be a fairly nice general-purpose Arduino controller that will work with any ADAU1701 board: miniDSP, the board shown in the original post, or any board that someone wants to build. Just provide power and the two I2C lines and this controller will manage the ADAU1701.

The code also supports a rotary encoder. I don't know yet whether there will be enough memory left to add the IR remote control, but I'll see in a few weeks whether there is enough space left over for that library.

Click the image to open in full size.
  Reply With Quote
Old 5th June 2016, 01:17 AM   #7
Antants is offline Antants  Thailand
diyAudio Member
 
Join Date: Oct 2012
Hello expert, please share your programming.
  Reply With Quote
Old 5th June 2016, 03:10 AM   #8
Krisfr is offline Krisfr  United States
diyAudio Member
 
Krisfr's Avatar
 
Join Date: Nov 2007
Location: near the House of the Mouse
Quote:
Originally Posted by Neil Davis View Post
Update:
All of the "hard stuff" for the local controller software is working. You can now "dial-a-crossover" and listen to the changes in real time. This version of the software supports 5 crossover types: BW1, BW3, LR2, LR4 and LR8. And there are seven frequencies: 1200Hz, 1600, 2000, 2400, 2800, 3200 and 3600. You can move through the menu and the crossover changes instantly, with no pops or clicks (all of the filter updates use the safeload write). Also, the master volume works.

There are several other menu items that still need to get implemented, but it is "more of the same". The coefficient tables take up a fair amount of space--right now I'm using 65% of the program space, and I've still got the biggest tables to finish (the 9-band EQ will use a lot of data). But pre-calculating everything makes the interface very fast, as it doesn't require the 8-bit micro to do a lot of floating point trig functions to calculate the coefficients.

But I might try doing the coefficient math in the micro for comparison. I know there be errors due to the single-precision math limitation, but it might be OK for these frequencies.

When this is done, it will be a fairly nice general-purpose Arduino controller that will work with any ADAU1701 board: miniDSP, the board shown in the original post, or any board that someone wants to build. Just provide power and the two I2C lines and this controller will manage the ADAU1701.

The code also supports a rotary encoder. I don't know yet whether there will be enough memory left to add the IR remote control, but I'll see in a few weeks whether there is enough space left over for that library.

Click the image to open in full size.
I have the Arduino and the shield, which ebay board goes with this? Thanks
__________________
Thanks
Never give a Systems Analyst a screwdriver or hammer
  Reply With Quote
Old 5th June 2016, 01:31 PM   #9
Neil Davis is offline Neil Davis  United States
diyAudio Member
 
Join Date: Dec 2004
Location: Reston, Virginia
Arduino-based ADAU1701
Quote:
Originally Posted by Krisfr View Post
I have the Arduino and the shield, which ebay board goes with this? Thanks
I don't know of any ADAU1701 shields being sold on eBay. I made my own. You are welcome to have the design files (DesignSpark), but you would have to have boards made and do your own assembly.

I would like to get someone to manufacture these boards and make them available for purchase, but right now they are strictly DIY.
  Reply With Quote
Old 5th June 2016, 02:15 PM   #10
Neil Davis is offline Neil Davis  United States
diyAudio Member
 
Join Date: Dec 2004
Location: Reston, Virginia
Arduino-based ADAU1701
Quote:
Originally Posted by Antants View Post
Hello expert, please share your programming.
It will be a while before that happens.

I changed the way the biquad coefficients get calculated. Previously, I calculated the coefficients using Excel and put the data into tables. The micro just copied the table data into the ADAU1701 Parameter RAM. But now, I'm calculating the coefficients using floating point math in the micro. It's slower, with a audible artifact as each biquad gets updated several milliseconds after the other. But it's also a much more flexible design, in that there can be a high-level interface to an "ADAU1701 library", in which the crossover type and frequencies aren't restricted to a limited set of pre-calculated values. Also, I've implemented a nice 9-channel EQ and BSC. And now the code takes up much less space, so I can add in the IR control or Bluetooth control without running out of code space.

Right now I'm thinking about where to head with this project and how to implement a general-purpose ADAU1701 library that could be used with any Arduino board and any ADAU1701 board. But this has taken a lot of time and I've got some other priorities that were pushed off that I need to address. So it may be a while before I return to this.
  Reply With Quote

Reply


Arduino-based ADAU1701Hide this!Advertise here!
Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
5 zone preamp based on Arduino controlled optocoupler tadakan Analog Line Level 4 29th March 2013 09:36 AM
Smartmains, Arduino based Softstart with extra's superR Group Buys 5 28th January 2013 02:35 PM
another DIY LCF meter (arduino based) linuxworks Equipment & Tools 2 2nd December 2011 12:18 PM
arduino based pga2311/4311 system fvdberg Digital Line Level 3 1st November 2011 06:17 PM
Arduino based Input Selector for preamp _atari_ Analog Line Level 5 30th June 2010 02:42 PM


New To Site? Need Help?

All times are GMT. The time now is 05:13 PM.


Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2018 DragonByte Technologies Ltd.
Resources saved on this page: MySQL 15.00%
vBulletin Optimisation provided by vB Optimise (Pro) - vBulletin Mods & Addons Copyright © 2018 DragonByte Technologies Ltd.
Copyright ©1999-2018 diyAudio
Wiki