Hallo !
Da niemand meine Anfrage (PWM aus SPI) vom 4.10.02 beantwortet hat, mußte ich nach anderen Wegen suchen. Mit einem 4-Kanal seriellen DAC kann ich aus dem SPI-Bus Analogspannungen(mit 10 bit Auflösung) erzeugen,wie generiere ich daraus ein PWM-Signal ?
Danke für die Hilfe im Voraus.
Yannick.
Hallo Yannick,
Da niemand meine Anfrage (PWM aus SPI) vom 4.10.02 beantwortet
hat, mußte ich nach anderen Wegen suchen. Mit einem 4-Kanal
seriellen DAC kann ich aus dem SPI-Bus Analogspannungen(mit 10
bit Auflösung) erzeugen,wie generiere ich daraus ein
PWM-Signal ?
Ganz einfach mit einer Dreickspannung und einem Comparator pro Ausgang.
Wie du eine Dreieckspannung erzeugst, findest du in fast jeder Aplication-Note zu einem beliebigen OP-Amp. (Die Frequenzstabilität ist dabei kein Fehlerfaktor).
Die Dreieckspannung sollte dabei die gleichen Pegel aufweisen wie dein DAC.
Dann musst du nur noch diese Dreieckspannung mit einem Comparator mit dem Ausgangssignal des DAC vergleichen.
Aber das ist eigentlich Wissen aus dem 1. Semester.
MfG Peter(TOO)
Hallo,
Du beschwerst Dich, daß niemand Deine 1. Frage beantwortet hat.
Abgesehen davon, daß ich den IC von Intersil nicht kenne,
kannst Du nicht erwarten, daß eine solche pauschale Frage ohne
jegliche Hintergundinfos und Randbedingungen mal eben schnell
so nebenbei geklärt werden kann. Zumal Du ja wohl nach
ViKa Elektronikentw. bist.
Die Frage erscheint eher wie von einem Schüler oder Lehrling,
der gerade mal was basteln will. Da habe ich mit gedacht,
daß es in so einem Fall keinen Zweck hat, Trivialantworten
zu geben. Wie gesagt, ohne jegliche Kenntnis der Anforderungen
und der Möglichkeiten des Systems kann da nichts reeles kommen.
Eine Frage hätte ich ja dann doch noch: Wenn da ein SPI-Bus
ist, dann hängt ja wohl ein Controler oder ähnliches am
anderen Ende. Kann der nicht gleich das PWM-Signal über den
SPI-BUS ausgeben. Dann muß das Modul nur noch die Ausgabe
eines einfachen Digitalsignal ausgeben. Das geht sogar mit dem
DAC, indem in Echtzeit immer nur Max-/Min-Pegel ausgegeben
wird (Natürlich abhängig von Schaltfrequenz und Genauigkeit ???)
Auch der Einsatz eines kleinen Controlers zur Ausgabe des
PWM-Signals wäre rel. einfach zu realisieren. Die Variante
über DAC erscheint mir eher umständlich.
Gruß Uwi
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo!
Der SPI-Bus kann keine PWM-Signale ausgeben, da er ausschließlich
aus den 4 Leitungen MOSI,MISO,CLK und SS besteht. Dieser Bus bedient 3 weitere Slave-Baugruppen. Keine weitere Signalleitung steht zur Verfügung. Also muß aus den Analog-Signalen eines SPI-kompatiblen Bausteins, z.B. ein DAC MAX5250 von Maxim, PWM Signale gebildet werden. Der Vorschlag vom Peter ist hierfür sehr interressant.
Was den Baustein CDP68HC68W1 von Intersil betrifft, ist seine Funktion eigentlich klar: von einer Master-Baugruppe, über SPI, gesendete Daten, wird ein PWM-Signal von 0% bis 100%, proportional zu den Daten, generiert.
Mein Hauptproblem ist daß die Slave-Baugruppe, aus kosten- und Platzgründen, keine eigene Intelligenz besitzen soll, sonst hätte ich eine MCU für diese Aufgabe vorgesehen. Wobei kleinste MCU mit SPI und PWM dünn gesät sind… Übrigens wird der SPI mit 2 Mhz getaktet.
Welche Hintergrund-Infos fehlen noch? Für mich ist die Aufgabe ziemlich klar. Ich erwarte ja nicht direkt eine Lösung, sondern einige Ideen mittels Dialog.
Gruß Yannick
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo,
nun würde ich an Deiner Stelle erst noch mal nachdenken, ob es
jemand mit Deinen Angabe was anfangen kann? Ich jedenfalls
weis jetzt immer noch nicht viel mehr als zuvor 
Warum? Tja, PWM kann man für 'ne popelige Heizungsregelung
verwenden oder zum Steuern eines Motors oder für die
Helligkeitsregelung von einer Glühlampe oder sonst was.
Für 'ne Heizung würde eine Periodendauer von ca. 1…5 sek.
meist völlig reichen. Für 'ne Glühlampe sollen’s sicher
mind. 50Hz sein, sonst flackert’s bloß. Für’n Motor kann es ganz
unterschiedlich sein, je nachdem welche Bauform und welches
Getriebe dran hängt. Von wenigen Hertz bis in den kHz-Bereich
ist da alles möglich. Warum das 'ne wesentliche Rolle spielt,
wird aus dem flgenden Text evtl klarer.
Der SPI-Bus kann keine PWM-Signale ausgeben, da er
ausschließlich
aus den 4 Leitungen MOSI,MISO,CLK und SS besteht.
Jo, ich weis schon was SPI ist. Habe schon diverse Elektroniken
mit SPI-Modulen entwickelt.
Zum Thema: Was ist denn PWM eigentlich? Physikalisch doch wohl
nicht mehr, als einfaches digitales Signal (1 Bit), das mit
einem def. Timing ein- und ausgeschaltet wird. Und jeder
BUS-Teilnehmer am SPI-BUS wird ja mit einem eigenen Enable
aktiviert. Wenn also Dein Master-Prozessor soviel Rechenzeit
bzw. Verfügbarkeit hätte, das PWM-Signal in Echtzeit
auszugeben, dann wäre die separate Enable-Leitung völlig
ausreichend als PWM-Signal. Ob das geht, hängt nun eben von der
Verfügbarkeit des Master-Prozessors, der geforderten Genauigkeit
und der Mindestgeschw. für die Ausgabe des PWM-Signals ab.
Dieser Bus
bedient 3 weitere Slave-Baugruppen. Keine weitere
Signalleitung steht zur Verfügung. Also muß aus den
Analog-Signalen eines SPI-kompatiblen Bausteins, z.B. ein DAC
MAX5250 von Maxim, PWM Signale gebildet werden.
Muß nicht, aber wenn Dir diese Lösung so gefällt, dann mach
es halt.
Der Vorschlag vom Peter ist hierfür sehr interressant.
Was gut und schlecht ist, hängt eben von vielen Sachen ab.
Z.b. wieviel Ahnung ein Entw. von diversen Schaltungtechn. hat
und ob sich jemand findet, der z.B. mal schnell einen Controler
programmieren kann. Da wird dann meist das favorisiert, was man
am besten kann. Das ist aber durchaus legitim.
Was den Baustein CDP68HC68W1 von Intersil betrifft, ist seine
Funktion eigentlich klar: von einer Master-Baugruppe, über
SPI, gesendete Daten, wird ein PWM-Signal von 0% bis 100%,
proportional zu den Daten, generiert.
Ja, und mit welcher Geschw., Auflösung, Genauigkeit usw.
brauchst Du das?
Mein Hauptproblem ist daß die Slave-Baugruppe, aus kosten- und
Platzgründen, keine eigene Intelligenz besitzen soll, sonst
hätte ich eine MCU für diese Aufgabe vorgesehen.
„…keine eigene Inteligenz besitzen soll…“ oder darf?
Und warum nicht? Und was soll eigene Intelligenz sein?
So ein Schnulli-Controler, der genau das macht, wie der
Intersil-IC wird auch genau so intelligent sein wie dieser!
Da muß ja keine KI eingebaut werden 
Wobei
kleinste MCU mit SPI und PWM dünn gesät sind… Übrigens wird
der SPI mit 2 Mhz getaktet.
Na und? SPI ist ein einfacher serieller BUS, der im Gegensatz
zu RS232 leicht mit beliebigen Ports fast jeden Controlers
leicht zu programmieren ist. Für die 2Mhz Takt muß der Controler
nur schnell genug sein (das ist evtl. ein echtes Auswahlkriterium).
Außerdem besteht prinzipiell die Möglichkeit, den SPI-Takt
auch langsamer zu machen.
Und was hat MCU und PWM-Ausgang auf sich? Der Controler macht
genau das, was reinprogrammiert wird. Und wenn das Programm
eine PWM realisiert, dann braucht man für die Ausgabe genau ein
Portsignal. Die meisten Controler (z.B. 8051) haben intern auch
diverse Timer, die die PMW-Programierung gut unterstützen.
Nun noch zu den Kosten: Im einfachsten Fall kann man alles mit
dem sowieso vorhandenen Enable-Bit machen. Das kostet
Programmierzeit beim Master-Prozessor, sonst nichts.
Falls das nicht geht, kann evtl. mit einem billigen Controler-IC
ca.3…5€) die Sache realisiert werden. Die Programmierung
macht ein einigermaßen erfahrener Mann in paar Stunden (max.
paar Tage).
Falls kein geeignetes externes Taktsignal zu Verfügung steht
braucht man noch mind. einen Quarz (oder Piezo, billiger)
und 2 Keramik-C (ca. 10pF ). Je nach sonstigen Randbedingungen
evtl. auch noch einen einfachen Reset-IC (oder Controler mit
internen Watchdog).
Das ganze geht alles Problemlos mit z.B. 5V-Digitalsromvers.
Als Controler würde sich z.B. 1051 oder 2051 oder PIC oder sonst
was eignen.
Die analoge Variante braucht:
- den DAC mit Umschaltung, je nach Typ auch noch
Referenzspannungserzeugung - Analoge Schaltung (OPV mit Umschaltung) für
Dreieckspannungserzeugung - Komparator zur PWM-Ausgabe
- Stromversorgung für Digitalteil
- und auch für Analogteil
Je nachdem, wie man die Sache anfasst, wird man beim Analogteil
mit den übliche 5V gerade so zurechtkommen mit rail-to rail-OPV
und etwas eingeschränkter Aussteuerung (geht nicht bis 0V runter ->:wink:.
Evtl. brauchst Du dann noch eine neg. Betriebsspannung.
Mit Störungen durch die Digitalelektronik ist zur rechen.
Wenn Du keine Erfahrungen mit analogen Schaltungstechnik haben
solltest, dann kannst Du evtl. auch noch einiges Lehrgeld bei
der Schaltungentw. zahlen.
Bei den Kosten der Bauteile, dem Entwicklungsaufwand,
dem Entwicklungsrisiko und dem Platzbedarf der Schaltung
und dem Zeitaufwand zur Entw. sehe ich nur Nachteile.
Die Genauigkeit, Linarität und Drift hängt stark von der
Dreiecksspannung ab. Besser als ca. 2% wird schon einen
Aufwand und Sorgfalt erfordern.
Welche Hintergrund-Infos fehlen noch? Für mich ist die Aufgabe
ziemlich klar. Ich erwarte ja nicht direkt eine Lösung,
sondern einige Ideen mittels Dialog.
Wirklich sachkundige Auskunft kann man hier auch nur geben,
wenn mögl. alle Randbed. bekannt sind. Andererseits bekommst
Du Infos, die so allg. sind, wie sie in jedem Lehrbuch stehen
und das meiste sind Schüsse ins Blaue (schade um die Zeit).
Gruß Uwi
Hallo,
nun würde ich an Deiner Stelle erst noch mal nachdenken, ob es
jemand mit Deinen Angabe was anfangen kann? Ich jedenfalls
weis jetzt immer noch nicht viel mehr als zuvor
Warum? Tja, PWM kann man für 'ne popelige Heizungsregelung
verwenden oder zum Steuern eines Motors oder für die
Helligkeitsregelung von einer Glühlampe oder sonst was.
Für 'ne Heizung würde eine Periodendauer von ca. 1…5 sek.
meist völlig reichen. Für 'ne Glühlampe sollen’s sicher
mind. 50Hz sein, sonst flackert’s bloß. Für’n Motor kann es
ganz
unterschiedlich sein, je nachdem welche Bauform und welches
Getriebe dran hängt. Von wenigen Hertz bis in den kHz-Bereich
ist da alles möglich. Warum das 'ne wesentliche Rolle spielt,
wird aus dem flgenden Text evtl klarer.
Meine Vorgaben sind PWM mit min. 15Khz Grundfrequenz (wegen Pfeiffgeräuschen in Motoren),
Tastverhältnis 0% bis 100%, refresh-Frequenz ca. 10Hz über den SPI.
Ein von den 4 PWM-Kanälen ist für die Steuerung eines 12V-Pumpenmotor, die restlichen
Kanäle sind für zukünftige Anwendungen die noch nicht festgelegt sind.
Der SPI-Bus kann keine PWM-Signale ausgeben, da er
ausschließlich
aus den 4 Leitungen MOSI,MISO,CLK und SS besteht.Jo, ich weis schon was SPI ist. Habe schon diverse
Elektroniken
mit SPI-Modulen entwickelt.Zum Thema: Was ist denn PWM eigentlich? Physikalisch doch wohl
nicht mehr, als einfaches digitales Signal (1 Bit), das mit
einem def. Timing ein- und ausgeschaltet wird. Und jeder
BUS-Teilnehmer am SPI-BUS wird ja mit einem eigenen Enable
aktiviert. Wenn also Dein Master-Prozessor soviel Rechenzeit
bzw. Verfügbarkeit hätte, das PWM-Signal in Echtzeit
auszugeben, dann wäre die separate Enable-Leitung völlig
ausreichend als PWM-Signal. Ob das geht, hängt nun eben von
der
Verfügbarkeit des Master-Prozessors, der geforderten
Genauigkeit
und der Mindestgeschw. für die Ausgabe des PWM-Signals ab.
Das Enable-Signal kann nicht als PWM, da es aus einer 4bit Info
abgeleitet wird, und aus einem Dekoder kommt. Dieses zu takten würde die anderen
Baugruppen beeinflüssen. Ausserdem benötige 4-PWM Signale die mit einem einzigen
Enable-Signal zusammenhängen (der DAC ist ja 4fach)
Dieser Bus
bedient 3 weitere Slave-Baugruppen. Keine weitere
Signalleitung steht zur Verfügung. Also muß aus den
Analog-Signalen eines SPI-kompatiblen Bausteins, z.B. ein DAC
MAX5250 von Maxim, PWM Signale gebildet werden.Muß nicht, aber wenn Dir diese Lösung so gefällt, dann mach
es halt.Der Vorschlag vom Peter ist hierfür sehr interressant.
Was gut und schlecht ist, hängt eben von vielen Sachen ab.
Z.b. wieviel Ahnung ein Entw. von diversen Schaltungtechn. hat
und ob sich jemand findet, der z.B. mal schnell einen
Controler
programmieren kann. Da wird dann meist das favorisiert, was
man
am besten kann. Das ist aber durchaus legitim.Was den Baustein CDP68HC68W1 von Intersil betrifft, ist seine
Funktion eigentlich klar: von einer Master-Baugruppe, über
SPI, gesendete Daten, wird ein PWM-Signal von 0% bis 100%,
proportional zu den Daten, generiert.Ja, und mit welcher Geschw., Auflösung, Genauigkeit usw.
brauchst Du das?
Die Genauigkeit des PWM sollte im gegensatz zum CDP68HC68W1 der mit 8 bit arbeitet,auf 10bit erhöht werden.
Mein Hauptproblem ist daß die Slave-Baugruppe, aus kosten- und
Platzgründen, keine eigene Intelligenz besitzen soll, sonst
hätte ich eine MCU für diese Aufgabe vorgesehen.„…keine eigene Inteligenz besitzen soll…“ oder darf?
Und warum nicht? Und was soll eigene Intelligenz sein?
So ein Schnulli-Controler, der genau das macht, wie der
Intersil-IC wird auch genau so intelligent sein wie dieser!
Da muß ja keine KI eingebaut werden
Intelligenz bedeutet in diesem Falle Programmierbarkeit. Diese Baugruppe, laut Vorgaben,
sollte als „reine Hardware“ entwickelt werden.
Wobei
kleinste MCU mit SPI und PWM dünn gesät sind… Übrigens wird
der SPI mit 2 Mhz getaktet.Na und? SPI ist ein einfacher serieller BUS, der im Gegensatz
zu RS232 leicht mit beliebigen Ports fast jeden Controlers
leicht zu programmieren ist. Für die 2Mhz Takt muß der
Controler
nur schnell genug sein (das ist evtl. ein echtes
Auswahlkriterium).
Außerdem besteht prinzipiell die Möglichkeit, den SPI-Takt
auch langsamer zu machen.
Wie gesagt bedient der SPI andere Baugruppen, die zeitweise größere Datenmengen über ihn
austauschen, deshalb ist die maximale Frequenz von 2 Mhz gefordert.
Und was hat MCU und PWM-Ausgang auf sich? Der Controler macht
genau das, was reinprogrammiert wird. Und wenn das Programm
eine PWM realisiert, dann braucht man für die Ausgabe genau
ein
Portsignal. Die meisten Controler (z.B. 8051) haben intern
auch
diverse Timer, die die PMW-Programierung gut unterstützen.
Es ist für mich kein Problem für diese Aufgabe eine x-beliebige MCU zu programmieren,
aber ich muß mich an die Vorgaben halten.
Nun noch zu den Kosten: Im einfachsten Fall kann man alles mit
dem sowieso vorhandenen Enable-Bit machen. Das kostet
Programmierzeit beim Master-Prozessor, sonst nichts.
Falls das nicht geht, kann evtl. mit einem billigen
Controler-IC
ca.3…5€) die Sache realisiert werden. Die Programmierung
macht ein einigermaßen erfahrener Mann in paar Stunden (max.
paar Tage).
Falls kein geeignetes externes Taktsignal zu Verfügung steht
braucht man noch mind. einen Quarz (oder Piezo, billiger)
und 2 Keramik-C (ca. 10pF ). Je nach sonstigen Randbedingungen
evtl. auch noch einen einfachen Reset-IC (oder Controler mit
internen Watchdog).
Das ganze geht alles Problemlos mit z.B. 5V-Digitalsromvers.
Als Controler würde sich z.B. 1051 oder 2051 oder PIC oder
sonst
was eignen.Die analoge Variante braucht:
- den DAC mit Umschaltung, je nach Typ auch noch
Referenzspannungserzeugung
Eine Referenzspannung ist schon auf der Baugruppe vorhanden.
- Analoge Schaltung (OPV mit Umschaltung) für
Dreieckspannungserzeugung- Komparator zur PWM-Ausgabe
- Stromversorgung für Digitalteil
- und auch für Analogteil
Je nachdem, wie man die Sache anfasst, wird man beim
Analogteil
mit den übliche 5V gerade so zurechtkommen mit rail-to
rail-OPV
und etwas eingeschränkter Aussteuerung (geht nicht bis 0V
runter ->:wink:.
Evtl. brauchst Du dann noch eine neg. Betriebsspannung.
Mit Störungen durch die Digitalelektronik ist zur rechen.
Wenn Du keine Erfahrungen mit analogen Schaltungstechnik haben
solltest, dann kannst Du evtl. auch noch einiges Lehrgeld bei
der Schaltungentw. zahlen.
Bei den Kosten der Bauteile, dem Entwicklungsaufwand,
dem Entwicklungsrisiko und dem Platzbedarf der Schaltung
und dem Zeitaufwand zur Entw. sehe ich nur Nachteile.
Die Genauigkeit, Linarität und Drift hängt stark von der
Dreiecksspannung ab. Besser als ca. 2% wird schon einen
Aufwand und Sorgfalt erfordern.Welche Hintergrund-Infos fehlen noch? Für mich ist die Aufgabe
ziemlich klar. Ich erwarte ja nicht direkt eine Lösung,
sondern einige Ideen mittels Dialog.Wirklich sachkundige Auskunft kann man hier auch nur geben,
wenn mögl. alle Randbed. bekannt sind. Andererseits bekommst
Du Infos, die so allg. sind, wie sie in jedem Lehrbuch stehen
und das meiste sind Schüsse ins Blaue (schade um die Zeit).
Gruß Uwi
Das ist richtig aber ich kann mich nur an die Sache herantasten da die Pflichtenhefte noch nicht komplett sind.
Grüße Yannick
Hallo,
Meine Vorgaben sind PWM mit min. 15Khz Grundfrequenz (wegen
Pfeiffgeräuschen in Motoren),
15KHz ist ja mehr ganz so langsam 
Tastverhältnis 0% bis 100%, refresh-Frequenz ca. 10Hz über den
SPI.
Ein von den 4 PWM-Kanälen ist für die Steuerung eines
12V-Pumpenmotor, die restlichen
Kanäle sind für zukünftige Anwendungen die noch nicht
festgelegt sind.
Das Enable-Signal kann nicht als PWM, da es aus einer 4bit
Info abgeleitet wird, und aus einem Dekoder kommt. Dieses zu
takten würde die anderen Baugruppen beeinflüssen.
Ausserdem benötige 4-PWM Signale die mit einem einzigen
Enable-Signal zusammenhängen (der DAC ist ja 4fach)
Ja, ok, ganz so einfach geht’s ja nie.
Die Genauigkeit des PWM sollte im gegensatz zum CDP68HC68W1
der mit 8 bit arbeitet,auf 10bit erhöht werden.
10 Bit (also ca. 0,1%) Auflösung und Genauigkeit mit der
Analogen Variante halte ich wie gesagt, für sehr anspruchsvoll.
Ich glaube nicht, daß sowas mal schnell so entwickelt werden
kann.
Intelligenz bedeutet in diesem Falle Programmierbarkeit. Diese
Baugruppe, laut Vorgaben,
sollte als „reine Hardware“ entwickelt werden.
Na gut, wenn es den unbeding so sein soll. Wohl aus Gründen
der Sicherheit/Zuverlässigkeit oder?
Außerdem besteht prinzipiell die Möglichkeit, den SPI-Takt
auch langsamer zu machen.Wie gesagt bedient der SPI andere Baugruppen, die zeitweise
größere Datenmengen über ihn
austauschen, deshalb ist die maximale Frequenz von 2 Mhz
gefordert.
Selbst wenn mal aller 100ms ein paar PWM-Werte ausgeg. werden
müssen, dann kann dies sicher auch langsamer gehen, weil diese
Ausgaben im Gesamtzeitrahmen nur einen winzigen Teil (
Hallo!
Die Lösung die ich inzwischen erarbeitet habe ist folgende:
- Ein 1MB x 8 Eprom von dem Ausgang als PWM ausgeführt wird.
Die Adressleitungen A0-A9 werden mit einem binärzähler getaktet, dieser läuft immer, wobei die Frequenz 16Mhz beträgt.
Die Adressen A0-A9 stellen die Auflöung von 10 bit dar.
Die Adressen A10-A19 werden von den Ausgängen eines Schieberegisters
angesteuert, das die SPI-Daten in paralelle umwandelt.
Aufwand pro Kanal: 2 Schieberegister 74HC595 + 1 Eprom 27C080
Aufwand für alle Kanäle: 1 Taktgenerator aus Invertern,
ein 16 MHz Quarz
und ein 16bit Zähler CD4040
Gruß,
Yannick
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Na prima 
Hallo,
da hast Du Dich ja doch zu einer reinen (trickreichen)
Digitallösung entschlossen! Obwoh ich auch Fan von analoger
Schaltungstechnik bin, wird in diesem Fall die digitale
Variante sicher besser sein. Wenn die einmal läuft, dann hast
Du in Bezug auf Genauigkeit, Auflösung und Geschwindigkeit
kaum Beschränkungen.
Die Sache mit dem EPOM als programmierbare Logik ist ja
nicht ganz neu, aber in dem Zusammenhang bin ich auch nicht
gleich drauf gekommen.
Na dann, fröhliches Gelingen
Uwi
Hallo!
Die Lösung die ich inzwischen erarbeitet habe ist folgende:
- Ein 1MB x 8 Eprom von dem Ausgang als PWM ausgeführt wird.
Die Adressleitungen A0-A9 werden mit einem binärzähler
getaktet, dieser läuft immer, wobei die Frequenz 16Mhz
beträgt.
Die Adressen A0-A9 stellen die Auflöung von 10 bit dar.
Die Adressen A10-A19 werden von den Ausgängen eines
Schieberegisters
angesteuert, das die SPI-Daten in paralelle umwandelt.
Aufwand pro Kanal: 2 Schieberegister 74HC595 + 1 Eprom
27C080
Aufwand für alle Kanäle: 1 Taktgenerator aus Invertern,
ein 16 MHz Quarz
und ein 16bit Zähler CD4040
Gruß,
Yannick
… wenns auch umständlich geht.
Hallo Yannick,
da hast Du von allen denkbaren Lösungen sicher eine der aufwendigsten gewählt
Die Lösung die ich inzwischen erarbeitet habe ist folgende:
- Ein 1MB x 8 Eprom von dem Ausgang als PWM ausgeführt wird.
Die Adressleitungen A0-A9 werden mit einem binärzähler
getaktet, dieser läuft immer, wobei die Frequenz 16Mhz
beträgt.
Die Adressen A0-A9 stellen die Auflöung von 10 bit dar.
Die Adressen A10-A19 werden von den Ausgängen eines
Schieberegisters
Da fährst Du ja mächtige Geschütze auf 
angesteuert, das die SPI-Daten in paralelle umwandelt.
Aufwand pro Kanal: 2 Schieberegister 74HC595 + 1 Eprom
27C080
Wenn Du die Daten eh’ seriell ausgeben willst, kannst Du die Register auch in Serie schalten. Dann brauchst Du z.B. für 4 Kanäle mit je 10 Bit nur 5 statt 8 Schieberegister. Das geht natürlich nur, wenn die Daten aller Kanäle gleichzeitig aktualisiert werden sollen.
Aufwand für alle Kanäle: 1 Taktgenerator aus Invertern,
ein 16 MHz Quarz
und ein 16bit Zähler CD4040
- der CD4040 funktioniert nicht bei 16 MHz. Es sollte schon min. ein 74HC4040 sein
- Der 4040 zählt asynchron und ist daher für diese Anwendung eigentlich ungeeignet. Bei 16MHz wirst Du kein sauberes Ausgangssignal bekommen. Du bräuchtest einen Synchronzähler und am EPROM-Ausgang ein mit dem Takt getriggertes 1-Bit-Datenregister. Das EPROM darf max. nur etwa 60 ns Zugriffszeit haben- kein billiger Spass
Das geht auch einfacher und billiger, selbst wenn Du unbedingt standard-TTL-Bausteine verwenden willst:
Die Daten der Schieberegister gehen auf die Eingänge von Programmierbaren Zählern, z.B. 74LS161. Je 3 kaskadierte Zähler ergeben einen PWM-Generator. Bit 10 bildet den PWM-Ausgang. Als Taktgenerator dient ein 74HC4060, der den die PWM-Frequenz erzeugt. Die PWM-Frequenz erzeugt einen kurzen Impuls (über RC-Glied, min. 80 ns lang), der die Zähler über den Load-Eingang programmiert. Bit 0…9 gehen an Die Schieberegisterausgänge, Bit 10 auf Masse. Je höher der Startwert der Zähler ist, desto schneller gibt es einen Übertrag auf Bit 10 und desto länger ist die periodische Einschaltdauer vom Bit-10-Ausgang des Zählers.
Jörg