Hallo allerseits, ich hab hier eine Schaltung mit einem ATmega328P, auf Timer0 hängen zwei (unabhängige) FastPWM-Schaltungen die einen MOSFET treiben. Taktfrequenz 16MHz, kein Prescaler, also PWM-Frequenz 62.5kHz. Keine Interrupts, Duty wird ausschließlich über OCR0A und OCR0B gesteuert, die ganze PWM läuft also rein in Hardware. Funktioniert ganz ausgezeichnet. Nun muss ich die PWM-Frequenz erhöhen, bei gleichzeitiger Reduktion der Auflösung. Ich möchte z.B. dass der Timer nur bis 100 zählt, OCR0A/B darf dann halt nur mehr 0..100 (oder 0..99) betragen, das ist unkritisch. Soweit der Plan :-( Ich kann zwar TOP beeinflussen, aber das ist ja OCR0A, den kann ich ja nicht verwenden, weil das ist ja mein PWM-Faktor. Ich bin sicher da gibts einen Trick... nur seh ich den im Moment nicht. Kann mir jemand auf die Sprünge helfen?
wie hoch muss denn die pwm-frequenz sein die du erreichen willst?? zu not könntest du ja auf 20Mhz gehen dann bist du bei 78,125Khz...
Walter Tarpan schrieb: > Tja....bei Timer1 hättest Du ICR1. Tja... wenn die hardware nciht schon fertig vor mir liegen würde :-( chris schrieb: > wie hoch muss denn die pwm-frequenz sein die du erreichen willst?? > > zu not könntest du ja auf 20Mhz gehen dann bist du bei 78,125Khz... Ich möchte auf >100kHz kommen.
Du könntest im OVF0-Interrupt den TCNT0 auf 156 setzen und OCR0A und OCR0B ebenfalls mit diesem Offset versehen.
Michael Reinelt schrieb: > Ich bin sicher da gibts einen Trick... Nach Datenblatt gibt es für TOP nur 0xff oder OCRA zur Auswahl, und damit lassen sich halt keine zwei unabhängigen PWM-Kanäle mit variablem Grundtakt erzeugen. Auch nicht mit Tricks. Nimm deinen Cutter, Fädeldraht, löte die Anschlüsse auf Timer 1 um. Oliver
Oliver S. schrieb: > Nimm deinen Cutter, Fädeldraht, löte die Anschlüsse auf Timer 1 um. Timer1 ist in Verwendung...
Michael Reinelt schrieb: > Ich möchte auf >100kHz kommen. puhhhh mit jetzigen gegebenheiten schwierig. was schaltet denn der mosfet? idee währe modus 1 des T0 nutzen bei 16Mhz, teiler auf 1, vorladen mit z.b 100 bis der 1te aufruf der ISR kommt das währen dann nach ca. 6.25µs = 160Khz in der ISR test: ;erst T0 neu laden minus ISR-Zeit sbic portd,5 rjmp clr_bit sbis portd,5 rjmp set_bit reti clr_bit: cbi portd,5 reti set_bit: sbi portd,5 reti musst halt anpassen für zwei kanäle
chris schrieb: > währen dann nach ca. 6.25µs = 160Khz Korrektur vorladewert 100 ist 9,75µs = 102,564Khz
Danke euch! die beiden PWM bzw. deren MOSFETs treiben eine Art Step-Down. ich hab momentan zu hohen Ripple in der Spule (Auslegungsfehler meinerseits) den möchte ich mit höherem Takt reduzieren. Timer tauschen wäre wahrscheinlich am vernünftigsten, ist aber nicht ganz einfach, doppelseitiges Layout umfädeln möcht ich vermeiden, und ich hätte gerne die 16bit von Timer1. Bevor ich mir das antue, bleib ich lieber bei meinen 62.5kHz und bestelle neue Spulen. ABER: der Trick mit "von der anderen Seite betrachten" klingt interessant: Statt hinten zu begrenzen (also von 0..100 zählen zu lassen) begrenze ich von vorne, also von 156..255. Das scheint mir einen Versuch wert... Allerdings sind dabei vermutlich ein paar Sachen zu beachten: - die ISR müsste vermutlich so kurz wie möglich sein, immerhin wird die dann alle 100 Takte aufgerufen. - zumindest einen Teil der Hardware-PWM müsste ich in der ISR machen: das Einschalten der Pins (weil normalerweise ja bei 0 eingeschaltet wird, 0 aber nie mehr auftritt). Dürfte jedenfalls zumindest einen Versuch wert sein... (irgendwie muss ich ja sowieso die zeit überbrücken, bis die neuen Spulen da sind :-)
Die größere Induktivität ist der bessere Weg. Zur Not für die Zwischenzeit auch 2 Induktivitäten in Reihe. Die Leitungen zur Induktivität sind ausnahmsweise nicht so kritisch beim Schaltregler - die dürfen auch länger sein.
Michael Reinelt schrieb: > Allerdings sind dabei vermutlich ein paar Sachen zu beachten: Sowohl bei der reinen Softwarelösung als auch bei "CTC zu Fuß" hast du Rechenzeiten, die an beiden Enden der PWM ein paar Werte verhindern. "ganz kurz" und "fast ganz lang" geht damit nicht. Ich vermute aber mal, damit kannst du leben. Oliver
So, ich hab die bestehende Spule vermessen, die sättigt erst bei 12A. Und mir wurde von glaubhafter Seite (Falk) versichert, eine Erhöhung der Frequenz wäre dann nicht notwendig. Trotzdem Danke an alle fürs Mitdenken!
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.