- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Frequenzmessen

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Leider kann ich die Frequenz nur in 10-Schritten darstellen.
    Als Auflösung haben ich 100 ms gefällt. Sonst kann ich nicht bis zu 1KHz messen.
    Na - das sollte doch aber auch noch zu lösen sein - wo Du schon so weit bist...

    Eine Frage erstmal: Möchtest Du den Frequenzwert tatsächlich über den PortC ausgeben? Das könnte nämlich schwierig werden, weil Du Freq als Integer dimensioniert hast (=16 bit), während der Port ja nur 8 bit breit ist.

    Falls nicht - dann lass Freq ruhig als Integer, damit kannst Du nämlich auch bis 32768 zählen lassen (und somit auch 1000Hz auf 1Hz genau auflösen). Oder als Word: Das sind 16 Bit ohne Vorzeichen, d.h. es kann Werte von 0 bis 65535 annehmen.

    Dazu müsstest Du den Timer1-Interrupt auf 1 Sekunde verlängern, also z.B. mit einem Prescaler von 256 und einem Preset von 3025.

    Im Moment kann Timer0 ja nicht überlaufen, weil er in 1/10 Sek selbst bei 1KHz nur bis 100 zählt. Bei 1 Sekunde wäre das schon anders - dann gäbe es ab 256Hz regelmäßige Überläufe - und in der Tim0_isr muss dann stehen

    Pulselo = Pulselo + 256

    damit bei jedem erneuten Überlauf 256 dazugezählt werden. Sonst wäre Pulselo auch nach dem 2. und 3. Überlauf immer 256 - und die Frequenz würde ziemlich falsch angezeigt werden.

    Die Zeile mit Freq10 = Freq * 10 bräuchte es dann gar nicht mehr - außerdem kann man Variablen übrigens auch ganz bequem mit sich selbst verwurschteln, also z.B. Freq = Freq*10. Auch wenn man von jedem Mathe-Lehrer für diese Gleichung ´ne glatte Sechs bekommen würde - in Bascom ist das durchaus richtig.

    Viel Spaß beim weiterentwickeln!!

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    16.09.2008
    Ort
    Hamburg
    Beiträge
    49
    Mensch danke Sauerbruch,
    jetzt funktioniert alles wunderbar.
    Leider fällt mir jetzt auf, dass die Entscheidung eine Messung eine Sekunde laufen zu lassen nicht so optimal war.
    D.h. Die Angezeigten Werte verhalten sich sehr träge...

    Wenn ich aber soweit alles richtig verstanden habe. Könnte ich die Mess dauer auf 100ms verkleinern, aber dadurch würde sich die Auflösung der Messung um den Faktor 1/100 "verschlechtern"

    Also hab ich die Wahl zwischen einer exakten aber langsamen Messung oder einer groben und schnellen Messung.

    Stimmt das soweit?

    Lg TRyan

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Also hab ich die Wahl zwischen einer exakten aber langsamen Messung oder einer groben und schnellen Messung.

    Stimmt das soweit?
    Das stimmt ganz genau! Nur, dass sich die Auflösung nur auf 1/10 reduziert, wenn Du die Torzeit auf 1/10 reduzierst (und nicht auf 1/100).

    Man könnte natürlich auch 10 mal die Impulse von 0,1 Sekunden messen und zusammenaddieren. Der erste Wert wäre zwar erstmal der selbe als hättest Du gleich 1 Sekunde gemessen. Man könnte dann aber alle 0,1 Sekunden den "ältsten" Wet aus dieser Summe rausschmeißen und durch den aktuellsten ersetzen. Damit hättest Du die Vorteile einer hohen Auflösung und einer gleichzeitig schnellen Messung - aber sicherlich auch eine Menge Programmcode
    Das Stichwort hierfür wäre "Arrays"...

    Gruß,

    Daniel

  4. #14
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die andere Anlternative um schnell eine niedrige Frequenz genau zu messen, ist es nicht die Flanken zu zählen, sondern den Abstand zwischen 2 Flanken zu stoppen und dann die Freuqenz als f = 1 / T zu berechnen. Das ist dann der Weg mit dem ICP Interrupt. Bei 1-2 Hz hilft das allerdings auch nichts, denn man braucht wenigstens 2 Flanken.

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    10.06.2006
    Ort
    Duisburg-Rheinhausen
    Alter
    78
    Beiträge
    80
    Hallo Besserwessi
    Ich bin seit 14 Tagen mit dem Problem die Zeit zwischen zwei flanken zu
    messen,am suchen(google) aber was richtiges finde ich nicht.
    Da ich kein Englisch kann faellt mir das mit den Datenblatt schwer.
    Waere sehr nett wenn Du mir mit einem stueck code mal den weg zeigst.
    betrachte mich auch immernoch als anfaenger,mit 62 nicht ganz so einfach.
    gruß raggy

  6. #16
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Einen Beispielcode habe ich in den Wiki-bereich gestellt. Allerdings ist der Code in C und nicht Basic. Sieht etwas lang aus, aber die eigentliche Zeitmessung ist nur etwa Hälfte. Mit Bascom habe ich nicht viel gemacht, aber das Übertragen sollte relativ einfach gehen. Die sache mit der Union geht auch irgendwie, das ist dann aber was für Bascom spezialisten. Sonst dort den lang samen Weg mit multiplikation gehen.

    der link ist oben auch schon mal:
    https://www.roboternetz.de/wissen/index.php/Timer/Counter_(Avr)#Input_Capture

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    10.06.2006
    Ort
    Duisburg-Rheinhausen
    Alter
    78
    Beiträge
    80
    Hallo Besserwessi
    Danke Dir,werd ich mich mal da durch lesen!

    Ps ich hab es jetzt raus,wie es funktioniert
    Nochmals ein DANKE,Gruß raggy

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests