S: Mehrfach-PWM-Controller

Hallo zusammen,

ich m=F6chte mehrere (z.B. 8) unabh=E4ngige PWM-Kan=E4le ansteuern, z.B. =

8 Bit Aufl=F6sung bei ca. 20 KHz. Viele g=E4ngige Mikrocontroller haben auch ei= n paar PWM-Ausg=E4nge, aber bei den "kleinen" Typen meistens nur 2 bis 6. Bevor ich einen richtig gro=DFen Controller mit entsprechend vielen PWM-Ausg=E4ngen einsetze (Renesas hat da ganz nette Sachen...), w=E4re ei= n zus=E4tzlicher Chip f=FCr das PWM vielleicht eine Alternative.

Kennt jemand geeignete (Standard-) Chips, mit denen man mehrkanalig PWM erzeugen kann und die parallel oder per I2C/SPI mit den notwendigen Parametern versorgt werden k=F6nnen? Vielleicht kann man ja auch Bauteile= , die eigentlich f=FCr andere Zielgruppen gedacht waren, f=FCr diesen Zweck=

gebrauchen... (LED-Ansteuerung?)

Ansonsten k=F6nnte ich auch ein kleines CPLD nehmen, aber ich will wenigstens mal gefragt haben... :-)

Danke, Tilmann

Reply to
Tilmann Reh
Loading thread data ...

"Tilmann Reh" schrieb im Newsbeitrag news:he0g52$bk4$ snipped-for-privacy@news.eternal-september.org...

formatting link

10 Kanäle a 8 bit, aber nur 100kHz PWM Takt (ich weiss nicht, wie ich deine 20kHz zu verstehen habe)
formatting link
formatting link
formatting link
bieten 16 Kanäle a 256 bit.
formatting link
8 Kanäle (nur 100kHz)

Es gibt aber ach sicher ICs mit normalen Ausgang. Problem wird sein, welcher Chip mehr als bloss ein paar Jahr produziert wird, bei den aktuellen "Marketingexperten" die die Halbleiterbranche komplett ruiniert haben.

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://freenet-homepage.de/mawin/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Hallo MaWin,

danke f=FCr die schnelle Antwort!

M

ile,

eck

die ca. 20 kHz sollten etwa die Ausgangsfrequenz sein, bei 8 Bit bedeutet das dann ca. 5 MHz Basistakt. Das kann der Maxim nicht, au=DFerdem hat Maxim gerne auch "Vapourware"... :-\

=2Ehtml

Die sind wohl etwas zu komplex f=FCr diese Aufgabe...

Das Teil ist sehr interessant! Es kann (ohne die Steuerung der Gruppenhelligkeit) 100 kHz am /Ausgang/ - und das reicht "lang und schmutzig". Au=DFerdem ist der sch=F6n kompakt. Danke! (Ich hatte bei NXP=

schon gesucht, aber dieses Ding nicht gefunden...)

Ja, das ist leider ein allgemeines Problem. :-(

Gr=FC=DFe, Tilmann

Reply to
Tilmann Reh

Tilmann Reh schrieb:

Wie wäre es mit PWM-Erzeugung in Software? 20kHz dürfte problematisch werden:

formatting link

Falk

--
Ich habe nicht gegen Windows.
Aber wenn ich etwas hätte,
würde ich nicht zögern,
es einzusetzen.	                 (Sehr frei nach W. Schmickler)
Reply to
Falk Willberg

Falk Willberg schrieb:

B. 8 Bit

ein

=2E

Genau deswegen:

20 kHz bei 8 Bit bedeutet eine Zeitaufl=F6sung von ca. 200 ns - das schaffst Du per Software nicht, schon gar nicht auf mehreren Kan=E4len.

OK, ich k=F6nnte evtl. mit weniger Bit auskommen, mal schauen. Aber Hardware ist f=FCr sowas erstmal naheliegender.

Tilmann

Reply to
Tilmann Reh

MaWin schrieb:

Jetzt erst verstehe ich, was das "nur" bedeutet: in diesem Fall hei=DFt das "ausschlie=DFlich" - was schon eine Einschr=E4nkung ist, 100 kHz k=F6= nnte f=FCr die vorgesehenen Lasten (bzw. Endstufen) etwas heftig werden...

Tilmann

Reply to
Tilmann Reh

Tilmann Rehschrieb: "

Wenn der Controller nur für die PWM eingesetzt wird, dann ist das kein Problem. Einfach alle Daten in das RAM schreiben und nacheinander ausgeben. Mit einem 100MHz Controller gehen dann auch 400kHz.

Falls der Controller nebenbei noch was anderes machen soll, kann man einfach einen Controller mit DMA nehmen M16C/26A (kosten irgendwas um die 5,20EUR).

Dirk

Reply to
Dirk Ruth

Witzige Lösung, 256 Byte RAM vollschreiben und einfach auf einen 8 Bit Ausgabeport schreiben.

Wenn man dann auf 100% Einschaltdauer verzichtet, und z.B. bei 90% Schluss macht, bleiben 10% der Zeit, um noch was anderes zu machen.

Also ein Timer-Int, der alle 50us aufgerufen wird und in dem 45us lang die Ausgänge bedient werden. Die Tabelle fängt mit gesetzten Bits an und wenn alle Bits auf 0 sind, kommt der RETI, spätestens nach 45us.

In den verbleibenden 5us abzüglich INT-Aufruf und Rücksprung kann man dann noch was anderes machen...

Bei 8 Bit Auflösung darf eine Ausgabe incl. Zeigerinc. dann 45us/256 =

17,5ns dauern, entspricht ca. 3 Befehlen bei 20MHz Befehlstakt.

Wird etwas knapp, könnte aber gehen, eventuell mit etwas weniger als 8 Bit Auflösung.

Ich wollte ja eigentlich vorschlagen, einfach mehrere ATmegas zu nehmen, finde aber, deine Lösung hat was...

Gruß

Stefan DF9BI

Reply to
Stefan Brröring

"Dirk Ruth" schrieb im Newsbeitrag news: snipped-for-privacy@4ax.com...

Die sind -leider- etwas selten (versteh ich auch nicht, warum Microchip & Co ihre uC nicht mir 2.8GHz herstellen können, gerade solche Chips wo alles 'on board' ist, wären prädestiniert dafür, und die Chipfläche ist auch klein also billig. Aber offenbar sind die Firmen zu blöd, haben nicht das Fertgungs-Know-How welches Intel besitzt. Von Ubicom/Scenix gab's mal ein paar schnelle PICs, sind aber ausgestorben, Rabbitsemiconductor pflanzt 100MHz uC in FPGAs (aber dnn kann er sein PWM gleich in ein FPGA tun)

Mit etwas Programmier-Know-How sollte aber ein 10.24 MHz (5 MIPS) Controller ausreichen, um 8 Kanäle mit 256 bit PWM in 195ns Auflösung zu betreiben, vorausgesetzt er kann seinen Programmspeicher beschreiben (68HC12 rulez :-), denn MAXIMAL sind 9 Ausgabeinstruktionen von Konstanten (in Registern gehalten?) notwendig, und die Delays dazwischen kann der uC aus den PWM Parametern bestimmen und passend als NOPs oder LOOPs dazwischenkompilieren. Ja, beim umprogrammieren ist erst mal kurz Pause.

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://freenet-homepage.de/mawin/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Ein STM32 kann das auch direkt anbieten. Schon im kleinsten QFN-36 Gehäuse hast du bis zu 16x 16-Bit PWM-Kanäle.. Je nach Ausführung auch mit Extras wie Dead-Time Generation, etc.

Braucht nur 3.3V und evtl. nen Quarz (hat aber auch internen RC und läuft damit bis 64MHz). JTAG-Adapter kostet wenig bis nichts, Firmware für SPI->PWM hat man nach etwas Einarbeitung schnell zusammen.

Aber vermutlich könnte der dann besser alles andere auch noch miterledigen ;)

--
Thomas Kindler
Reply to
Thomas Kindler

Stefan Brröringschrieb: "

Der eigendliche Witz ist, mit einem kleinen R8C gehen dann auch 16 Kanäle parallel, weil das ein kleiner 16bit-Controller ist.

Die Renesas Controller können auch Code direkt im RAM ausführen, also selbstmodifizierenden Code verwenden. Dann brauchts auch keinen Interrupt dafür. Einfach direkt ins RAM schreiben und den Code im RAM ausführen.

zB.

Loop: OR.B 0xff, PortX NOP NOP AND.B #Imm8, PortX NOP : : jmp Loop

Dann gehen auch max. 26kHz und zu über 99% Einschaltdauer. Bei 16 PWMs leider nur noch 19,5kHz. Reicht dem OP aber vielleicht auch schon.

Möglicherweise geht das aber auch so schon schneller, weil die Conroller prefetching mit 4byte instruction queue buffer haben.

Dirk

Reply to
Dirk Ruth

Thomas Kindler schrieb:

B. 8 Bit

ein

=2E

ein

auch=20

e=20

In der Tat hatte ich in dieser Richtung auch schon =FCberlegt. Ich bin noch am abw=E4gen, ob ein 8-Bit-Controller mit etwas Zusatzlogik oder ein=

ARM (oder R8C/M16C) mit entsprechend viel integrierter Peripherie am Ende g=FCnstiger wird...

Tilmann

Reply to
Tilmann Reh

Dirk Ruth schrieb:

n

Nein, er sollte durchaus auch noch andere Dinge tun... :-)

