element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Embedded and Microcontrollers
  • Technologies
  • More
Embedded and Microcontrollers
DSP Forum Algo for rms computation?
  • Blog
  • Forum
  • Documents
  • Quiz
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Embedded and Microcontrollers to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 12 replies
  • Subscribers 123 subscribers
  • Views 2005 views
  • Users 0 members are here
Related

Algo for rms computation?

ggabe
ggabe over 2 years ago

I’m entertaining a true rms computation on MSPM0G3507 for the 10Hz…100KHz range. 

The MCU is limited to 32K RAM, so I’d change the sampling frequency if I can determine the signal is periodic and in the lower frequency range.

Is there any algorithm that aims capture N periods of a periodic signal? 

Should I be better of by going into frequency domain with a proper window function, and possibly trying multiple sampling rates to choose the proper range?

  • Sign in to reply
  • Cancel

Top Replies

  • michaelkellett
    michaelkellett over 2 years ago +1
    What's wrong with: sample (at 500kHz) s square (at 500kHz) sq = s * s mean (at 500kHz) m = m + ( (sq - m) / Ki) square root (at read out rate) rms = m ^ 0.5 Division by a constant can be done…
  • ggabe
    ggabe over 2 years ago in reply to scottiebabe +1
    Yes, it is interesting. TI is selling the EVB for $16 direct. The part is very much a new item, TI is not sampling it yet. The accelerator is cool, but not as advanced as the MSP430's LEA. The benefit…
  • ggabe
    ggabe over 2 years ago in reply to michaelkellett +1
    I think the algorithm with Ki used to be referred as exponential decay averaging. The alternative, the moving averaging has a sensitivity when the weight of the partial periods start to influence the average…
  • ggabe
    ggabe over 2 years ago

    After a little digging, I'm to do autocorrelation and finding the peaks. Would autocorrelation be as good use of the CPU resources as FFT?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • ggabe
    ggabe over 2 years ago in reply to ggabe

    It turns out autocorrelation can be easily calculated by FFT/IFFT, per  Wiener-Khinchin. I’m onto something!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • michaelkellett
    michaelkellett over 2 years ago

    What's wrong with:

    sample (at 500kHz)       s

    square (at 500kHz)       sq = s * s

    mean (at 500kHz)         m = m + ( (sq - m) /  Ki)

    square root (at read out rate)  rms = m ^ 0.5

    Division by a constant can be done by multiplication by a constant and a shift operation.

    So you need 3 multiplies, 1 add, 1 subtract and 1 shift at sample speed, and the square root at read out speed.

    MK

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • shabaz
    shabaz over 2 years ago

    It sounds like you're trying to measure frequency, although I wasn't sure why. All the decent methods I can think of for measuring frequency would take time to compute : ( For instance by first getting the highest amplitude frequency bucket, and then sweeping inside that bucket using an algorithm.

    Unrelated, I was thinking that it could be possible to make a simple true RMS meter (nowhere near your desired spec) by using a cheap DSP module. There's a basic example here (Example 7):

     Wave Miner: 10 Experiments with a Pi Digital Signal Processor (DSP) 

    It could be completely standalone with that chip incidentally, if the web interface were replaced with a panel meter or moving-coil meter (i.e. all the code residing in the DSP chip). Admittedly very crude, but maybe interesting for those who don't have such a feature in their multimeter.

    Also, the measurement bandwidth could be selected by buttons instead of the web interface too (not sure of the use-case, I only did that feature because it was easy in the DSP).

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • scottiebabe
    scottiebabe over 2 years ago

    Interesting chip!

    image

    I didn't see the cycle counts for the math co-processor but it looks interesting.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • ggabe
    ggabe over 2 years ago in reply to scottiebabe

    Yes, it is interesting. TI is selling the EVB for $16 direct. The part is very much a new item, TI is not sampling it yet. The accelerator is cool, but not as advanced as the MSP430's LEA. 
    The benefit for me is no need for noisy SPI bus between ADC and CPU, and I can treat the MCU, once programmed, as a single part RMS converter.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • ggabe
    ggabe over 2 years ago in reply to michaelkellett

    I think the algorithm with Ki used to be referred as exponential decay averaging. The alternative, the moving averaging has a sensitivity when the weight of the partial periods start to influence the average. It happens on the lowest end of the spectrum.

    My gut feeling is the exponential decay has the same problem, probably tunable by Ki for the expense of return to zero time, when the signal is removed.

    To address the low frequency accuracy concerns, I would experiment with reducing the sampling rate, if the signal is periodic and not much spectral power over let's say fsample/200. This is where autocorrelation and/or FFT comes in. Luckily, it's not much trouble to simulate in a Jupyter notebook.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • michaelkellett
    michaelkellett over 2 years ago in reply to ggabe

    I'll be very interested to see how you get on with this. My own (limited) experiments in this direction have suggested that the ex. dec. has the advantage of stability and predictability but that more tuned methods which make assumptions or self modifications based on the signal may give very good results with some signals but can be caught out by others. My work was done on ST32H7 series processors which have the advantage of 16bit ADCs (not the best 16 bits I've ever seen) and the 400MHz 64 bit FP possibly makes up for the lack of the accelerator.

    I'm still working on the indirectly heated thermistor concept (which is an almost perfect physical analogue of the process I described above) but in reality it trades one kind of complexity (ADC, memory and maths) for a probably more expensive complexity in terms of insulation , heaters and thermal control Relaxed. But I have other reasons for being interested in the thermal control aspects so it remains a useful project to me.

    MK

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • ggabe
    ggabe over 2 years ago in reply to scottiebabe

    If the TI part piqued your interest then there is STM32G431. It has single precision float, CORDIC and FMATH accelerators, imo better than IT's offering. 

    Cordic features

    • 24-bit CORDIC rotation engine

    • Circular and Hyperbolic modes

    • Rotation and Vectoring modes

    • Functions: Sine, Cosine, Sinh, Cosh, Atan, Atan2, Atanh, Modulus, Square root, Natural logarithm

    • Programmable precision up to 20-bit

    • Fast convergence: 4 bits per clock cycle

    • Supports 16-bit and 32-bit fixed point input and output formats

    • Low latency AHB slave interface

    • Results can be read as soon as ready without polling or interrupt

    • DMA read and write channels

    FMAC features

    • 16 x 16-bit multiplier

    • 24+2-bit accumulator with addition and subtraction

    • 16-bit input and output data

    • 256 x 16-bit local memory

    • Up to three areas can be defined in memory for data buffers (two input, one output), defined by programmable base address pointers and associated size registers

    • Input and output sample buffers can be circular

    • Buffer “watermark” feature reduces overhead in interrupt mode

    • Filter functions: FIR, IIR (direct form 1)

    • AHB slave interface

    • DMA read and write data channels

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • michaelkellett
    michaelkellett over 2 years ago in reply to ggabe

    What I liked about the TI part is that it's so cheap !

    I have  a project for a client in mind where it's a prefect fit (and the cheapness matters).

    I've ordered a couple of the eval boards.

    MK

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube