Forum: Mikrocontroller und Digitale Elektronik STM32 viele PWM Ausgänge


von Johnny S. (sgt_johnny)


Lesenswert?

Hallo zusammen!

Ich suche nach einem STM32 MCU welcher mir auf mindestens 7 pins eine 
PWM-Frequenz (25kHz 0-100%) generieren kann. Ebenfalls muss ich auf 7 
pins eine Frequenz von 0-200Hz Messen können.

So wie ich bis jetzt gesehen habe, gibt es meist nur relativ wenig PWM 
Ausgänge (timer)

Kennt jemand ein Modell welches viel PWM Ausgänge bietet? Wichtig ist 
auch, das die Ausgänge indivuell angepasst werden können 
(Tastverhältniss)

von Kevin M. (arduinolover)


Lesenswert?

Johnny S. schrieb:
> Ich suche nach einem STM32 MCU welcher mir auf mindestens 7 pins eine
> PWM-Frequenz (25kHz 0-100%) generieren kann.

So ziemlich jeder STM kann das. Hier bieten sich Timer 1 und 8 an. Die 
können dir das PWM jeweils auf 4 Pins ausgeben, wobei pro Timer nur eine 
Frequenz jedoch unterschiedliche Tastverhältnisse möglich sind.

Johnny S. schrieb:
> Ebenfalls muss ich auf 7
> pins eine Frequenz von 0-200Hz Messen können.

Eingänge sind schwieriger, hier brauchst du pro Eingang einen Timer, 
sofern du dort Frequenz und Tastverhältnis messen möchtest brauchst du 2 
Kanäle an dem jeweiligen Timer. Nur die Frequenz sollte man auch mit 
einem Kanal Messen können, damit kann man ebenfalls die Timer mit nur 
einem Kanal nutzen und sollte die 7 Eingänge abbilden können.

Das ganze macht so ziemlich fast jeder STM der genug Timer hat, was jede 
Serie außer der F0 und der neuen G Reihe sein sollte. Und auch die gehen 
vermutlich, sofern man sich auf das reine Messen der Frequenz beschränkt

von m.n. (Gast)


Lesenswert?

Die Auswahl ist eigentlich "riesengroß". Timer1, 2, 3, 4, 5 und 8 bieten 
sich gut an. Wenn PWM und Frequenzmessung mit separaten Timern gemacht 
werden sollen, braucht man ein Gehäuse >= LQFP64. Mein Favorit wäre da 
der STM32G431.
Wenn die Frequenz nicht so hoch aufgelöst werden muß, kann man auch 
einen Timer mit 100-500 kHz laufen lassen und die gewünschten Eingänge 
pollen.
Vielleicht beschreibst Du, was Du vor hast.

von Johnny S. (sgt_johnny)


Lesenswert?

Kevin M. schrieb:
> Eingänge sind schwieriger, hier brauchst du pro Eingang einen Timer,
> sofern du dort Frequenz und Tastverhältnis messen möchtest brauchst du 2
> Kanäle an dem jeweiligen Timer. Nur die Frequenz sollte man auch mit
> einem Kanal Messen können, damit kann man ebenfalls die Timer mit nur
> einem Kanal nutzen und sollte die 7 Eingänge abbilden können.

Hier habe ich mich auch schon gefragt ob man allenfalls mit normalen 
funktionen von GPIO arbeiten könnte. Es geht grundsätzlich um die 
Messung einer Drehzahl von 0-4000U/m, bei einer Frequenz von z.b. 86Hz 
wären dies dann 2580rpm. Bei 160Hz vermutlich so um die 5000 Rpm. Da 
sich dieser Wert nicht ständig ändert, und dessen Angabe auch nicht 
sonderlich genau sein muss, kann man das ja allenfalls mit normalen GPIO 
und interrupts bearbeiten.

Ob da bei 86Hz nun 2580, 2550 oder 2600 RPM rauskommen ist kein Problem 
Ebenfalls genügt es wenn nur jede halbe Sekunde der Wert neu "ermittelt" 
wird.

von Kevin M. (arduinolover)


Lesenswert?

Wenn deine Anforderungen an die Genauigkeit nicht so hoch sind, sollte 
das mit Interrupts problemlos funktionieren. Da reicht dann ein Timer 
als Zeitbasis. Diese Lösung generiert mehr CPU-Last und ist eben nicht 
so präzise. In deinem Fall könnte es sich lohnen einen Timer zum Messen 
zu nutzen und die 7 Signale per Multiplexer extern um zu schalten. Dann 
kannst du ggf. auch einen DMA nutzen und nur bei Bedarf muss die CPU was 
tun. Der STM hat natürlich eine Haufen Rechenpower, aber man weiß ja 
auch nicht was du sonst noch so vor hast ;)

von m.n. (Gast)


Lesenswert?

