Hallo liebe Forengemeinde,
ich bin noch µC-Anfänger (habe erst 2 Projekte realisiert) und brauche
eure Hilfe.
Ich habe folgendes Thermometer:
[[http://www.produktinfo.conrad.com/datenblaetter/175000-199999/192147-as-01-de-LED_Thermometer.pdf]]
Jetzt würde ich gern eine Steuerung entwickeln, mit welcher ich die
gemessene Temperatur mit einer einstellbaren Temperatur vergleichen kann
um dann ein Relais zu schalten. Leider komme ich an dieser Stelle nicht
weiter.
Meiner erste Idee war folgende:
1) Die Leitungen zwischen dem ICL 7107 und den 7-Segmentanzeigen
anzpafen und in die PC bzw PD-Eingänge eines Atmega8 geben. Dadurch
könnte ich doch theoretisch erkennen, welche Temperatur im Bereich von
minus unendlich bis 99 °C gerade gemessen wird. Leider werden die
Eingänge hier schon knapp.
2) Die gemessene Temperatur mit einer vorgegebenen Temperatur
vergleichen und gegebenenfalls das Relais schalten.
Bis hier her würde das evtl. noch funktionieren oder?
3) Die Vergleichstemperatur will ich aber auch einstellen können. Also
brauche ich hier schon wieder die PC und PD als Ausgänge für weitere
7-Segment-Anzeigen und die Taster zum Einstellen der Temperatur.
Spätestens hier kommt der Atmega8 an seine Grenzen bzgl. Ein-/Ausgänge.
Ich möchte auch nicht zwischen "Messen" und "Temperatur einstellen" hin
und her schalten müssen.
Habt ihr eine Idee? Bitte bedenkt, ich bin noch Anfänger ;)
Viele Grüße
1. Wieso nimmst du dieses Modul zur Temperaturmessung und nicht einfach
einen Sensor an deinen µC?
2. Zur Ansteuerung beliebig vieler 7-Segment-Anzeigen brauchst du nur 3
Ausgänge und pro Digit ein Schieberegister (Schieberegister sind eine
Möglichkeit, gibt auch andere).
zu 1.
habe ich versucht, leider bekomme ich das nicht hin. Mein µC zeigte
immer die gleiche Temperatur an. Habe es dann aufgegeben.
zu 2.
Kann ich nicht eigentlich auch einfach einen atmega16 oder 32 nehmen?
Der hat doch dann genügend Ausgänge oder?
- Anzahl Eingänge für Kopplung mit Temperatur-Modul: 15 (2 Zahlen-Module
á 7 Segmente + das Minus-Zeichen)
- Anzahl Ausgänge für 7-Segment-Anzeigen zur Temperatureinstellung: 9 (7
für Segmentanzeige + 2 zum ansteuern per Multiplexing) (Evtl. noch 1
mehr fals ich auch Kommastellen einstellen will)
- 4 oder 5 für Taster und noch 1 oder 2 für LEDs
Sind ungefähr 30. Sollte doch mit Atmega16 machbar sein oder?
Frage: Ist ein Atmega16 / 32 komplizierter zu programmieren als ein
8er?
Robin schrieb:> zu 1.> habe ich versucht, leider bekomme ich das nicht hin. Mein µC zeigte> immer die gleiche Temperatur an. Habe es dann aufgegeben.
Die Daten vom Display abzugreifen, wird bestimmt nicht einfacher. Also
nur nicht zu früh aufgeben. Wie hast du es denn probiert?
Das ist schon 2 Jahre her. Hatte auch hier im Forum einen Beitrag
Beitrag "DS18S20 bringt immer 127"
Wollte es mir einfach machen und bereits ein Thermometer-Modul benutzen.
Wieso ist denn das Abgreifen der Daten schwierig? Ich kann doch anhand
der aktiven Segmente der 7-Segmentanzeigen herausbekommen, welche
Temperatur anliegt. Ist sicher etwas umständlich realisiert aber auch
nicht sehr fehleranfällig oder? Jedes einzelne Segment der
7-Segment-Anzeigen auch einen Eingang am Atmega und dann bekomme ich ja
raus, ob da Strom anliegt oder?
Robin schrieb:> zu 1.> habe ich versucht, leider bekomme ich das nicht hin. Mein µC zeigte> immer die gleiche Temperatur an. Habe es dann aufgegeben.
Daran solltest du aber arbeiten.
Sich an die fertige Thermometerschaltung an die 7-Segment Ausgänge zu
klemmen ist
a) eine Notlösung
b) mit Sicherheit nicht einfacher als einen DS1820 auszulesen, für den
es fertige Funktionen hier in der Codesammlung gibt.
Zur Not könnte man sich auch an die Eingangsspannung des ICL klemmen und
dort einfach mit dem ADC die Messung machen. Aber im Grunde ist das
ziemlich sinnlos, 2 Schaltungen parallel zu haben. Denn wenn der Sensor
erst mal am Mega8 hängt und die Temperaturen zb auf einem 2-zeiligen LCD
ausgegeben werden, braucht kein Mensch mehr die Originalschaltung.
Mega8
DS1820
LCD
Poti zum Einstellen der Schalttemperatur
Relais samt Hühnerfutter zur Ansteuerung
mehr brauchst du nicht.
Und deine Thermomteterschaltung kannst du zu den Akten legen.
Also nur mal so als Alternative:
Ich habe diesen Sensor hier an nem Arduino 2009 am laufen:
http://www.play-zone.ch/de/dht-temperatur-und-feuchtigkeitssensor-breakout.html
Belegt gerade mal 1 Pin.
Die Temperatur wird mir auf 7-Segment anzeigen mit Schiebregistern
(74hc595) ausgegeben, belegt wie oben erwähnt 3 Pins.
Total also vier Pins.
Das ganze bringt man an nem verregneten Samstagnachmittag zum laufen,
selbst wenn man es zum ersten Mal macht.
Da beim Arduino 2009 der Atmega gesockelt ist, kann man das Board auch
nur zum Programmieren verwenden und den µC dann auf ne eigene Platine
setzen, wenn man möchte, so kommt man sicher nicht teurer als mit einem
herkömmlichen µC, nur viel einfacher.
Gruss
E.T.
Hallo,
kann ich denn eine 7-Segment-Anzeige an einen 74HC595 anschließen? 7
Segmente á 20mA übersteigt doch die 70 zulässigen mA für das
Schieberegister-
Ja, würde nicht mehr als 10mA belasten und den Dezimalpunkt natürlich
direkt anschliessen.
Finde, 10mA ist für Anzeigen bis 2cm Ziffernhöhe hell genug, ansonsten
braucht es halt zusätzliche Treiber.
Aso okay, ist ja ziemlich peinlich für mich. Ich dachte, durch einen
höheren Widerstand nimmt nur die Spannung weiter ab. Das heißt ich
dachte bisher, dass bspw. durch einen doppelt so hohen Widerstand die
LED dann gar nicht mehr leuchtet und nicht einfach nur die Hälfte an mA
verbrät. Sorry. Da hatte ich wohl einen Denkfehler.
gibt ja auch eine Variante eines 595, die mehr Strom kann.
Oder gleich ein 2-zeiliges LCD.
Ist vom Platzverbrauch her auch nicht mehr soviel größer als 2(!)
komplette Temperatur-Anzeigen und braucht deutlich weniger Strom.
Einziger Nachteil: zumindest Standard-LCD sind auf größere Entfernung
nicht mehr so gut ablesbar wie ein paar 7-Segment. Dafür muss man sie
aber auch in der Nacht nicht dunkel schalten, damit man schlafen kann
:-)
Wie hoch darf denn eigentlich Strom und Spannung an den Eingängen des
atmega8 sein?
Ich möchte von der Leitung A/D-Converter zur 7-Segment-Anzeige einen
Abzweig zu meinem µC legen. Auf der Leitung sollten laut Datenblatt wohl
3V liegen. Es ist kein Widerstand zwischengeschaltet.
Kann ich einfach einen Abzweig legen? Mehr als 20mA sollten nicht auf
der Leitung sein und der Atmega verträgt doch 40mA oder?
Robin schrieb:> kann ich denn eine 7-Segment-Anzeige an einen 74HC595 anschließen? 7
Einfacher ist, ein fertiges 16x2 LCD Modul zu verwenden. 6 Pins sollten
dafür zu verkraften sein.
Danke für deine Antwort. Ich habe mich aber glaube etwas unklar
ausgedrückt.
Ich habe heute nochmal versucht, die Temperatur mit dem µC zu messen.
Bekomme das nicht hin. Deshalb die Notlösung mit dem
Temperaturmessungs-Modul (welches mit einem A/D-Wandler betrieben wird).
Dieser steuert die 7-Segmentanzeigen an und gibt dort die Temperatur an.
Ich möchte nun von jedem dieser einzelnen Verbindungskablen vom
A/D-Wandler zu den Segmentanzeigen ein "Stück" vom Strom abhaben und
diesen in ein (bzw. mehrere) Schieberegister leiten, um darüber später
am µC feststellen zu können, welche Temperatur gemessen wurde.
Klar geht das wie bereits von euch geschrieben wurde einfacher indem
gleich mit dem µC gemessen wird aber ich bekomme das 1. nicht hin und 2.
habe ich das Temperaturmess-Modul bereits da. Es liegt sowieso nur rum.
Kann ich so einfach eine Leitung vom Verbindungskabel (A/D-Wandler zu
Segment-Anzeige) zum Schieberegister ziehen?
Anbei habe ich mal aufgezeichnet, wie ich mir das gedacht habe. Leider
habe ich Angst, dass es nicht funktionieren könnte, da der Strom,
welcher bei eingeschalteter Segmentanzeige über den A/D Wandler
abgeführt wird zu hoch ist. Ich werde aber aus dem Datenblatt nicht
schlau.
Ich werde blaue 7-Segmentanzeigen verwenden. Diese benötigen 3,3 Volt
bei 20mA.
Funktioniert das?
@kbuchegger
Also okay, du hast mit Sicherheit mehr Erfahrung als ich und ich werde
mich wohl nochmal mit dem DS18S20 beschäftigen.
Ich fange nochmal neu an, evtl. hatte ich ja damals auch eine kalte
Lötstelle oder irgendetwas. Hoffe diesmal klappt alles.
Nur weil mich die Neugier treibt:
Hätte denn meine Idee mit dem Optokoppler (siehe Anhang) funktioniert
oder ist das alles nicht so einfach, wie ich mir das das vorstelle?
Viele Grüße und wünscht mir Glück bei meinem DS18S20² Vorhaben
Robin schrieb:> @kbuchegger>> Also okay, du hast mit Sicherheit mehr Erfahrung als ich und ich werde> mich wohl nochmal mit dem DS18S20 beschäftigen.
Es gibt haufenweise Projekte mit dem DS18S20
Sowohl hier im Forum als auch in der Codesammlung als auch im Web.
Und wenn du mit C nicht klarkommst - in BASCOM ist ein DS18S20
Kinderkram, weil dir BASCOM den komplizierten Teil schon abnimmt. Auch
dazu gibt es massenhaft Beispielcodes hier im Forum und im Web.
Einzig das gleichzeitige Multiplexen der 7-Segment mit der DS
Ansteuerung könnte knifflig werden. Daher auch: Ausweichen auf LCD. Ist
auch mit dem Hintergedanken, dass ja eigentlich 2 Temperaturen
anzuzeigen sind, besser vereinbar.
Auch hier: LCD ist mit BASCOM eine triviale Sache.
Und die Sache mit der Eigenerwärmung:
Sagt ja keiner, dass man den DS volle Pulle ständig wandeln lassen muss.
Alle 2 Sekunden mal eine Wandlung und der DS bleibt kühl. Gleichzeitig
entschärft das dann auch das Multiplexproblem. Könnte man sogar als
Feature verkaufen: Man merkt wann der DS misst, wenn die 7_Segment mal
kurz blinzelt. Aber wie schon ein Dutzend mal gesagt: Ich würd keine
7-Segment nehmen, sondern ein LCD, solange es keine triftigen Gründe
gibt, die da dagegensprechen. "Ich hab noch nie eines benutzt"! ist kein
triftiger Grund.
Und wenn dir der DS nicht zusagt.
(Wink mit dem Zaunpfahl)
Der ICL auf dieser Conrad Schaltung ist ein ADC. Der misst eine
Spannung. Nämlich am Pin 31. Dort ist der dortige Temperatursensor
angeschlossen.
Spannungen messen kann dein Mega auch. Der hat ebenfalls einen ADC
eingebaut.
Manchmal muss man den Weg gehen, den du gehen willst und sich an die
Anzeige klemmen. Ja, das kommt vor. Wenn man überhaupt nichts anderes
hat als die Anzeige und auch sonst an nichts anderes herankommt.
Wenn aber, so wie bei dir, noch alles möglich ist, dann ist das der
komplizierteste Weg überhaupt.
Robin schrieb:> 1) Die Leitungen zwischen dem ICL 7107 und den 7-Segmentanzeigen> anzpafen
Wenn es schon ein 71xx sein soll, nimm einen 7109. Bei dem ist
die Anaogseite weigehend identisch mit dem 7107, der Ausgang ist
aber 12Bit binär. Das kann man problemlos in einen uC einlesen
und der kann ausgangsseitig auch wieder eine Anzeige treiben.
Gruss
Harald