Elektronisch einstellbare PWM mit 555 Timer

Ich möchte einen PWM-Generator mit einem 555-Timer erstellen (wie hier vorgeschlagen ), aber ich möchte das Tastverhältnis mit einem Mikrocontroller einstellen können. Ich würde einfach PWM vom Mikrocontroller verwenden, aber ich brauche eine hohe Frequenz, da ich Motoren antreibe und sie einen Ton mit der Frequenz des PWM erzeugen. Dies ist hörbar, wenn PWM vom Mikrocontroller verwendet wird. (Die Frequenz beträgt nur 490Hz)

Bitte beachten Sie, dass dieses Signal den Motor nicht direkt antreibt, da es in eine Steuerung eingespeist wird, die den Motor antreibt.

Was wäre der beste Weg, dies zu erreichen?

Fahren Sie den Motor direkt über die PWM? Beachten Sie, dass Sie einen Puffer und eine Flyback-Diode benötigen, da Sie sonst riskieren, Ihren 555 zu zerstören.
@Felthry Entschuldigung, ich habe vergessen zu erwähnen, dass diese PWM in einen Controller eingespeist wird, das sollte also kein Problem sein. Ich werde die Frage aktualisieren.
Warum können Sie auf Ihrem Mikrocontroller keine schnellere PWM erzeugen?
@jonk Ich programmiere den Mikrocontroller nicht direkt, da ich Johnny-Five verwende, um ihn von einem Raspberry Pi aus zu steuern. Leider unterstützt die auf dem AVR (Firmata) verwendete Firmware keine Hochfrequenz-PWM.
@jonk 490Hz ist ungefähr die Frequenz des eingebauten PWM auf dem Arduino-Board.
@Felthry Ich bin sicher, dass ein Arduino zu PWM mit höherer Frequenz fähig ist. Verwenden sie keine ATmega AVR-Geräte? Diese Dinge können VIEL schneller und dienen dem Gedächtnis.
@jonk 490Hz ist das, was Sie erhalten, wenn Sie die Funktion analogWrite() auf einem unmodifizierten Arduino verwenden.
@Felthry Also ist es nur ein Problem mit dem Bibliothekscode? Verwenden Sie nicht die Bibliothek. Schreiben Sie einen tatsächlichen Code.
@jonk bitte schau dir meinen vorherigen Kommentar an.
@JohnLeuenhagen Ich bin verwirrt. Sieht so aus, als würde Johnny-Five auf einem RPi laufen . Gibt es hier ein 2. Mikrosystem? Oder nur die eine? ... Besser noch, warum zeichnest du nicht, was du hast? In Kommentaren kommen Kleinigkeiten zum Vorschein, die in der Frage klar dargelegt werden sollten.
@jonk Das RPi ist seriell mit dem Mikrocontroller verbunden (USB im Fall von Arduino), und das RPi kann serielle Nachrichten an den AVR senden, um alles zu tun, wofür Sie einen AVR programmieren könnten.
Willkommen bei EE.SE! Denken Sie daran, dass Fragen zur Optimierung eine Definition darüber erfordern, welche Problemdimensionen für Ihre Anwendung optimiert werden sollen, wie z. B. Größe, Geschwindigkeit, Energieverbrauch, Benutzererfahrung usw. Da diese nicht alle auf einmal optimiert werden können, müssen Sie dies tun eine gute Vorstellung davon haben, welche für Sie am wichtigsten sind, und in der Lage sein, uns dies klar zu artikulieren.
@JohnLeuenhagen Also, wenn ich all diese winzigen Teile durchwühle, die Sie im Laufe der Zeit langsam auslaufen, nehme ich an, dass der AVR Johnny-Five ausführt und die Motorsteuerung ansteuert, und Sie senden Nachrichten von einem RPi an den AVR. Liege ich falsch?
@jonk: Ich hatte den Eindruck, dass "Johnny Five" auf dem RPi läuft und dass etwas namens "Firmata" auf dem Arduino läuft. Aber ich könnte mich irren, und ich stimme zu, dies ist "Tod durch tausend Kürzungen", wenn es darum geht, Informationen aus dem OP herauszuholen.
@DaveTweed Ich denke, du hast es besser hinbekommen als ich. Ich denke, dem OP wäre besser gedient, wenn es sein Wissen über das, was es bereits hat, vertieft, als wenn es einem wachsenden Haufen von ihnen ein weiteres elektronisches Modul (555) hinzufügt. Ich nehme an, man kann oberflächlich bleiben und einfach einen Kolostomiebeutel nach dem anderen hinzufügen, um seine Arbeit zu erledigen. Aber dann ist es für mich uninteressant. Nun ja.

Antworten (2)

Der LTC6992 von Linear könnte das sein, was Sie wollen.

Geben Sie hier die Bildbeschreibung ein

Abbildung 1. Der LTC6992 liefert einen PWM-Ausgang mit einer festgelegten Frequenz von bis zu 1 MHz für ein analoges Eingangssignal von 0 bis 1 V.

Sie könnten dann Ihre Niederfrequenz-PWM und Ihren Tiefpassfilter verwenden, um eine analoge Spannung zu erzeugen, diese auf 0 bis 1 V herunterzuskalieren und Ihre Hochfrequenz-PWM mit dem LTC6992 zu erzeugen.

Bei diesem Ansatz entsteht eine Reaktionszeitstrafe, die auf der Grundlage der RC-Zeitkonstante Ihres Filters berechnet werden kann.

"Best" ist ein etwas flexibles Konzept. Angenommen, Sie haben Zugriff auf eine Art seriellen Bus, würde ich über ein zweikanaliges digitales Potentiometer nachdenken. Vielleicht so etwas: http://www.analog.com/en/products/digital-to-analog-converters/digital-potentiometers/ad5122.html

Und ersetzen Sie die Widerstände in der traditionellen astabilen 555-Konfiguration direkt.