Forum: Mikrocontroller und Digitale Elektronik Attiny85 mit 64Mhz PLL mehr als 8 bit Halb-Hardware PWM?


von Samuel S. (samuel)


Lesenswert?

Hi zusammen,

für eine Anwendung muss ich zwei LEDs sehr fein dimmen können (für einen 
LDR, nicht fürs menschliche Auge). Ich benötige demnach mehr als 8bit 
PWM.
Am liebsten wären mir direkt 16bit PWM.
Ich möchte allerdings auch eine möglichst hohe PWM Frequenz erreichen.
8bit PWM könnte der Tiny85 soweit ich es verstanden habe mit 64Mhz 
Timertakt in Hardware.
Wenn ich den 64Mhz Timer als Software-PWM verwenden würde bringt das ja 
nicht so viel, da der Systemtakt bedeutend langsamer ist und das 
Umschalten durch einen Timerinterrupt nicht so schnell verarbeiten 
werden kann und somit ggf. der Timer schneller überläuft als der Avr 
rechnen kann...

Nun ist mir folgende Idee gekommen zwar den Hardware-PWM zu nutzen, aber 
per Software die PWM Pulsweiten ständig anzupassen um die Bitrate 
sozusagen zu erhöhen.

wenn ich also z.B. 10bit PWM möchte würden das 3 Durchläufe des 8bit 
Timers bedeuten. Beim Ende jedes Durchlaufs (müßte man gucken wie man 
das am besten timt bzw. die Taktverzögerungen mit einrechnen) muss dann 
die PWM Pulsweite neu gesetzt werden.
Wenn z.B. die LED 50% der Zeit leuchten soll, der normale PWM Wert also 
512 wäre, wäre das:
1. PWM Durchlauf: komplett aus
2. PWM Durchlauf: ab der Hälfte an
3. PWM Durchlauf: komplett an
danach wieder von vorne

Somit würde ich nicht die Rechenzeit verlieren den Pin immer selbst zu 
setzen (was bei der Taktgeschwindigkeit mit dem Systemtakt ja sowieso 
nicht möglich wäre)

Schwierig stelle ich mir gerade nur den Übergang zwischen den PWM 
Durchlaufen vor. Man müßte genau berechnen wie viele Takte das neusetzen 
des Pulsweite benötigt und dann entsprechend früh per Interrupt die 
Änderung setzen. Da der Timer1 nur zwei Output Compare hat könnte man 
hierzu vielleicht den Timer0 zeitlich synchronisiert nutzen um den 
richtigen Zeitpunkt abzupassen.
Ist das so möglich, hat jemand so etwas schon mal versucht? Meint ihr 
das könnte passen oder lieber gleich einen größeren Tiny/Mega mit 16bit 
Timer nehmen (auch wenn die dann nur mit Systemtakt den Timer laufen 
lassen können).

Gruß,
Sammy

von einer (Gast)


Lesenswert?

Hier werden nebenbei zwei 8-Bit-Timer zusammengenommen, um damit eine 
16-Bit-PWM zu machen:
http://www.zabex.de/site/sofabeleuchtung.html

von (prx) A. K. (prx)


Lesenswert?

Ist der LDR derart fix? Ich habe die als eher gemächliche Gesellen in 
Erinnerung.

Wenn es darum geht, jeden überlagerten Brumm im hörbaren Bereich weg zu 
bekommen: Spricht etwas gegen die analoge Variante, also PWM+Tiefpass?

von Tim  . (cpldcpu)


Lesenswert?

Du könntest alternativ einen Sigma-Delta Wandler in Software 
implementieren. Damit lässt sich mit niedrigeren Frequenzen eine höhere 
Genauigkeit erreichen. Weitere Verbesserung erreicht man mit einem 
zusätzlichen externen Tiefpass, um das Hochfrequente Störsignal zu 
filtern.

von Samuel S. (samuel)


Lesenswert?

A. K. schrieb:
> Ist der LDR derart fix? Ich habe die als eher gemächliche Gesellen in
> Erinnerung.
>
> Wenn es darum geht, jeden überlagerten Brumm im hörbaren Bereich weg zu
> bekommen: Spricht etwas gegen die analoge Variante, also PWM+Tiefpass?

beides korrekt.
Der LDR wird eher langsam sein und es geht darum keine Störgeräusche in 
die Audioschaltung zu bekommen. Über den LDR laufen direkt Audiosignale.

Gruß,
Sammy

von old man (Gast)


Lesenswert?

Für sowas wurden Controller erfunden die 16 oder 32bit Timer haben. 
dsPic z.B. oder Cortex M0 (M3). Alles andere ist und bleibt eine 
Krampflösung.

von Peter D. (peda)


Lesenswert?

Samuel St. schrieb:
> Über den LDR laufen direkt Audiosignale.

Das hat man um 1980 so gemacht.
Heutzutage gibt es Lautstärke-ICs vom allerfeinsten, die Deinen LDR 
bezüglich Rauschen, Dynamik usw. weit in den Schatten stellen.

von Purzel H. (hacky)


Lesenswert?

>Alles andere ist und bleibt eine Krampflösung.

Nicht wirklich. Einen 16 oder 32bitter deswegen einzusetzten ist eher 
durchgeknaller Overkill. Wenn man einen 8 bit timer mit 16MHz laufen 
laesst hat man eine PWM mit 64kHz. Wenn man ein 8 Bit subcycling macht, 
ist man bei 16 bit Aufloesung.

Dh, zB 189 von 256 der schnellen Zyklen mit dem Wert von 23 laufen zu 
lassen und die restlichen 67 der schnellen Zyklen mit dem 24, so hat man 
eine Repetitionsrate von 256Hz, die PWM Frequenz liegt aber bei 64kHz.

von (prx) A. K. (prx)


Lesenswert?

old man schrieb:
> Für sowas wurden Controller erfunden die 16 oder 32bit Timer haben.

Das ändert nichts am Problem, dass ein so ein Timer eine Frequenz im 
hörbaren Bereich erzeugt. Und genau das will er nicht, da er befürchtet, 
diese via LDR im Audiosignal wiederzufinden.

von (prx) A. K. (prx)


Lesenswert?

Siebzehn mal Fuenfzehn schrieb:
> Dh, zB 189 von 256 der schnellen Zyklen mit dem Wert von 23 laufen zu
> lassen und die restlichen 67 der schnellen Zyklen mit dem 24, so hat man
> eine Repetitionsrate von 256Hz, die PWM Frequenz liegt aber bei 64kHz.

Allerdings hat man so eine Störung mit 64kHz/256 im Signal. Nicht 
umwerfend stark, aber evtl. zu viel für Audiophile. Das kann man durch 
andere Verteilung verändern, aber bei 10+ Bits digital nicht wirklich 
weg bekommen.

von Samuel S. (samuel)


Lesenswert?

Peter Dannegger schrieb:
> Samuel St. schrieb:
>> Über den LDR laufen direkt Audiosignale.
>
> Das hat man um 1980 so gemacht.
> Heutzutage gibt es Lautstärke-ICs vom allerfeinsten, die Deinen LDR
> bezüglich Rauschen, Dynamik usw. weit in den Schatten stellen.

Die Effekte des modernen ICs sind sicherlich beachtlich, vor allem wenn 
es Spannungen von z.B. 150V überleben soll...
Da ist dann nicht mehr viel mit Rauschen, Dynamikvorteilen, sondern eher 
ein unangenehmer Geruch zu vernehmen ;)
Für Röhrenschaltungen ist die Technik von 1980 wohl immer noch recht 
aktuell, ich wüßte nicht wie man das sonst hinbekommen kann.

Gruß,
Sammy

von Peter D. (peda)


Lesenswert?

Meine Kristallkugel ist leider kaputt. Daß Du die Anodenspannung von 
Röhren einstellen willst, konnte ich daher nicht hellsehen.

Die NF am Steuergitter der Vorröhre kann man durchaus mit einem IC 
steuern.
Auch in der Röhrentechnik wurden keine 150V NF übertragen. Die Quellen 
(Mikrofon, Tonabnehmer, Radio usw.) lieferten nur wenige mV.

von Samuel S. (samuel)


Lesenswert?

Peter Dannegger schrieb:
> Meine Kristallkugel ist leider kaputt. Daß Du die Anodenspannung von
> Röhren einstellen willst, konnte ich daher nicht hellsehen.
>
> Die NF am Steuergitter der Vorröhre kann man durchaus mit einem IC
> steuern.
> Auch in der Röhrentechnik wurden keine 150V NF übertragen. Die Quellen
> (Mikrofon, Tonabnehmer, Radio usw.) lieferten nur wenige mV.

Hi Peter,

ich wollte dich nicht angreifen, alles kein Problem, grundsätzlich hast 
du definitiv Recht!
Die Kristalkugel ist aber inzwischen auch out, da gibts seit einigen 
Jahren moderneres wie XKeyscore & Co ;)