Ein passender M16C oder R8C h=E4tte gleich die ben=F6tigte Anzahl PWM-Ausg=E4nge (da gibt es schon einige mit 8..13 PWM). In der Tat w=E4re= so ein Controller durchaus eine Alternative, da man dann mit einem Chip gleich alles erschl=E4gt. Ich bin aber noch am abw=E4gen...

Tilmann

Reply to
Tilmann Reh

Tilmann Reh :

Ne Alternative zu STM32 oder Renesas: ein MSP430 kann mit Timer-A 3 PWM Kanäle und Timer-B 7 Kanäle (alle 16bit), je nach Typ läuft der dann mit dem

8MHz oder 16MHz Systemtakt (oder auch langsamer). Einziger Nachteil: die geringstmögliche PWM Zeit richtet sich nach der Interruptlatenz (da der Reload des Registers per Software gemacht wird, so ab 5us). Preis so ab 7Eur ...

M.

Reply to
Matthias Weingart

Matthias Weingart schrieb:

B. 8 Bit

=20

ann mit dem=20

e=20

er=20

7Eur=20

Da nehme ich doch lieber f=FCr's gleiche Geld den Controller, bei dem der=

Reload nicht per Software gemacht werden mu=DF... (oder gar ein separates=

CPLD nur f=FCr das PWM)

Tilmann

Reply to
Tilmann Reh

Dirk Ruthschrieb: "

Hm was hab ich da jetzt wieder zusammengerechnet.

Man muss natürlich worst case rechnen (8 PWMs):

1x OR.B 0xff, PortX (3Cy)
  • 8x AND.B #Imm8, PortX (a 3Cy)
  • (256 - 8)x NOP (a 1Cy)
  • 1x jmp (4Cy) ___________________ 279Cy

und bei 16 PWMs:

1x OR.B 0xff, PortX (3Cy)
  • 1x OR.B 0xff, PortY (3Cy)
  • 16x AND.B #Imm8, PortX (|| PortY) (a 3Cy)
  • (256 - 16)x NOP (a 1Cy)
  • 1x jmp (4Cy) ___________________ 298Cy

Das sollte also bei 8x PWM mit gut 71,68kHz und bei 16xPWM mit

67,1kHz laufen (alles ohne prefetch).

Wenn man in das ganze noch etwas Grips hineinsteckt, Schaltpunkte die eng beieinander liegen als Code hintereinander setzt und Schaltpunkte die weiter auseinander liegen mit Zwischen-NOP-Loops (oder Timern) versieht, dann lassen sich beliebig viele PWMs mit noch größeren Bitbreiten realisieren.

Dirk

Reply to
Dirk Ruth

hast Du evtl. µCs mit genug Analogausgängen? Ich meine für die geforderte Genauigkeit reicht auch ein Compare per LM339 mit einem Dreieck. Es muss ja nicht immer alles digital sein.

Marcel

Reply to
Marcel Müller

Marcel M=FCller schrieb:

B. 8 Bit

ein

=2E

Auch in die Richtung habe ich schon =FCberlegt - ist aber alles mehr Aufwand als ein CPLD (auf das es vermutlich hinausl=E4uft - auch wegen anderer Randbedingungen, die damit leichter erf=FCllbar sind).

Abgesehen davon sind DACs in den Controllern meist sp=E4rlich vorhanden, die kann man im Gegensatz zu ADCs nicht multiplexen... Da bekommt man leichter mehr PWM als mehr DAC. :-) (PWM-Ausg=E4nge sind der DAC des kleinen Mannes.)

Tilmann

Reply to
Tilmann Reh

Matthias Weingart schrieb:

Für schnelle PWM nehme ich zwar auch den STM32 oder gleich den TMS320FC2000. Aber dass beim MSP430 der Timer per Software reloaded wird, ist mir neu.

Rolf

Reply to
Rolf Mennekes

och... das habe ich auch schon gemacht. Ein DAC, ein 4051 und ein paar kleine Kondensatoren dahinter und in moderaten Zeitabständen Software-Refresh. Geht halt nur bei langsam veränderlichen Signalen. War halt sehr billig zu machen.

Marcel

Reply to
Marcel Müller

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.