Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Merenje efektivnog napona/struje 50 Hz microkontrolerom
#11
(10-20-2022, 06:43 AM)mikikg Wrote:
Code:
...        
float ADCCurrentRawValFinal = sqrt(ADCCurrentRawForSquareRoot);
MeasuredCurrentmA = (float)1000.00 * (( (float)ADC_REF_VOLTAGE / (float)ADC_RESOLUTION) * (float)ADCCurrentRawValFinal) / (float)CURRENT_SENS_RESISTOR; // Rsens = 0.1
...

Koliko god da je kompleksan račun, nama je diskretizovana ulazna vrednost i za 10bit A/D može da ima 1024 rezultata jer su sve ostale vrednosti u računu konstatne.

Ovaj gore račun se prebaci u tablicu i program istog momenta POLETI, tu se više ne troši vreme Smile

I kad se tako rastereti MCU/CPU onda se "odvrne" malo sampling-rate da to sve radi sa više uzoraka u sekundi i onda se preostalo CPU vreme potroši za neku neophodnu minimalnu FP matematiku da se rezultati fino ujednače/filtriraju i eventualno poboljša preciznost rezultata.

Apsolutno si u pravu... pravili smo tabele i tabele ranije sa PIC16F628, PIC16F877 itd... ali sada je nekako došlo novo vreme i poroka na sve strane. Ja eto, podlegao da korisim float-point matematiku i na malim PIC-ovima Smile Smile Današnji "klinci" ne mogu da shvate o čemu pričamo, zar ne Wink

Šalu na stranu, Mikijev pristup je najispravniji, jer je "matematika" na ovaj način extremno brza, a jedina "žrtva" je malo više kodne memorije. Dodatno, umesto float-point uvek je moguće koristiti integer kalkulacije u veći domen, pa zatim podeliti rezultat sa 1000, 1000000, itd...

P.S. STM32F4 već imaju ugrađen math koprocesor za float 32bita, dok STM32H idu i na float 64 bita...
Reply


Messages In This Thread
RE: Merenje efektivnog napona/struje 50 Hz microkontrolerom - by npejcic - 10-21-2022, 11:18 AM

Forum Jump:


Users browsing this thread: 5 Guest(s)