wie, um eine Darstellung der input-analog-Signale vom arduino in matlab

Ich habe versucht, das Lesen von analogen Signalen durch arduino uno und Plotten Sie in MATLAB. Als ich meinen input wave-Funktion generator und versuchte, Sie zu zeichnen Sie es, die gezeichneten Signale nicht korrekt waren, z.B. ein input sine wave nicht geben eine Sinus-Welle. Was könnte die mögliche Ursache? Brauche ich eine externe Schaltung, die für eine reibungslose Lesen?

ARDUINO-CODE

void setup() 
{ Serial.begin(9600); } 
void loop() 
{ 
int a=analogRead(A0); 
Serial.println(a); 
delay(1); 
}

MATLAB-CODE

s=serial('COM3','BaudRate',9600); 
fopen(s) 
x=1:100; 
n=1; 
while n==1 
   for i=1:length(x) 
       tmp=fscanf(s,'%d'); 
       if length(tmp)>1 
          continue; 
       end 
       y(i)=tmp; 
   end 
   y=y/1024*5; 
   ylim([0 5]); 
   plot(x,y) 
   drawnow 
   end 
fclose(s) 
  • Bitte poste deinen code.
  • ARDUINO-CODE void setup() { Serial.begin(9600); } void loop() { int a=analogRead(A0); Serial.println(a); delay(1); }MATLAB-CODE s=serial('COM3','BaudRate',9600); fopen(s) x=1:100; n=1; while n==1 for i=1:length(x) tmp=fscanf(s,'%d'); if length(tmp)>1 continue; end y(i)=tmp; end y=y/1024*5; ylim([0 5]); plot(x,y) drawnow end fclose(s)
  • Nächstes mal bitte den code hinzufügen, um die Frage, anstatt die Kommentare, wie es macht es schwer zu Lesen. So sind Sie den Erwerb von 100 Datenpunkten durch eine serielle Verbindung mit 9.600 bauds. Welche Frequenz ist dein input sine wave? Welche Ausgabe bekommen Sie in MATLAB? BTW, es sieht aus wie Ihre while Schleife läuft ewig...
  • nun habe ich versucht Frequenzen bis zu 1 KHz.die Ausgabe war sehr verzerrt, die ähnelte einem Dreieck Form irrespectve der Funktion, die als Eingabe.ja,da ist eine unendliche Schleife, weil ich wollte, Echtzeit Plotten, wie in einem orginal-Oszilloskop
  • Es könnte sich lohnen, für debugging-Zwecke, um nur erwerben ein Zeitraum Wert von Daten und versuchen zu zeichnen, nachdem die Datenerfassung abgeschlossen ist. Sobald Sie diese bekommen, können Sie gehen dann zu "real-time" - Zeichnens und der Erfassung von Daten kontinuierlich. Es klingt wie Sie sind-aliasing, also nicht den Erwerb von Daten schnell genug sample-rate.
  • wenn ich erhöhen sich meine baudrate ist,kann er helfen????
  • Es tun könnten... ich bin mir nicht sicher, was anderes zu empfehlen, sorry.
  • wenn ich mich mit meinem input an arduino und öffnete den serial monitor,was ich sah, war, dass die Signale, wo Stichprobe auf die verschiedenen Punkte durch, die ich bin immer so ein plot.wenn ich eine Verbindung einer filter-Schaltung,kann es helfen????
  • Nicht sicher, es klingt nicht ein MATLAB-Problem um ehrlich zu sein, sondern eher ein hardware-Problem auf der Arduino-Seite, also das forum ist wohl nicht der beste Ort dafür. Sie brauchen, um zu beheben die hardware-und sampling-Probleme, bevor man die Daten in MATLAB.

Schreibe einen Kommentar