Für die 8 x PWM-Ausgänge benutzt man am besten 2 x Timer mit jeweils 4 x 
Ausgängen. Das ist soweit klar.
Für die Frequenzmessung ist es elegant, jeweils Capture-Eingänge von 
Timern zu verwenden. Für 7 Kanäle reichen 2 x Timer mit je 4 Eingängen. 
Da kannst Du dann jede Periode messen - nur bei 0 Hz wird es schwierig!

Für ein Einzelstück/Muster eignet sich ein Nucleo-Board.

von Kevin M. (arduinolover)


Lesenswert?

m.n. schrieb:
> Für 7 Kanäle reichen 2 x Timer mit je 4 Eingängen.

Ohne genauer drüber nachgedacht zu haben muss man aber ein Überlauf des 
Timers abfangen, funktioniert aber natürlich auch.

Beitrag #6537088 wurde von einem Moderator gelöscht.
Beitrag #6537123 wurde von einem Moderator gelöscht.
Beitrag #6537290 wurde von einem Moderator gelöscht.
von Johnny S. (sgt_johnny)


Lesenswert?

Kevin M. schrieb:
> Der STM hat natürlich eine Haufen Rechenpower, aber man weiß ja
> auch nicht was du sonst noch so vor hast ;)

Ich möchte mir für meinen PC eine Lüftersteuerung bauen. Das können die 
meisten Mainboards heute zwar auch, jedoch hat man da zum einten das 
Problem das man mit "Y" Kabeln die Lüfteranschlüsse splitten muss da es 
viel zu wenige hat, was zu problemem mit dem Tachosignalen der einzelnen 
Lüfter führt. Ein weiterer Kritikpunkt ist das die Regelung viel zu 
sprunghaft ist, da irgendwelche interenen Sensoren auf dem Board 
ausgewertet werden (z.b. CPU Core temp). Arbeitet der CPU mal 2-3 
Minuten mehr, drehen sofort die Lüfter hoch, obwohl die Wassertemparatur 
überhaupt nicht gestiegen ist. Und wenn das Gerät dann mal ein paar 
Stunden unter Volllast läuft und man dann in den den normalen Betrieb 
wechselt, gehen die Lüfter sofort runter, was dafür sorgt dass das 
Wasser nur extrem langsam abkühlt, anstatt die Lüfter noch ein paar 
Minuten voll drehen zu lassen.

Fertige System gibt es zwar, war aber irgendwie nicht wirklich was für 
mich dabei, braucht alles wieder komische Software oder oder ist riesen 
gross. Daher will ich ein kleines Board bauen mit einem MCU drauf, einem 
Sata-Stromanschluss und dann dort bis zu 7 Lüfter anschliessen können, 
sowie allenfalls 2-3 "10K" Temperatursensoren sowie allenfalls ein 
kleines Oled oder so. Der MCU soll zum einen die Lüfter regeln und die 
Tachosignale auswerten.

von Kevin M. (arduinolover)


Lesenswert?

Lüftersteuerung hab ich mir auch mal gebaut, ich hatte damals unter 
anderem einen MAX31790 verwendet.

von Frank K. (fchk)


Lesenswert?

Schau Dir mal das hier an:

https://www.microchip.com/wwwproducts/en/EMC2305
https://ww1.microchip.com/downloads/en/DeviceDoc/2305.pdf

Ist genau das, was Du brauchst. Für 7 Lüfter brauchst Du das eben 
zweimal.
Das klemmst Du dann per I2C über einen MCP2221A an einen internen 
USB-Header, und das wars dann.

Hier gibts auch ein Demoboard mit Schaltplänen etc., was noch 
Temperatursensoren ansteuern kann.

https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/ADM00879

fchk

von m.n. (Gast)


Lesenswert?

Johnny S. schrieb:
> Daher will ich ein kleines Board bauen mit einem MCU drauf, einem
> Sata-Stromanschluss und dann dort bis zu 7 Lüfter anschliessen können,
> sowie allenfalls 2-3 "10K" Temperatursensoren sowie allenfalls ein
> kleines Oled oder so. Der MCU soll zum einen die Lüfter regeln und die
> Tachosignale auswerten.

Wenn ich Deine Eingangsfrage richtig deute, hast Du noch nicht mit STM32 
gearbeitet. Dieser µC ist zwar völlig unterfordert aber für Deine 
Anforderungen von der Hardware-Seite gut gerüstet.
Stelle Dich darauf ein, daß es ein Stück Arbeit sein wird, Hard- und 
Software fertigzustellen. Als Basis würde ich - wie gesagt - ein 
Nucleo-Board empfehlen, wenn es Deinen esthetischen Ansprüchen genügt 
;-)
https://de.farnell.com/stmicroelectronics/nucleo-g431kb/entwicklungsboard-32bit-arm-cortex/dp/3132398?st=nucleo
https://de.farnell.com/stmicroelectronics/nucleo-g431rb/entwicklungsboard-32bit-arm-cortex/dp/3132423?st=nucleo

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.