Forum: Mikrocontroller und Digitale Elektronik µC mit 3 Phase PWM Hardware


von Peter K. (Gast)


Lesenswert?

Hallo Leute,

ich bräuchte für einen Umrichter einen Mikrocontroller mit integrierter 
Hardware für eine 3 Phasige PWM, am besten mit einstellbarer Deadtime.

Hintergrund ist der, dass ein Programmfehler nicht zu einem verschalten 
der FETs und einem Kurzschluss führen sollte.

Grundsätzlich wäre eine externe Hardware welche zB die Daten über SPI 
erhält und eine 3 Phasige Brückenschaltung ansteuert möglich, aber aus 
Platz gründen nicht optimal.

Früher gab es mal µCs mit so etwas ähnlichem integriert zB der ADuC7026 
(ich glaub zumindest dass es der war), ich bräuchte aber aufgrund der 
Rechenleistung mindestens einen Cortex-M3.

Also kennt ihr vielleicht solche µCs oder andere Module mit denen so 
etwas möglich währe?

lg Peter

von STM32 (Gast)


Lesenswert?

STM32F1 - F4 haben dieses Feature praktisch alle.
AFAIR haben auch einige aus der LPC-Serie entsprechende Timer.

von Gerd E. (robberknight)


Lesenswert?

Schau Dir mal den STM32F334 an.

Der ist genau für sowas gemacht. Der hat eine spezielle Timer-Einheit 
namens "HRTIM". Die kann bis zu 10 PWMs ausgeben, bis zu 217ps 
Auflösung, Deadtime-Insertion und Abschaltung entweder über 
Digitalsignale oder die integrierten Komparatoren.

von Peter K. (Gast)


Lesenswert?

Danke für den Tipp,

ich werd mir die Dinger mal ansehen ;)

von MaWin (Gast)


Lesenswert?


von M. K. (sylaina)


Lesenswert?

Peter K. schrieb:
> ich bräuchte für einen Umrichter einen Mikrocontroller mit integrierter
> Hardware für eine 3 Phasige PWM, am besten mit einstellbarer Deadtime.

Hast du schon einmal darüber nachgedacht, warum u.a. der Atmega328 und 
Co 6 PWM-Kanäle hat? Diese Anzahl an PWM-Kanälen ist kein Zufall. Ich 
bin mir sicher, auch es gibt auch jede Menge Cortex mit mehreren 
PWM-Kanälen, parametrische Suche hilft bestimmt ;)

von Alexxx (Gast)


Lesenswert?

Auch der Xmega A1 / A3 kann mit jeder Awex-Einheit 3 Phasen-PWM 
generieren.
Deadtime ist einstellbar von 1/Fsysclk bis 255/Fsysclk

von Joerg W. (joergwolfram)


Lesenswert?

Eine andere Möglichkeit wäre die SPC56xx Reihe. Die haben teilweise eine 
FlexPWM, die direkt für Motorsteuerung gedacht ist. Dazu gehören 
DeadTime, mehrere FAULT-Eingänge und Synchronisation mit dem ADC. 
Außerdem lassen sich alle Compare-Register gleichzeitig aktualisieren.

Obendrauf gibts noch ECC bei Flash und RAM und (optionales) Lockstep bei 
den Dual-Cores.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Die 'Advanced Timer' selbst im kleinen STM32F1xx haben auch eine 
Deadtime Unit mit bei und 4 PWM Kanäle mit komplementären Ausgängen.

Ansonsten kann man sich das aber auch, wie o.a. mit den 3 Timern der 
Mega 48-328 selber machen:
https://www.mikrocontroller.net/articles/3-Phasen_Frequenzumrichter_mit_AVR

von Peter K. (Gast)


Lesenswert?

M. K. schrieb:
> Hast du schon einmal darüber nachgedacht, warum u.a. der Atmega328 und
> Co 6 PWM-Kanäle hat?

Natürlich ist das kein Zufall, aber der Atmega328 hat keinen CortexM3 
Kern von da her fällt er aus.

Wie gesagt der ADuC7026 hat auch so eine 3 Phasen PWM, wenn er von der 
Leistung passen würde, würde ich auch diesen verwenden.

Joerg W. schrieb:
> Eine andere Möglichkeit wäre die SPC56xx Reihe. Die haben teilweise eine
> FlexPWM, die direkt für Motorsteuerung gedacht ist.

Danke werd ich mir mal ansehen, ob ich die auch verwenden kann, 
ansonsten sehen die STM32F1 schon recht gut aus.

Matthias S. schrieb:
> Ansonsten kann man sich das aber auch, wie o.a. mit den 3 Timern der
> Mega 48-328 selber machen

Ja das ist natürlich auch möglich, aber nicht das was ich allgemein 
Suche, es geht hier primär um Ausfallsicherheit, die Software sollte 
also hier nicht all zu viel steuern müssen sondern nur Werte vorgeben. 
Deadtime und Kanalinvertierung sollten in Hardware ablaufen.
Außerdem währe noch eine externe Gate Leitung Sinnvoll, welche über die 
Hardware bei einem High oder Low Pegel alle Ausgänge auf Low setzt, das 
kann man aber im Notfall auch selbst nachrüsten.


