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


von Sebastian B. (lufti)


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

von Mike Schultz (Gast)


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

von TOM (Gast)


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

von Sebastian B. (lufti)


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?

von Mike Schultz (Gast)


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.

von Sebastian B. (lufti)


Lesenswert?

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

von Mike Schultz (Gast)


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.

von Sebastian B. (lufti)


Angehängte Dateien:

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

von Peter Dannegger (Gast)


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/thclock/index.htm


Peter

von Mike Schultz (Gast)


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.

von Sebastian B. (lufti)


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

von Ppp M. (sanic)


Lesenswert?

Hallo,

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

Grüße

von Sebastian B. (lufti)


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.

von Sebastian B. (lufti)


Angehängte Dateien:

Lesenswert?

Anlage

von Peter Dannegger (Gast)


Lesenswert?

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


Peter

von Sebastian B. (lufti)


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)

von Sebastian B. (lufti)


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 :)

von Volker (Gast)


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

von Patrick (Gast)


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!

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.