Hallo, ich bin gerade dabei mittels PWM ein Ventil anzusteuern und somit ein einfaches Auf/ Zu Ventil als Proportionalventil zu missbrauchen. Die kleineste Frequenz die ich bei der PWM hinbekomme sind 3,6 kHz. Das ist mir aber etwas hoch, da das Ventil bei 100 Mio garantierten Lastwechseln schon nach ca. 7 Stunden hinüber wäre. Ich möchte also die Frequenz niedriger haben. Wie mache ich das? Ich benutze Timer 0. Hier ein kleiner Auszug aus dem Programm: // Timer/Counter 0 initialization => PWM // Clock source: System Clock // Clock value: 3,600 kHz // Mode: Phase correct PWM top=FFh // OC0 output: Non-Inverted PWM TCCR0=0x65; TCNT0=0x00; OCR0=0x00; Das TCCR0 Register bereitet mir auch noch etwas Kopfzerbrechen. Bedeutet TCCR0 = 0x65, daß in dem Register Bit 6 (also PWM0) sowie Bit 5 (also COM01) gesetzt sind? Worin ist die Information enthalten, daß mein CPU Takt (3686,4 kHz) durch 1024 geteilt wird und ich somit eine PWM Frequenz von 3,600 kHz erhalte? Wäre super wenn ihr ein par Anregungen für mich hättet. Grüße, Stefan
die nachfolgenden angaben beziehen sich auf den ATmega8(L), aber die anderen werden wahrscheinlich ähnlich aufgebaut sein. dein effektiver takt der PWM wenn du mit dem TC2 (8 bit) und fastPWM arbeitest ist folgender: CLK / (256 x prescaler) wobei der prescaler 1, 8, 32, 64, 128, 256 oder 1024 sein kann. bei CLK=1MHz und prescaler=1024 ergibt das eine frequenz von ca. 1E6/256/1024=3,8Hz dementsprechend ändert sich der takt bis ca. 3,9kHz bei einer prescaler einstellung von 1. lies am besten das datenblatt (ATmega8L seite 111ff) hoffe dir geholfen zu haben, lg andi
ähh, hab übersehen, dass du die phase correct PWM verwendest, im datenblatt steht da was von f(PWM) = CLK / (N x 510) N..prescaler woher die 510 (256?) kommen weiss ich nicht ganz, fakt ist jedenfalls, dass sich deine CLK durch den prescaler und die 8bit des TC dividieren. aja, der TC zählt bei der phase correct PWM nach oben und dann nach unten 255 und 0 werden natürlich nicht doppelt gezählt, daher 512-2=510. dadurch ergibt sich eine (fast) halb so schnelle PWMfrequenz als bei der fastPWM, wo der zähler jedesmal einfach überläuft und wieder bei 0 zu zählen beginnt. soweit sogut. lg andi (man lernt nie aus :)
@stefan Selbst bei einer Frequenz von 1 Hz, welche mit Leitigkeit per Software PWM zu realisieren wäre, lebt dein Ventil nur gut 3,17 Jahr. Der Ansatz Hardware PWM ist wohl vollständig fehl am Platz.
@ mikki merten: Das Ventil soll nicht im Dauerbetrieb betrieben werden. Lediglich für einzelne Mischvorgänge, die jeweils ca. 5 Minuten dauern. Aber wo ist denn da der Zusammenhang mit Software und Hardware PWM? Die Auswirkungen auf das Ventil sind doch die selben, oder habe ich dich da irgendwie missverstanden? Stefan
Hallo, mittlerweile glaube ich, daß ich keine geringere Frequenz als CK/1024 erreichen kann. Beim Durchstöbern meines Datenblatts finde ich nämlich nur die Optionen CK, CK/8, CK/64, CK/256 und CK/1024 (je nachdem wie die Bits im TCCRO Register gesetzt sind). Das hieße daß meine niedrigste Frequenz bei 3,600 kHz läge. Leider viel zu hoch für meine Zwecke. Oder hat jemand noch eine Idee? Grüsse, Stefan
@stefan hi stefan, hast du meine beiträge nicht gelesen, oder nicht verstanden? du musst CK/N auch noch durch 510 teilen, dann bekommst du die richtige PWM-frequenz. da die PWM ja durch überprüfen des 8bit-zählers erzeugt wird ist die periodendauer solang wie es dauert den timer einmal überlaufen zu lassen (bei der phasenkorrekten eben beinahe doppelt so lang) alternativ für längere zeiten könntest du auch den 16bit timer verwenden, da verlängert sich die mögliche periodendauer erheblich. eine andere alternative ist natürlich auch die PWM "händisch" zu erzeugen indem du mit einer festen zeitbasis, die du z.b. mit einem timer und registern die du hinaufzählst erzeugst und damit dann deine eigene PWM generierst. das ganze sollte eigentlich überhaupt kein problem sein, es gäbe mehrere lösungsmöglichkeiten. lg andi
Hi Andreas, ich glaube jetzt habe ich´s verstanden. Ich habe nochmal in meinem Datenblatt gelesen und rausgefunden, daß meine Frequenz die ich derzeit eingestellt habe tatsächlich VK/(1024*510) sein müßte. Somit hätte ich also irgendwas im Bereich von 7 Hz haben. Das wäre schonmal nicht schlecht. Ich werde das gleich nochmal mit dem Oszi überprüfen. Erstmal vielen Dank, vielleicht melde ich mich später nochmal :-) Stefan
hi stefan, na da bin ich aber froh, freu mich immer wenn ich helfen kann ;) viel erfolg weiterhin! lg andi
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.