- Labornetzteil AliExpress         
Seite 3 von 10 ErsteErste 12345 ... LetzteLetzte
Ergebnis 21 bis 30 von 92

Thema: Howto Frequenzzähler

  1. #21
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Anzeige

    Powerstation Test
    Hallo teslanikola,

    hab hier mal nen Oszi von einem XTAL pin, wenn man diese Signal verstärken könnte ( HF Transistor) könnte man es doch als In für den timer benutzen. Oder was denkt ihr
    Warum sollte man das Verstärken? Die Timer im Atmel können auch so mit der Quarzgeschwindigkeit zählen.

    Code:
    Config Timer1 = Timer, Prescale = 1
    Ich glaub Du solltest Dir erstmal ein paar Gedanken machen wie Du Deinen Frequenzzähler realisieren möchtest.

    1) als Impulszähler mit fester Zähldauer oder
    2) als Periodendauermessung mit anschließender Umrechnung

    In beiden Fällen gilt, die zu messende Frequenz muß deutlich kleiner als die Quarzfrequenz des Atmel sein.
    Bei Realisierung nach 1) verschluckt der Atmel sonst zu zählende Impulse oder nach 2) geht Deine Messgenauigkeit gegen Null.

    Ciao,
    Werner

  2. #22
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.01.2005
    Ort
    Niederdorfelden / Hessen
    Alter
    56
    Beiträge
    368
    Hi teslanikola,

    zugegeben, wenn Du auf CMOS bestehst sind nicht mehr als 5 - 6 Mhz bei einer Versorgungsspannung von 15V drin.
    Einige TTL-IC's (Bsp.74S196 dekadischer Zähler max. 100Mhz) hängen die CMOS-Typen ohne weiteres ab. Mal abgesehen davon, das der uC sowieso schon mit 5V versorgt wird, sehe ich keine Gründe gegen den Einsatz eines TTL-IC's.

    Zur maximalen Zählfrequenz :
    Laut Fourier beträgt die maximal messbare Frequenz die Hälfte der maximalen Eingangsfrequenz des Messgerätes. Es kann sonst nicht garantiert werden, das alle Zyklen der Messfrequenz gezählt werden können.
    Wenn also ein mit 16Mhz getakteter 2313 maximal 4Mhz am Countereingang verarbeiten kann (hab' jetzt nicht im Datenblatt nachgesehen !!), beträgt die maximal messbare Frequenz 2MHz. Bei höheren Frequenzen nehmen die Messfehler rasant zu.

    Gruß Klaus
    Eine verrückte Idee ist besser als keine

  3. #23
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    35
    Beiträge
    470
    Nenne keine Namen, aber irgend wer wollte einen external oszi für den Timer/counter. Aber ich brauch ja keinen.
    PS : 2 Mhz sind doch genug!!!
    Was jetzt fehlt is nen Codeschnippsel, da ich mich mit timer ned auskenne tu
    Gruß

  4. #24
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.01.2005
    Ort
    Niederdorfelden / Hessen
    Alter
    56
    Beiträge
    368
    klingt jetzt ein bischen frech, aber wie wäre es mit der BasCom-Doku ??
    Hilfedatei und Programmbeispiele sind eine Schnipseljagt schon wert.

    Weiter kann ich nicht helfen, da ich mir diese Aufgabenstellung noch nicht gestellt habe

    Klaus
    Eine verrückte Idee ist besser als keine

  5. #25
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo Klaus,

    Zur maximalen Zählfrequenz :
    Laut Fourier beträgt die maximal messbare Frequenz die Hälfte der maximalen Eingangsfrequenz des Messgerätes.
    jein(*), aber er will Frequenzen messen und nicht ein Signal rekonstruieren. Frequenzzählung ist kein Abtast-Problem.


    Er hat nicht das Problem, das er wissen will, ob das Signal das er misst ein Sinus, Dreieck, Rechteck oder irgendetwas dazwischen ist.

    Ciao,
    Werner



    (*) Es war nicht Fourier und sondern Nyquist und es heißt <2 und selbst nahe bei 2 gilt nur bei unendlich langen periodischen Signalen.

  6. #26
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo teslanikola,

    Nenne keine Namen, aber irgend wer wollte einen external oszi für den Timer/counter. Aber ich brauch ja keinen.
    Wenn wir den gleichen Post meinen, dann wollte er keinen externen Oszillator, er wollte einen Teiler vorschalten. Und das ist eine gute Idee bei hohen Frequenzen.

    PS : 2 Mhz sind doch genug!!!

    Was jetzt fehlt is nen Codeschnippsel, da ich mich mit timer ned auskenne tu
    Dann setz Dich hin und lies a) die Bascom Hilfe und b) die Atmel Appnote zum Umgang mit den Timern.
    Und wenn Du bereit bist etwas Geld auszugeben lies c) das Buch von Rowalt. Als ersten Einstieg eignen sich auch seine Artikel aus der Zeitschrift Funkamateur.
    http://www.rowalt.de/mc/index.htm
    Einführung 1...6

    Bei einem Frequenzzähler ist nun wirklich nichts was duch Tricks gelöst werden muß. Das sind Grundlagen und die solltest Du Dir imo erarbeiten und nicht anhand von "Codeschnippseln" abkupfern.

    jm2ct

    Werner

  7. #27
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    35
    Beiträge
    470
    ich hätte gern einmal die 1, zum mitnehmen Bitte

  8. #28
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    35
    Beiträge
    470

    Stimmt der Code so????

    Servus, danke für eure Beiträge
    hab mal nen code geschrieben,
    könnt ihr mal euren Senf dazugeben, weis nicht ob der so richtig ist

    Gruß
    teslanikola

  9. #29
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.02.2005
    Alter
    35
    Beiträge
    470

    bin ich blöd

    hallo

    wie bin ich blöd, was wollt ihr den ohne code kontollieren
    also hier der Code: ist der Richtig so???
    Code:
    $regfile = "2313def.dat"
    $crystal = 10000000
    Config Pinb.5 = Input                                       ' Signal Input
    Dim Erge As Long
    Portb.5 = 0                                                 ' Aktiviert int. Pulldown
    
    Config Timer0 = Timer , Prescale = 1                        ' Config. Timer0 als Timer
    Config Timer1 = Counter , Edge = Rising
                                                                ' Config. Timer1 als Counter mit steigender Flanke
    Mess:
    
    Start Timer0                                                'Startet Messung
    Start Timer1
    Do
    Loop Until Timer0 = 40
    Stop Timer0                                                 ' 40 Timerdurchläufe = 1sek
    Stop Timer1
    
    Erge = Timer1
    Timer0 = 0                                                  'Auslesen des Counters
    Timer1 = 0
    
    ' Anzeigeroutine
    
    Goto Mess

  10. #30
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo Teslanikola,

    vom Grundaufbau geht das so.
    Zwei Sachen:
    1) mit Timer0 willst Du eine Sekunde Messzeit erzeugen.

    Das heist, Du must 10E6 Timer-Takte warten bis Du die Zähler wieder stoppst. Du wartest aber nur 40 Takte.
    Da Du 10E6 Takte nicht direkt mit Timer0 zählen kannst, brauchst Du eine weitere Variable, die die Anzahl der Overflow-Interrupts (Interrupt: OnTimer0) zählt.
    1 Overflow_int = ein Timerdurchlauf

    Ich würde zusätzlich den Prescale von Timer0 erhöhen.

    Takte = Anz-Interrupts * Timerbreite * Prescale
    10E6 = 38,1469 * 256 * 1024

    38,1469 lassen sich nicht unmittelbar realisieren, Du kannst aber Timer0 mit einem Wert vorsetzen und dann bis zum 39sten Interrupt zählen.

    Stop Timer 0
    Timer0 = 218
    Start Timer0
    Start Timer1
    Do
    Loop Until Interrupt_Zähl_Variable = 39
    Stop Timer1
    Stop Timer0


    d.h. der erste Overflow kommt nach (256-21 * 1024 Takten und jeder weitere Interrupt nach 256 * 1024 Takten.
    Der 39ste Interrupt kommt also nach (256-21*1024 + 38*256*1024 Takten. Ingesammt also nach 10.000.384 Takten.

    Damit liegst Du nur um 38.4 µs neben Deiner geforderten Messzeit. Hinzu kommt noch die Zeit für das abarbeiten des Programms vom Interrupt bis zum Timer-Stop.

    Das ganze lässt sich auch noch optimieren, z.B. indem Du die benötigten Takte, die für das Abarbeiten berücksichtigst und gegen den Vorsetz-Wert aufrechnest.

    2) Timer1 ist 16Bit breit. D.h. Du kannst bei 1s Messzeit Frequenzen bis 65535 Hz messen. Wird die Frequenz höher läuft Dir Timer1 über.
    Um den Wert zu erhöhen musst Du wie beim Timer0 die Anzahl der OnTimer1-Interrupts zählen. Bei 1-2 MHz wirst Du irgendwann an Herdware Grenze des Atmel-Chips kommen. Höhere Frequenzen kannst Du dann nur noch messen, wenn Du sie vor der Messung z.B. mit einigen Flipflops runterteilst.

    Ciao,
    Werner

Seite 3 von 10 ErsteErste 12345 ... LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests