Hallo zusammen,
Problem: Erzeugen eines Rechtecksignales im Bereich von 40kHz bis 100kHz mit 50% duty. Die Frequenz sollte ca. in 500Hz Schritten einstellbar sein. Dabei kommt es nicht auf die absolute Genauigkeit an sondern die Stabilität der Frequenz ist wichtig.
Mein erster Ansatz war PWM mit 8266, der geht aber nur bis 40kHz.
Einstellbarkeit sollte per serielle Schnittstelle oder per WLAN möglich sein, wobei die Stabilität der Schwingung erst nach dem Einstellvorgang gefordert wird. Im laufenden Betrieb ist dann eine möglichst konstante Frequenz nötig.... bis zum nächsten Einstellvorgang für die neue Frequenz.
Hat jemand eine Idee, mit welchem Controller das zu schaffen ist?
Wurde vielleicht sowas schon mal gemacht?
Wie kompliziert möchtest Du das noch machen? Jeder Arduino kann PWM in Hardware, dafür braucht man keine Zusätze.
aber keine 100kHz....
edit: Hab mich eines Besseren belehren lassen... s.u.
Ein Arduino UNO (R3) zum Beispiel kann über Hardware bis zu 4 MHz PWM erzeugen.
Siehe z.B. hier:
https://www.gammon.com.au/timers
und scrolle runter bis "Simple timer output". Mehr Infos in diesem und den folgenden Abschnitten.
Die Frequenzen lassen sich nicht so gut "stufenlos" einstellen, aber vielleicht passt es trotzdem für deine Anforderungen.
Hab mir den Code angesehen, könnte tatsächlich mit Timer ohne Prescaler funktionieren.
Danke für den Tip.
Hab' hier nur den Micro, mal sehn ob das Teil mit dem Code funktioniert.
Hab' in der Arduino Doku nur den Hinweis gefunden, dass PWM max. Frequenz deutlich darunter liegt.
Der Micro (Leonardo) hat gewissen Unterschiede bei den Timern als der Uno (R3). Musst vielleicht das Datenblatt studieren, ob/wie das funktioniert.
Die Arduino Doku sagt erstmal nur was analogWrite() kann.
Weitergehendes findet man im Datenblatt des µC
Der Oginal UNO R3 hat eine Risonator und ist deswegen nicht besonders frequenzgenau / frequenzstabil. (ca 0,2% genau). Genauer sind Modelle mit einem Quarz. Da ist die Genauigkeit um den Faktor 100 besser.
Grüße Uwe
Frequenzgenau muss er ja offenbar nicht sein, die Frequenzstabilität über die Zeit dürfte - je nach angepeiltem Zeitraum - auch erträglich sein.
Näheres natürlich nur nach Angaben des TO zu bewerten.
Hallo,
prinzipiell sind 100kHz kein Problem mit einem ATmega328P o.ä. Aber die gewünschte Abstufung von 500Hz sind nicht sauber möglich. Die Sprünge werden immer größer je höher die Zielfrequenz wird. Du wirst mit Abweichungen leben müssen.
Nimm dir die Formel und berechne für alle Compare Werte die resultierende Frequenz. Dann siehst du zwischen welchen Werten man "springt". Wenn das für dich reicht ist es okay.
Wenn die Abstufungen feiner werden sollen, hilft nur höherer Grundtakt und/oder feinere Teiler etc., dann biste beim ESP.
Hab mir die möglichen Frequenzen angesehen und muss wohl wirklich mit dem 8266 arbeiten.
Hab aber leider nicht die Erfahrung, wie ich an die Timer / Teiler herankomme.
Hat jmd einen Hinweis, wo ich mich tiefer einlesen könnte, ggf. mit einem Link zu den entsprechenden Datenblätter?
Google sagt: hier
Gruß Tommy
Manchmal bin ich einfach nur Montagsgeschädigt ... ;.)
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.