[sdiy] Quantizer with Arduino, ADS1115 and MCP4725

Roman Sowa modular at go2.pl
Thu Jun 20 12:46:07 CEST 2024


Why do you want to set up quirky supply voltages if the ADS1115 uses 
only internal voltage reference and changing supply won't do a thing. 
This is slow ADC with less than 1ksps, so more than 1ms latency. Or over 
4ms if you want to use all 4 channels. May be OK, but I know people whou 
would run from it. Besides, for reading CV in a quantizer you don't need 
super resolution, internal 8-bit ADC might be enough, you only need to 
guess the note, not measure it.
And the DAC is also not so happy choice IMHO, with maximum 14LSB INL 
error it will cause tuning errors that will make you want real quantizer 
connected after that one. MCP4725 is 10-bit DAC sold as 12bit.

And forget about 5.333, it's not the 80's anymore. With a little of 
basic math it's super easy to setup a semitone step with any number of 
bits and not just 512 or 32.

So if you asked me, no it does not soud feasible. I'd suggest to search 
for different parts.

A hint: you can buy poor 16bit DAC for $2 and calibrate each note very 
precisely, or pay $6 for super linear 16-bit DAC and just use it as is. 
Then think if that $4 saved is decent pay for the calibrating effort.

Roman



W dniu 2024-06-20 o 03:16, Scott Bernardi via Synth-diy pisze:
> I'm thinking of doing a quantizer with Arduino nano and external ADC 
> using ADS1115.  With that I get 4 input channels at 16 bits.
> My question is surrounding changing the reference voltage (which would 
> have to be the VDD of the ADS1115) to 5.3333v (instead of standard 5.0v 
> so I can get to the 1/12v for a semitone in 1v/octave (83.33mV) by a 
> binary divisible value.  For example, 5.3333 / 64 = 83.33 mV which is 
> our value for a semitone.
> For a 16 bit ADC, (ADS1115 is actually 15 bits with a sign bit for a 
> total count of 32,768) each semitone would then be represented by 512 bits.
> Internally in the Arduino code I could represent the values for scales 
> as number of semitones. For example, a major scale would be
> 0   2   4   5   7   9   11         semitones.
> Minor would be
> 0   2   3   5   7   9   10
> The necessary binary counts would then be 512 times these.
> Using the number of semitones for the scales is convenient, because then 
> for the 12 bit MCP4725 output, I would multiply by the bits per semitone 
> value of 32. Or another way to think of it is to throw away the 3 least 
> significant bits and the sign bit to go from 15 bits plus sign bit to 12 
> bits for the output.
> 
> I think running the ADS1115 at 5.3333v would be OK.  The chip itself can 
> run up to a max of 7 volts.  The inputs can accept a max of VDD + .3v 
> and -0.3 voltage; so using schottkys to clamp the inputs should be OK.
> The MCP4725 can be run up to 5.5v so 5.333v should be OK.
> Maybe use a single MCP4725 and some sample/holds to handle four outputs.
> 
> I am a rank beginner at Arduino programming but am a programmer by 
> profession and somewhat familiar with C++.
> 
> Does this sound feasible?
> 
> ________________________________________________________
> This is the Synth-diy mailing list
> Submit email to: Synth-diy at synth-diy.org
> View archive at: https://synth-diy.org/pipermail/synth-diy/
> Check your settings at: https://synth-diy.org/mailman/listinfo/synth-diy
> Selling or trading? Use marketplace at synth-diy.org


More information about the Synth-diy mailing list