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
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
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
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?
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.
Und bei 1-wire (z.B. DS 1822) wären es 2^64 Sensoren, da jeder Sensor eine eigene 64Bit Adresse hat. Oder?
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.
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
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
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.
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
Hallo, such mal nach "UTI03" ( http://www.smartec.nl/ ). Den habe ich schon öfters verwendet, der ist ganz anständig. Grüße
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.
Alle sind open drain, bloß bei P0 fehlen noch die internen Pull-Ups. Peter
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)
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 :)
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.