Go Down

Topic: Arduino Uno Analog Read / Oszi (Read 758 times) previous topic - next topic

michael_x

"macht er gar nix" heisst, er meldet tausend mal 0 ? Das ist deutlich mehr als gar nix !

Quote
im setup die ADMUX zuweisung weg lassen
ist natürlich falsch.


Oder, wenn du sie weglässt, musst du dies schreiben:

ADMUX=B01100000 + (start & 0x07);
Die Prescaler - Anweisungen natürlich erst recht drin lassen.

t0bsN

Also das Programm aus Post #42 gibt sowohl im seriellen monitor der IDE nix aus und am labview program auch nicht...


nutze ich mein ausgangsprogramm aus Post #28 ergänzt um die Zeile 

ADMUX = (ADMUX & 0xF0) | (start & 0x07);

in der loop function, so gibt er mir im  seriellen monitor nur:

ŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸŸ

aus und im labview programm eine Nulllinie

DrDiettrich

Was erwartest Du bzw. das Labview Programm als Ausgabe?

Mit Serial.write() schickst Du binäre Bytes raus, die der Serial Monitor als seltsame Zeichen interpretiert, und Labview als ungültige Zahlen. Mit Serial.println() sähe das schon mal leserlicher aus.

michael_x

#48
May 21, 2016, 11:55 am Last Edit: May 21, 2016, 03:44 pm by michael_x
Quote
das Programm aus Post #42 gibt sowohl im seriellen monitor der IDE nix aus und am labview program auch nicht
Das Programm aus #42 erwartet eine Eingabe (vom SerialMonitor: Geschwindigkeit 250000, kein Zeilenende) eine Zahl (entweder Prescaler oder nach Änderung Kanal 0 .. 5) und gibt daraufhin 1000 Zeilen mit Zahlen 0 .. 1023 aus. Mit jedem eingetippten Zeichen +Senden  sollte der Schwall Daten kommen, was genau kommt bei anderen Eingaben, ist erstmal egal.

( Das ist jedenfalls der Plan ;) )

t0bsN

#49
May 23, 2016, 02:29 pm Last Edit: May 23, 2016, 02:41 pm by t0bsN
Was erwartest Du bzw. das Labview Programm als Ausgabe?

Ich möchte, dass ich mein Labview Programm starte und der Arduino nacheinander immer wiederholend die 6 analogen Eingänge liest und im Labview je ein Graph der 6 Wechselsignale anzeigt wird....

Quote
Das Programm aus #42 erwartet eine Eingabe (vom SerialMonitor: Geschwindigkeit 250000, kein Zeilenende) eine Zahl
Ah okay, ja dann gibt er mir lauter 3n aus...sicherlich 1000 :D

und wie sage ich ihm welchen kanal er nehmen soll ?  da er optimaler weise ja automatisch nacheinenader jeden kanal einmal abfragen soll und dann das ganze wieder von vorn :)

michael_x

Quote
da er optimaler weise ja automatisch nacheinenader jeden kanal einmal abfragen soll und dann das ganze wieder von vorn
.. hast du Probleme zu erkennen, welcher Kanal gerade übertragen wird.

Quote
Ich möchte, dass ich mein Labview Programm starte und der Arduino nacheinander immer wiederholend die 6 analogen Eingänge liest und im Labview je ein Graph der 6 Wechselsignale anzeigt wird.
Eine schöne Labview-Aufgabe ;)

t0bsN

.. hast du Probleme zu erkennen, welcher Kanal gerade übertragen wird.

ich habe eher das gefühl, dass er die eingänge immernoch nicht nacheinander durchgeht :D
weil er ja immer nur 1mal 1000 werte im seriellen moniter ausgibt, es ja aber insgesamt 6000 sein sollten...

Eine schöne Labview-Aufgabe ;)
ja das stimmt :D aber das grundprogramm steht ja...und sobald ich es habe das er 6000 werte ausgibt, muss ich ihm ja nur sagen mache immer nach 1000 werten einen neuen plot ;)

michael_x

Quote
ich habe eher das gefühl, dass er die eingänge immernoch nicht nacheinander durchgeht
Das ist keine Gefühlsfrage, das ist so gemacht. (Wenn du nicht was anderes gemacht hast als diskutiert)

Dein labview könnte doch eine '0' ausgeben, 1000 werte lesen und anzeigen, dann eine '1' ausgeben, lesen und einen anderen Plot anfangen, usw. Irgendwie muss das Senden auf dem Arduino doch angestoßen werden, oder?
Wie synchronisieren sich labview und arduino? Wie kriegst du labview dazu, nochmal 1000 oder 6000 anzufordern?
Natürlich könntest du statt 1000 Werte auch "vollautomatisch" 6*1000 senden (mit jeweils einer Lücke dazwischen für Kanal umschalten und neu einlesen). Bist du sicher dass das für das labview einfacher wird? 

Und da die 6 Analogkanäle zeitlich sowieso nichts miteinander zu tun haben, wofür brauchst du überhaupt 6 Kanäle?


t0bsN

Quote
Das ist keine Gefühlsfrage, das ist so gemacht. (Wenn du nicht was anderes gemacht hast als diskutiert)
Aber müsste er mir dann nicht 6000 Werte ausgeben ? oder habe ich einen Denkfehler ?
Macht er immer erst bei erneuter Eingabe den nächsten kanal ?

Quote
Und da die 6 Analogkanäle zeitlich sowieso nichts miteinander zu tun haben, wofür brauchst du überhaupt 6 Kanäle?

Also das Endziel ist folgendes:

Ich soll in meinem Projekt ein Prüfstand bauen und habe in diesem Prüfprozess 5LEM Wandler verbaut und eine differentielle Spannungsmessung....und genau die 6 Signale bzw Spannungen soll es mir dann in Labview anzeigen, sodas ich sofort sehe...sind diese okay oder besteht irgendwo ein Fehler :)

DrDiettrich

Es kommt drauf an, wie gut Du darin bist, die angezeigten Kurven zu interpretieren. Üblicherweise erwartet man äquidistante Meßwerte, mit definierter Skalierung und Zusammenhang zwischen mehreren Kurven. Ob das mit Deinem Ansatz gegeben ist bzw. machbar ist, mußt Du selbst wissen.

michael_x

Wenn du noch dieses Beispiel verwendest:
Code: [Select]
void loop() {
  if(Serial.available()!=0)// Wenn Anforderung ankommt....
  {
    char start=Serial.read(); // Lies den gewünschten Kanal 0 .. 5
    ADMUX = (ADMUX & 0xF0) | (start & 0x07);
    ...

wäre es schön, wenn du raten könntest, wann ADMUX (und wie) verändert wird...

Tipp: wenn über Serial der Text "012345" reinkommt, was passiert dann?

Bleibt immer noch meine unbeantwortete Frage, wodurch das ganze überhaupt gestartet werden soll, wenn dir ein Serial.read() nicht gefällt.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy