Forum: Analoge Elektronik und Schaltungstechnik PWM Frequenzteiler in Hardware?


von M. G. (ixil96)


Lesenswert?

Hallo,

ich suche eine "einfache" Lösung wie ich ein 100kHz PWM Signal auf ein 
PWM Signal mit einer Frequenz von 10 bis 20kHz per Hardware herunter 
teilen kann.

von Stefan F. (Gast)


Lesenswert?

Einfach "herunter teilen" wird nicht gehen.

Dazu fällt mir spontan nur ein Mikrocontroller ein. Ein Timer misst das 
Eingangssignal und ein anderer Timer erzeugt das übersetzte 
Ausgangssignal. Ich würde es mit einem ATtiny25 versuchen.

von M. G. (ixil96)


Lesenswert?

Stefan ⛄ F. schrieb:
> Einfach "herunter teilen" wird nicht gehen.
>
> Dazu fällt mir spontan nur ein Mikrocontroller ein. Ein Timer misst das
> Eingangssignal und ein anderer Timer erzeugt das übersetzte
> Ausgangssignal. Ich würde es mit einem ATtiny25 versuchen.

Ich brauche hier eine reine Hardware Lösung. Irgendwie mit Gatter oder 
FlipFlops.

von Stefan F. (Gast)


Lesenswert?

M. G. schrieb:
> Ich brauche hier eine reine Hardware Lösung. Irgendwie mit Gatter oder
> FlipFlops.

Eine analoge Lösung könnte ich mir vorstellen, ist aber aufwändig:

Du machst aus dem Eingangssignal mittels R/C Tiefpass eine analoge 
Spannung von z. 0-5V. Diese vergleichst du mit einem Sägezahn (10kHz 
5V). Der Ausgang des Komparators liefert das neue PWM Signal.

von Teo D. (teoderix)


Lesenswert?

M. G. schrieb:
> Ich brauche hier eine reine Hardware Lösung. Irgendwie mit Gatter oder
> FlipFlops.

Das wird ein FPGA Projekt oder ein enormes IC-Grab... Gräberfeld!

von Thomas R. (analogfreak)


Lesenswert?

Siehe TTL 7497 für 6 Bit. Für 12 Bit zwei kaskadieren

von Josef L. (Gast)


Lesenswert?

Ich denke du brauchst einmal einen Zähler (Teiler : n, n=10, 12 oder 16) 
und einen Integrator, der während des Zählens die Dauer der n Pulse 
addiert / mittelt. Der müsste dann fürs Ausgangssignal des Teilers die 
Pulslänge bestimmen, d.h. nach n Impulsen geht das Ausgangssignal auf 1 
und nach der bestimmten Integrationszeit wieder auf 0. Währenddessen 
muss aber schon wieder neu integriert werden, die Pulslänge könnte sich 
ja geändert haben...

Ich kann ja mal in den Elektor-Halbleiterheften nach sowas fahnden.

von Teo D. (teoderix)


Lesenswert?

Stefan ⛄ F. schrieb:
> Du machst aus dem Eingangssignal mittels R/C Tiefpass eine analoge
> Spannung von z. 0-5V. Diese vergleichst du mit einem Sägezahn (10kHz
> 5V). Der Ausgang des Komparators liefert das neue PWM Signal.

Etwas über den Telerand gegugt und schon klappt das. +1 :D

von m.n. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Eine analoge Lösung könnte ich mir vorstellen, ist aber aufwändig:

Was soll denn daran aufwendig sein?
Bei 100 kHz PWM kann die Zeitkonstante zum Integrieren sehr klein sein, 
ein leichter Jitter stört nicht weiter. Ein doppelter Komparator (LM393, 
o.ä.) erzeugt zum einen eine Dreieckkurve und zum anderen dann auch das 
neue PWM-Signal.

von Stefan F. (Gast)


Lesenswert?

m.n. schrieb:
> Was soll denn daran aufwendig sein?

