diyAudio (
-   Analog Line Level (
-   -   LDR Pre MkII - LDR volume control and I/O switching (

zdr 14th March 2019 01:10 PM

LDR Pre MkII - LDR volume control and I/O switching
1 Attachment(s)
The list of differences between LDR Pre MkII and original VxD LDR volume controller is so long that I thought it might require a new thread, even though LDR Pre MkII is actually a spin-off of amazing VxD from Vincent:

Arduino based LDR volume and source selection controller

1) Instead of Arduino Nano which runs on Atmega328P, LDR Pre is driven by Atmega328PB which can be found on some Chinese Arduino Nano clones. To utilise however the full power of "PB" which has three native 16 bit timers instead of one, Nano clone boards require hardware modification to expose additional pins on "PB", as well as new bootloader which uses serial1 instead of serial0.
2) LDR Pre has native 16-bit "DAC" capability, instead of 8-bit DAC in VxD. This allows smooth volume changes without impedance range switching which was causing volume bumps due to time constants in RC filters at PWM outputs.
3) LDR Pre supports only OLED with SSD1306/SSD1311, no LCDs any more. OLEDs from Aliexpress running on SSD1309 are not supported - I was not able to make them work over I2C.
4) LDR Pre has firmware which stores all the parameters in EEPROM.
5) LDR Pre fw has ability to change all the parameters from user interface, including: load and nominal impedance, screen brightness, screen saver timeout, welcome message, I/O names and LDR min values, max saved volume level, measured 5V voltage, etc.
6) Entire user interface is accessible by a remote or encoder. You can use only one of them or both to access all functions.
7) Backlight pin is now used to control power amp relay
8) Entire board runs on 5V. Built in Nano 5v regulator is not used any more, so less heat on the controller board. OLED now draws current from power supply directly instead from Nano.
9) Power supply is now delivering 3X5V instead of 2X12+8V.
10) There is no feedback code to maintain constant current in LDRs. I found this routine to cause more instability in impedance than environment temp, so I removed it. This allowed more room for additional code.
11) Since all the parameters are stored in the EEPROM, it's possible to deliver unified, one-size-fits-all precompiled firmware updates without involving Arduino IDE and all the hassles it carries. There is no need to have IDE installed at all to update firmware or change parameters.
12) Calibration routine has been changed and optimized to accommodate 16-bit timers.
13) There is an option in the menu to reset all parameters and names to default values.
14) Firmware is power amp friendly - it can be configured not to save volumes above max value stored in EEPROM. By default this value is 10 (out of 50).
15) Firmware boots into standby mode. Pressing play button on remote for 3 seconds turns on the device and powers up the power amp (if connected). Pressing it again for three seconds puts the device in standby mode again and turns off the power amp stage.
16) Pressing center button on (Apple) remote or encoder for 3 seconds enters the setup menu.
17) The code will be an open source eventually, but bear in mind that list of changes and patches in both IDE and hardware is so extensive, that even I don't remember any more which exact steps I took to setup a working environment, since Atmega328PB is not supported in Arduino IDE.

I will be offering boards for power supply and LDR Pre with modified Nano clones.
BOM is posted here:
LDR Pre MkII BOM - Google Sheets

md_Stryker 14th March 2019 01:18 PM

Awesome work ZDR! I can't wait to get my hands on one. Please add me to your early adopters list.


ernesternest 14th March 2019 01:23 PM

Interested :-)

Theodosis O. 14th March 2019 01:50 PM

Hi zdr,

What about to split the board in two ?
One board with relays and LDRs and maybe with I/O connectors
and the other with Arduino and control stuff and maybe with OLED display.

In this way you have the noisy stuff away from signal.

rpafenberg 14th March 2019 02:40 PM

Put me on the list for two as well

Gricko 14th March 2019 02:57 PM

I want one please !

nori1000 14th March 2019 05:28 PM

How many inputs have the Board?

the preis is?

Put me on the list for two as well

t-minik 14th March 2019 07:23 PM

Nice Úvolution.

I had hope you'll make it open source, am I dreaming?

md_Stryker 15th March 2019 12:51 PM

Can you describe the hardware modifications required to the Arduino Nano with Atmega328PB for this project?


zdr 15th March 2019 04:21 PM


Originally Posted by t-minik (
Nice Úvolution.

I had hope you'll make it open source, am I dreaming?

I would at some point, but I had to go through so many customizations to make IDE work with AtmegaPB variant, I cannot replicate it any more - I just don't remember all the right steps. Without the full list of steps, it would be impossible to compile it.

All times are GMT. The time now is 11:16 AM.

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