PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ADC0804 und LM35 an µC



demmy
05.11.2013, 20:15
Hallo zusammen,

ich bin gerade dabei eine kleine µC-Schaltung aufzubauen und würde gerne zum ersten mal den ADC0804 verwenden um eine vom LM35 gemessene Temperatur Digital mittels parallelport an den µC zu übergeben.

Dazu habe ich mir folgende Schaltung überlegt. Der ADC0804 soll im "Free Run Mode" arbeiten.

26670

Würdet Ihr noch etwas optimieren? Und ist der Transistor an INTRT/WR unbedingt notwendig? Laut Datenblatt muss/kann man die beiden Pins zu beginn einmal kurz auf Masse ziehen um den ADC zu starten!? Allerdings habe ich die Schaltug auch schon gesehen ohne das diese Pins auf Masse waren, wobei ich nicht weiß ob diese Schaltung dann funktioniert hat. Deshalb evtl. die Frage an jemanden der schon mal mit dem 0804 gearbeitet hat.

Vielen Dank für euere Hilfe.

Viele Grüße

RoboHolIC
06.11.2013, 01:12
Ich würde zuerst versuchen, den ADC0804 wegzuoptieren, mal so ganz spontan gesagt.
Hat dein µC keinen (freien) ADC-Eingang bzw. welchen Grund siehst du für den Einsatz eines technisch überholten ADC-Typs?

Vielleicht liege ich ja gänzlich daneben, aber dein Ansatz ist -ohne Nennung weiterer Randbedingungen- zumindest ungewöhnlich.

Gruß
RoboHolIC

demmy
06.11.2013, 06:41
Guten Morgen,

der von mir verwendete Atmega 162 hat in der Tat gar keine ADC Eingänge. Dafür hat er 2 Serielle Schnittstellen, die ich aber beide benötige und die auch beide schon belegt sind.
Dafür habe ich eben noch einen ganzen Port frei, da hatte ich mir gedacht ich nehme einen ADC mit paralleler übertragung. Da ist mir spontan nur der 0804 eingefallen mit paralleler Schnittstelle.

Wie würdest du das machen? Bzw. welchen IC würdest du verwenden?

Gruß

RoboHolIC
06.11.2013, 10:29
Hallo demmy.

Klar kannst du das so machen, technisch scheint das in Ordnung zu sein.

Zum "Self-Clocking in Free-Running Mode" findest du einen Hinweis bei den Typical Applications im Datenblatt: manchmal klappt das Starten auch ohne Transistor an INTRT/WR . . .

Gruß
RoboHolIC

demmy
09.11.2013, 13:56
OK, also soweit so gut.
Jetzt muss ich noch ein bischen an der Auflsung feilen, denn so bekomme ich ja nur eine Auflösung von 2°C / bit hin. Das is mir ein bischen ungenau! ;)
Ich würde geren einen Temperaturbereich von 0-50°C messen. Ich habe dazu mal folgende Rechnung aufgestellt, wenn ich 0,5V Referenzspannung nehme:

0-50°C -> 0-500mV (bei LM35 entspricht 1°C = 10mV somit 500mV -> 50°C)

500mv / 256bit = 1,95mV/bit (8bit Auflösung des ADC0804)

1°C = 10mV

10mV / 1,95mV/bit = 5,128bit

1°C / 5,128 bit = 0,195°C/bit

Somit hätte ich ca. 0,2°C/bit bei 0,5V Referenzspannung. Da Laut Datenblatt aber Vreff/2 angelegt werden muss, brauche ich eine Spannung von 250mV.
So, wie erzeuge ich nun möglichst einfach, verlustfrei und mit so wenig Bauteilen wie möglich aus 5V -> 250mV ???

Habt Ihr eine Idee?

PICture
09.11.2013, 14:53
So, wie erzeuge ich nun möglichst einfach, verlustfrei und mit so wenig Bauteilen wie möglich aus 5V -> 250mV ???

http://pdf.datasheetcatalog.com/datasheet/nationalsemiconductor/DS005250.PDF .

demmy
09.11.2013, 20:49
Hi,

wie soll ich denn den LM315 beschalten? Ich kann leider auch in den Datenblättern nichst finden, wie man den beschalten muss um eine Spannung unter 1,24V zu erzeugen?

Hab ich was übersehen?

Gruß

PICture
09.11.2013, 21:01
Für 250 mV muss man einen Spannungsteiler ca. 5:1 (z.B. ein Trimmpoti) an die 1,24 V hängen.