Zumindest ich bräuchte von der Idee zur finalen Umsetzung bestimmt 10x 
so lange, als einen Attiny zu programmieren. Bin total aus der Übung, 
was analoge Sachen angeht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

M. G. schrieb:
> Ich brauche hier eine reine Hardware Lösung. Irgendwie mit Gatter oder
> FlipFlops.
Dann fällt die analoge Lösung schon mal flach...
Und es stellen sich die Fragen:
- Wie genau muss die PWM auflösen?
- Wie stabil sind die 100kHz?
- Muss die Ausgabefrequenz einstellbar sein? Falls ja: in welchen 
Schritten?

Alternativ könntest du ja auch einfach beschreiben, was du machen 
willst, woher die 100kHz kommen und wohin die 10kHz gehen...

: Bearbeitet durch Moderator
von m.n. (Gast)


Lesenswert?

Lothar M. schrieb:
> Irgendwie mit Gatter oder
>> FlipFlops.
> Dann fällt die analoge Lösung schon mal flach...

Wieso das denn? Da steht Gatter oder FF.
Er kann doch ein Gatter nehmen, um Eingangs- und/oder Ausgangssignal auf 
passende Pegel zu bringen. Oder XOR zum wahlweisen invertieren oder 
nicht.

> Alternativ könntest du ja auch einfach beschreiben, was du machen
> willst, woher die 100kHz kommen und wohin die 10kHz gehen...

Wieso 10 kHz? Die Anforderung ist doch "ganz klar"
> mit einer Frequenz von 10 bis 20kHz.
Ich tippe mal auf 15,625 kHz ;-)

Stefan ⛄ F. schrieb:
> Zumindest ich bräuchte von der Idee zur finalen Umsetzung bestimmt 10x
> so lange, als einen Attiny zu programmieren.

Dann verrate doch mal, wie Du mit einem ATtiny die 100 kHz PWM mit 
hinreichender Auflösung erfasst? Wobei "hinreichend" natürlich erst am 
Freitag verraten wird.

von Josef L. (Gast)


Lesenswert?

Das gabs hier schonmal unter:
Beitrag "Frequenzteilung mit gleichen Tastverhältnis"

Und auch anderswo wurde eine ähnliche Frage gestellt, mit einer 
ansatzweisen Lösungsidee:
https://forum.electronicwerkstatt.de/phpBB/Projekte_im_Selbstbau/pwm_signal_und_frequenzteiler_z_b_100_1-t91542f34_bs0.html

Also ganz analog ein 555, der auf einer beliebigen, nicht an die 
Eingangsfrequenz gekoppelten Frequenz schwingt und dessen Pulsdauer von 
der analog gemittelten PWM-Eingangsspannung abhängt. Das ist aber keine 
100% Umsetzung des Eingangssignals, man kann es nur so in etwa hinbiegen 
und muss das Tastverhältnis eichen, Genauigkeit hängt vom Integrator und 
der Frequenzstabilität der Bauteile (555, Integrator) ab.

Digital: mit digitalem Teiler, wobei die Pulsdauer digital gesteuert 
wird über Zeitmessung der Pulsdauer (Abtatsung mit hoher Frequenz). Da 
habe ich aber auch keine Ahnung im Moment wie das zu realisieren wäre.

In den Elektor-Halbleiterheften 1977/79/81-95/97/99 (+ Digibuch 2 von 
1976) nichts passendes gefunden :-(

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

> TTL 7497
Wie soll ein Bit-Rate-Multiplier das erledigen? Mit den 6 Bit 
Ansteuerung wird eine Art PWM erzeugt, ziemlich verjittert.
https://www.ti.com/product/SN7497
Der wird tatsächlich noch produziert, den 74167 gibt es anscheinend 
nicht mehr.
Am Ausgang kommen n-aus-64 Impulse heraus, nach einem Tiefpass ergibt 
das eine Gleichspannung ähnlich der üblichen PWM.

von Andreas (Gast)


Lesenswert?

Lothar M. schrieb:
>> Ich brauche hier eine reine Hardware Lösung. Irgendwie mit Gatter oder
>> FlipFlops.
> Dann fällt die analoge Lösung schon mal flach...

Seit wann sind analoge Bausteine keine Hardware mehr

von Stefan F. (Gast)


Lesenswert?

m.n. schrieb:
> Dann verrate doch mal, wie Du mit einem ATtiny die 100 kHz PWM mit
> hinreichender Auflösung erfasst? Wobei "hinreichend" natürlich erst am
> Freitag verraten wird.

Darüber denke ich später nach wenn das Kind schon in den Brunnen 
gefallen ist :-)

Will sagen: Ja, du hast einen entscheidenden Knackpunkt genannt.

von Peter D. (peda)


Lesenswert?

m.n. schrieb:
> Dann verrate doch mal, wie Du mit einem ATtiny die 100 kHz PWM mit
> hinreichender Auflösung erfasst?

Mit F_CPU = 10MHz kann man 1% schaffen.
Eine analoge Lösung (PWM->U, U->PWM) auf 1% stabil, ist schon sportlich.

von M. G. (ixil96)


Lesenswert?

Also konkret geht es um folgendes:

Ich habe in einer bestehenden Schaltung einen I²C/PWM Treiber (PCA9624) 
welcher auf 8 Kanälen eine entsprechende PWM mit einer fixen PWM 
Frequenz von 97kHz liefert. Über 2 Kanäle muss ich nun zusätzlich zwei 
BLDC Motoren mit eingebauter Steuerelektronik anschließen. Die Drehzahl 
dieser Motoren wird mittels PWM (10kHz...max. 20kHz) gesteuert.

von Stefan F. (Gast)


Lesenswert?

Für die Motoren reichen vermutlich sowohl die 1% mit ATtiny als auch die 
analoge Lösung.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Es wäre vielleicht einfacher, den I2C-Bus zu belauschen und die 10 kHz 
PWM mit dieser Info zu erzeugen. Das könnte auch der ATtiny erledigen.

von m.n. (Gast)


Lesenswert?

Peter D. schrieb:
>> Dann verrate doch mal, wie Du mit einem ATtiny die 100 kHz PWM mit
>> hinreichender Auflösung erfasst?
>
> Mit F_CPU = 10MHz kann man 1% schaffen.

Bei 1% Tastverhältnis ist die EIN-Zeit 0,1 µs und die AUS-Zeit 9,9 µs. 
Da scheint es mir eher sportlich die 0,1 µs zu erkennen.

> Eine analoge Lösung (PWM->U, U->PWM) auf 1% stabil, ist schon sportlich.

Das sehe ich nicht so. Stichwort: ratiometrisch.
Die geglättete PWM, die Erzeugung des Dreiecksignals und der 
Ausgangskomparator beziehen sich auf die Versorgungsspannung der 
Schaltung. Somit besteht hier (in Grenzen) keine Abhängigkeit von der 
Betriebsspannung. Daß die Frequenz des Dreiecksignals oder die Symmetrie 
ein wenig mit der Temperatur driften, ist für das Tastverhältnis der PWM 
unerheblich.

M. G. schrieb:
> Die Drehzahl
> dieser Motoren wird mittels PWM (10kHz...max. 20kHz) gesteuert.

Als Erstes würde ich probieren, ob es nicht auch noch mit 100 kHz 
funktioniert. Es kann natürlich sein, das die Eingangsschaltung 
(Optokoppler?) zu langsam ist.

Als Zweites würde ich nach einem Analog-Eingang bei der Steuerung 
suchen. Intern wird die PWM vermutlich eh analog verarbeitet.

Und als Drittes wäre die "einfache" Lösung wohl eine µC-Schaltung, wobei 
der Controller per internen Timern die Signale sehr genau umsetzen kann.
Stichwort: STM32 "PWM input mode".

von Dirk S. (dirkst)


Lesenswert?

Gruss

Im Analogen wäre das eine triggerbare und zurücksetzbare lineare 
Integration, allerding 100kHZ, reaktiv sample and hold mit der langen 
Periodendauer
noch mal linear Integrieren, auch rücksetzbar, bis zum hold Wert
und dann noch in Rechteckform umsetzen.

Mit Gruss
Dirk St

von Solfit (Gast)


Lesenswert?

könnte mit einem D-Flipflop und nem 80kHz Oszillator schon gehen.

von Peter D. (peda)


Lesenswert?

M. G. schrieb:
> Ich habe in einer bestehenden Schaltung einen I²C/PWM Treiber (PCA9624)
> welcher auf 8 Kanälen eine entsprechende PWM mit einer fixen PWM
> Frequenz von 97kHz liefert.

Sicher, d.h. machst Du die Ansteuerung selbst?
Der IC hat nämlich 2 PWMs, die sich überlagern können. Eine mit 97kHz 
und eine mit 190Hz.
Siehe Fig 7.Brightness + Group Dimming signals

von Dietrich L. (dietrichl)


Lesenswert?

M. G. schrieb:
> BLDC Motoren mit eingebauter Steuerelektronik anschließen. Die Drehzahl
> dieser Motoren wird mittels PWM (10kHz...max. 20kHz) gesteuert.

Bist du sicher, dass es PWM sein muss? Könnte es auch mit Gleichspannung 
gehen? Dann würde ein Tiefpass reichen.

Ich denke deshalb daran, weil es z.B. Dimmer gibt, die entweder mit 
Gleichspannung oder mit PWM gesteuert werden können. Da ist der 
Tiefpass wohl schon eingebaut, wodurch sich dann auch die niedrigste 
PWM-Frequenz ergibt.

von Peter D. (peda)


Lesenswert?

m.n. schrieb:
> Bei 1% Tastverhältnis ist die EIN-Zeit 0,1 µs und die AUS-Zeit 9,9 µs.
> Da scheint es mir eher sportlich die 0,1 µs zu erkennen.

Nahe den Rails würde ich einfach auf 0% bzw. 100% runden.
Ein Motor würde bei 1% eh stehen bleiben und den Unterschied von 99% auf 
100% Drehzahl merkt eh keiner.

von m.n. (Gast)


Lesenswert?

Peter D. schrieb:
> Ein Motor würde bei 1% eh stehen bleiben und den Unterschied von 99% auf
> 100% Drehzahl merkt eh keiner.

Das Schöne an BLDC-Motoren ist ihre Drehzahldynamik - von gaaaanz 
laaangsaaam bis gz snl ;-)

von Helge (Gast)


Lesenswert?

Die 97kHz durch 16 teilen. Damit ist das Verhältnis Eingang zu Ausgang 
fest und es entsteht kein jitter. Mit den 97kHz/16 eine Dreieckspannung 
erzeugen.

PWM -> analogwert -> komparator wurde schon empfohlen.

