LabVIEWForum.de
Analoge Eingänge nacheinander abfragen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Analoge Eingänge nacheinander abfragen (/Thread-Analoge-Eingaenge-nacheinander-abfragen)



Analoge Eingänge nacheinander abfragen - t0bsN - 17.05.2016 12:00

Hallo Community,

ich arbeite mit Labview 2013 und einem Arduino Uno. Mein Ziel ist es, Wechselsignale an den analogen Eingängen bei Frequenzen um ca 1kHz aufzunehmen und mir in LabView anzeigen zu lassen.

Mein Programm funktioniert soweit auch derzeit für den ersten Eingang A0 des Arduinos.

Angesteuert bzw. ausgewählt wird der Eingang in dem C Programm dazu. Im ADMUX Register kann dieser mit den letzten 4 Bits festztgesetzt warden.
Nun möchte ich, dass der Arduino nacheinander alle 6 analogen Eingänge liest und jeweils in einem separaten Graph in Labview ausgibt.

Dafür bräuchte ich bei dir Umsetzung eure Hilfe, da ich ein Neueinasteiger in Sachen Labview und Programmierung bin :/


Danke schonmal im Voraus !


Das Vi ist im Anhang, hier der dazugehörige IDE Code:
Code:
int mask=B01000000;//Maskierung
char data[1000];// Datenpacket von 1000 byte bzw Datenwerten wird festgesetzt
int start;

void setup()
{
  Serial.begin(250000);//Baudrate 250000 = 31.25KByte
  
  ADMUX=B01100000; //Input A0 laut Registervorgabe
  ADCSRA=B11000011;// 8 als divisions faktor zwischen Systemtakt und Input Signal -> Prescale
  ADCSRB=0x00;//free running modus -> schnell !
}

void loop()
{
  
  if(Serial.available()!=0)// Wenn Daten ankommen....
  {
    start=Serial.read(); //...beginne zu lesen
  
    ADCSRA=(ADCSRA&B11111000)|(start&B00000111);//"Lese"-Geschwindigkeit
      
    for(int i=0;i<1000;i++)//Daten aufnehmen und in Array von 1000 Werten (wie festgesetzt) speichern
      {
        startconversion(); // Starte Konvertierungsvorgang bzgl festgelegter Maskierung
        data[i]=sammeln(); // Daten werden im Array gesammelt über die Funktion sammeln()
        Serial.print(data[i]); // Wenn alle Daten aufgenommen sind, werden diese ausgegeben
      }  
    
  }
}

void startconversion()// Funktion für die Konvertierung
{
  ADCSRA=ADCSRA|mask;// starte conversion
}

int sammeln()// Funktion für das Sammeln der Daten
{
  while((ADCSRA&mask)==mask)//dauerhaftes sammeln von Daten
  {
  }

  return ADCH; // Auf dem Arduino vorhandenes Speicher-Register der ADC Daten, welche nun mit return abgerufen werden
}



RE: Analoge Eingänge nacheinander abfragen - GerdW - 17.05.2016 14:01

Hallo t0bsn,

warum wird deine serielle Schnittstelle in einer Schleife immer wieder erneut initialisiert, bis man einen Start-Button anklickt? Und das auch noch so schnell es nur geht? Hmm
Warum fragst du in deiner Hauptschleife 1000mal ein einzelnes Byte ab? Warum nicht einfach gleich 1000 Bytes abfragen?
Warum gibt es in der Hauptschleife eine Schleife, in der auf einen "Ein"-Button gewartet wird? Die gehört da nicht hinein (oder nicht so auf diese Art und Weise)!

Zitat:Serial.begin(250000);//Baudrate 250000 = 31.25KByte
Bei 250kbaud beträgt deine Datenrate eher 25kB/s…
Außerdem hast du das TermChar aktiviert, ich glaube kaum, dass das hier sinnvoll ist.

Zitat:Angesteuert bzw. ausgewählt wird der Eingang in dem C Programm dazu. Im ADMUX Register kann dieser mit den letzten 4 Bits festztgesetzt warden.
Nun möchte ich, dass der Arduino nacheinander alle 6 analogen Eingänge liest
Zu diesem ersten Teilproblem:
Wenn du weißt, wie man einen Kanal konfiguriert und auf dem Arduino ausliest, dann solltest du eigentlich auch wissen, wie man 6 verschiedene Kanäle konfiguriert und ausliest…
Ist dem so?

