WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Generierung eines Pulssignals in Matlab Simulink

 

Bernd

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2009, 12:40     Titel: Generierung eines Pulssignals in Matlab Simulink
  Antworten mit Zitat      
Hallo!

Ich bin Anfänger in Matlab/Simulink und stehe vor folgendem Problem:

Ich möchte ein Pulssignal erzeugen, dass allerdings keine regelmäßige Frequenz hat. Mit dem Pulsgenerator sind ja wohl nur periodische Pulssignale möglich?
Das zugrunde liegende Problem ist, dass ich die Abtastung eines inkrementellen Drehgebers nachstellen will, der mir Pulse mit konstanter Dauer liefert. Der Abstand ist allerdings abhängig von der Drehgeschwindigkeit die ich gerne als Funktion vorgeben würde.

Dachte damit würde ich mich nicht so schwer tun, hat sich leider als falsch erwiesen.
Hab schon einiges mit Triggern versucht, steh aber irgendwie auf dem Schlauch!
Hat da jemand eine Idee??
Gruß Bernd


aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 22.02.2010, 15:04     Titel:
  Antworten mit Zitat      
Hi,

ich weiß zwar leider nicht, wo genau das Problem bei Deinem Algorithmus liegt.

Ich habe mal folgende Funktion definiert:
Code:

function [t,s,fmom,wpulsesig]=pulsegeneric(f0,df,fmodu,fbasic,N);
% pulsegeneric
%    f0 = Grundfrequenz [Hz], z.B. 100
%    df = Modulationshub [Hz], z.B. 30
%   fmodu = Modulationsfrequenz [Hz], z.B. 2
%   fbasic = Grundabtastfrequenz [Hz], z.B. 1000
%   N = Samples gesamt, z.B. 10000

t=0:1:N-1;     % Zeitachse definieren
t=t ./fbasic;
fmom=f0 + df .*sin(2 .*pi .*fmodu .*t);     % Momentanfrequenz
momentanwinkel=2*pi .*cumsum(fmom) ./fbasic;
sn=sin(momentanwinkel);     % Normal- und Quadratursignal
sq=cos(momentanwinkel);
s=sn;                                    % Wir brauchen nur das Normalsignal

digsignal=sn > 0;                 % Das binarisieren wir jetzt
w1=digsignal(1:1:N-1);        % Nur bei der steigenden Flanke lassen wir den Impuls zu
w2=digsignal(2:1:N);
wpulsesig=(w2==1) & (w1==0);
wpulsesig=[0,wpulsesig];
% Hier verbreitern wir den Impuls ein wenig
B=[1,1,1]; A=[1];
wpulsesig=filter(B,A,wpulsesig);

endfunction;
 


In der Kommandozeile gib mal ein:

Code:

[t,s,fmom,p]=pulsegeneric(80,20,2,1000,100);
subplot(211);plot(t,p);subplot(212);plot(t,fmom);
 


Du solltest dann im oberen Teil des Plots deine Impulse sehen. Ich habe für die Verbereiterung der Pulse mit einer simplen Filterfunktion gearbeitet.

Hilft das erst mal weiter ?

Grüße
_________________

Andreas Geißler
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.