mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LM75 Bascom Thermometer


Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich arbeite mit dem Temperatursensor LM75 und dem Programm Bascom.
Habe bei der Erstellung des Thermometers jedoch einige Schwierigkeiten.
Ich möchte zum Beispiel Temperaturen, die ich messe speichern. Kenne 
mich jedoch nicht sher gut mit den Befehlen aus und bräuchte etwas 
Hilfe.
Mit welchem Befehl kann man Daten speichern?
Gruß Robin

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robin schrieb:
> Mit welchem Befehl kann man Daten speichern?
> Gruß Robin


Und wo willst du die Messdaten speichern?

Autor: Tippgeber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es um den Eeprom geht dann sowas ?

Am Einfachsten ist es, die Variable mit dem Zusatz „ As Eram“ zu 
deklarieren:


Dim Temp As Eram Single

Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Skript Kiddy schrieb:
> Und wo willst du die Messdaten speichern?


Auf einem Mikrocontroller. Möchte nur später, dass mir die kleinste 
Temperatur auf einem Display angezeigt wird.

Autor: XXX (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Zeig doch mal, was du bisher hast.
Das ganze sollte doch nicht so schwer sein.

Gruß
Joachim

Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Do
I2cstart
I2cwbyte 145
I2crbyte Wert , Nack
I2cstop
Locate 1 , 1
Lcd Wert
Locate 1 , 0
Loop

End

Autor: Tippgeber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist es alles wat Du an Code hast ?

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robin schrieb:
> Auf einem Mikrocontroller. Möchte nur später, dass mir die kleinste
> Temperatur auf einem Display angezeigt wird.
Dann brauchste nich wirklich alle Temperaturen zu speichern.
Zwei Variablen genügen:

T_min     (kleinste Temperatur)
T_aktuell (gemessene Temperatur)

Bei der ersten Messung speicherst du die gemessene Temperatur in T_min.
Danach vergleichst du jede Messung mit T_min:

Wenn T_aktuell < T_min  dann T_min=T_aktuell

Dann kannst du, wann immer es dir beliebt T_min auf dem Diplay ausgeben 
und siehst die niedrigste Temperatur des Temperaturverlaufes seit dem 
Reset des Mikrocontrollers.

Auf dein Beispiel bezogen bedeutet das:
'Das erste Einlesen
I2cstart
I2cwbyte 145
I2crbyte T_aktuell , Nack
I2cstop 

T_min = T_aktuell
Locate 1 , 1
Lcd T_min
Locate 1 , 0
Do
I2cstart
I2cwbyte 145
I2crbyte Wert , Nack
I2cstop
If  T_min > T_aktuell Then 
  T_min = T_aktuell
End if
Locate 1 , 1
Lcd T_min
Locate 1 , 0
Loop

End



Gruß Skriptkiddy

Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja und den habe ich noch, um anzuzeigen, ob eine Plus-oder 
Minustemperatur vorhanden ist:
 If Wert > 200 Then Lcd "-" Else Lcd "+"
Ansonsten habe ich ja damit schon die Programmierung, die mir die 
Temperatur auf dem Display anzeigt.

Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach und in den Deklarationen habe ich noch das:
Config Lcd = 16 * 2
   Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , 
Db7 = Portb.0 , E = Portb.4 , Rs = Portb.6
   Config Lcdbus = 4
   Initlcd
   Cls
Config Scl = Portb.5
Config Sda = Portb.7

Dim Wert As Byte

Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Skript Kiddy schrieb:
> Robin schrieb:
>> Auf einem Mikrocontroller. Möchte nur später, dass mir die kleinste
>> Temperatur auf einem Display angezeigt wird.
> Dann brauchste nich wirklich alle Temperaturen zu speichern.
> Zwei Variablen genügen:
>
> T_min     (kleinste Temperatur)
> T_aktuell (gemessene Temperatur)
>
> Bei der ersten Messung speicherst du die gemessene Temperatur in T_min.
> Danach vergleichst du jede Messung mit T_min:
>
> Wenn T_aktuell < T_min  dann T_min=T_aktuell
>
> Dann kannst du, wann immer es dir beliebt T_min auf dem Diplay ausgeben
> und siehst die niedrigste Temperatur des Temperaturverlaufes seit dem
> Reset des Mikrocontrollers.


Super, ich denke, dass mir das schonmal weiterhilft, werde es später mal 
ausprobieren...dankeschön

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robin schrieb:
> If Wert > 200 Then Lcd "-" Else Lcd "+"
Wie kommst du darauf?

Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn Bytes von den Werten 200 bis 255 übertragen werden handelt es sich 
um Minustemperaturen, andernfalls bei übertragenen Bytes von 0- 127 
heißt dies, dass positive Temperaturen vorliegen

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robin schrieb:
> wenn Bytes von den Werten 200 bis 255 handelt es sich
> um Minustemperaturen
Nein bei allen Werten ab 128 (unsigned).
Bei dir ist aber wert=255 --> -255 Grad. Das ist Blödsinn. Es sind 
nämlich nur -1 Grad. Schau dir mal das Zweierkomplement[1] an.

Gruß Skriptkiddy



[1] http://de.wikipedia.org/wiki/Zweierkomplement

Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber soweit ich weiß, wandelt der das doch automatisch in die richtige 
Temperatur um, oder?

Autor: Tom Z. (tom_z)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, wieso?
rechnen musst du selber.
Das was du als Programm geschrieben hast zeigt dir nur die "Roh-Daten" 
an.

MfG Tom

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Byte ist in Bascom eine 8-Bit vorzeichenlose Ganzzahl. Das heiß Sie 
geht von 0 bis 255. Da bildet Bascom garnichts auf einen negativen 
bereich ab.

Wenn du den Betrag des negativen Wertes haben möchtest, dann mache es 
so:
if wert > 127 then
    betrag = ( 255 - wert ) + 1 'Betrag der negativen Temperatur
end if    

Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Skript Kiddy schrieb:

>
> Wenn du den Betrag des negativen Wertes haben möchtest, dann mache es
> so:
> if wert > 127 then
>     betrag = ( 255 - wert ) + 1 'Betrag der negativen Temperatur
> end if

und dann muss ich noch if wert > 127 then LCD"-" else lcd "+" einfügen?
weil ich will ja richtig angezeigt haben, dass Minustemperaturen 
herrschen

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robin schrieb:
> und dann muss ich noch if wert > 127 then LCD"-" else lcd "+" einfügen?
> weil ich will ja richtig angezeigt haben, dass Minustemperaturen
> herrschen
Ist die Frage jetzt ernst gemeint?

Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja oder muss ich if Betrag the lcd "-" einfügen?

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Robin schrieb:
> ja oder muss ich if Betrag the lcd "-" einfügen?
Denk doch mal nach. Wie ist der (abolute) Betrag definiert?

kopfschüttel

Autor: Robin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Skript Kiddy schrieb:
> Denk doch mal nach. Wie ist der (abolute) Betrag definiert?

er gibt den Abstand von 0 an, aber das könnte dann ja auch positiv sein

Autor: derbär (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Thomas Der Bastler (thomasderbastler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.