Zitat:jeweils in einem separaten Graph in Labview ausgibt.
Ich würde ja eher 6 Plots in einem Graph verwenden…
Außerdem solltest du dann eher Datenblöcke von 996 Bytes statt 1000 übertragen!


RE: Analoge Eingänge nacheinander abfragen - t0bsN - 18.05.2016 07:10

Zitat:warum wird deine serielle Schnittstelle in einer Schleife immer wieder erneut initialisiert, bis man einen Start-Button anklickt? Und das auch noch so schnell es nur geht?

Ds werde ich noch weg nehmen, warnur eine Spielerei meinerseits. Die "Ein schleife" ist halt dafür da, dass wenn ich den Button nicht gedrückt habe, das oszi bild stehen bleibt, sodas es genauer betrachtet warden kann. Beim anfertigen hatte ich dmals den "Messungs-Graph " noch nicht, deswegen dieses Hilfsmittel.

Zitat:Wenn du weißt, wie man einen Kanal konfiguriert und auf dem Arduino ausliest, dann solltest du eigentlich auch wissen, wie man 6 verschiedene Kanäle konfiguriert und ausliest…
Ist dem so?

Ja also ich weis, wie ich die einzelenen Ausgänge auswähle....allerdings kann ich immer nur einen auswählen weil ich irgendwie nicht darauf komme wie ich es in dem C Programm umsetze, dass er einen nach dem anderen ausliest.

Zudem halt die Übertragung zu Labview...mit den Plots das ist denke ein guter Ansatz. Wie realisiere ich das in Labview ?
Edit: Da ich ja am Besten alle 6 Eingänge dann als "standbild" haben möchte um diese zu vergleichen :/


RE: Analoge Eingänge nacheinander abfragen - GerdW - 18.05.2016 17:46

Hallo tobsn,

Zitat:wie ich es in dem C Programm umsetze, dass er einen nach dem anderen ausliest.
Hattest du nicht in einem anderen Thread schon den C-Code gezeigt, der mehrere Kanäle auslesen kann?
Nimm den doch einfach als Vorlage!

Zitat:Wie realisiere ich das in Labview ?
so z.B.:
[attachment=55931]
Gleich zwei Wege, um ein 1D-Array (aus Daten wie "ch0, ch1, …, ch5, ch0, ch1, …") in ein 2D-Array umzuformen…


RE: Analoge Eingänge nacheinander abfragen - t0bsN - 19.05.2016 07:18

Zitat:Hattest du nicht in einem anderen Thread schon den C-Code gezeigt, der mehrere Kanäle auslesen kann?
Nimm den doch einfach als Vorlage!

Ich hatte mal einen Thread , da habe ich aber noch das Arduino Plugin für Labview genutzt, da ging das alles etwas einfacher jedoch hat es den Arduino aber in seiner Leistung gebremst, wesswegen ich alles neu mit Assembler geschrieben habe und die Visa Tools genutzt hatte zur Kommunikation.

Zitat:so z.B.:

Also wenn ich das 2D array dann Plotte sind dort 6 Graphen drin ?


RE: Analoge Eingänge nacheinander abfragen - GerdW - 19.05.2016 09:15

Hallo tobsn,

Zitat:wesswegen ich alles neu mit Assembler geschrieben habe
Dann handelt es sich wohl jetzt um ein Problem mit der Arduino-Programmierung.
Ich gehe davon aus, dass die Arduino-IDE auch schon Beispiel-Projekte mitbringt, die dein Problem beantworten und erläutern!?
Und ich glaube auch, dass diese Frage in einem Arduino-Forum besser aufgehoben wäre…

Zitat:Also wenn ich das 2D array dann Plotte sind dort 6 Graphen drin ?
Ja.


RE: Analoge Eingänge nacheinander abfragen - t0bsN - 19.05.2016 11:24

Super vielen Dank.

Dann werde ich mich bzgl des Arduino Codes mal an ein anderes Forum wenden und das LabView Programm wie oben genannt ändern Smile