|
|
ePWM/ADC Block in Simulink für Mikrocontroller F28335 (TI) |
|
Max.Imilian |
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 04.04.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.04.2013, 11:56
Titel: ePWM/ADC Block in Simulink für Mikrocontroller F28335 (TI)
|
|
|
|
|
Hallo,
ich arbeite mit dem Mikrocontroller F28335 von Texas Instruments samt Experimenter Kit und Code Composer Studio v5 sowie Matlab Simulink. Ich möchte den Mikrocontroller für einen Prüfstand nutzen und benötige dafür eine Sinuswelle bzw. noch komplexere Signale am Ausgang des µC. Hierfür wollte ich den in Simulink enthaltenen Block ePWM F28x3x verwenden. Ich versuche schon seit mehreren Wochen, anhand zweier Beispiele die Funktionsweise des ePWM-Block zu verstehen. Die mdl-Files sind hier hinterlegt:
- http://www.mathworks.de/support/sol.....=SL&solution=1-AO5OAI
- Das zweite Beispiel ist den Matlab-Hilfe unter dem Namen ADC-PWM Synchronization via ADC Interrupt bzw. unter http://www.mathworks.de/de/help/rtw.....on-via-adc-interrupt.html zu finden
Welche dieser beiden Modelle ist geeigneter, um am Ausgang der Mikrocontrollers Spannungsverläufe abzugreifen, die ich in einen (Akustik-) Verstärker einspeisen kann?
Ich habe es geschafft, einfache Modelle auf dem µC auszuführen, beispielsweise die LED blinken zu lassen oder einzelne Pins ein- und auszuschalten. Leider habe ich ist bisher nicht geschafft, ein Sinussignal oder ein komplexeres Modell auf dem Mikrocontroller laufen zu lassen. Offensichtlich habe ich die Funktionsweise des ePWM Block noch nicht verstanden.
Des Weiteren möchte ich einen ADC Block nutzen, um von einem Mikrofon aufgenommene Signale als Eingang für mein Modell zu verwenden. Kann ich den ADC Block einfach als Quelle (wie z.B. einen Sinusblock) in ein bestehendes Modell implementieren, oder sind hierfür komplexere Anpassungen nötig?
Vielen Dank im Voraus
Max
|
|
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.04.2013, 06:45
Titel:
|
|
|
|
|
Um einen Sinus über den PWM Block auszugeben ist das erste Beispiel besser geeignet. Du hast eine feste Frequenz und variierst nur die Pulsweite. Du kannst ja den Counterwert für eine Periode setzen (rauf oder runterzählen), wenn du z.B. runterzählst dann setzt den Interrupt wenn Counter Null ist. Dann wird der Interrupt Block aufgerufen und startet wieder dein "Function Call Subsystem" wo dem PWM Block ein anderen Duty Cycle einstellst. Das alles wiederholt sich dann (müsstest nur wissen welchen Duty Cycle davor hattest).
Am Ausgang wirst du aber einen Tiefpaßfilter brauchen um die höheren Harmonischen zu entfernen. Ein RC-Glied (dimensioniert für deine Frequenz) reicht aber aus.
Um Signal einzulesen kannst du einfach den ADC Block als Quelle nehmen. Du weißt aber, dass er nur Signal von 0 bis 3 V messen kann (musst dein dein Signal auf diesen Bereich vorher anpassen). Da es ein 12 Bit Wandler ist gibt er dir 4095 bei 3V aus und 0 bei 0V. Den Wert nach dem ADC Block müsstest du damit umrechnen.
|
|
|
Max.Imilian |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 04.04.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.04.2013, 15:40
Titel:
|
|
|
|
|
Vielen Dank für die Antwort.
Ich habe deine Antwort ehrlich gesagt nicht komplett verstanden. Mein Vorhaben ist, nicht nur eine Sinusfunktion mit einer bestimmten Frequenz, sondern deutlich komplizierte Signale wie zum Beispiel eine Stimmaufnahme oder Rauschen, die Stimme einen Menschen überlagert, vom Mikrocontroller ausgeben zu lassen. Mein Duty Cycle ändert sich also nicht periodisch, sondern abhängig von Signal, das über ein Messmikrofon an den Mikrocontroller gegeben wird. In so einem Fall kann ich ja auch den Counterwert (welchen Wert meinst du, den Timer Period-Wert?) nicht für eine Periode setzen.
Ich habe versucht, im von dir empfohlenen Beispiel den Repeating Sequence Stair-Block durch einen Sine Wave-Block zu ersetzen und diesen so zu konfigurieren, dass der mit dem Modell (siehe ANHANG) ausgegeben werden kann. Dabei habe ich die Sample Time auf -1 gesetzt, da ich sonst eine Fehlermeldung bekomme. Die Amplituden, die ich mit dem Scope beobachten kann, bewegen sich im Bereich von 10e-7, und wenn ich den Mikrocontroller an das Oszilloskop anschließe, wird der Signalverlauf nicht angezeigt.
Ich bin für jede Hilfe dankbar !
Beschreibung: |
|
Download |
Dateiname: |
PWM_test_oszi_SINUS_1.mdl |
Dateigröße: |
911.85 KB |
Heruntergeladen: |
686 mal |
|
|
|
knilumis_baltaM |
Forum-Century
|
|
Beiträge: 241
|
|
|
|
Anmeldedatum: 20.04.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.04.2013, 16:17
Titel:
|
|
So wie du es in deinem Modell hast geht es nicht. Der GPIO kann ja nur "high" oder "low" ausgeben. In diesem Fall nur 0 V oder 3.3 V. So direkt kann man natürlich kein Sinus erstellen. Auserdem meine ich gelesen zu haben, dass du die GPIO Pins nicht so schnell wechseln kannst wie die PWM Ausgänge (wobei 1 kHz kein Problem sein sollte). Bei dem PWM Block kannst du unter General die Periode einstellen z.B. 1 kHz. und bei ePWMA indirekt den "Duty Cycle". Ich versuche mal die Woche einen Sinus Beispiel zu erstellen (kann aber nichts versprechen).
Hast du schon mal danach gesucht wie man mit PWM ein Sinus Signal erzeugt? Das verfahren müsstest du dann "einfach" als Modell zusammenklicken.
Edit:
Wenn du Matlab/Simulink bei einem Unternehmen benutzt, dann hast du ja eine gültige Lizenz. Der Support gibt dir sicher schneller ein Beispiel mit Sinusausgabe.
|
|
|
Max.Imilian |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 04.04.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.04.2013, 19:10
Titel:
|
|
Sehe ich es richtig, dass ich mit dem unten stehenden Modell die PWM-Ausgänge des Mikrocontrollers ansteuere?
Ich kann leider erst morgen früh testen, ob dieses Modell wirklich funktioniert. Es fällt allerdings auf, dass der Sinus wieder in eine Art PWM Signal mit Amplituden im Bereich 10e-7 umgesetzt wird.
Bei den Signalen, die ich später nutzen will (Rauschen überlagert mit Sprache) gibt es ja keine Periodizität. Dann kann ich ja auch keine Periode einstellen, oder ?
Beschreibung: |
|
Download |
Dateiname: |
PWM_ADC_model.mdl |
Dateigröße: |
913.96 KB |
Heruntergeladen: |
688 mal |
|
|
|
nv029 |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 29.04.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.05.2013, 23:55
Titel: SIMULINK Embedded coder help
|
|
Hello,
I am looking help for Simulink Embedded coder tutorials. Please help me.
I can pay for tutorials online..
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|