Keresés

Hirdetés

Új hozzászólás Aktív témák

  • válasz weiss #19004 üzenetére

    A 10bit ADC az 5A méréshatárt 1024 részre osztja. Előjelesen 512-re. Az még 0,01A precizitás.

    A gond egyértelműen a számolás menetével van. Ahogy korábban írtuk, a pillanatnyi csúcsok értékéből nem következik egyértelműen a folytonos áramfelvétel.

    Itt vannak ezek a jelalakok. Egyértelműen belátható, hogy más más fogyasztás (és ezáltal folytonos áram) tartozik a piros-zöld-kék áramokhoz. A peak-to-peak mégis azonos mindnél, így a számolás ugyanazt fogja adni.
    Azért írtam az RMS-t, mert az egy közelítő integrált fog adni a görbe alatti területekre (gyakolatilag kicsi hasábok területei lesznek, melyek magassága a pillanatnyi érték, szélessége a mintavételi idő.).

    Kódban ez valahogy így nézne ki:
    void Measure()
    {
       int mAmps=0;
       uint32_t RMS=0; //ide jó sok nagy szám befuthat
       int RMScount=0;
       uint32_t start_time = millis();
       int sensoValue;
       while((millis()-start_time) < 200)
       {
           sensorValue = analogRead(CURRENT_SENSOR);
           RMS+=sensorValue*sensorValue;
           RMScount++;
       }
       RMS = RMS/RMScount;
       RMS = sqrt(RMS);
       RMS = RMS * tapasztalatitenyezo; //ha esetleg kéne, a szorzót meg lehet állapítani, talán lineáris is elég
    }

    Egyébként ha akarsz rajta pontosítani, akkor érdemes tesztelgetni, hogy az ADC prescaler felgyorsításával javul e a pontosság. Ugyebár akkor a mérés maga pontatlanabb lesz, de a mérések mennyisége több lesz, így jobban közelíti a függvény alatti területet a pici téglalapok átlaga.

    Szerk.: A csatolt kép lemaradt

    [ Szerkesztve ]

    Mások számára a kondi fáradós, nekem farad-os...

Új hozzászólás Aktív témák