Arduino Due PWM invertieren

Nabend zusammen,

ich möchte für die Ansteuerung von 4 Halbbrücken meinen Arduino Due verwenden. Um die Halbbrücken anzusteuern benötigt man für den Störfreien Betrieb gewisse Totzeiten zwischen den Einschaltungen der einzelnen MOSFET's. Da meine Treiber keine Totzeit generieren können, möchte ich diese gerne mit dem Arduino erzeugen.

Nun zu meiner Frage, ich benötige das PWM-Signal aus dem Arduino invertiert (gespiegelt an der X-Achse). Hierfür habe ich bereits folgenden Thread gefunden:

Die Invertierung funktioniert leider nicht bei meinem Due, weiteres googlen ergab folgende Möglichkeit:
analogWrite(OUTPUT, 255-Wert);
Problem hierbei ist, dass eine gewisse Verzögerung zwischen dem regulärem und dem invertiertem Signal vorhanden ist (~6µs). Das würde für meine Halbbrücke bedeuten, dass kurzzeitig beide MOSFET's leitend sind und somit der Kurzschluss garantiert ist...

Hat jemand evtl. eine Idee, wie ich das Signal exakt spiegeln kann und dort noch eine gewisse Totzeit einprogrammieren kann? Leider bin ich hier etwas ratlos.... :slightly_frowning_face:

Vielen Dank im Voraus und einen schönen Abend.

Mirko

Was verstehst Du unter Totzeit? Beide Ausgänge sind LOW oder etwas anderes?

Gruß Tommy

Siehe PWM_SMMR. Beachten Sie, dass Bild 38-6 Seite 981 von Sam3x Datenblatt falsch ist. Das korrekt Bild ist Seite 962 von Sam4 Datenblatt.

Das war jetzt eine Antwort auf die Frtage an den TO und ich soll mir jetzt was suchen oder wie?

Gruß Tommy

Danke für eure Antworten.

@Tommy: Ja bei den Totzeiten sind beide Ausgänge LOW.

@ard_newbie: Danke, das habe ich auch schon gesehen. Leider ist dies nur für 2 Ausgänge und nicht für 4... Zudem sehe ich da leider auch nicht die Möglichkeit zur Invertierung, nur für die Totzeit.

Evtl. noch ne weitere Idee ? :disappointed_relieved:

Gruß
Mirko

Na dann passt das doch mit 255-x.

Erst beide Ausgänge für Zeit x (Totzeit) auf digitalWrite(LOW) oder analogWrite(0) (ausprobieren) und dann analogWrite(255-x) für negiert.
Für die beiden anderen Ausgänge das Gleiche.

Gruß Tommy

Wie oben beschrieben...
Ich habe mein normales Signal
analogWrite(OUTPUT1, WERT);

wenn ich nun
analogWrite(OUTPUT2, 255-WERT);

mache, ist das Signal um ca 6µs verzögert. Das Gleiche tritt übrigens auch auf, wenn ich am Ausgang 2 auch einfach mal den WERT ausgebe... OUTPUT1 und OUTPUT2 sind ~6µs zeitversetzt... wüsste nicht wie ich die Signale ohne Verzögerung ausgeben könnte, da ich denke, dass die Verzögerung durch den Befehl selber kommt.

Edit: wüsste aber auch nicht wie das ganze passt? ich habe 4 Halbbrücken, also insgesamt 8 Ausgänge, von daher passt es eben nicht. Ich bräuchte 4x Totzeit und 4x das negierte Signal.

Mirko

Dann häng doch einfach einen Inverter dahinter. Gibt maximale Verzögerung im Bereich ns, das sollte doch reichen.

Jo den Gedanken hatte ich auch schon. Nur wird halt das Signal, wie du schon sagtest, nahezu ohne Zeitverzug invertiert - keine Totzeit.