<div dir="ltr">The hardware circuit is missing a discharge resistor, so it would take infinite time to discharge. There are two places you could add this resistor, giving two different behaviours. One is across the capacitor. The other is across the diode (or with a slight change in value across the series diode plus resistor combination). <div>The software can simply model the hardware behaviour if we can ignore the forward voltage drop of the diode, which allows us to use a simple if (Input > Output) test. Rather than using multibyte multiplications, we can calculate the change in output voltage and add that to the previous output voltage to get the new output voltage, with most or all of the multiplications necessary to calculate the change replaced by shift right operations performed on the difference between input and output (or performed on the output voltage if you are modelling a resistor across the output). You will probably need a multibyte addition routine and possibly a multibyte subtraction routine (or use the addition routine with negative numbers).</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jun 19, 2022 at 4:47 PM Stephen Irons <<a href="mailto:stephen@irons.nz">stephen@irons.nz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div id="gmail-m_-5823319344845622643geary-body" dir="auto"><div>My solution was to implement the (low-pass) filter in any standard way, and implement the ideal diode as the max() function: the input to the filter is the larger of the input value and the current filtered value.</div><div><br></div><div>For interest, my preferred implementation for a single-pole low-pass filter is 'exponential smoothing' <a href="https://en.wikipedia.org/wiki/Exponential_smoothing" target="_blank">https://en.wikipedia.org/wiki/Exponential_smoothing</a></div><div><br></div><div>Stephen Irons</div></div><div id="gmail-m_-5823319344845622643geary-quote" dir="auto"><br>On Sun, Jun 19, 2022 at 16:34, Robin Gilks <<a href="mailto:gb7ipd@gmail.com" target="_blank">gb7ipd@gmail.com</a>> wrote:<br><blockquote type="cite"><div dir="ltr">Here's another question for you all!!<div><br></div><div>I'm trying to implement "something like" a VU Meter in software (in an embedded system so it has to be small & fast).</div><div>The hardware equivalent to a diode running into an RC filter</div><div><font face="monospace"><br></font></div><div><font face="monospace">          |\ |             R<br>   in ----|  |----------vvvvvv--------- out<br>          |/ |                    |<br>                                 ___ <br>                                 ___  C<br>                                  |<br>                                  |<br> common ----------------------------------------  <br> </font><br><div>My first port of call for filters is an IIR but that does not have the fast attack I'm after, especially if I want the long tail.</div><div><br></div><div>Does anyone have any magic that doesn't disappear into a morass of DFTs and FFTs and 3 page equations summing integrals from 0 to infinity ;)</div><div><br></div><div>Cheers - hopefully see you tomorrow.</div><div><br></div>-- <br><div dir="ltr"><div dir="ltr">Robin Gilks<div><br></div></div></div></div></div>
</blockquote></div>_______________________________________________<br>
Chchrobotics mailing list <a href="mailto:Chchrobotics@lists.ourshack.com" target="_blank">Chchrobotics@lists.ourshack.com</a><br>
<a href="https://lists.ourshack.com/mailman/listinfo/chchrobotics" rel="noreferrer" target="_blank">https://lists.ourshack.com/mailman/listinfo/chchrobotics</a><br>
Mail Archives: <a href="http://lists.ourshack.com/pipermail/chchrobotics/" rel="noreferrer" target="_blank">http://lists.ourshack.com/pipermail/chchrobotics/</a><br>
Meetings usually 3rd Monday each month. See <a href="http://kiwibots.org" rel="noreferrer" target="_blank">http://kiwibots.org</a> for venue, directions and dates.<br>
When replying, please edit your Subject line to reflect new subjects.</blockquote></div>