ich benötige für eine Antriebssteuerung ein 6,5 kHz PWM Signal, welches ich mit einer Duty-Auflösung von 12 Bit erzeugen möchte.
Nun habe ich schon einiges gelesen, dass man das mit einem Timer machen könnte.
Allerdings komme ich mit diesem ganzen Kram um den "Prescaler" nicht klar.
Könnte mir das mal jemand erklären ?
Danke
Leider komme ich auch mit diesen ganzen englischen Anleitungen nicht klar.
ich benötige für eine Antriebssteuerung ein 6,5 kHz PWM Signal, welches
ich mit einer Duty-Auflösung von 12 Bit erzeugen möchte.
Dafür braucht man 26MHz Takt. Das können nur die Xmega oder ggf. die noch neueren AVRs, welche bis zu 32 MHz schaffen.
Nun habe ich schon einiges gelesen, dass man das mit einem Timer machen
könnte.
Allerdings komme ich mit diesem ganzen Kram um den "Prescaler" nicht
klar.
Könnte mir das mal jemand erklären ?
Was soll man da groß erklären? Stell den Timer korrekt ein und gut. Soviele Register gibt es da nicht.
Leider komme ich auch mit diesen ganzen englischen Anleitungen nicht
klar.
Dort liegt also das Problem. Naja, dann wird es schwierig. Welchen AVR willst du denn benutzen? Am Ende ist es einfacher, die drei Registereinstellungen dir zu geben als den Kram im Detail zu erklären.
Da kann man glücklicherweise gleich ein X dranmachen, mit einem Standard-AVR geht das nicht, Du brauchst einen, bei dem ein Zähler über eine PLL getaktet werden kann.
Für 12 Bit brauchst Du 4096*6500Hz=26,624MHz. Der Standard-AVR kann nur 16Mhz, heißt bei 12 Bit wären nur 3,906kHz möglich, bei 11 Bit 7,8125kHz.
Frag mich jetzt bitte nicht, welche AVRs eine PLL haben. Ich weiß, daß es welche gibt, die dann glaube ich 64Mhz schaffen - aber aus dem Kopf weiß ich nicht welche das sind.
Und dann lerne die Datenblätter zu lesen. Der Teil über die Zähler und ihre extrem vielseitigen Möglichkeiten ist lang, den wird Dir keiner erklären wollen. Da bin ich wahrscheinlich schneller, wenn ich Dir einfach selbst den Code dafür schreiben würde.
Dort liegt also das Problem. Naja, dann wird es schwierig. Welchen AVR
willst du denn benutzen? Am Ende ist es einfacher, die drei
Registereinstellungen dir zu geben als den Kram im Detail zu erklären.
eigentlich hatte ich mit einem kleinen ATTiny412 geliebäugelt. Mehr als 3 Pins benötige ich nicht. Einen als Eingang, und zwei Ausgänge - einer davon das PWM Signal.
● 12-bit PWM Timer/Counter type D (TCD) optimized for power control
● Internal PLL up to 48 MHz for high-frequency operation of Timer/Counter type D (PLL)
Verstehe ich nicht ? Warum diese hohe Taktrate für 6,5 kHz ?
Ganz Einfach:
Deine 6,5kHz sollen ja in eine 12Bit PWM aufgelöst werden. Also wird intern eine Frequenz benötigt die 4096x schneller als 6,5KHz ist, macht halt 26,6MHz
Hast Recht, bei dem hat der Timer/Counter 1 tatsächlich nur 8 Bit. Wie gesagt bei den AVRs mit PLL kenne ich mich nicht gut aus, die PLL habe ich noch nie gebraucht.
● 16-bit Timer/Counter type E (TCE) with four compare channels for PWM generation and Waveform Extension (WEX)
● Internal PLL up to 80 MHz for high-frequency operation of Timer/Counter type E/F
Leider komme ich auch mit diesen ganzen englischen Anleitungen nicht
klar.
Ohne Erfahrung im Englisch-Lesen ist das schwierig. Technisches Englisch ist einerseits zwar erheblich einfacher als z. B. Shakespeare- oder Sun-Englisch, aber andererseits oft nicht 100%ig sprachlich korrekt und didaktisch gut, sodass man es nur versteht, wenn man einen Teil davon bereits kennt.
Wenn man z. B. weiß, was manche Timer in manchen µPs grundsätzlich so alles können, ist es einfach – wenn man so was aus vielen Datenblättern erst lernen muss, ist es schwierig. Datenblätter sind halt keine Lehrbücher.
Je nachdem, wie alt du bist, kann es sich lohnen, dein Englisch zu verbessern. Es geht IMHO nichts über Lese-Erfahrung. Irgendwann liest du es fast wie Deutsch, aber bis dahin dauert es eben.
Es ist leider wieder einmal eine sinnlose Diskussion, die von vielen nur noch unnötig befeuert wird – denn sie ähnelt dem Versuch, jemandem, der nicht alphabetisiert ist und auch nicht gewillt ist, diesen Zustand bei sich zu ändern, zu erklären, was ein Sonett ist und wie man ein schreiben könnte.
Leider komme ich auch mit diesen ganzen englischen Anleitungen nicht
klar.
Wenn Du von AVR abweichen kannst/willst, würde ich Dir ein RP2040 Pico-Board zur Umsetzung empfehlen. Das ist günstig, hat die passende Hardware und es findet sich bestimmt eine deutsche Beschreibung der Arduino-IDE, mit der das einfach umzusetzen ist.
Ggf. ein Übersetzungsprogramm verwenden.
Was ist das denn wieder für eine unsinnige Aussage? Klar kann man 6,5kHz erzeugen, das ist sogar recht einfach. Und komm mir jetzt nicht mit ppm Abweichungen!
Z.B. bei PC-Lüftern ist ein Bereich von 21-28kHz zulässig.
Davon war nie die Rede! Es geht nicht um PC Lüfter!
ich benötige für eine Antriebssteuerung ein 6,5 kHz PWM Signal, welches
ich mit einer Duty-Auflösung von 12 Bit erzeugen möchte.
Man könnte den ATtiny24 nehmen, der geht offiziell bis 20MHz. Für ein Einzelmuster läuft der auch mit 26MHz, man kann ja VCC auf 5,5V stellen, so als Reserve. Er hat einen 16 Bit Timer, der die 12 Bit PWM erzeugen kann. Mit DIL14 Gehäuse auch relativ klein. Wenn Bedarf besteht, kann ich die Software beisteuern, ist ja praktisch nix. Dazu müßte ich aber wissen, das der Eingang und der 2. Ausgang machen sollen.
Was ist das denn wieder für eine unsinnige Aussage?
Nö.
Damit ist gesagt, daß zu einer korrekten Spezifikation auch immer die Angabe der Toleranz gehört. Z.B. auf Netzteilen steht ja nicht aus Langeweile 47-63Hz drauf.
Daß diverse Edelbastler mit dem Begriff Toleranz nicht anzufangen wissen, war mir natürlich klar.
eine Anmerkung zu den besagten 26,6MHz MCU Takt die im Thread auftauchen. Damit sind die 6,5kHz mit 12Bit nur im Fast-PWM Mode möglich, wenn man sich auf ältere Controller Typen wie ATmega328P oder ATtiny24 o.ä. bezieht. Allerdings erzeugt der Fast-PWM Mode mit Compare Value 0 einen Nadelimpuls. Nimmt man einen anderen glitch free PWM Mode benötigt man die doppelte MCU Taktfrequenz für das gleiche Ziel. Praktisch nicht machbar.
Neuere AVRs mit ihren TCA, TCB u.ä. Timertypen schaffen mit 26,6MHz nur 11Bit Auflösung. Wenn es wirklich unbedingt 12Bit sein müssen, benötigt es einen mit PLL für den Timer.
Allerdings erzeugt der Fast-PWM Mode mit Compare Value 0
einen Nadelimpuls.
Man kann den PWM-Generator invertiert betreiben wenn ich mich recht erinnere. Dann verlagert sich der Nadelimpuls an das obere Ende, d.h. man erreicht kein Dauer-Ein wenn man den Ausgang dafür nicht umschaltet. Alternativ kann man auch bei Sollwert 0 einfach den Pin abschalten, dann ist der Nadelimpuls weg.
Kommt halt drauf an, welcher Regelbereich gefordert wird. Wenn man bei 12 Bit z.B. 2048+-2000 möchte, interessiert dieser Nadelimpuls nicht weil die Regelung gar nicht bis auf auf Null herunterläuft.