fan control with autostart when audio signal is present
Good morning Guys,
with ADAU1701 I want to implement heatsink fan control.
So I used an ADC input for the two n.o. switch thermostats (I have two analogue thresholds 0V=over-temperature and 1.65V=high-temperature) and an output with a small buffer for the 24 Vdc fan.
I would like:
- When 1.65V pushes the fan output high only above a certain audio signal. If there is no signal the output is low.
- When 0V pushes the fan output high even without an audio signal but with a second output that makes an LED flash (which I will then use to put the amplification on stand-by).
Unfortunately I wouldn't know how to use the analog input and manage the fan based on this.
Thanks to those who will support.
Stefano
Hello Stefano,
Let's get you started with the AuxADC, GP outputs, and logic to make your idea work. As you work with SigmaStudio, you'll discover neater ways to accomplish desired functions, and even add more like timers and such. For now, the project shown below will do. It runs on a ADAU1701MINIZ board, if you're running different hardware, adapt the IOs as needed. Don't forget the associated MP pin register settings in the Hardware Configuration / 170x - 140x Register Control window:
Audio passes through the DC block Filter to the audio DACs -- anytime you're measuring audio level for any reason, be sure to include the filter because otherwise, residual DC from the input ADCs render low-level readings inaccurate. The Peak Envelope block outputs a DC level corresponding to the peak audio level.
Meanwhile, AuxADC3 reads the temp switches. ABCD2 outputs 1 if the ADC reads 0.5 or less (corresponding to 1.65V at the pin). Its output is gated by ABCD3, allowing the fan to run if also the audio level is high enough. If the temp reads 0.1 or less, the fan runs regardless of the audio, also LED D4 blinks. Digital GP outputs consider 0 to be low, and anything nonzero (even negative) as a high.
Fan-ctrl.zip
Best regards,
Bob
Hi Bob, thanks for the reply.
The schematics works correctly with a low audio signal but when I put a high audio signal (500/600 mV) in HIGH-TEMP mode, the fan runs slowly intermittently and continues to run for about 15-20 seconds even without a audio signal.
Obviously I'm after a DC BLOCK.
I have noticed that the more I increase the volume the more the output stutters at a low level along with the audio signal peak.
Hello Stefano,
I couldn't duplicate this problem here -- the project's fan output remained solidly ON at high audio levels. Yet I'm running under ideal conditions -- a ADAU1701MINIZ eval board powered from my laptop via USBi, audio from an iPad, with a LED representing the fan. Since it's not working in its real-world application, we need to figure out why.
Although you're still getting up to speed with SigmaStudio, you may be quite adept working with electronics generally. It's difficult for me to troubleshoot this remotely, so I'll suggest a couple of tests to try:
In HIGH-TEMP mode the fan should run regardless of audio level. The power amp remains hot for some time after the audio is removed, so its continued running is normal. Does it run properly (at full speed) during this time? If so, then continue:
Using a multimeter, measure the AuxADC input with respect to ground near the DSP chip when the HIGH-TEMP thermal switch is activated. It should read dead zero, not bouncing with the audio level.
Measure the DSP's fan output going into your fan driver under hot, loud audio conditions -- is it intermittent along with the fan?
Beyond this, I'll need to understand your application further:
What hardware are you running? A custom design, or a pre-made board like from Dayton Audio? Did it come with the thermal switches and / or fan?
Exactly how are the thermal switches wired to the Aux ADC input. Ideally provide a schematic.
How much audio processing is also included in your SigmaStudio project? If it includes many EQs, crossovers, etc., there's a small chance that the additional instructions used by the fan logic is overtaxing the DSP. The SigmaStudio compiler flags "Ran out of MIPS" when the project's instruction count exceeds 1024. Yet, any project exceeding around 1010 instructions can run into trouble. This thread describes where to find your instruction count.
Hope this helps,
Bob
Please log in to reply.