von Firlefanz (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Zumindest ich bräuchte von der Idee zur finalen Umsetzung bestimmt 10x
> so lange, als einen Attiny zu programmieren. Bin total aus der Übung,
> was analoge Sachen angeht.

Das hat man bei Dir schon in den letzten Diskussionen gemerkt.

Stefan ⛄ F. schrieb:
> Eine analoge Lösung könnte ich mir vorstellen, ist aber aufwändig:
>
> Du machst aus dem Eingangssignal mittels R/C Tiefpass eine analoge
> Spannung von z. 0-5V. Diese vergleichst du mit einem Sägezahn (10kHz
> 5V). Der Ausgang des Komparators liefert das neue PWM Signal.

Schlimmer gehts nimmer !!!

M. G. schrieb:
> Also konkret geht es um folgendes:
>
> Ich habe in einer bestehenden Schaltung einen I²C/PWM Treiber (PCA9624)
> welcher auf 8 Kanälen eine entsprechende PWM mit einer fixen PWM
> Frequenz von 97kHz liefert. Über 2 Kanäle muss ich nun zusätzlich zwei
> BLDC Motoren mit eingebauter Steuerelektronik anschließen. Die Drehzahl
> dieser Motoren wird mittels PWM (10kHz...max. 20kHz) gesteuert.

Wenn es 12V Logic ist : CMos 40.... Teiler/Zähler Schieberegister
wenn es 5V Logic ist : TTL  z.B. 7473 - Flip/Flop, oder über Zähler 
z.B.74192

Klingt aber nach fast  1 zu 5?!

Welches Verhältnis nun?

von m.n. (Gast)


Lesenswert?

Firlefanz schrieb:
> Wenn es 12V Logic ist : CMos 40.... Teiler/Zähler Schieberegister
> wenn es 5V Logic ist : TTL  z.B. 7473 - Flip/Flop, oder über Zähler
> z.B.74192

Es geht nicht um die Versorgungsspannung, sondern um das reproduzierte 
Tastverhältnis bei tieferer Frequenz.
Wie man sehen kann, funktioniert Deine Schaltung nicht. Man kann sie 
auch als sinnfrei bezeichnen.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Nochmal mein Vorschlag:
https://www.mikrocontroller.net/part/PCA9624
der I2C-bus-Chip ist gut dokumentiert, es sollte also möglich sein, 
seine Datenkommunikation zu belauschen und völlig unabhängig von seiner 
Reaktion die beiden Schrittmotoren mit einer 10 kHz PWM zu bedienen. 
Alles andere ist deutlich komplizierter.

von Stefan F. (Gast)


Lesenswert?

Firlefanz schrieb:
> Schlimmer gehts nimmer !!!

Wärst du bitte mal so freundlich, deinen Lösungsansatz mit Logikgattern 
und Zählern wenigstens grob zu skizzieren? Ich kann dir nämlich nicht 
folgen. Ich bin wohl viel zu dumm, den Sinn in deinen hochwertigen 
Ausführungen zu erkennen. Aber Bilder sind mein Ding, damit kann ich was 
anfangen (im Ernst).

von MaWin (Gast)


Lesenswert?

M. G. schrieb:
> Hallo,
> ich suche eine "einfache" Lösung wie ich ein 100kHz PWM Signal auf ein
> PWM Signal mit einer Frequenz von 10 bis 20kHz per Hardware herunter
> teilen kann.

1
+-------------------------+---+---- +U 
2
 |                         |   |
3
 |  +--------+             |   |
4
10k |        |             |   |
5
 |  |       10k          100k   |
6
 +--+--|+\   |             |   |
7
 |     |  >--+             |   |
8
 |  +--|-/   |             |   | 
9
 |  | TS912 10k  v --100k--+--|+\ 
10
 |  |        |             |  |  >--out
11
 |  +--------+-------------(--|-/ 
12
 |           |             |   |        
13
10k        470nF           X   |         
14
 |           |             |   |         
15
 +-----------+-------------+--- GND
An Position X kommen 100k parallel geschaltet mit 1uF hin, an v wird das 
100kHz PWM Signal (0V/+Ub) eingespeist, der 470nF bestimmt die PWM 
Frequenz des erzeugten Signals.

von Teo (Gast)


Lesenswert?

m.n. schrieb:
> Firlefanz schrieb:
>> Wenn es 12V Logic ist : CMos 40.... Teiler/Zähler Schieberegister
>> wenn es 5V Logic ist : TTL  z.B. 7473 - Flip/Flop, oder über Zähler
>> z.B.74192
>
> Es geht nicht um die Versorgungsspannung, sondern um das reproduzierte
> Tastverhältnis bei tieferer Frequenz.
> Wie man sehen kann, funktioniert Deine Schaltung nicht. Man kann sie
> auch als sinnfrei bezeichnen.

Ach was, das ist eine bewerte Schaltungstechnik, um aus kruden 
Tastgraden/Jitter, immer 50/50 zu machen. :D

von Teo (Gast)


Lesenswert?

Teo schrieb:
> immer 50/50 zu machen

Bei halber Frequenz natürlich.

von H. H. (Gast)


Lesenswert?

Teo schrieb:
> Ach was, das ist eine bewerte Schaltungstechnik, um aus kruden
> Tastgraden/Jitter, immer 50/50 zu machen. :D

Eine PWF-Schaltung!

von Josef L. (Gast)


Lesenswert?

Schon mit dem simplen uralt-IC 7490 (und den entsprechenden moderneren 
Varianten gehen alle Teilfaktoren 1:2-10, siehe dazu die Schaltungen Nr. 
65-73 in der UK-Ausgabe von Elektor 1975/07-08

https://worldradiohistory.com/UK/Elektor/70s/Elektor-1975-07-08.pdf

Das sind dann jeweils unterschiedliche Tastverhältnisse, aber das ist ja 
egal, die benötigte Schaltung braucht ja nur eine Flanke.

von Michael M. (Firma: Autotronic) (michael_metzer)


Angehängte Dateien:

Lesenswert?

Am einfachsten geht es mit einem Dual-Gate-Feldeffekt-Transistor. Man 
müsste nur irgendwie die Summenfrequenz von 190kHz am Ausgang 
rausfiltern, ohne dass die Flanken von den 10kHz in Mitleidenschaft 
gezogen werden.

von Wolfgang (Gast)


Lesenswert?

M. G. schrieb:
> Ich brauche hier eine reine Hardware Lösung. Irgendwie mit Gatter oder
> FlipFlops.

Warum mit Gattern und Flipflops?

Ein 4-fach OP und ein bisschen Hühnerfutter dürfte reichen. Wäre das 
keine reine Hardware?
Es kommt allerdings ein bisschen drauf an, welche Anforderungen du genau 
stellst (Frequenzgenauigkeit, Toleranz im Tastgrad, Reaktionszeit bei 
Tastgradänderung, ...).

von Josef L. (Gast)


Lesenswert?

Michael M. schrieb:
> Man müsste nur irgendwie die Summenfrequenz von 190kHz am Ausgang
> rausfiltern

Das 100kHz-Signal ist doch keine Wechselspannung, es sind Rechteckpulse, 
die in 10µs aufeinanderfolgen. Es ist kein Sinus! Es ist eine Mischung 
aus der Grundfrequenz und zig Oberwellen bis zur Grenze, die die 
Flankensteilheit hergibt! Mit was für 90kHz willst du mischen? Sinus? 
Rechteck? Bei Rechteck ist es ein Chopper (glaube ich), also du 
schaltest für 5,5555µs an und für 5,555µs wieder aus, wieder an, aus, 
usw.. Deswegen bleiben aber trotzdem die Pulse (mit 0-10µs Breite) 
stehen bzw. werden zerhackt.

Also so geht's nicht.

von Merset (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:

> Ich bin wohl viel zu dumm, ...

Genau das ist dein Problem. Weiß auf dem µCNet jeder. Brauchst Du also 
nicht extra zu erwähnen.

von Firlefanz (Gast)


Lesenswert?

m.n. schrieb:
> Wie man sehen kann, funktioniert Deine Schaltung nicht. Man kann sie
> auch als sinnfrei bezeichnen.

Welche Schaltung meinst Du?

von Dyson (Gast)


Lesenswert?

Merset schrieb:
> Genau das ist dein Problem. Weiß auf dem µCNet jeder. Brauchst Du also
> nicht extra zu erwähnen.

Was willst du denn? ⛄ macht dir hundertmal was vor.

von Eins N00B (Gast)


Lesenswert?

MaWin schrieb:
> …
> +-------------------------+---+---- +U
>  |                         |   |
>  |  +--------+             |   |
> 10k |        |             |   |
>  |  |       10k          100k   |
>  +--+--|+\   |             |   |
>  |     |  >--+             |   |
>  |  +--|-/   |             |   |
>  |  | TS912 10k  v --100k--+--|+\
>  |  |        |             |  |  >--out
>  |  +--------+-------------(--|-/
>  |           |             |   |
> 10k        470nF           X   |
>  |           |             |   |
>  +-----------+-------------+--- GND
> An Position X kommen 100k parallel geschaltet mit 1uF hin, an v wird das
> 100kHz PWM Signal (0V/+Ub) eingespeist, der 470nF bestimmt die PWM
> Frequenz des erzeugten Signals.

Coole Schaltung, habe da einiges draus mitgenommen (auch wenn ich nicht 
der TO bin).
Wenn ich mich nicht sowohl verrechnet als auch versimuliert habe, 
müssten die 470n deutlich kleiner sein, zB 4n7 für eine Frequenz von 
etwa 15.3kHz.

von Stefan F. (Gast)


Lesenswert?

Sehe ich das richtig, dass der Oszillator kein Sägezahn Signal erzeugt? 
Die PWM Pulsbreite wird damit nicht linear übertragen.

Leider gibt es ohnehin kein ideales Sägezahn-Signal. Aber immerhin 
könnte man die obige Schaltung deutlich verbessern, falls ich Recht 
habe.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas schrieb:
> Lothar M. schrieb:
>>> Ich brauche hier eine reine Hardware Lösung. Irgendwie mit Gatter oder
>>> FlipFlops.
>> Dann fällt die analoge Lösung schon mal flach...
> Seit wann sind analoge Bausteine keine Hardware mehr
Ähmmm, echt jetzt?
Du hast 2 Sätze zitiert. Der zweite ist eine Nebenbedingung und lautet: 
"Gatter oder Flipflops". Und die sind (obwohl innen natürlich zutiefst 
analog) weithin als "digitale" Bauteile bekannt. Und deshalb ist eine 
damit aufgebaute Schaltung eben auch eine digitale Schaltung.

m.n. schrieb:
> Peter D. schrieb:
>>> Dann verrate doch mal, wie Du mit einem ATtiny die 100 kHz PWM mit
>>> hinreichender Auflösung erfasst?
>> Mit F_CPU = 10MHz kann man 1% schaffen.
> Bei 1% Tastverhältnis ist die EIN-Zeit 0,1 µs und die AUS-Zeit 9,9 µs.
> Da scheint es mir eher sportlich die 0,1 µs zu erkennen.
Ich habe das in einem ähnlichen Fall mit einem 6-Pin Tiny so gelöst: es 
gibt einen Zähler, der einfach alle z.B. 100µs den PWM-Eingang abtastet 
und einen Zähler hochzählt. Nach 255 Abtastungen steht der 
Eingangs-PWM-Wert auf 1/255 genau in diesem Zähler drin (bei 0% PWM 
steht 0 drin, bei 100% PWM steht 255 drin und bei 50% ist dort 127 zu 
finden).
Und dieser Wert wird dann einfach nur in den PWM-Compare des 15kHz 
Ausgabezählers geladen.
Der Witz daran ist, dass wegen dieser Unterabtastung die 100µs nicht 
genau sein müssen und der interne Takt ausreicht (weil ja auch die 
Ausgabefrequenz mit 10..20kHz nicht arg kritisch ist).
Allerdings ist die Ausgangs-PWM bei dieser Methode immer um 25ms 
verzögert.

Und wenns ganz genau werden muss, dann könnte man einen externen 
Taktgeber nehmen, diesen mit dem Eingangssignal gaten und auf einen 
Zählereingang des µC legen. Der muss dann nur bei jeder steigenden 
PWM-Flanke den Zähler auslesen und hat damit den PWM-Wert.
Dieser "externe Geber" könnte natürlich auch ein Timer-/Taktausgang µCs 
sein und das Gaten könnte man mit 2 Dioden machen...

EDIT:
Aber auch hier gilt: um eine 100kHz PWM tatsächlich in 1 PWM-Zyklus auf 
1% "genau" auflösen zu können, braucht man eine Referenzfrequenz von 
10MHz. Und weil µC intern gerne mit üblicher synchroner Flankenerkennung 
arbeiten, müsste der Zähler im µC mit 20MHz getaktet werden. Entspannend 
wirkt hier allerdings, dass man ja nur alle 5..10 Eingangs-PWM-Zyklen 
einen neuen Wert braucht.
Man kann also den obigen Zähler während 10 Eingangstaktflanken 
aufsummieren lassen.

: Bearbeitet durch Moderator
von MaWin (Gast)


Lesenswert?

Eins N00B schrieb:
> Wenn ich mich nicht sowohl verrechnet als auch versimuliert habe,
> müssten die 470n deutlich kleiner sein, zB 4n7 für eine Frequenz von
> etwa 15.3kHz.

Ja, ich hab ihn einfach aus 
https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.25 übernommen wir 
er da war, und drauf hingewiesen dass er zuständig ist.

Stefan ⛄ F. schrieb:
> Sehe ich das richtig, dass der Oszillator kein Sägezahn Signal erzeugt

Richtig, eher Haifischflossen. Daher wird er in der Nähe von 0% und 100% 
ungenau, die im obigen Link nachfolgende Schaltung macht das durch 
echtes Dreieck per Integrator henauer.

von Pc-Freak (Gast)


Lesenswert?

Der To ist im Urlaub.

von m.n. (Gast)


Lesenswert?

Lothar M. schrieb:
> Der Witz daran ist, dass wegen dieser Unterabtastung die 100µs nicht
> genau sein müssen und der interne Takt ausreicht (weil ja auch die
> Ausgabefrequenz mit 10..20kHz nicht arg kritisch ist).
> Allerdings ist die Ausgangs-PWM bei dieser Methode immer um 25ms
> verzögert.

Man kann (oder muß) es auch anders formulieren: die Abtastfrequenz darf 
auf keinen Fall synchron zur Eingangsfrequenz sein. Am besten erzeugt 
man die Abtastfrequenz per "echtem" Zufallsgenerator. An anderer Stelle 
hatte ich das für die PWM-Messung mit einem STM32 gezeigt: 
Beitrag ""ungenaue" Pulsweiten-Messung"
Eine 25 ms Verzögerrung finde ich bei einer Steuerung schon grenzwertig.

Neben der rein analogen Lösung (Dreieck natürlich per Integrator), die 
der TO einfach aufbauen kann, wäre meine favorisierte Lösung ein ATtiny 
mit ADC, der die Spannung nach PWM-Integration misst. Der Messwert (8 
Bit) kann direkt in ein OCx-Register geschrieben werden, das dann die 
PWM erzeugt. Bei 8 MHz interner Taktfrequenz, 2-fach Vorteiler und 8 Bit 
PWM erhält man dann die Ausgangsfrequenz von 15,625 kHz ;-)
Beachten muß man bei der analogen Auswertung, daß der PWM-Treiber einen 
ext. pullup-Widerstand braucht, der zu groß gewählt die 40 ns Auflösung 
im unteren Drehzahlbereich "verderben" kann.

Die eleganteste Lösung wurde auch schon genannt, nachdem der TO seinen 
IIC-Bus Baustein verraten hat: Abhören der IIC-Telegramme und erzeugen 
der PWM per Controller. Gut geeignet wäre z.B. ein ATtiny212, der nicht 
mehr dieses blöde USI hat, sondern ein richtiges IIC-Interface (TWI).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

m.n. schrieb:
> Eine 25 ms Verzögerrung finde ich bei einer Steuerung schon grenzwertig.
Mit höheren Abtastfrequenzen geht das auch schneller. Und wenn man weiß, 
dass dieser Pfad 25ms verzögert, dann muss man ihm ja einfach nur 25ms 
vorher seinen Sollwert geben. Mangels Wissen um die tatsächliche Aufgabe 
ist der Rest nur Ratestunde...

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.