Hallo liebe Forummitglieder, wie in dem Betreff angegeben versuche ich PWM Signale über ein Arduino Mega 2560 mit Simulink zu generieren. Mein Problem ist folgendes, ich muss aus dem Simulink Modell in dem verschiedene Drehzahlen simuliert werden ein PWM Signal erzeugen dessen Frequenz sich genau der Drehzahl entsprechend ändert. Sprich 1000 U/min entspricht zb. 800 Hz. Nun wenn es über die Pulsweite gehen würde wäre es ja kein Problem da man diese beliebig ändern kann ohne dass das Arduino Board spinnt. Jedoch sieht mit den Frequenzen ganz anders aus, so hat das Arduino Board mehr oder weniger fest vorgegebene Frequenzen mit denen es PWM Signale erzeugt, zb. auf Pin 11 490 Hz. Mir ist schon gelungen PWM Signale bis 100 Hz zu erzeugen jedoch reicht dieses nicht aus, ich bräuchte 2,6 kHz. Nun weiss denn jemand hier in dem großartigen Forum Bescheid ob man es vielleicht irgendwie hinkriegt? Ich dachte das es möglicherweise mit einem Shield klappen könnte der für solche Aufgaben konzipiert ist, bin mir aber nicht sicher. Irgendwie denke ich das ich mit dem Board hier nicht weiter komme aber man weiss ja nie. Vielen Dank schonmal für euer Antworten. Gruß PS. nutze Matlab 2013b Windows 7 64bit und ein Arduino Mega 2560
Out of the Box funktioniert das zunächst nicht, da Simulink/Matlab die Arduino-bibliothekten direkt benutzt, d.h. du hast die fixen (langsamen) pwm frequenzen. als workaround kannst du den sollwert über den serial out block ausgeben und das pwm signal extern erzeugen.
arduino schrieb: > Out of the Box funktioniert das zunächst nicht, da Simulink/Matlab > die Arduino-bibliothekten direkt benutzt, d.h. du hast die fixen > (langsamen) pwm frequenzen. > > als workaround kannst du den sollwert über den serial out block ausgeben > und das pwm signal extern erzeugen. sehe ich ähnlich, aber doch anderst
Danke erstmal für eure Antworten. Wie soll ich den Sollwert denn seriell ausgeben? In Simulink gibt es kein "Serial Out Block". Also es sollte schon eine Verbindung zu Simulink haben denn die vorgegebene Frequenz kommt aus dem Modell heraus. Ich denke über S-Functions könnte es vielleicht klappen, jedoch weiss ich nicht genau ob ich es mit dem Arduino schaffe diese Frequenzen zu erzeugen. Wenn ich mit dem C-Code die Frequenz der Pins ändere zb. auf 64kHz erzeugt er dann Signale mit 64kHZ oder bis zu 64 kHz. Naja im Moment bin ich soweit das im Modell die nötigen Signale erzeugt werden sprich ein Rechtecksignal mit der nötigen Frequenz( von 1 bis vielleicht 800 Hz). Dieses wird ins analog_write/digital_write Block zugeführt und am Oszi kommt bis 400 Hz ein Rechtecksignal an danach kommt nichts mehr. Naja vielleicht fällt ja dem Einen oder Anderen etwas ein. Ich überlege einen anderen Mikrocontroller zu verwenden und den einfach mit einer S-function zu steuern. Danke für eure Antworten, Gruß S.T.
Semih Tetik schrieb: > Dieses wird ins > analog_write/digital_write Block zugeführt und am Oszi kommt bis 400 Hz > ein Rechtecksignal an danach kommt nichts mehr. Du hast gerade erkannt, dass über eine Software-PWM nur geringe Frequenzen erreichbar sind. Das, was Du brauchst, ist Zugriff auf Hardware-PWM (also auf die Timereinheiten). Wie/ob das mit Arduino-Simulink geht, weiß ich nicht, aber in echtem Leben macht man dafür einen HAL-Treiber, der dann den Soll-Wert für PWM vom Simulink-Block bekommt. Gruß, Marek
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.