Servus miteinander, für einen 3-phasigen DCDC (BuckBoost) benötige ich: a) drei um 120Grad verschobenes Sync-Signale (DCDC reagiert auf die steigende Flanke, 200kHz <= F <= 700kHz) b) drei PWM-Signale: wenn möglich synchronisiert mit dem jeweiligen Sync-Signal aus a) On-Time mindestens 6 Sync-Pulse aus a) Angedacht ist derzeit ein Mega2560 (F=16MHz), der den gewünschten 3Phasen-Oszillator nebenbei wuppen soll. "Nebenbei" bei F=700kHz => wenig bis keine Software-Auslastung. ______________________________________________________________________ Vorhaben war bisher: Timer1 (16bit) generiert die drei 120Grad-Phasen auf OC1A,B,C _ OC1A | |__________________ _ OC1B _______| |___________ _ OC1C ______________| |____ Die 3 Phasen dann verodert auf den Eingang (external Clk-Source) von Timer3 und auf diesem dann 3 PWMs generieren mit leicht verschobenen OCR-Registern (3 Ticks pro Cicle, da 3 Eingangspulse => OCR1C = OCR1B+1 = OCR1A+2) Hardwareverodern per 3xD und 1xR: OC1A --------| OC1B -----| | OC1C --| | | V V V - - - | | | o--o--o--- T3 | .-. | | | | '-' | GND Das erste Problem stellt die Realisierung der OnTime der 3 120Grad-Phasen dar. Wenn ich verodern möchte, muss OC1A low sein bevor OC1B schaltet und an der Stelle komme ich hardwarenah nicht mehr auf. Einzige, aber nicht schöne Lösung, die mir einfällt: T1 im CTC-Mode mit ICR als Reload-Register OCR1A,B,C setzen OC1A,B,C auf high bei Compare, parallel IRQ ausführen und die Pins directemente wieder auf low setzen. Da die alternative Port Funktion per Timer-Init aktiviert ist, ist noch fraglich, ob/wie ich den Pin zurücksetzen kann. Alternative: OC1A,B,C nicht low2high bei Compare sondern toggeln und dann per IRQ die Compareregister temporär für ein Zurücktoggeln anpassen. Bei der gewünschten maximalen Frequenzen ist ein Software-IRQ nicht so prima. Die erste Variante (wenn sie denn umsetzbar wäre) bedeutet bereits: an IRQ-Adresse und zurückspringen Pin schreiben Die Alternative ist noch um einiges übler. Bei 16MHz und 3 Phasen a 0.7Mhz bleibt nicht viel Luft: weniger als 8 uC-Cicles pro Compare-Event Wenn in diesen 5-7 Cicles hin und hergesprungen und ein Port geschrieben werden muss, ist der uC in Voll- oder Über-Last. Also ........ habt Ihr eine Idee? Das Layout der Controller-Platine ist in Mache, sodass noch Komponenten hinzugefügt werden können. Ein LTC6902 http://cds.linear.com/docs/en/datasheet/6902f.pdf würde das Problem zB. lösen, wunder mich aber ein wenig, dass es die Paripherie des Mega2560 nicht hergeben soll. Vielleicht geht's ja doch einfacher wie zB. externer Counter (Logik-Baustein) PS: ich weiß, dass ich die 700kHz mit dem uC nicht genau erreiche - wäre nicht schlimm, auf 650kHz runter zu müssen, wollte die DCDC-Stufen jedoch nicht komplett wegen einer Behinderung seitens des Controller beschneiden. Danke fürs Drüberschaun Robert
Hallo, ich würde dir einen MOS4017 empfehlen. Der kann das gleiche machen wie der LTC. Einfach den Reset des Bausteins so beschalten, dass er nur bis drei zählt. Dann aus deinem Controller den Takt mit der dreifachen Frequenz erzeugen und die Pulsweite auf 50% setzten. Dann läuft das von selber und du hast damit gar nichts mehr zu tun. Gruß, jens
Ein Mega 2560 kann das nicht von Hause aus, denn er hat die Timer nicht, und auch nicht mit der passenden funktionaltaet. Ich wuerd's mit einem zusaetzlichen CPLD (schon gemacht) oder mit einem PIC, der zB 6 Zaehler, mit jeweils Phasenverschiebung, und allen schon drinhat, machen. Der koennt dann auch waehrend den Pulsen die Strome auf den 3 Phasen ueberwachen. Alles in Hardware. Hab ich geplant aber noch nicht gemacht. Einen genauen Typ muesst ich nachschauen.
Robert T. schrieb: > Das Layout der Controller-Platine ist in Mache, sodass noch Komponenten > hinzugefügt werden können. Wenn du noch in der Entwicklungsphase schon an der Kotzgrenze bist dann wird es nicht klappen. Bei solchen Frequenzen auf die Leistung eines AVRs zu Vertrauen ist schon gewagt. Ein CPLDchen mit der richtigen Taktfrequenz ein paar Countern wirkt da Wunder ....
Don Lancaster hat im CMOS Kochbuch eine Schaltung, die mit einem Oszillator und einem einzigen CD4018 auskommt. Wimre muss der Oszillator 6 mal so schnell laufen wie die gewünschte Ausgangsfrequenz.
:
Bearbeitet durch User
Bei der Dimensionierung sollte man beachten dass sich die Frequenzen addieren. Deswegen sind 700kHz viel zu hoch. Eine gute PWM Frequenz ist zB 64kHz, die erziehlt man mit 16MHz div 256, dh man hat bei 64kHz 8 bit an Pulslaengen Aufloesung. Und die effektive Frequenz, die der gemeinsame Kondenser sieht waere dann bei 192kHz.
:
Bearbeitet durch User
Darum geht es doch gar nicht. Es wird doch oben beschrieben, dass die 700kHz sein müssen. 650kHz wären ok aber da sind doch deine 64kHz total daneben. Und er will ja nicht die Auflösung sondern nur die 3 phasenversetzten Sync-Signale. Mit welcher Auflösung man die erreicht ist doch egal. Nur die Steigenden Flanken müssen stabil sein. Und die einfachste Lösung ist da der Zählerbaustein 4017.
Ist ein guter Einwand von Oder Doch. Tatsächlich ist 200kHz die untere Grenzfrequenz, die der gewählte DCDC-Kontroller anbietet. (http://cds.linear.com/docs/en/datasheet/3790fa.pdf) Ich bin was Schaltwandler-Layout angeht wenig erfahren, aber dass sich die Frequenzen bei parallelen, phasenverschobenen DCDC-Stufen zusammenaddieren ist mir bewußt - weniger bekannt ist mir die Frequenzbelastbarkeit des Ausgangs-Elkos (OS-CON SVPF) - ein angenommener Wert liegt bei 1MHz. 3x700kHz = 2.1MHz > 1MHz. Nun ist aber auch vorstellbar, auf den Ausgangs-Elko zu verzichten und nur mit KerKos zu arbeiten; dann wäre die Frequenz-Grenze durch den Elko nicht mehr gegeben. Ich freue mich über Aufklärung aus dem Bereich der Analogtechnik, wollte mir das Rumexperimetieren aber nicht durch das Controller-Board verbauen, daher gerne noch die 700kHz ermöglichen. Wenn mans rein über Hardware und uC-Peripherie realisiert, sind die 3x700kHz ja eigentlich auch kein Problem. 3x333kHz macht der Elko nach meinem Glaubensbekenntnis noch mit, was das Controller-Problem nicht bös ändert. Sind dann 16 uC-Takte von Phase zu Phase und da will man auch keine Software für am Laufen haben. @CPLD .... hmm, nur wenn´s muss. Hab hier nur Hausfrauen-Werkzeug zuhaus (USBASP-Programmer). Ich hab mal ein Layout (Piezo-Reibmotor-Controller) mit einem C51 gemacht und dann für die Signalaufbereitung ein CPLD als Logik-Grab danebengesetzt. Glaub ein JTAG-Programmer mußte damals angeschaft werden. @PIC: wäre eine neue Welt für mich - will mich nicht aktiv den PICs verschließen, aber ähnlich dem CPLD: viel Aufwand bei den gegebenen Voraussetzungen, sodass ich dann eher auf die Synchronlauf des PWM zum Sync-Signal verzichten würde und das kann ich mit dem Mega ohne zusatzbeschaltung hardwareseitig realisieren. Ich hatte gehofft, nur zu blöde zu sein, die Macht des AVR-Timers zu erkennen. Die Antworten gehen dahin, dass die relative Ohnmacht aber gesetzt ist. Auswege wären daher: - CPLD's - höherfrequentigen uC oder eigenen uC für die Aufgabe spendieren - Decadenzähler: - hab bisher nur flüchtig draufgeschaut, aber wenn ich's richtig verstanden habe, soll der die 3 Pulse zählen und dann ein Signal generieren. Sollte das gemeint sein, dann fehlte die Eigenschaft: PWM-Signal synchron mit Sync-Signal. Eigentlich stört ja nur die Tatsache, dass die 3 Phasen nicht in ihrer ON-Time veränderlich sind - wenn man nun Flanke in Puls einstellbarer Länge wandeln können, wäre der Käse gelutscht. Vielleicht so ebbes: Beitrag "Flanke in Impuls" ?? Nochmal zur Anwendung (Analogtechnik) Dimming Control There are two methods to control the current source for dimming using the LT3790. One method uses the CTRL pin to adjust the current regulated in the output. A second method uses the PWM pin to modulate the current source between zero and full current to achieve a precisely programmed average current. To make PWM dimming more accurate, the switch demand current is stored on the VC node during the quiescent phase when PWM is low. This feature minimizes recovery time when the PWM signal goes high. To further improve the recovery time a disconnect switch may be used in the output current path to prevent the ISP node from discharging during the PWM signal low phase. The minimum PWM on- or off-time is affected by choice of operating frequency and external component selection. The best overall combination of PWM and analog dimming capabilities is available if the minimum PWM pulse is at least six switching cycles and the PWM pulse is synchronized to the SYNC signal. ^^der Text sagt: wär fein wenn's synchron wäre, sagt aber nicht wie unfein es asynchron wird
:
Bearbeitet durch User
Hab mir das DB zum CD4017B derweil was genauer angeschaut und glaube den Clou verstanden zu haben: Ich generiere per uC ein Clk-Signal mit 6facher Systemfrequenz, nehme jeden 2. Output für eine Phase um keine Überlagerung der High-Zustände zu erhalten und dann für den 2. Timer gut verundend das phasensynchrone PWM erzeugen zu können. Für das Clk-Signal brauche ich dann ja nur ein toggling Output und kann einen 8bit-Timer nutzen :) Frage zum Reset: Wenn ich den Chip soweit richtig verstanden habe, interessieren mich der "Clock inhibit"- und der "Carry Output"-Pin nicht. Das genaue Timing ist noch von Interesse bzgl. Reset-Pin: - der Counter setzt den nächsten Ausgang bei der low2high Flanke der Clock - mit low2high des Reset-Pins wird Output0 high und zwar bis zur nächsten low2high Flanke der Clock nachdem Reset nicht mehr high ist. Letzter Zusammenhang ist eine Annahme, das DB lässts vermuten und wer den Logik-Schaltplan des Chips versteht, kennt den zusammenhang vllt auch genauer. Nehmen wir an ich setze Phase1 auf Out1, Phase2 auf Out3 und Phase3 auf Out5. Reset verbinde ich dann mit Out6, sodass Out6 Out0 auslöst (gleicher Takt). Liegt dann ausreichen lange High-Pegel am Reset an oder löscht der sich zu schnell selbst, sodass vllt Dummfug passiert? Braucht's an der Stelle noch ein RC-Glied? Verzeiht die deppigen Fragen, bin arg dumm, was Logik-Bausteine angeht
:
Bearbeitet durch User
Hallo, genau so ist es gemeint. Ob das von deiner Signallänge passt weiß ich jetzt auch nicht aus dem Stehgreif. Aber dieser Baustein ist ja schon alt. Wenn man mal Google bemüht findet man sicher eine Schaltung die nur bis drei oder vier zählt. Meiner Meinung nach gibt es da App Notes die das beschreiben. Einfach mal schauen. Ich denke du brauchst kein RC-Glied. Die Pulslänge von deinem Takt ist länger als das was der Chip braucht zum umschalten. Man könnte auch mal eine Simulation machen. In TINA von TI ist der Baustein auf jeden Fall mit dabei. Oder man baut das auf Lochraster mal schnell auf. Der 4017 kostet ja nichts. Dann weißt du bescheid und kannst sogar eine Aussage über die Signalqualität machen. 6-fache Frequenz brauchst du auch nicht. Ich denke mit der 3-fachen kommst du aus. Die Signale sind nicht überlagert in der High Phase. Da wird zwar keine Totzeit eingehalten aber es soll auch nur ein Synch-Impuls erzeugt werden. Ich denke da ist das unkritisch. Die 6-fache Frequenz von 700kHz wird schon recht hoch. Damit wird der Atmel Probleme haben. Die maximale Timerfrequenz die du einstellen kannst sind glaube ich 8MHz bei 16Mhz Takt. Du brauchst aber 4,2Mhz. Diesen Wert kannst du dann praktisch nicht einstellen da die Werte so klein werden, dass hier dann doch das Argument der Auflösung des Timers greift. Das musst du am Besten testen. Ich bin gespannt für was du dich entscheidest. Grüße, Jens
>Oder man baut das auf Lochraster mal schnell auf. Der 4017 kostet ja nichts. Hildesheim, der Bauchnabel Europas ... könnte über Ebay bestellen :p >In TINA von TI ist der Baustein auf jeden Fall mit dabei. Ah ja - war bisher LTSpice-only-Benutzer. War anzunehmen, dass die Welt noch größer ist. Wird jeder Hersteller seine eigenen Bauteile unterstützen. @jeden 2. Output (0-5) oder jeden Output (0-2): Eigentlich wollte ich zeitgleiche High-Pegel vermeiden, um die 3 Signale verodert in den Eingang des nächsten PWM-generierenden Timers (Timer3). der soll dann zum Sync-Signal synchron ein PWM-Signal generieren: _ _ _ _ _ _ SYNC_A ____| |____| |____| |____| |____| |____| |____| |____| |____ _______________________________________ PWM_A ____| |_____________ _ _ _ _ _ _ SYNC_B _______| |____| |____| |____| |____| |____| |____| |____| |_ _______________________________________ PWM_B _______| |__________ _ _ _ _ _ SYNC_C __________| |____| |____| |____| |____| |____| |____| |____| _______________________________________ PWM_C __________| |_______ Damit ich das veroderte Signal in den Timer-Eingang stopfen kann, brauche ich bissl Off-Time - daher jedes 2. Der uC muss nur bissl Messen/Stellen und Display bedienen und das in relativ grobmotorischen Zeitfenstern. Könnte auch mit 8MHz betaktet werden, um 4MHz zu generieren, sollte das hübscher sein. Wie weit das PWM nach Durchlauf der Timer-Engine verzögert ist bleibt spannend (Flanke Eingang zu Flanke Ausgang) - sollte ich wohl erstmal mit einem Bsp-Code messen. Wenn böse Delays entstehen, ist die Variante mit dem synchron-PWM eh gestorben. In dem Fall braucht's dann auch keine Sync-Signale mit verkürzter On-Time und der Counter wird überflüssig. Die Familiensituation ist gerade nicht so experimentierfreundlich ... Frau recht schwanger und ab 1.3. ein neuer Arbeitgeber bei mir; will sagen, dass das Rumexperimentieren dauern könnte. Hatte gehofft, das PCB gestern abschicken zu können, damit man in 2 Monaten damit zaubern kann. Alla - wie auch immer der Hase läuft, der 4017 bleibt im Speicher als zweckentfremdeter On-Time-Verkürzer. Danke dafür :) Wie weit das
So ... hab derweil ein wenig rumgetestet und den Plan, das PWM mit dem SYNC-Signal zu synchronisieren über den Haufen geworfen. Der AVR stellt einem da nicht nur 1-2 Beine; geht Hinten und Vorne nicht auf => CPLD wäre Pflicht (bzw. ein uC, dessen Timer-Verkettung sowas ermöglicht) Nichts desto trotz vielen lieben Dank für den Schubser auf den CD4017B - hab's Gefühl, den wird man irgendwann nochmal einsetzen. Daaankööö, Robert
Nimm einen XMEGA, zum Besipiel einen A3U, dessen Timer sind extrem flexibel und verkettbar über das Event System. Wenn man sich mit AVRs schon auskennt, ist dies die naheliegenste Möglichkeit.
Hab mir derweil den XMega ein wenig angeschaut und denke, dass der Stein die Mühe wert ist. Zudem wollte ich beim Mega die Taktfrequenz nicht unnötig herabsetzen und daher auf 5V bleiben. Da ich aber ein 3V Touch-Display ansteuern möchte, muss ich beim Mega relativ viele Spannungsteiler reinschrauben, was beim XMega wegfällt. Nun will ich nicht erst ein Eval-Board kaufen und dann das Layout machen, sodass ich 2 Annahmen von Euch bestätigt haben möchte, bevor ich layoute: - ADC und DAC sind gleichzeitig auf einem Port nutzbar! ADC0-7 sind zB auf PA0-7 DACA0 auf PA2 und DACA1 auf PA3 ADC8-15 auf PB0-7 DACB0 auf PB2 und DACB1 auf PB3 Wenn ich die 4DAC-Kanäle nutzen möchte, bleiben mir (16-4=) 12 ADC-Kanäle übrig - Für oben beschriebenes Timing-Anliegen könnte ich auf einem TC0 OC0A-OC0D nutzen und dadurch Pins toggeln, bei jedem CompareMatch zudem ein internes Event erzeugen, das jeweils einen TC1 hochzählt und so an 4 verschiedenen OC1A das PWM für die jeweilige Phase synchron zu dieser erzeugen! Bsp.: TCC0: =>Phase1-Sync-Signal auf PC0 (OC0A) =>Phase2-Sync-Signal auf PC1 (OC0B) =>Phase3-Sync-Signal auf PC2 (OC0C) =>Phase4-Sync-Signal auf PC3 (OC0D) OC0A => TCC1 zählt eins hoch (über internes Eventsystem) => PWM synchron zu Phase1-Sync-Signal auf PC4 (OC1A) OC0B => TCD1 zählt eins hoch (über internes Eventsystem) => PWM synchron zu Phase2-Sync-Signal auf PD4 (OC1A) OC0C => TCE1 zählt eins hoch (über internes Eventsystem) => PWM synchron zu Phase3-Sync-Signal auf PE4 (OC1A) OC0D => TCF1 zählt eins hoch (über internes Eventsystem) => PWM synchron zu Phase4-Sync-Signal auf PF4 (OC1A) Und mir bleiben 3 untouched 16-bit-Timer für sonstigen Schnickschnack Sind die beiden gekennzeichneten Annahmen richtig? Wenn dem so ist, kann ich mit dem Layout loslegen. Danke fürs Drüberschaun Robert PS: Meinen USBASP kann ich umflashen und mit geringem Schaltungsaufwand in einen PDI-Flasher verwandeln.
:
Bearbeitet durch User
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.