Nur noch als Info am Rande es geht bei dem Projekt nicht um eine 
Motorsteuerung sondern um einen Umrichter um von Gleichspannung auf 400V 
3 Phasige Wechselspannung zu kommen.

von M. K. (sylaina)


Lesenswert?

Peter K. schrieb:
> Natürlich ist das kein Zufall, aber der Atmega328 hat keinen CortexM3
> Kern von da her fällt er aus.

Deswegen schrieb ich ja, dass es sicher auch Cortex gibt, die mehrere 
PWM-Kanäle haben. Ich kenne hier leider nur die von Atmel, den SAM4s, 
der hat 3 PWM-Kanäle die auch invertiert herausgeführt sind was ja für 
ne 3-Phasen-PWM auch reicht.

von Falk B. (falk)


Lesenswert?


von Christopher J. (christopher_j23)


Lesenswert?

Gerd E. schrieb:
> Schau Dir mal den STM32F334 an.
> Der ist genau für sowas gemacht. Der hat eine spezielle Timer-Einheit
> namens "HRTIM". Die kann bis zu 10 PWMs ausgeben, bis zu 217ps
> Auflösung, Deadtime-Insertion und Abschaltung entweder über
> Digitalsignale oder die integrierten Komparatoren.

Peter K. schrieb:
> Danke werd ich mir mal ansehen, ob ich die auch verwenden kann,
> ansonsten sehen die STM32F1 schon recht gut aus.

Der große Vorteil von den F3 gegenüber den F1 ist, dass die noch per DAC 
einstellbare Komparatoren mit dabei haben, womit dann ein 
Überstromschutz in Hardware realisiert werden kann, ohne den Umweg über 
eine ISR oder sonst irgendwelche Softwarekonstrukte zu gehen. Der sich 
ergebende Geschwindigkeitsvorteil kann durchaus über "Rauch oder kein 
Rauch" entscheiden.

von Lutz (Gast)


Lesenswert?

LPC15xx.
Wenn aber nicht viel zu Arbeiten ist frage ich mich warum es nicht ein 
AVR sein soll.

von Huh (Gast)


Lesenswert?

Lutz schrieb:
> Wenn aber nicht viel zu Arbeiten ist frage ich mich warum es nicht ein
> AVR sein soll.

Die Antwort steht ganz oben im Eröffnungspost:

Peter K. schrieb:
> ich bräuchte aber aufgrund der
> Rechenleistung mindestens einen Cortex-M3.

Weil ein AVR eben nicht die Rechenleistung eines Cortex-M3 hat.

von Lutz (Gast)


Lesenswert?

Ich weiß. Doch dann schrieb er:

Peter K. schrieb:
> die Software sollte
> also hier nicht all zu viel steuern müssen sondern nur Werte vorgeben.

von Huh (Gast)


Lesenswert?

Lutz schrieb:
> Ich weiß. Doch dann schrieb er:
>
> Peter K. schrieb:
>> die Software sollte
>> also hier nicht all zu viel steuern müssen sondern nur Werte vorgeben.

Ja, aber nur, damit die Hardware sich um die PWM einschließlich Deadtime 
usw. kümmern kann. Und damit dieser Ablauf unabhängig von Software 
funktioniert...

von M. K. (sylaina)


Lesenswert?

Huh schrieb:
> Ja, aber nur, damit die Hardware sich um die PWM einschließlich Deadtime
> usw. kümmern kann. Und damit dieser Ablauf unabhängig von Software
> funktioniert...

Genau, denke auch, dass das so gemeint war. Natürlich könnte man auch 
einen AVR die PWM machen lassen und der "Rechenknecht" sagt dem AVR nur 
wie die PWM aussehen muss/soll aber ob so eine Modularisierung sinnvoll 
ist oder nicht kann man hier nicht sagen, da wir die Randbedingungen des 
Projekts vom TE nicht kennen.

von Peter K. (Gast)


Lesenswert?

M. K. schrieb:
> Genau, denke auch, dass das so gemeint war. Natürlich könnte man auch
> einen AVR die PWM machen lassen und der "Rechenknecht" sagt dem AVR nur
> wie die PWM aussehen muss/soll

Ist natürlich möglich, aber da könnte ich auch gleich mit Timern in 
beinahe jedem µC eine Software PWM machen.

Der Grund warum ich in dem Sinne auf Hardware setzen möchte und nicht 
auf Software ist dieser, dass die Software durch Bugs oder auch durch 
andere Sachen schnell mal versagen kann, Hardware hingegen ist als 
gesonderte Komponente da wesentlich robuster gegen Störungen als 
Software.
Natürlich sollte weder Hardware noch Software versagen, aber bei 
Redundanten Systemen sollte nach Möglichkeit auch keines der Teilsysteme 
versagen.

von Ingo L. (corrtexx)


Lesenswert?

Ich habe sowas mit nem kleinen STM32F0 realisiert, der hat auch 
entsprechende PWM-Hardware mit Totzeit und 6 Kanälen.

von Ich Nicht (Gast)


Lesenswert?

Ein Cypress PSoC5 wäre auch eine Option. Wobei wahrscheinlich die 
genannten Alternativen günstiger wären.

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.