- 3D-Druck Einstieg und Tipps         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 40 von 40

Thema: Frequenzgenerator Entwickeln ? !

  1. #31
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62
    Anzeige

    Praxistest und DIY Projekte
    OK werd ich probieren !

  2. #32
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Um bei den Frequenzen weiter nach unten zu kommen, kannst Du auch den Timer 1 in diesem Modus betreiben.
    Der hat dann 16Bit breite, also 65536 verschiedene Werte.

    Wenn Du diesen Timer für nicht schon was anderes nutzt...

  3. #33
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62
    Ja daran hab ich auch gedacht, aber ich möchte die erzeugte Frequenz mit dem Timer 1 als Torzeit ( 1Sekunde) messen und auf dem Display darstellen. Da tut sich allerdings schon das nächste Problem auf. Mein Takt wird am OC2 ( Portd.7)ausgegeben, den möchte ich jetzt abfragen, aber wie????

    Eine Abfrage auf Pind.7 oder Portd.7 funktioniert nicht ??

  4. #34
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wenn man die Frequenz per CTC Modus erzeugt, und keinen groben Fehler drin hat, dann stimmt das Verhältnis zur Taktfrequenz des µC. Ein nachmessen mit dem selben µC macht damit überhaupt keinen Sinn - da kommt immer der Sollwert bei raus.

  5. #35
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Wenn man die Frequenz per CTC Modus erzeugt, und keinen groben Fehler drin hat, dann stimmt das Verhältnis zur Taktfrequenz des µC. Ein nachmessen mit dem selben µC macht damit überhaupt keinen Sinn - da kommt immer der Sollwert bei raus.
    Da hat Besserwessi natürlich recht.
    Grundsätzlich gibt es bei einem AVR Controller mehrere Möglichkeiten Frequenzen zu messen.
    Die den Controller am wenigsten belastende ist, die Messfrequenz auf einen Timer Clock In zu legen und damit diesen Timer + Überlaufvariable hochzuzählen.
    Dann brauchst Du nur nach einen Torzeit den aktuellen Timerwert und die Hochzählvariable miteinander zu verrechnen und kommst auf Deine Frequenz.

    Bei sehr niedrigen Frequenzen wird es genauer, wenn man die zu messende Frequenz auf den ICP Pin legt und einen Timer mit der ( heruntergeteilten ? ) Taktfrequenz des Controllers laufen lässt.
    Die Frequenz wird dann anhand des Unterschiedes zwischen 2 ICP Interrupts ( = 1 Periode ) errechnet.
    Dieses Verfahren bringt dann schnelle und genaue Ergebnisse auch noch bei Frequenzen um 1Hz.

    Das Optimum dürfte eine Messroutine sein, die beide Verfahren benutzt, die ICP Interrupts aber nur bei niedrigen Frequenzen zulässt.
    Wenn die Frequenzschritte, bedingt durch die Taktfrequenz dieses Timers, bei der ICP Methode über 1Hz groß werden ( bei 1sek Torzeit ) ist es günstiger die Zählmethode zu verwenden.

    Die ICP Methode belastet bei höheren Frequenzen den Controller stark, da ja bei jedem 0 nach 1 Übergang ein Interrupt ausgelöst wird!

  6. #36
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    @wkrug:
    Die Messung der Frequenz über die ICP Funktion geht auch noch bei relativ hohen Frequenzen (bis über 100 kHz) mit mehr Auflösung als durch Zählen, wenn man sich nicht auf die Zeit zu einer Periode beschränkt, sonder ggf. mehr Perioden misst. Nur bei höheren Frequenzen ist der µC nicht schnell genug und man braucht einen Vorteiler - mit einer Stufe von 1:256 oder 512 kommt man dann auch schon bis rund 50 MHz.


    Auch per Software DDS kann man einen Sauberen Sinus über 2 kHz hinkriegen, man sollte dazu aber schon einen Rekonstruktionsfilter passend zur Abtastrate haben.

  7. #37
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62
    Hab um bei meiner Frequenzeinstellung in einen möglichst großen Bereich zu variieren per Software den Prescaler geändert.
    Weil ich es aber nicht hinbekommen habe bei folgender Anweisung :
    Config Timer2 = Timer , Clear Timer = 1 , Compare = Toggle , Prescale = 256
    hab ich es mit der direkten Registereingabe versucht, und es hat auch geklappt.
    Tccr2 = &B00011100

    Allerdings hab ich unterschiede in der Ausgabefrequenz bei der Bascom Anweisung 30 bis 7810 Hz, und bei der Registereingabe 7 bis 1980 Hz.
    Wo liegt der Unterschied zwischen der Bascom Anweisung und der Registereingabe ?

  8. #38
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Eigentlich sollte es keinen Unterschied geben... was die Register anbetrifft, kocht Bascom auch nur mit Wasser

    Wenn ich mir allerdings das Datenblatt des ATMega32 so anschaue, resultiert aus TCCR2 = &B00011100 ein Prescaler von 64. Das würde erklären, weshalb sich die Frequenzspektren genau um den Faktor 4 unterscheiden.

    Genau genommen müssten die Frequenzen unter der Bascom-Konfiguration dann zwar niedriger sein als bei direkter Registereingabe - also genau andersrum wie Du es beschrieben hast. Aber vielleicht hast Du das ja nur verwechselt...?

    Wenn Du ein LCD am Start hast, kannst Du Dir übrigens genau anschauen, was Bascom mit den einzelnen Registern so alles anstellt, indem Du sie Dir direkt anzeigen lässt (z.B. LCD TCCR2). Du musst den dezimal angezeigten Inhalt nur noch nach binär umwandeln - aber das macht der Windows-Taschenrechner ganz bequem!

  9. #39
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Die Messung der Frequenz über die ICP Funktion geht auch noch bei relativ hohen Frequenzen (bis über 100 kHz) mit mehr Auflösung als durch Zählen
    Was zu beweisen wäre.
    bei 100kHz hast Du genau 160 Takte, bevor der nächste ICP Interrupt auftritt.
    Allein die Registersicherung verschluckt davon schon mal ca. 70 Takte, wenn man sie nicht abschaltet.
    Dazwischen ist aus den ermittelten Werten die Frequenz zu berechnen.
    Ich habs schon mit einem ATMEGA 32 Controller probiert.
    Ab ca. 13kHz geht es los, das das Display rumzickt, weil das Display Timing nicht mehr stimmt. Ab 2 kHz ist die Zählerei genauer als die ICP Methode.
    Gut, man könnte den ICP Interrupt sperren, bis alle dazugehörigen Aufgaben erledigt sind und erst dann wieder eine neue Messung starten, aber richtig toll find ich das nicht.
    Das ICP Verfahren ist ab dem Zeitpunkt nicht mehr genauer, als die Zählmethode, wenn ein Wert höher oder niedriger des Counters mehr als einen Wert in der Torzeit überschreitet.
    Wenn man mehrere Perioden zur Messung heranzieht wird das zwar etwas besser, aber irgendwann ist da auch Schluß.
    Wo dieser Punkt liegt ist abhängig von der Torzeit der Messung und dem Prescaler des "ICP Timers".

    Aber gut, hier gehts um einen Frequenzgenerator und nicht um einen Frequenzzähler.
    Ich würde aber trotzdem eine Lösung mit einem speziellen DDS Chip vorziehen.
    Guck mal bei ELV unter der Baubeschreibung für den DDS 130 Funktionsgenerator.
    Das Teil könnte größtenteils übernommen werden. Lediglich den Controllerteil würd ich austauschen und der Filter ist lt. Simulation auch etwas wellig.

    Ein Kollege und Ich basteln zur Zeit an einem Funktionsgenerator mit AD9834 ( DDS Chip ) , AD5620 ( D/A Wandler = Amplitudenmodulation ), AD8000 ( Ausgangsverstärker ) und nem ATMEGA 644 Controller rum.

    Es ist dran gedacht Dreieck, Sinus und Rechtecksignale ( TTL Pegel ) zu erzeugen inklusive Wobbeln.
    Das Teil soll AM, FM, und PPM Modulation beherrschen.
    Ausserdem wird eine USB Schnittstelle reinkommen, mit der man die Parameter einstellen und die Modulatoren bedienen kann.

    Die maximale Trägerfrequenz wird so zwischen 20 und 30MHz betragen.
    Nach unten möchten wir bis 1Hz kommen.

    Zur Zeit existieren nur mal die ersten Schaltpläne, mal gucken, was daraus wird.

  10. #40
    Benutzer Stammmitglied
    Registriert seit
    18.03.2007
    Ort
    NRW
    Beiträge
    62
    Zitat Zitat von Sauerbruch
    Eigentlich sollte es keinen Unterschied geben... was die Register anbetrifft, kocht Bascom auch nur mit Wasser

    Wenn ich mir allerdings das Datenblatt des ATMega32 so anschaue, resultiert aus TCCR2 = &B00011100 ein Prescaler von 64. Das würde erklären, weshalb sich die Frequenzspektren genau um den Faktor 4 unterscheiden.

    Genau genommen müssten die Frequenzen unter der Bascom-Konfiguration dann zwar niedriger sein als bei direkter Registereingabe - also genau andersrum wie Du es beschrieben hast. Aber vielleicht hast Du das ja nur verwechselt...?

    Wenn Du ein LCD am Start hast, kannst Du Dir übrigens genau anschauen, was Bascom mit den einzelnen Registern so alles anstellt, indem Du sie Dir direkt anzeigen lässt (z.B. LCD TCCR2). Du musst den dezimal angezeigten Inhalt nur noch nach binär umwandeln - aber das macht der Windows-Taschenrechner ganz bequem!
    Alles klar, hab ich wohl einen groben Fehler gemacht, falsch abgelesen !
    Danke

    Das mit der Displayanzeige probier ich mal aus.

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

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

LiFePO4 Speicher Test