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
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:> 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 ;)
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.
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.
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.
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.
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.
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...
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.
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.