Hi, Ich suche nach einem IC, der mir eine PWM von etwa 15 kHz macht und gleichzeitig erlaubt den duty cycle in feinen Schritten zu kontrollieren. In meiner speziellen Anwendung geht es darum, den duty cycle zwischen 45% und 55% einzustellen. Das ganze ist fuer ein LC Modul, mit welchem ich die Intensitaet eines Laser stabilisieren moechte (siehe "Noise Eater"). Das Problem ist, dass ich bei einem AVR bei 20 MHz maximal eine 10 bit PWM machen kann (20 MHz / 1024 -> 20 kHz PWM Frequenz). Damit komme ich allerdings "nur" auf etwa 100 Stufen zwischen 45% und 55% (10% von 1024 Stufen). Gibt es so einen PWM IC irgendwo zu kaufen oder vielleicht eine andere Loesung, die mir bisher entgangen ist? Wichtig ist, dass der duty cycle nicht aus dem angegebenen Bereich rausgehen kann, da sonst mein LC Schaden nehmen kann. Vielen Dank, Felix
16Bit PWM? F. V. schrieb: > ibt es so einen PWM IC irgendwo zu kaufen oder vielleicht eine andere > Loesung, die mir bisher entgangen ist? Wichtig ist, dass der duty cycle > nicht aus dem angegebenen Bereich rausgehen kann, da sonst mein LC > Schaden nehmen kann. Software?
F. V. schrieb: > Das Problem ist, dass ich bei einem AVR bei 20 MHz maximal eine 10 bit > PWM machen kann (20 MHz / 1024 -> 20 kHz PWM Frequenz). Damit komme ich > allerdings "nur" auf etwa 100 Stufen zwischen 45% und 55% (10% von 1024 > Stufen). Das war auch mein erster Gedanke, leider geht das so nicht. Die PWM Frequenz soll 15-20 kHz betragen, mit normalen AVR und 20 MHz Takt hab ich da nur etwa 1000 Taktcyclen Zeit. Ich frage mich, ob es fuer sowas nen IC gibt (feste Frequenz einstellen und dann duty cycle per SPI aendern). Oder ob ich nen ganz falschen Ansatz habe und meine PWM nach dem uC Frequenzverdoppeln (oder achtfachen) kann. Felix
F. V. schrieb: > Das Problem ist, dass ich bei einem AVR bei 20 MHz maximal eine 10 bit > PWM machen kann (20 MHz / 1024 -> 20 kHz PWM Frequenz). Wer schreibt dir vor den Prescaler auf 1024 zu stellen?
@ F. V. (coors) >Frequenz soll 15-20 kHz betragen, mit normalen AVR und 20 MHz Takt hab >ich da nur etwa 1000 Taktcyclen Zeit. Was ja mal rein rechnerisch nunmal so ist. Wieviel Auflösung hättest du denn gern? Sowas kann man mit einem CPLD machen, den kann man problemlos mit 100 MHz takten. Oder dem Piccolo uC von TI, der kann 150ps (ja, Picosekunden) Zeitauflösung für seine PWMs. Oder einen AVR mit interner PLL, dort kommt man wenigstens auf 64 MHz, die können zumindest einen Timer takten. MfG Falk
@Micha >Wäre ein NE555 eine Option? Damit müsste sich der Duty Cycle doch >entsprechend eingrenzen lassen. Das ist ne prima Idee, werde mir mal genauer angucken, ob sich sowas per 555 machen laesst. @Falk >Was ja mal rein rechnerisch nunmal so ist. Wieviel Auflösung hättest du >denn gern? 10 bit waeren OK, mit 12 bit wuerde ich vollkommen gluecklich sein. >Sowas kann man mit einem CPLD machen, den kann man problemlos mit 100 >MHz takten. Oder dem Piccolo uC von TI, der kann 150ps (ja, >Picosekunden) Zeitauflösung für seine PWMs. Oder einen AVR mit interner >PLL, dort kommt man wenigstens auf 64 MHz, die können zumindest einen >Timer takten. Wie schaut das mit der Einarbeitungszeit fuer CPLDs oder Piccolo uCs aus? Ich habe nur mit AVRs gespielt bisher und bin mir nicht sicher, ob sich das "mal eben" machen laesst. Kommt man da mit einseitigen Layouts weiter (privat kann ich nur einseitige Toner-Transfer PCBs herstellen)? AVR mit interner PLL ist definitiv ne Variante. Wenn ich nen 16 bit Timer mit 20 kHz Ueberlauf Frequenz hinkriege habe ich gewonnen. Danke fuer die Hinweise! Felix
@F. V. (coors) >10 bit waeren OK, mit 12 bit wuerde ich vollkommen gluecklich sein. 10 Bit hast du doch schon. 20 MHz/1024 = 20kHz. Für 12 Bit brauchst du dann halt 80 MHz. >AVR mit interner PLL ist definitiv ne Variante. Wenn ich nen 16 bit >Timer mit 20 kHz Ueberlauf Frequenz hinkriege habe ich gewonnen. Hmm, hab gerade mal geschaut, die Tiny 25/45/85 haben eine PLL, aber leider nur 8-Bit Timer :-0 MFg Falk
F. V. schrieb: > Damit komme ich > allerdings "nur" auf etwa 100 Stufen zwischen 45% und 55% (10% von 1024 Ich kenne mich ja mit dem Thema nicht aus aber mußt du wirklich das Gesamtsignal per PWM generieren? oder reicht da ein 50%-DC-Offset dem du 0-100% PWM im Verhältnis 1:10 dazumischst um auf 45-55% zu kommen? Damit wäre die Auflösung schlagartig um den Faktor 10 unkritisicher. Ansonsten: mit einem DSPIC30F4013 kommst du bei 7,5MHz Quarz auf 30MHz PWM Grundtakt was bei 15kHz schon mal 11 Bit Auflösung ergibt. Gruß Anja
@ Falk: >10 Bit hast du doch schon. 20 MHz/1024 = 20kHz. >Für 12 Bit brauchst du dann halt 80 MHz. Sorry, ich meinte 10 bit im Bereich 45% - 55%. In diesem Bereich habe ich im moment knapp 7 bit. Daher brauche ich fuer 10 bit 160 MHz und fuer 12 bit satte 640 MHz. Das klingt so, als waere der Ansatz murks. @ Anja: >Ich kenne mich ja mit dem Thema nicht aus aber mußt du wirklich das >Gesamtsignal per PWM generieren? oder reicht da ein 50%-DC-Offset dem du >0-100% PWM im Verhältnis 1:10 dazumischst um auf 45-55% zu kommen? >Damit wäre die Auflösung schlagartig um den Faktor 10 unkritisicher. Leider brauche ich TTL High/Low Signale um mein LC von vertikaler Polarisation zu horizontaler Polarisation zu switchen. Waere der Eingang Ananlog, wuerde dein Ansatz vermutlich der Beste sein, hier kann ich das aber leider nicht so machen. >Ansonsten: mit einem DSPIC30F4013 kommst du bei 7,5MHz Quarz auf 30MHz >PWM Grundtakt was bei 15kHz schon mal 11 Bit Auflösung ergibt. Das Teil kenne ich noch nicht, gucke ich mir aber gleich nach der Arbeit mal an und vergleiche es mit dem 555. Vielen Dank fuer die Idee! Felix
@ F. V. (coors) >Daher brauche ich fuer 10 bit 160 MHz und fuer 12 bit satte 640 MHz. Das >klingt so, als waere der Ansatz murks. Naja, will das Modul WIRKLICH eine PWM oder tut es auch ein Gleichspannungssignal? Warum glaubst du, 20kHz zu brauchen? Datenblatt? >Leider brauche ich TTL High/Low Signale um mein LC von vertikaler LC?? >Polarisation zu horizontaler Polarisation zu switchen. Früher (tm) hieß das schalten. >Das Teil kenne ich noch nicht, gucke ich mir aber gleich nach der Arbeit >mal an und vergleiche es mit dem 555. Vielen Dank fuer die Idee! Der 555 ist ein Dinosaurier, ein ganz einfacher, analoger PWM-IC. Nix digital einstellbar. MfG Falk
PWM früher war ein Sägezahn und eine Spannung am Komperator. Für dich hier: Sägezahn mit 15 kHz und ein Vergleichsspannung die den Bereich auf 45-55 % Duty eingrenzt. Die Vergleichsspannung geht mit Poti manuell oder über einen DAC. Evtl. die 45% fix und 0-10% mit 12 Bit DAC dazuaddieren. Deine 15 kHz kannst du dann auch auf 12 oder 20 kHz setzen. avr
Hallo F.V. Ich weiss nicht ob dir das weiterhilft: Beim Stichwort "High Resolutuion PWM" warf Google folgendes "IC" raus: http://focus.ti.com/lit/ug/spru924e/spru924e.pdf Schau einfach mal kurz rein. Viel Erfolg noch.
F. V. schrieb: > Wie schaut das mit der Einarbeitungszeit fuer CPLDs oder Piccolo uCs > aus? Ich habe nur mit AVRs gespielt bisher und bin mir nicht sicher, ob > sich das "mal eben" machen laesst. Kommt man da mit einseitigen Layouts > weiter (privat kann ich nur einseitige Toner-Transfer PCBs herstellen)? Piccolo ist machbar. Problem ist, dass man erst mal die Toolchain braucht... Einseitiges Layout müsste auch gehen. Vielleicht wäre auch das hier was für dich. Beitrag "$4,30 Arduino-Klon mit MSP430 von Texas Instruments"
CPLD ist auch machbar, im Notfall kann man die PWM sogar per Schaltplan zusammenklicken wenn man Angst vor VHDL hat. Kleine CPLDs (für die PWM völlig ausreichend, zb xc95 Serie von Xilinx) bekommt man noch im PLCC Gehäuse, damit ist man Lochrastertauglich. Ein (Paralleles) Programmierkabel ist für 5€ selbst gebastelt und die Programmiersoftware (Ise webpac) bekommt man bei Xilinx kostenlos
Ich werf mal noch den TL494 in die Runde. Kann als einfacher PWM-Baustein verwendet werden, wird über Spannung im Duty eingestellt und ist etwas besser als 555 und ohne Programmieraufwand. hans
Erstmal danke fuer die ganzen hilfreichen Vorschlaege. Bin im Moment noch erschlagen von der Informationsflut, allerdings denke ich hab ich nen Favoriten gefunden. So wie ich mir das grade denke werde ich mal nen 555 Timer probieren. Hier im Datenblatt ( http://www.national.com/ds/LM/LM555.pdf ) auf Seite 8 / 9 wird genau das gezeigt, was ich vorhab. Ich werde vermutlich nen MCP4821 12 bit DAC nehmen, der mit 2.048 V mit 12 bit Aufloesung gibt und da einfach ~1.5 V draufaddieren. Dann lege ich nen 15 kHz Signal vom AVR auf den Trigger vom 555 und moduliere die Pulsweite ueber den Modulationseingang. Ich denke so sollte ich (evtl. mit Spannungteiler am Modulationseingang) meine 12 bit Aufloesung bei 45% - 55% Pulsweite hinkriegen. Das sieht mir persoenlich nach dem guenstigsten und recht robusten Weg aus das Problem zu loesen. Falls es da keine konzeptuellen Einwaende gibt werde ich mich da morgen mal direkt ransetzen. Felix
Hallo, Du verlangst eine Genauigkeit von 2048 Teilen auf 10 % oder 20480 auf 1(00%.) also 48,8 / 1e6 ~ 50 ppm. Dies entspricht schon der Drift des LM 555 bei Änderung der Temperatur um 1 Grad. 50 ppm ist Abweichung auch bei einer Änderung der Spannung um 50 mV == 0.1%/V Und das ist ja nicht Dein einziges analoges Signal, Addierer, DAC ...
Horst Hahn schrieb: > Hallo, > > Du verlangst eine Genauigkeit von 2048 Teilen auf 10 % oder 20480 auf > 1(00%.) > also 48,8 / 1e6 ~ 50 ppm. Dies entspricht schon der Drift des LM 555 bei > Änderung der Temperatur um 1 Grad. > 50 ppm ist Abweichung auch bei einer Änderung der Spannung um 50 mV == > 0.1%/V > Und das ist ja nicht Dein einziges analoges Signal, Addierer, DAC ... So habe ich das bisher noch nicht gesehen, hoert sich allerdings logisch an. Kann ich damit "nur" analoge Loesungen vergessen, oder bedeutet das ebenfalls das aus fuer CPLDs? Ansonsten gucke ich mir den XC9536 mal genauer an, den gibts im TQFP Gehause und er kann mit 100 MHz getaktet werden. ( http://www.xilinx.com/support/documentation/data_sheets/ds064.pdf ) Ich denke ich sollte mich am Wochenende mal hinsetzen und das Projekt genau erklaeren, poste das dann hier. Felix
@ F. V. (coors) >So habe ich das bisher noch nicht gesehen, hoert sich allerdings logisch >an. Kann ich damit "nur" analoge Loesungen vergessen, Mehr oder weniger. > oder bedeutet das ebenfalls das aus fuer CPLDs? Nein. Den Takt nimmt man von einem Quarzoszillator, der ist recht stabil. >Ansonsten gucke ich mir den XC9536 mal genauer an, den gibts im TQFP Ist zu klein. Nimm einen XC9572. MFG Falk
Ich bin mir nicht sicher, aber ich denke die Attinyx61 haben einen 10bit High Speed Timer. Wäre das evtl. was?
> Kann ich damit "nur" analoge Loesungen vergessen Nein, aber die Anspüche des Aufbaus sind halt höher. So hoch, wie bei einem 16 bit Messwerkverstärker. Analog ist es immerhin einfach, aus einer 0-100% Steuerspannung für eine PWM durch einen simplen Spannungsteiler eine 45-55% Steuerspannung zu machen. Nur ,als PWM tut's da kein NE555, sondern ein schneller Komparator an rauschfreien Leitungen muss her. Mich überrascht halt, daß man einen Flüssigkristallshutter so bedienen soll, mit einer PWM in solchem Tastverhältnis und nicht mit einer Rechteck- Wechselspannung immer grösser werdender (und in gewisser Form zur Temperaturkompensation rückgekoppelter) Amplitude.
MaWin schrieb: >> Kann ich damit "nur" analoge Loesungen vergessen > > > Nein, aber die Anspüche des Aufbaus sind halt höher. > > So hoch, wie bei einem 16 bit Messwerkverstärker. > > Analog ist es immerhin einfach, aus einer 0-100% > Steuerspannung für eine PWM durch einen simplen > Spannungsteiler eine 45-55% Steuerspannung zu > machen. Nur ,als PWM tut's da kein NE555, sondern > ein schneller Komparator an rauschfreien Leitungen > muss her. > > Mich überrascht halt, daß man einen Flüssigkristallshutter > so bedienen soll, mit einer PWM in solchem > Tastverhältnis und nicht mit einer Rechteck- > Wechselspannung immer grösser werdender (und > in gewisser Form zur Temperaturkompensation > rückgekoppelter) Amplitude. MaWin, Das ist alles richtig, was du sagst. Ich habe nen kommerziellen Treiber ( http://www.displaytech.com/pds_protonics_dr50.html ), dem man ein externes Signal fuettern kann. Das Problem ist nur die Erzeugung des externen Signals mit 45 - 55% duty cycle. Sobald ich von der Arbeit komme, setze ich mich hin und schreibe ne ordentliche Dokumentation, so dass du (und alle anderen) genau folgen koennen, was ich hier versuche. Felix
Also, hier erstmal das Funktionsprinzip etwas genauer: a) Der Laserstrahl (im Schema von links kommend) wird mit einem Filter (1) linear polarisiert. b) Von dem linear polarisierten Strahl wird ein Teil (~5%) abgeteilt (2). c) Von den abgeteilten 5% des Strahl wird per Photodiode (3) die Intensitaet gemessen. Das ist meine Referenzmessung. d) Der LC-Polarisationsfilter erlaubt es mir nun die Intensitaet von den 95% des Strahls zu modulieren und eventuelle Schwankungen auszugleichen. Die Idee hinter (4) ist, dass die Polarisation des Lichtes welches durch (4) nicht abgeschwaecht wird mit ~20 kHz von vertikal auf horizontal gedreht wird. Damit bekomme ich bei 50% duty cycle 50% der Intensitaet am Ausgang von (4). Wenn ich nun den duty cycle auf 55% einstelle, bekomme ich entsprechend 55% Intensitaet usw. Die LC Einheit (4) kann man hier betrachten: http://www.displaytech.com/photonics.html Unter Rotators findet sich (4), ein Treiber (DR-50) ist ebenfalls vorhanden. Das Problem ist wie gesagt die Erzeugung der 20 kHz PWM mit duty cycle zwischen 45% und 55%. Ich haette gern mindestens 1024 Stufen zwischen 45% und 55%. Ich hoffe das beantwortet die Frage was ich hier eigentlich mache. Man sieht auch, dass es keine Moeglichkeit gibt DC Spannungen oder aehnliches zu benutzen. Im Moment gucke ich mir CPLDs an und versuche rauszufinden, ob ich MaWins Ansatz verwirklichen koennte. Felix
@ F. V. (coors) >Das Problem ist wie gesagt die Erzeugung der 20 kHz PWM mit duty cycle >zwischen 45% und 55%. Ich haette gern mindestens 1024 Stufen zwischen >45% und 55%. Das ist eine PWM mit 10240 Stufen, macht für 20kHz satte 200 MHz Takt. Hoppla. Kann man mit einem CPLD machen, ich würde aber erstmal den Piccolo probieren, der macht das cleverer. >Ich hoffe das beantwortet die Frage was ich hier eigentlich mache. Man >sieht auch, dass es keine Moeglichkeit gibt DC Spannungen oder >aehnliches zu benutzen. Warum müssen es 20 kHz sein? MFG Falk
Die 20 kHz sind vom LC vorgegeben. Das ist die hoechste Frequenz, die das Teil machen kann (ist auch die maximale Frequenz von dem Treiber, den Displaytech verkauft). Die Frequenz soll so hoch wie moeglich sein, da der Laser effektiv mit dieser Frequenz gechoppt wird. Idealerweise nimmt man fuer meine Anwendung nen richtigen EOM (electrooptic modulator), die kosten aber nen haufen Geld. Ich habe das LC Modul fuer Lau bekommen und versuche mich an der low-cost Variante. Hier ist z.B. ne Firma, die Noise Eater auf EOM Basis verkauft: http://www.quantumtech.com/systems.htm OK, dann lese ich mich mal etwas in den Piccolo ein und gucke, ob ich wohl damit zurecht komme. Leider bin ich Chemiker und kein Elektroingenieur, daher brauche ich fuer sowas immer etwas laenger ;) Felix
http://www.ti.com/corp/docs/landing/piccolotools/index.htm?DCMP=Piccolo&HQS=Other+OT+controlstick Das Ding kaufen, programmieren, freuen ;-)
Hallo, laut http://focus.ti.com/lit/ug/spruge8d/spruge8d.pdf Seite 10 wird bei 20 khz eine Auflösung von PWM-Auflösung von 18 Bit= 1:262144 erreicht, also mehr als ausreichend.
Habe mir mal so einen Piccolo bestellt. Ich bin da recht zuversichtlich, dass das genau das richtige fuer die Anwendung ist. Danke nochmal an Falk, die Piccolos sind wirklich super und scheinen auch einfach zu programmieren zu sein. Felix
Hi, Hier nun nach einiger Zeit mal ein Update. Die PWM per AVR (niedrige Aufloesung) und Piccolo (hohe Aufloesung) klappt schonmal. Die Piccolos sind fuer diese Anwendung wirklich perfekt. Im moment beisse ich mir an einer anderen Ecke die Zaehne aus. Was ich letztes mal nicht bedacht habe ist der analoge Messteil des Noise Eaters. In dem Schema vom 26.06.2010 habe ich den Strahlteiler mit Photodiode VOR dem LC-Polarisationsfilter. Das stellte sich als murks raus. Nun habe ich Strahlteiler und Photodiode (2 und 3) hinter dem LC-Polarisationsfilter (4) angeordnet. Damit erzeugt mir die Modulation durch (4) relativ grosse Stoerungen auf der Photodiode. Daher probiere ich als naechstes mal aus, ob ich die durch einen guten Tiefpass Filter einfach ausgefiltert kriege. Vielleicht hat ja jemand einen besseren Vorschlag... Felix
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.