Ich möchte halt eine bestehende Schaltung ohne weitere Änderung damit 
ausstatten können. Es gibt zwar Designs, bei denen man das auch mit ICs 
machen kann, in meinem Fall liegen bei Bass/Middle/Treble allerdings 
höhere Spannungen an als die ICs vertragen können.

Gruß,
Samuel

von Patrick B. (p51d)


Lesenswert?

Samuel St. schrieb:
> Wenn ich den 64Mhz Timer als Software-PWM verwenden würde bringt das ja
> nicht so viel, da der Systemtakt bedeutend langsamer

??? Was? Ein AVR der einen Timer hat der mit 64MHz läuft und das 
schneller als der Systemtackt?? Seit wann gibts den das und wozu soll 
das gut sein?

Da ja der Systemtackt max bei 20MHz liegt und die Pins auch parasitäre 
Cs haben kann man ihn ja nicht als PWM nutzen (ausser einem sehr guten 
Layout). Da bleibt ja nur der Nutzen als Counter oder Input-Capture...
Aber hier drängt sich bei mir der Verdacht auf dass her AVR viel zu 
langsam ist um das zu verarbeiten.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Der tiny25 hat das.
Durch eine interne PLL kann er den Timer mit 64MHz bespaßen.
Zudem hat er noch einen Deadtimegenerator für Halbbrücken ansteuerung 
(zu jedem OCB gibts auch einen negierten).
ZUdem hat er noch nen ADC, der ist also wohl zum Regeln für PWM Krams 
entwickelt.

von Samuel S. (samuel)


Lesenswert?

Patrick B. schrieb:
> Samuel St. schrieb:
>> Wenn ich den 64Mhz Timer als Software-PWM verwenden würde bringt das ja
>> nicht so viel, da der Systemtakt bedeutend langsamer
>
> ??? Was? Ein AVR der einen Timer hat der mit 64MHz läuft und das
> schneller als der Systemtackt?? Seit wann gibts den das und wozu soll
> das gut sein?
>
> Da ja der Systemtackt max bei 20MHz liegt und die Pins auch parasitäre
> Cs haben kann man ihn ja nicht als PWM nutzen (ausser einem sehr guten
> Layout). Da bleibt ja nur der Nutzen als Counter oder Input-Capture...
> Aber hier drängt sich bei mir der Verdacht auf dass her AVR viel zu
> langsam ist um das zu verarbeiten.

Ja, ein paar Tinys (25,45,85 mit 8bit Timer, 261,461,861 mit einem 10bit 
Timer) und ich glaub die XAtmegas haben das jetzt auch. Der Takt für 
einen Timer kann auf 32Mhz/64Mhz geboostet werden. Basis dafür ist der 
interne 8Mhz Takt, unabhängig was man von außen als Takt anschließt.

von Patrick B. (p51d)


Lesenswert?

Martin Wende schrieb:
> der ist also wohl zum Regeln für PWM Krams
> entwickelt.

Ich habe noch nie Halb- und Vollbrücken mit >100kHz da die Motoren das 
swoieso nicht mitmachen.
Und im Normalfall ist ja der PWM nicht das Beschränkende für eine 
Regelung sondern vielmehr die Geschwindigkeit von ADC (je nachdem 
wieviele Kanäle wie genau eingelesen werden müssen) und die eigentliche 
Reglerfunktion z.B. PID.
Gut, mit 20MIPS kann man schon vieles machen. Interessanter Hinweis, mal 
wieder was dazu gelernt.

von Ulrich (Gast)


Lesenswert?

Man kann schon das schnelle 8 Bit PWM Signal zusätzlich in Software 
modulieren. Es gibt dann aber den Anteil bei niedriger Frequenz, wenn 
auch mit deutlich kleinerer Amplitude. Bei 64 MHz Timer und 16 Bit 
Auflösung wäre man da gerade bei rund 1 kHz.

Die Ausführung ist noch relativ einfach: Der PWM Wert wird zwischen 2 
Werten (N und N+1) im Wechsel umgeschaltet - am einfachsten im Timer 
Interrupt. Viele der Timer haben ein Pufferung für die PWM Werte, so das 
der neue Wert erst für den nächsten Zyklus aktiv wird - so kritisch ist 
das mit dem Timing also nicht, man hat aber nicht wirklich viel Zeit, 
denn 256 Zyklen bei 64 MHz sind nur 4 µS oder 64 Zyklen bei 16 MHz. In 
ASM sollte das aber reichen um den passenden Wert zu berechnen (geht 
ganz gut Sigmal Delta ähnlich durch aufsummieren und Entscheidung über 
den Überlauf).

Für die Lautstärke-einstellung wäre allerdings eher ein andere Kennlinie 
(z.B. exponetiell)  hilfreich, weniger mehr Stufen in linearer Teilung. 
Da es eher weniger um stabile Werte geht (der LDR ist auch recht 
Temperaturabhängig) sollte analog z.B. über Dioden gut zu realisieren 
sein. Alternativ wäre auch PWM mit einem mit der Zeit zunehmenden Strom 
möglich um so eine etwa Quadratische Kennlinie zu erreichen. Es bleibt 
dann zwar bei 256 Stufen, aber besser verteilt.

von Purzel H. (hacky)


Lesenswert?

>??? Was? Ein AVR der einen Timer hat der mit 64MHz läuft und das
schneller als der Systemtackt?? Seit wann gibts den das und wozu soll
das gut sein?


Aeh. So ganz nebenbei gibt es einen PIC, den dsPIC 30F2023, der hat eine 
PLL die kann man bis 480 MHz (!) aufdrehen, fuer genau diese Zwecke. Es 
zieht dann aber auch Unmengen an Strom...

von Samuel S. (samuel)


Lesenswert?

Ulrich schrieb:
> Man kann schon das schnelle 8 Bit PWM Signal zusätzlich in Software
> modulieren. Es gibt dann aber den Anteil bei niedriger Frequenz, wenn
> auch mit deutlich kleinerer Amplitude. Bei 64 MHz Timer und 16 Bit
> Auflösung wäre man da gerade bei rund 1 kHz.
>
> Die Ausführung ist noch relativ einfach: Der PWM Wert wird zwischen 2
> Werten (N und N+1) im Wechsel umgeschaltet - am einfachsten im Timer
> Interrupt. Viele der Timer haben ein Pufferung für die PWM Werte, so das
> der neue Wert erst für den nächsten Zyklus aktiv wird - so kritisch ist
> das mit dem Timing also nicht, man hat aber nicht wirklich viel Zeit,
> denn 256 Zyklen bei 64 MHz sind nur 4 µS oder 64 Zyklen bei 16 MHz. In
> ASM sollte das aber reichen um den passenden Wert zu berechnen (geht
> ganz gut Sigmal Delta ähnlich durch aufsummieren und Entscheidung über
> den Überlauf).
>
> Für die Lautstärke-einstellung wäre allerdings eher ein andere Kennlinie
> (z.B. exponetiell)  hilfreich, weniger mehr Stufen in linearer Teilung.
> Da es eher weniger um stabile Werte geht (der LDR ist auch recht
> Temperaturabhängig) sollte analog z.B. über Dioden gut zu realisieren
> sein. Alternativ wäre auch PWM mit einem mit der Zeit zunehmenden Strom
> möglich um so eine etwa Quadratische Kennlinie zu erreichen. Es bleibt
> dann zwar bei 256 Stufen, aber besser verteilt.

Das Schaltungsdesign ist so gedacht:
eine LED wird zwei gematchte LDRs beleuchten. Einer der LDRs hängt dann 
in der Analogschaltung (als Volume, EQ, was auch immer), der andere LDR 
wird per ADC überwacht. Dabei gehe ich davon aus das bei 
Temperaturveränderungen und Alterung sich die beiden LDRs ähnlich 
verhalten.
Im AVR wird hinterlegt ob der Widerstand linear oder "logarithmisch" 
(falls man das bei Potis überhaupt so nennen kann, eher linear mit 3 
Stufen) verlaufen soll.
Verinfacht gesagt wenn ich einen Linearen Widerstand bei 50% möchte, 
wird die LED so geregelt, dass am 10bit ADC 512 (2,5V) gemessen werden.
Im EEPROM werden die PWM Werte gespeichert sein, um dann später 
schneller den gewünschten Widerstand zu erreichen und nur noch 
feineinstellen zu müssen. Ich habe mir das so vorgestellt das es einen 
"Setup" Modus gibt, bei dem die PWM Werte ermittelt und ins EEPROM 
geschrieben werden.
Die Schaltung soll dann in beliebigen Röhrenverstärkern die 
Potentiometer austauschen können, ohne die Röhrenschaltung anpassen zu 
müssen.
Das ist so mal die ganz, ganz kurze Zusammenfassung.

