INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Analoge Eingänge nacheinander abfragen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

17.05.2016, 12:00
Beitrag #1

t0bsN Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: May 2016

2013
-
DE



Analoge Eingänge nacheinander abfragen
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
}


Angehängte Datei(en)
13.0 .vi  Oszi_analoger_Eingang.vi (Größe: 22,77 KB / Downloads: 158)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.05.2016, 14:01 (Dieser Beitrag wurde zuletzt bearbeitet: 17.05.2016 14:04 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.424
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Analoge Eingänge nacheinander abfragen
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!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.05.2016, 07:10 (Dieser Beitrag wurde zuletzt bearbeitet: 18.05.2016 08:33 von t0bsN.)
Beitrag #3

t0bsN Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: May 2016

2013
-
DE



RE: Analoge Eingänge nacheinander abfragen
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 :/
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.05.2016, 17:46
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.424
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Analoge Eingänge nacheinander abfragen
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.:
   
Gleich zwei Wege, um ein 1D-Array (aus Daten wie "ch0, ch1, …, ch5, ch0, ch1, …") in ein 2D-Array umzuformen…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2016, 07:18
Beitrag #5

t0bsN Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: May 2016

2013
-
DE



RE: Analoge Eingänge nacheinander abfragen
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 ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2016, 09:15
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.424
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Analoge Eingänge nacheinander abfragen
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.

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.05.2016, 11:24
Beitrag #7

t0bsN Offline
LVF-Grünschnabel
*


Beiträge: 27
Registriert seit: May 2016

2013
-
DE



RE: Analoge Eingänge nacheinander abfragen
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Werte nacheinander in Array schreiben über ein Schieberegister BlackEagle 5 7.725 13.12.2019 13:40
Letzter Beitrag: GerdW
  Analoge Signale zeitgleich abfragen Fraser-Island 9 4.704 13.05.2016 08:58
Letzter Beitrag: GerdW
  2 Ereignisse nacheinander auslösen jan_1 31 14.886 13.04.2016 19:27
Letzter Beitrag: Lucki
  While-Loops nacheinander ausführen w0wka91 9 6.181 27.11.2014 23:36
Letzter Beitrag: Lucki
  aus Anzeigeelement nacheinander Werte auslesen kadke 30 14.747 27.11.2014 09:22
Letzter Beitrag: dali4u
  Zwei Vis nacheinander aufrufen Mel 4 3.679 08.04.2013 13:21
Letzter Beitrag: Mel

Gehe zu: