Forum: Mikrocontroller und Digitale Elektronik Sensorwerte werden bei zeitdiskreter Abfrage nur unregelmäßig dargestellt


von R. W. (riwen)


Lesenswert?

Hi Leute,

ich habe einen digitalen Sensor (HYT-221) für Relative Luftfeuchtigkeit 
und Temperatur an meinen Atmega32 angeschlossen und möchte die Werte in 
Labview darstellen.
Ich will die Werte folgendermaßen auslesen: Die Werte sollen nur dann an 
den Rechner übertragen werden, wenn Labview danach fragt. Somit schickt 
Labview in regelmäßigen Abständen einen kleinen String an den 
controller, welcher daraufhin die Werte auslesen und ausgeben soll.
Problem: Es werden nur jedes zweite Mal richtige Werte dargestellt. Die 
dazwischen sind negativ oder sehr gering. Ich weiß nicht, wo er die her 
hat. Außerdem reagiert der Sensor auf Änderungen nur sehr spät. Das ist 
innerhalb meiner Anwendung nicht besonders tragisch, ich würde aber 
einfach gerne wissen warum. Hat jemand von euch Ideen? Danke!!!

Mein Basic-Programm ist so aufgebaut:
1
Do
2
3
Input #1 , Eingabe
4
5
Wert = Left(eingabe , 1)
6
7
If Wert = "1" Then
8
9
   Sound Portd.7 , 400 , 450
10
   Measurement
11
12
End If
13
14
Loop
15
16
17
18
Sub Measurement()
19
20
I2cstart
21
   I2cwbyte Hyt221write
22
I2cstop
23
24
I2cstart
25
   I2cwbyte Hyt221read
26
   I2crbyte Humhigh , Ack                                   ' Auslesen der 4 Bytes
27
   I2crbyte Humlow , Ack
28
   I2crbyte Temphigh , Ack
29
   I2crbyte Templow , Nack
30
I2cstop
31
32
33
Humidity = Humhigh * 256                                    ' Umrechnen von Humhigh und Humlow in 16Bit-Wert
34
Humidity = Humidity + Humlow
35
Humidity = Humidity And &H3FFF                              ' Rauskürzen der Status-Bits
36
37
Temperature = Temphigh * 256                                ' Umrechnen in 16-Bit-Wert
38
Temperature = Temperature + Templow
39
Temperature = Temperature / 4                               ' Verschieben um 2 Bits nach Rechts
40
41
42
Print Humidity ; Temperature
43
44
45
End Sub

von R. W. (riwen)


Lesenswert?

Ps.: Wenn ich die Werte kontinuierlich abfrage, funktioniert alles 
einwandfrei: Gute Werte, Schnelle Reaktion

von spess53 (Gast)


Lesenswert?

Hi

>Die Werte sollen nur dann an
>den Rechner übertragen werden, wenn Labview danach fragt. Somit schickt
>Labview in regelmäßigen Abständen einen kleinen String an den
>controller,...

BASCOM verwendet Nullterminierte Strings. Wie sieht denn der von Labview 
gesendete String aus?

MfG Spess

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

R. W. schrieb:
> Mein Basic-Programm ist so aufgebaut:
Pack da doch in Zukunft die passenden Tokens drumrum:
https://www.mikrocontroller.net/articles/Formatierung_im_Forum
Wenn keiner passt, dann ist der [code] Token (und sein Partner) auch gut 
genug...

von Karl H. (kbuchegg)


Lesenswert?

R. W. schrieb:
> Außerdem reagiert der Sensor auf Änderungen nur sehr spät. Das ist
> innerhalb meiner Anwendung nicht besonders tragisch, ich würde aber
> einfach gerne wissen warum. Hat jemand von euch Ideen? Danke!!!


Natürlich habe ich Ideen.
Was, zum Bleistift, macht der

   Sound Portd.7 , 400 , 450

da drinnen? Und du wunderst dich, dass das zäh geht?

von Karl H. (kbuchegg)


Lesenswert?

> Ich weiß nicht, wo er die her hat.

Fehler suche so wie immer:

Schau nicht nur auf das Ergebnis, sondern auch auf die Ausgangswerte. In 
deinem Fall dann eben auf die Bytes, die du vom Sensor bekommst bzw. den 
String, den sich LabView von der SChnittstelle holt.

von R. W. (riwen)


Lesenswert?

An Karl Heinz: Natürlich wundere ich mich. Ich habe den sound da nur für 
einen Test reingepackt, aber ohne ihm läuft das ganze auch nicht besser.

von R. W. (riwen)


Lesenswert?

@ Lothar: danke! mach ich das nächste Mal.
@ Spess: Ich habe ein Wagenrücklaufsymbol an meinen eigentlichen String 
mit drangehängt. Das habe ich schon mit beachtet.

von spess53 (Gast)


Lesenswert?

Hi

>@ Spess: Ich habe ein Wagenrücklaufsymbol an meinen eigentlichen String
>mit drangehängt. Das habe ich schon mit beachtet.

Genau das ist ja meine Befürchtung/Vermutung. Was ist, wenn INPUT auf 
ein NULL-Zeichen wartet, aber in deinem String keins enthalten ist?

MfG Spess

von R. W. (riwen)


Lesenswert?

Ich weiß jetzt, woran es liegt. Er gibt mir bei jedem zweiten Mal den 
String "1" zurück - also quasi den String, der eigentlich nur an den 
Atmega gesendet werden soll. Habt Ihr eine Idee, weshalb er das macht?

von Karl H. (kbuchegg)


Lesenswert?

spess53 schrieb:

> Genau das ist ja meine Befürchtung/Vermutung. Was ist, wenn INPUT auf
> ein NULL-Zeichen wartet, aber in deinem String keins enthalten ist?

Laut
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/uart_rs232_vom_computer/

wartet INPUT auf einen CR. Das würde also stimmen.

Aber das ist interessant: INPUT macht ein Echo. Das würde ich gleich mal 
ausschalten. Das könnte auch der Grund sein, warum die Rückmeldung der 
Werte nicht richtig bzw nur jedes 2. mal funktioniert.

von R. W. (riwen)


Lesenswert?

Spess, Du bist der Beste. Das mit dem lokalen Echo des Befehls Input ist 
das Problem. Ich verwende jetzt Inkey(). Läuft 1A. Sogar die Verzögerung 
ist weg. Ich werde das noch weiter testen.

von Karl H. (kbuchegg)


Lesenswert?

R. W. schrieb:
> Spess, Du bist der Beste. Das mit dem lokalen Echo des Befehls Input ist
> das Problem. Ich verwende jetzt Inkey().

Kann man machen.
Man hätte aber auch einfach mit
  ECHO OFF
das Echo einfach abschalten können.


Manchmal frag ich mich ehrlich wozu ich mir eigentlich die Mühe mache, 
für andere die Tutorien im Web zu suchen, die zu lesen und dann auch 
noch die relevanten Links zu posten, wenn es eh kein Schwein 
interessiert.

von spess53 (Gast)


Lesenswert?

Hi

>Spess, Du bist der Beste. Das mit dem lokalen Echo des Befehls Input ist
>das Problem. Ich verwende jetzt Inkey(). Läuft 1A. Sogar die Verzögerung
>ist weg.

Das war Karl-Heinz.

MfG Spess

von Falk B. (falk)


Lesenswert?

@ Karl Heinz Buchegger (kbuchegg) (Moderator)

>Manchmal frag ich mich ehrlich wozu ich mir eigentlich die Mühe mache,
>für andere die Tutorien im Web zu suchen, die zu lesen und dann auch
>noch die relevanten Links zu posten, wenn es eh kein Schwein
>interessiert.

Helfersyndrom. Kein Witz.

von R. W. (riwen)


Lesenswert?

Sorry, verlesen. Aber danke! mit Echo off habe ich immer noch da Problem 
der großen Verzögerung. Es hat mich interessiert- es war die Lösung^^

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.