Gruß,
Sammy

von Peter S. (cbscpe)


Lesenswert?

Der Tiny 85 hat doch 2 8-bit Timer. Warum addierst du die beiden PWM 
Signale nicht mit einem Widerstandsnetzwerk und teilst die Timer in Low 
und High Byte (oder was auch immer nötig ist, etwa 6+6bit) auf? Dann 
kann jeder mit der maximalen Frequenz laufen.

von Purzel H. (hacky)


Lesenswert?

>eine LED wird zwei gematchte LDRs beleuchten.

Zum Glueck beleuchtet die LED beide gleich stark...

von Samuel S. (samuel)


Lesenswert?

Peter Schranz schrieb:
> Der Tiny 85 hat doch 2 8-bit Timer. Warum addierst du die beiden PWM
> Signale nicht mit einem Widerstandsnetzwerk und teilst die Timer in Low
> und High Byte (oder was auch immer nötig ist, etwa 6+6bit) auf? Dann
> kann jeder mit der maximalen Frequenz laufen.

Das würde sicher gehen.
Allerdings habe ich bei meiner Schaltung dafür nicht mehr genug Pins 
frei.
Notfalls nehme ich einfach einen größeren Tiny / kleinen Atmega der 
direkt einen 16bit Timer hat. Allerdings würde dadurch die Platine etwas 
größer werden, was ich versuchen wollte zu vermeiden.
Aber vielleicht ist das wirklich das einfachste einen Attiny84 zu nehmen 
und den mit 20Mhz und 16bit Timer nutzen.

von Konrad S. (maybee)


Lesenswert?


von Samuel S. (samuel)


Lesenswert?

Konrad S. schrieb:
> Du hast das gesehen?
> Beitrag "Re: Attiny85 mit 64Mhz PLL mehr als 8 bit Halb-Hardware PWM?"

Hi Konrad,

ja, danke, den Artikel habe ich gesehen.
Danke!

von Samuel S. (samuel)


Lesenswert?

Siebzehn mal Fuenfzehn schrieb:
>>eine LED wird zwei gematchte LDRs beleuchten.
>
> Zum Glueck beleuchtet die LED beide gleich stark...

sicherlich nicht 100%, aber ausreichend genau bekommt man das denke ich 
für meinen Anwendungsfall schon hin.
Die meisten LEDs haben einen Abstrahlwinkel von 20 oder 30 Grad. Wenn 
ich die LDRs schräg von zwei Seiten oben an die LED anbringe (im 
gleichen Winkel), sollte das Licht sich schon annähernd gleichmäßig.

Die ganzen Potentiometer haben ja auch keine genaue Kennlinie und acuh 
Fertigungstoleranzen. Wenn ich mir auch so manche Schaltpläne anschaue, 
von großen Firmen die ähnliches analog gesteuert gebaut haben, ist das 
bei denen auch kein hochpräzises regeln.

von Julian B. (julinho)


Lesenswert?

Der Tiny85 kann 10bit in Hardware bei 64Mhz, um die Ausgangsfrage zu 
beantworten.

von Konrad S. (maybee)


Lesenswert?


von Samuel S. (samuel)


Lesenswert?

Julian Baugatz schrieb:
> Der Tiny85 kann 10bit in Hardware bei 64Mhz, um die Ausgangsfrage zu
> beantworten.

Das wäre ja super. Wo hast du die Info her?
In meinem Datenblatt steht nur was von 8bit. 10bit ist der Prescaler vom 
Timer1 und der Adc ist auch 10bit.

Gruß,
Sammy

von Julian B. (julinho)


Lesenswert?

Sorry mein Fehler! Der attiny 2/4/861 kann 10Bit bei 64MHz, habe ich 
verwechselt.

von Konrad S. (maybee)


Lesenswert?

Samuel St. schrieb:
> ja, danke, den Artikel habe ich gesehen.

Evtl. könntest du dir auch den Code anschauen. Da findest du eine 16-Bit 
PWM, die mit zwei 8-Bit-Timern realisiert wird.

von Samuel S. (samuel)


Lesenswert?

Julian Baugatz schrieb:
> Sorry mein Fehler! Der attiny 2/4/861 kann 10Bit bei 64MHz, habe ich
> verwechselt.

schade :(

von Julian B. (julinho)


Lesenswert?

Wenn Du den TOV- Interrupt benutzt, dann könntest Du die restlichen Bits 
durch ein und Ausschalten des Timers erreichen.
Du hast dann(8Mhz/256)  pro ISR 32 Befehle, in Assembler sollte das 
reichen.

von Peter D. (peda)


Lesenswert?

Samuel St. schrieb:
> Ich möchte halt eine bestehende Schaltung ohne weitere Änderung damit
> ausstatten können. Es gibt zwar Designs, bei denen man das auch mit ICs
> machen kann, in meinem Fall liegen bei Bass/Middle/Treble allerdings
> höhere Spannungen an als die ICs vertragen können.

Ich hab mir kürzlich nen neuen Receiver gekauft, seitdem bin ich Fan von 
elektronischer Regelung.
Das Poti (Encoder) ist sowas von perfekt logarithmisch, dagegen kann ich 
den alten mit Motorpoti komplett in die Tonne kloppen.
Und auch die neuen Boxen haben so einen guten Klang, da bleiben 
Bass/Treble in Mittelstellung.

Ich würde auf keinen Fall die PWM-HF auf die LEDs geben, es könnte Dir 
sehr leicht die Tweeter killen.
Wenn schon, dann würde ich die LEDs mit Konstantstrom aus 16Bit-DACs 
speisen, die kosten auch nicht mehr die Welt.
Z.B. der AD5689 kostet bei Farnell 5,41€ ab 10 Stück und enthält 2 DACs 
mit SPI-Interface.

von Samuel S. (samuel)


Lesenswert?

Peter Dannegger schrieb:
> Samuel St. schrieb:
>> Ich möchte halt eine bestehende Schaltung ohne weitere Änderung damit
>> ausstatten können. Es gibt zwar Designs, bei denen man das auch mit ICs
>> machen kann, in meinem Fall liegen bei Bass/Middle/Treble allerdings
>> höhere Spannungen an als die ICs vertragen können.
>
> Ich hab mir kürzlich nen neuen Receiver gekauft, seitdem bin ich Fan von
> elektronischer Regelung.
> Das Poti (Encoder) ist sowas von perfekt logarithmisch, dagegen kann ich
> den alten mit Motorpoti komplett in die Tonne kloppen.
> Und auch die neuen Boxen haben so einen guten Klang, da bleiben
> Bass/Treble in Mittelstellung.
>

wenn ich eine hohe Auflösung zum kontrollieren der LED habe erhoffe ich 
mir die Kennlinien des simulierten Potis auch besser steuern zu können 
und z.B. einen wirklich logarithmischen Lautstärkepoti zu haben. 
Theoretisch müsste das ja gehen, das hängt denke ich eher vom LDR Typen 
ab. Da muss ich noch etwas rumexperimentieren welche sich am besten 
eignen.

> Ich würde auf keinen Fall die PWM-HF auf die LEDs geben, es könnte Dir
> sehr leicht die Tweeter killen.
> Wenn schon, dann würde ich die LEDs mit Konstantstrom aus 16Bit-DACs
> speisen, die kosten auch nicht mehr die Welt.
> Z.B. der AD5689 kostet bei Farnell 5,41€ ab 10 Stück und enthält 2 DACs
> mit SPI-Interface.

Danke für den Tipp, ich gehe dem mal nach.
Kennst du zufällig noch andere, günstigere Alternativen?
Welche Features meinst du sollte der DAC haben / nicht haben?

Gruß,
Sammy

von Andreas (Gast)


Lesenswert?

Hi,
ein paar Überlegungen meinerseits:

1. ein Poti ist ein veränderbarer Spannungsteiler - also braucht man 
zwei LDRs, die gegensätzlich angesteuert werden und dem Eingang immer 
einen quasi konstanten Widerstand präsentieren.
Und wie erreicht man einen 0 Ohm Wert? Aber vielleicht habe ich auch das 
Prinzip der Schaltung missverstanden.

2. 8-10kHz PWM reichen doch vollkommen aus? Ein gut dimensioniertes 
RC-Glied mit einem "großem" C, dessen Größe nur durch die angepeilte 
"Dreh"-Geschwindigkeit begrenzt ist und diese würde im Bereich von 100Hz 
bis 1kHz liegen. (Oder anders ausgedrückt - bei 100Hz kann ein anderer 
Wert in 1/100Sek erreicht werden!) - so hat man quasi Gleichspannung die 
man schnell verändern kann. Die Idee mit dem DAC ist auch nicht 
schlecht, man braucht aber Zusatzchip und Kleinkram.

3. Die Überwachung der LED ist meiner Meinung nach unnötig, es ist ja 
kein Präzisionsmessgerät. Die Alterung kann vernachlässigt werden, da 
die ja sehr langsam stattfindet und da sind die zu ersetzenden Potis 
viel schlimmer, was Toleranzen angeht.
Bleibt nur die Temperaturabhängigkeit, aber ob das wirklich sooo schlimm 
ist kann man nur praktisch ermitteln.

MfG,
Andreas

von Samuel S. (samuel)


Lesenswert?

Andreas schrieb:
> Hi,
> ein paar Überlegungen meinerseits:
>
> 1. ein Poti ist ein veränderbarer Spannungsteiler - also braucht man
> zwei LDRs, die gegensätzlich angesteuert werden und dem Eingang immer
> einen quasi konstanten Widerstand präsentieren.
> Und wie erreicht man einen 0 Ohm Wert? Aber vielleicht habe ich auch das
> Prinzip der Schaltung missverstanden.
>

korrekt. Ein Poti soll bei mir mit 4 LDRs / 2 LEDs nachgebildet werden.
Eine LED beleuchtet jeweils möglichst gleichmäßig zwei gematchte LDRs.
jeweils ein LDR pro LED hängt am ADC zur Überwachung des erreichten 
Widerstandes, der andere dann in der Schaltung.
Das kann also klassich als Poti verwendet werden, oder als zwei 
unabhängige Widerstände.

> 2. 8-10kHz PWM reichen doch vollkommen aus? Ein gut dimensioniertes
> RC-Glied mit einem "großem" C, dessen Größe nur durch die angepeilte
> "Dreh"-Geschwindigkeit begrenzt ist und diese würde im Bereich von 100Hz
> bis 1kHz liegen. (Oder anders ausgedrückt - bei 100Hz kann ein anderer
> Wert in 1/100Sek erreicht werden!) - so hat man quasi Gleichspannung die
> man schnell verändern kann. Die Idee mit dem DAC ist auch nicht
> schlecht, man braucht aber Zusatzchip und Kleinkram.

die Idee mit dem DAC gefällt mir auch gut, allerdings sind die mit 16bit 
Auflösung doch recht teuer und ich wollte pro Poti versuchen unter 5 Eur 
zu bleiben.

Heute habe ich noch mal eine Testschaltung aufgebaut,allerdings ganz 
einfach ohne Tiefpass. Einfach AVR - LED - Vorwiderstand - VCC. Ich 
werde als nächsten Schritt einen Tiefpass hinzufügen.
Problematisch ist bei mir aktuell eher das einstellen großer 
Widerstandswerte, annähernd 0 Ohm ist gar kein Problem. Ohne Tiefpass 
ist die Schaltung sehr empfindlich was die PWM Frequenz angeht, bei 
hohen Frequenzen erreiche ich aktuell nur kleine Widerstandswerte, bei 
kleinen PWM Frequenzen springen die Widerstandswerte hin und her. Das 
ist aber ja eigentlich auch so zu erwarten.
Ich habe bisher nicht so viel Erfahrung wie problematisch die PWM 
Frequenz für das Audiosignal ist. Nur daher war meine Überlegung eine 
hohe PWM Frequenz zu nehmen welches man nicht mehr hören kann. Sonst 
reichen sicher auch niedrige Frequenzen.

>
> 3. Die Überwachung der LED ist meiner Meinung nach unnötig, es ist ja
> kein Präzisionsmessgerät. Die Alterung kann vernachlässigt werden, da
> die ja sehr langsam stattfindet und da sind die zu ersetzenden Potis
> viel schlimmer, was Toleranzen angeht.
> Bleibt nur die Temperaturabhängigkeit, aber ob das wirklich sooo schlimm
> ist kann man nur praktisch ermitteln.
>
> MfG,
> Andreas

Die Temperaturen ändern sich schon "stark" in einer Röhrenschaltung, die 
meiste Energie geht ja in die Röhrenheizung...
Durch die Regelung habe ich mir erhofft den Widerstandsverlauf 
automatisch einstellen zu können:
Den ADC mit dem LDR lasse ich über einen Spannungsteiler laufen. Anhand 
der Auswahl des Widerstandes am Spannungsteiler kann ich den Verlauf des 
Widerstandes steuern. D.h. wenn ich einen 50k Widerstand wähle wird der 
komplette Widerstandsverlauf anders ausfallen als z.B. bei 100k. Somit 
brauche ich dann nur die Kurve (linear, logarithmisch etc.) vorgeben, 
die der AVR simulieren soll.
Wenn ich das nicht hätte müsste ich jeden LDR einzeln ausmessen und 
individuell die PWM Werte für die gewünschte Kurve/Werte ermitteln. Das 
möchte ich so weit wie möglich vermeiden durch ein sich selbst regelndes 
System. Somit erreiche ich auch immer ziemlich ähnliche Werte egal ob 
sich die Temperatur ändert oder die Bauteile altern oder oder oder...
Das ganze soll zwar kein Präzisionsregelwerk werden, aber zumindest so 
grob erhoffe ich mir schon reproduzierbare ergebnisse in 
Unterschiedlichen Bedingungen.

Gruß,
Sammy

von spess53 (Gast)


Lesenswert?

Hi

>Ich habe bisher nicht so viel Erfahrung wie problematisch die PWM
>Frequenz für das Audiosignal ist. Nur daher war meine Überlegung eine
>hohe PWM Frequenz zu nehmen welches man nicht mehr hören kann. Sonst
>reichen sicher auch niedrige Frequenzen.

Fotowiderstände reagieren auf Beleuchtungsänderungen maximal im 
ms-Bereich. PWM-Frequenzen oberhalb des hörbaren Bereichs sind daher 
unnötig.

von Samuel S. (samuel)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Ich habe bisher nicht so viel Erfahrung wie problematisch die PWM
>>Frequenz für das Audiosignal ist. Nur daher war meine Überlegung eine
>>hohe PWM Frequenz zu nehmen welches man nicht mehr hören kann. Sonst
>>reichen sicher auch niedrige Frequenzen.
>
> Fotowiderstände reagieren auf Beleuchtungsänderungen maximal im
> ms-Bereich. PWM-Frequenzen oberhalb des hörbaren Bereichs sind daher
> unnötig.

Ja, das stimmt.
Ich weiß nur nicht wie das bei niedrigen Frequenzen mit den 
Audiosignalen und Störungen aussieht. Damit habe ich mich bisher kaum 
beschäftigen müssen.

von Samuel S. (samuel)


Lesenswert?

Hi,

also bei meinen Testreihen kann mit den LDRs (GL5549) sehr präzise Werte 
kleine Widerstände einstellen. Schwierig wird es größere gezielt zu 
erreichen.
Ohne Filterung geht es mit einer "niedrigen" PWM Frequenz besser als mit 
einer hohen einen großen Bereich erreichen zu können.
Ich muss unbedingt einen Tiefpass bauen, dummerweise habe ich nicht die 
passenden Bauteile mitbestellt... ahrg... (bin gerade in China und habe 
nicht meine normalen Bastelsachen hier) Mist!

von Samuel S. (samuel)


Lesenswert?

So also zusammengefasst meine Erkenntnisse der letzten Experimente:

- große Widerstandswerte sind schwierig zu erreichen, geschätzt 80% der 
PWM Zeit reicht gerade für den Bereich 0-20kOhm, die restlichen 20% 
decken den kompletten größeren Bereich ab. Daher habe ich den 
Vorwiderstand der LED deutlich erhöht, damit die LED insgesamt dunkler 
ist.
- Beste Ergebnisse hatte ich mit einer Timerfrequenz von 1Mhz, dabei ist 
das blinken/flackern allerdings sehr sehr deutlich wahrnehmbar. Weit 
darunter darf die Frequenz auch nicht sinken, da der LDR dann schneller 
reagiert als die LED blinkt und die Widerstandswerte massiv springen. 
Als Vorwiderstand bin ich nun im niedrigen einstelligen kOhm Bereich, 
sonst ist die orangene LED einfach zu hell.
- problematisch an der niedrigen Frequenz ist allerdings das geblinke 
was bei hohen Widerstandswerten zu Schwankungen von ca. 10% des Wertes 
führt.

Hier wäre wirklich die Lösung per DAC einfacher, allerdings auch sehr 
viel teurer, wenn ich nicht noch ein günstiges IC finde.
Ansonsten bleibt mir wohl nur das ganze noch etwas versuchen zu filtern 
und weiter mit PWM Frequenz und Vorwiderstand zu experimentieren.
Wie kritisch denkt ihr sind die Störgeräusche durch die PWM Frequenz im 
Audiosignal? Muss ich da viel PWM Filteraufwand für betreiben oder 
könnte das auch komplett ohne Filterung funktionieren?

Bastlergruß,
Samuel

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
Noch kein Account? Hier anmelden.