How to use 1452 or 1701 make a signal level detector to make LED has different brightness while signal strength change?


I want to use 1701 and 1452 to make a level detector to detect the signal strength,

but I don't know how to use blocks to make led brightness will follow the signal strength.

The led brightness level will follow the signal strength, if signal is stronger the led will more bright, the other side, the lower signal level will cause lower led brightness

(I think this may use the PWM to make led bright level)

any tips for making this function?



  • +1
    •  Super User 
    on Apr 16, 2019 3:28 PM over 1 year ago

         Hello Alvis,

         PWM can be done by comparing the signal in question to a ramp or triangle waveform.  The example shown below performs this function.  Incoming audio passes through a DC Block Filter to remove residual DC caused by the A/D converters -- use this filter anytime you're making level measurements; otherwise this DC, which typically measures about -45 dB, shows up with no input.  Peak Envelope blocks measure the left and right signal levels.  The Sawtooth Oscillator's output goes from -1 to +1; taking its absolute value provides a 1 KHz triangle wave spanning 0 to +1.  The two ABCD Comparatorsperform the PWM -- I show their logic inverted simply to make the schematic appear neater, and re-using the level signal for the logic "high"  level saves a DC source.  The GPIOs accept any nonzero input as a logic "high."  The attached project runs on a ADAU1701MINIZ board.

         Best regards,


  • Hi Bob,

    Thank you for your reply,

    I have tested on my evb, and I changed to the single channel, and it works well.

    very appreciated!

  • Hello there,
    If I want to make a signal light and a peak light, use two IO ports to connect a two-color LED. When there is a signal, one IO port outputs high. When the signal reaches a certain level, the other IO port outputs high. At this time, the signal LED output Low level? Note that I don't need PWM.
    thank you very much!

  • 0
    •  Super User 
    on Apr 24, 2019 3:08 AM over 1 year ago in reply to zlb898


         Your desired circuit features three output states -- No signal, both outputs Low, LED dark.  A normal signal drives the "green" output High.  An excessive signal drives the "red" output High and the "green" output Low, reversing the LED polarity so it lights red.  One way to perform this logic is shown below:

         Taking the Absolute Value of the Left and Right signals rectifies them into peak levels.  The Max block selects the higher of the two.  The Peak Envelope block stretches the peaks into a smooth envelope.  Sharing this block instead of using one for each channel saves about 15 instructions.  Comparator ABCD1 lights the red LED for a level of -3 dB or higher, set by source DC3.  Comparator ABCD2 does the same for the green LED, except its output is allowed High only if the Clip output is low -- this is accomplished by ZeroComp1 and Fb1.

         Best regards,



  • Hello.

      Thank you very much for your prompt reply. I forgot to explain that I am using the ADAU1451. I know that these settings are basically similar, but there are still some differences. The main reason is DC. I don't know what format to set. What is the value?
      Also, when I use the ADAU1451, I want to adjust the EQ, treble and bass through the ADC port. Using the same method as 1701 does not work at all. Please advise again, I am grateful!