www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Temperatur ohne AD-Eingang messen


Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich benutze den AT89C51ed2 von Atmel.
Ich möchte gerne Temperatur mit diesem Controller messen. Das Problem
ist, dass der Controller keinen Analogen Eingang hat.
Und auch mehr als 4-Pins kann ich nicht opfern.

Gibt es einen digitalen (seriell) Temperatursensor, oder einen
einfachen IC, an dem ein oder mehrere Temperatursensoren hängen können,
der seriell mit meinem 8051 kommuniziert?


Vielen Dank für eure Hilfe,

liebevoll .. Sebastian

Autor: Mike Schultz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit den wenigstens Pins kommst du beim DS18S20 aus. Der braucht nämlich
nur einen.
Genug Infos solltest du im Forum auch dazu finden  können.

Mike

Autor: TOM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit einem DS1621 oder LM74 über I2C-Bus?
Dafür benötigst du nur zwei Portpins und kannst auch mehrere
dranhängen. Gibts sicherlich einiges hier im Forum, wenn du nach einem
der Typen suchst.

Gruß

Thomas

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
I2C Bus habe ich nicht an meinem Controller.
Kann man das selber schreiben? Gibt es das vllt schon?

Danke für die bisherige Hilfe! I2C wäre super. Da nur zwei Pin benötigt
werden.
Wie viele Sensoren wären mit dem I2C realisierbar?

Autor: Mike Schultz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sowohl I2C als auch oneWire wie bei meinem Vorschlag sind in Software
realsierbar.

Theoretisch sind bei I2C 256 Sensoren möglich (da 8Bit Adresse)
allerdigns funktionieren meistens nur so 8 an einem Bus, da die
Sensoren sich nur auf 8 Adressen einstellen lassen, der Rest der Bits
ist fest. Hängt aber immer vom Hersteller/Sensor ab.

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und bei 1-wire (z.B. DS 1822) wären es 2^64 Sensoren, da jeder Sensor
eine eigene 64Bit Adresse hat.
Oder?

Autor: Mike Schultz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, nicht ganz.
Ich hab den Aufbau der Adresse gerade nicht im Kopf, aber so weit ich
weiß steht in der Adresse auch drin, Melcher Sensortyp das ist, eine
Checksummer, ob alle richtig übertragen wurde und noch ein paar mehr
Sachen. Sind also auch nicht ganz so viele.

Autor: Sebastian B. (lufti)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Jo, habs jetzt auch gelesen.
Nur 48Bit bleiben für die eigendliche Adresse. Also 2^48 Sensoren sind
möglich auf einem 1-wire.

Hab da noch ne Frage zu genau diesem:
Auf dem 1-wire wird gesendet UND empfangen?! Geht das mit jedem Pin vom
µC?
In Figure 5 im Datenblatt (Als Anlage bei) ist eine Anschlussmethode
gezeigt, die für mich am besten wäre (also nicht Parasite-Powered).
Dort gibt es einen Pull-Up zu Vcc am 1-wire zum Microcontroller. Der
sorgt doch dafür, dass der Controller davon ausgeht, dass der Pin, an
dem der 1-wire sitzt ein Eingang ist und kein Ausgang! Wie kann der
Controller da doch noch senden?
Das verstehe ich nicht!

Bitte helft mir :/

liebevoll .. Sebastian

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim 8051-er brauchst Du Dir überhaupt keine Gedanken machen, die sind
ja schon von Haus aus open-drain.

Und hier mal ein Codebeispiel:

http://home.tiscali.de/peterd/appl/soft/c51/thcloc...


Peter

Autor: Mike Schultz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau richitg, auf einer Leitung wird gesendet udn empfangen. Das ist
übrigens bei I2C auch so, hier gibt es nur noch eine zusätzliche
Taktleitung.
Funktionieren tut das mit jedem Pin, den du als IO nutzen kannst.

Der Pullup zieht den Bus einfach nur hoch.
Zum Senden zieht der µC den Bus runter oder auc hhalt nicht. Zum
empfangen zieht der Sensor den Bus runter oder nicht.
Der Pullup hat nichts damit zu tun, ob der Pin Eingang oder Ausgang
ist. Der sorgt nur dafür, daß die Leitung einen definierten Pegel hat.

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Supi, vielen Dank!

Ich hab mal im Datenblatt meines AT89C51ed2 nachgelesen. Da steht nur,
dass Port0 Open-Drain I/Os hat. Ich benutze aber P1.7. Kann ich den
auch benutzen? Ich möchte nur ungern auf P0 umsteigen.

hoffnungsvoll .. Sebastian

Autor: Ppp Mmm (sanic)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

such mal nach "UTI03" ( http://www.smartec.nl/ ).
Den habe ich schon öfters verwendet, der ist ganz anständig.

Grüße

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir jemand sagen, ob der P1 vom AT89C51ed2 (Datasheet als Anhang)
auch wie P0 Open-Drain ist?!

Im Datasheet steht leider nur, dass P0 Open-Drain ist.

p.s. habe mich für DS18B20 als 1-wire Temperatursensor entschieden.

Autor: Sebastian B. (lufti)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anlage

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle sind open drain, bloß bei P0 fehlen noch die internen Pull-Ups.


Peter

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann kann ich ja P1.7 benutzen, solange ich den 4.7k Pull-Up weglasse.
Oder?
Beim P0 bräuchte ich ihn!
(Datasheet von oben vom Sensor -> Figure5)

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, Dann geh ich mal davon aus, dass ich den Pull-Up nicht
brauche/anschließen sollte, wenn der Pin schon einen Pull-Up intern
hat.

Danke für eure Hilfe ... wie immer :)

Autor: Volker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube die internen Pullups liegen bei ca. 50K,
deshalb kann es nicht schaden noch zusätzlich den 4K7 laut
Datenblatt des DS18B20 zu nehmen.
Bei meinen Schaltungen mit dem DS18B20 und 80C51 Derivat habe ich ihn
jedenfalls drin und hatte keine Probleme.

Falls der Pullup zu groß ist kann das bei langen Leitungen
(große Kapazität) zu einem Verschleifen der Anstiegszeit führen.

Volker

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe vor eine Heizungssteuerung zu basteln.
Ich sollte mindestens 10 Temperaturwerte einlesen können. Jedoch habe
ich ein AVR Mega32 mit nur einem I2C Bus. Ist es irgendwie doch
möglich? Die Abfragezeit spielt dabei kaum eine Rolle (ob Pumpe 1s
früher/später schaltet ist egal)

Welcher Sensor kommt in Frage?

Habe mir mal den DS1621 angekuckt aber ob da so viele gehen?


Danke!

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.