Besserwessi
09.11.2013, 21:48
Der ADC0804 ist ein wirklich schlechte Wahl, das ist einfach ein alter 8 Bit AD, den heute praktisch keiner mehr braucht weil viele µCs einen besseren (10 Bit oder mehr ) schon drin haben. Falls nicht wäre ggf. zu überlegen den Mega162 gegen was anderes (z.B. Mega16,...) mit ADC zu tauschen, vor allem wenn man noch mehrere IOs frei hat - viele IOs im DIP wäre so etwa die einzige Berechtigung die der Mega162 noch hat.

Die Nächste Wahl wäre dann gleich ein Digitaler Temperatursensor statt den LM35.

Wenn es unbedingt der LM35 sein soll, könnte man ggf. mit dem Komperator-Eingang des Mega162 und ein Paar Kondensatoren/ Wideständen auch extern so etwas wie einen, wenn auch langsamen 8 Bit AD Aufbauen. Einfacher wäre es ggf. mit einem Widerstandssensor und der Umsetzung in eine Frequenz (z.B. per LMC555).

Wenn es ein Externe ADC sein soll, gibt es welche mit mehr Auflösung und I2C / SPI Interface. Wenn die Schnittstelle nicht mehr frei sein sollte kann man das auch in Software realisieren. So super schnell muss es ja nicht sein.

RoboHolIC
10.11.2013, 00:19
@Besserwessi:
Demmi braucht halt zwei serielle Schnittstellen - im "meiner " Welt der PICs ist das alles andere als die Regel; wäre das mit deinen Vorschlägen auch abgedeckt? Ansonsten teile ich deine Einschätzung zu externen 8-Bit-Wandlern, habe nur bisher wegen der zwei seriellen SS nicht daran gerüttelt.

demmy
10.11.2013, 11:27
Hi,
ja an den 2 Seriellen komm ich leider momentan nicht vorbei. Und die Geschwindigkeit des µC wäre mir schon wichtig, da sehr oft, sehr viele Daten, sehr schnell übertragen werden sollen. Die Geschwindigkeit der Temperaturmessung dagegen ist zweitrangig. Es muss kein Flash-wandler sein oder sonstiges. Und die parallele Anbindung hat für mich sogar noch einen Vorteil. Ich kann die Temperatur im Programm quasi im "vorbei gehen" an meinem Port einlesen, ohne das ich mich lange mit der Datenübertagung mittels 1 wire oder ähnlichem aufhalten muss.

Was ist wenn ich einfache inen simplen Spannungsteiler an den Ref-Eingang anlege? Von 5V auf 0,250mV?

Mir is gerade noch was anderes eingefallen, was wäre, wenn ich auf den Atmega1284 hoch gehe? der hat 2 UART und 8ADC dabei. Dann müsste das doch alles realisierbar sein oder? :D

Besserwessi
10.11.2013, 12:50
Bei den AD Wandlern gibt es auch immer ein untere sinnvolle Grenze für die Ref. Spannung - je nach AD so typisch 1-2 V. Bei zu kleiner Ref. Spannng gewinnt man nichts mehr, bzw. je nach ADC geht auch nichts mehr. Der LM35 und nur ein 8 Bit Wandler sind einfach keine so ideale Kombination. Wenn überhaupt müsste man den Messbereich besser einschränken, also etwa auf -20 bis +80 C so dass man da dann 0,5 K an Auflösung haben könnte.

Ein AVR mit (10 Bit) AD wäre schon eine Lösung: Sofern der AD nicht für was anderes gebraucht wird, könnte man auch den durchgehend laufen lassen und einfach bei Bedarf den letzten Wert ohne Wartezeit auslesen. Das Auslesen von SPI oder I2C braucht etwas Zeit, wobei SPI auch recht schnell sein kann - selbst ohne HW Unterstützung. Das I2C (bzw. TWI beim AVR) kann auch mehr als einen Sensor auslesen, ist also nicht gleich blockiert. Es braucht aber ggf. etwas Zeit und Software. Das muss aber keine echte Wartezeit sein - das geht auch IRQ gesteuert quasi im Hintergrund.

demmy
10.11.2013, 13:14
Ok, ihr habt mich überzeugt.
Da das Platinenlayout eh noch nicht fertig war, bin ich jetzt wie schon erwähnt auf den Atmega1284P und nutze den 10 bit ADC. Eine Auflösung von 0,5K ist für meine Zwecke völlig ausreichen. Ein angenehmer Nebeneffekt ist jetzt die höhere Quarzfrequenz, die ich jetzt nutzen kanne! ;)