erstellt 30.05.2014 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Temperatur geregelter 12 Volt Lüfter | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Durch
den
Kauf eines neuen Netzteil mit einen internen Lüfter der
aber in keiner Weise irgendwie geregelt war und so ständig
auf
Hochtouren lief und mir meinen Nerv klaute, sah ich mich
mehr oder weniger gezwungen
einen geregelten Lüfter einzubauen . Nun gab es natürlich die Möglichkeit eine fertige Steuerung zu kaufen , aber wie meistens in solchen Fällen werden die Erwartungen nicht so ganz zufrieden gestellt, also beschloss ich selber eine Regelung zu erstellen. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Nun
gibt
es mehrere Möglichkeiten einen Lüfter Temperaturabhängig
zu regeln,
und alle haben den ein oder anderen Vor-oder Nachteil. Also beschloss ich mit dem Mikroprozessor "Atmega 8 " diese Aufgabe zu bewältigen, so das ich die Möglichkeit habe auch andere im Moment nicht vorgesehenen Lüfter später eventuell einmal anzuschließen und dann hoffentlich nur die Software ändern muss. Die Regelung soll als Pulsweitenregelung ( PWR) entwickelt werden , die Sollwerte für die Hysterese also dann wann der Lüfter bei minimaler Temperatur anfangen soll zu regeln , bis zu dem Punkt wo er seine maximale Drehzahl abgibt sollen über einen Drehgeber eingegeben werden . Die Temperaturerfassung geschieht mit einem IC2 Temperatur Fühler DS 1820. Der Temperaturfühler arbeitet mit einer Genauigkeit von maximal 0,5°C, das reicht für eine Lüfterregelung allemal aus. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Unten sieht man eine Standard Schaltung mit dem Atmega 8 und ein 2X16 Zeichen Display sowie Programmierschnittstelle . | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Um
die Solltemperatur
einzugeben und zwar einmal die Minimale und einmal die
Maximale
entschied ich mich für einen Drehgeber, der außer der Drehfunktion auch noch eine tastende Eigenschaft beinhaltet indem man die Achse hereindrückt. Ein Drehgeber ist nichts anderes als zwei um einen gewissen Winkelgrad versetzte Taster die durch die Rotation einer Achse abwechselnd betätigt werden. Wenn der Mikroprozessor jetzt feststellt welcher der beiden Taster zuerst betätigt wird, weiß er auch in welcher Richtung gedreht wird, und hat somit die Möglichkeit die Tastimpulse zu zählen und auszuwerten. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hier die Schaltung mit angeschlossenen Drehgeber |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Der
Drehgeber
ist angeschlossen an PIN 4
(Interrupt 0) und Pin 5 (Interrupt
1) zusätzlich hat der Drehgeber noch eine tastende Funktion ( S2) wenn man die Achse reindrückt. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Abfrage des Drehgeber über IO Pin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Die
Eingabe des Drehgebers über
die normale Abfrage der Eingangspins gestaltet sich nicht
so einfach,
wenn der Prozessor nur mit seinen Standardtakt arbeitet also seinen internen 1 MHz . Dann benötigt er für eine Programmschleife wenn dort nur eine Led angeschaltet und beim nächsten Schleifendurchlauf wieder ausgeschaltet werden soll in etwa 6us (Mikrosekunden), wenn in dieser Schleife noch ein Unterroutine aufgerufen werden soll, welches das Display aktualisiert so benötigt die Programmschleife schon 5 ms (Millisekunden) vorausgesetzt das Display arbeitet im 4 Bit Modus. Sollte jetzt das Display bei jedem Aufruf auch noch gelöscht werden so benötigt eine Programmschleife schon 12ms ( Millisekunden). Hinzu kommt jetzt noch der benötigte Programm Code somit eine Schleife deutlich länger als 12 ms dauert. Die Kontakte des Drehgeber schließen in Abhängigkeit der Drehgeschwindigkeit in etwa für 5ms bis ca. 120ms. Es wird so also im ungünstigen Fall der Kontakt des Drehgebers geschlossen und auch wieder geöffnet sein bevor die Programmschleife zeitlich die Möglichkeit der Abfrage hat. Es besteht jetzt die Möglichkeit das Display im 8 Bit Modus anzuschließen um so die Geschwindigkeitsverluste der Programmierschleife geringer zu halten , oder man benutzt eine höhere Taktfrequenz. Beides kommt hier aber nicht zum tragen , weil das Display neu verlötet werden müsste, und die Frequenz erhöhen ginge zwar ist aber wegen Platzmangel auf der Platine schlecht auszuführen. Also versuche ich den Drehgeber über Interrupts abzufragen. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Was ist nun ein Interrupt? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ein
Interrupt
ist eine kleine Unterbrechung, es wird damit das
Hauptprogramm unterbrochen damit eine andere Funktion
ausgeübt werden
kann. Beim eintreten eines externen Interrupts beim Atmega 8, nur an zwei festgelegten Pins möglich ,wird das laufende Programm angehalten und im Hardware Stack ( festgelegter Interner Speicher ) die Information abgelegt an welcher Stelle das laufende Programm unterbrochen wurde. Dann wird in die sogenannte ISR ( Interrupt Service Routine ) gesprungen quasi ein kleines Unterprogramm und dieses abgearbeitet. Danach wird das eigentliche Programm wieder an der zuvor im Stack Speicher gesicherten Adresse fortgesetzt. Während diese Routine abläuft werden alle anderen Interrupts deaktiviert bis die Routine beendet ist. Dadurch gehen aber evtl. auftretende Ereignisse am gleichen sowie an anderen Interrupt Eingängen nicht verloren sondern sie werden in einem sogenannten Flag zwischen gespeichert,allerdings kann jeweils nur ein Ereignis pro Interrupt Eingang zwischen gepuffert werden . Sollten mehrere auftreten ,können so einige verloren gehen deswegen sollte man diese Routine so klein wie möglich halten, damit im Bedarfsfall auch kein Interrupt vernachlässigt wird. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Konfiguration des Interrupts | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Unter
Bascom gibt es mehrer Möglichkeiten die Konfiguration bzw.
das Verhalten der Interrupteingänge festzulegen. Ich beschränke mich hier auf die Anweisungen die direkt im Register gemacht werden , es ist vielleicht nicht immer die komfortabelste Möglichkeit hat aber den Vorteil das diese Registeranweisungen alle im Atmel Datenblatt beschrieben sind und somit auch alle der Einstellmöglichkeiten bietet. Die dafür zuständigen Register sind folgende: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bei
der Erfassung der Impulse
mittels Interrupt würden aber auch das
Kontaktprellen des Taster mitgezählt
was hier natürlich nicht erwünscht ist. Nun geht es also erst einmal darum diese mehrfach Zählung zu unterdrücken. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wie
kommt nun eine Mehrfachzählung zustande ? Bei einem Interruptvorgang an Pin 4 also INT0 wird in die (ISR) Interrupt Sub Routine gesprungen und dort eine Led eingeschaltet die sich nach 10 Millisekunden wieder ausschaltet. Sollte innerhalb dieser Sekunde ein weiterer Interrupt ausgelöst werden, geht dieser nicht etwa verloren , sondern wird zwischengespeichert, und erst wenn die laufende Interrupt Sub Routine Routine beendet ist, wird ein weiteres mal diese Routine aufgerufen. Damit ist sichergestellt das auf keinen Fall ein Interrupt Ereignis verloren geht. Das hat natürlich auch den Nachteil das wenn ein Taster prellt, also kurz mehrfache Impulse abgibt, diese auch alle gezählt werden, abhängig davon wie schnell man den Drehgeber dreht, oder auch wie seine Mechanische Beschaffenheit ist. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beispiel |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Interrupt soll ausgelöst werden bei einen Wechsel von H nach L | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MCUCR = &B00000010 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
zusätzlich muss bei der Benutzung von Interrupts diese Freigegeben also aktiviert werden, dies geschieht im Register "GICR" .Folgende Register Anweisung schaltet den Interrupt 0 frei | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GICR=B&01000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
desweiteren muss der Interrupt noch Global freigegeben werden, also eine generelle Freigabe von Interrupts überhaupt.Das passiert im Register SREG | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SREG=B&10000000 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wichtig |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Interrupt Routinen sollen generell so kurz wie möglich gehalten werden , und sollten auf jeden Fall kürzer sein als die Zeit der anfallenden zu erfassenden Impulse. Andernfalls kann es passieren das Interrupts einfach verloren gehen was natürlich je nach Funktion der Routine fatale Folgen haben könnte. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ein aktivierte Interrupt Routine schaltet solange alle anderen Interrupts ab. Jeweils ein Ereignis pro Interrupteingang wird aber zwischengespeichert in einen sogenannte Flag und steht somit anschließend noch zu Verfügung. Diese Flag steht im Register GIFR. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wenn also ein Ereignis an INT0 eintritt wird als erstes das BIT 6 ( INTF0 ) im GIFR Register auf 1 gesetzt ,aber nur wenn auch das Bit7 im Sregister also die Globale Interrupt Freigabe und das Bit 6 im GICR Register die Freigabe für Interrupt 0 auf eins gesetzt sind. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Temperaturerfassung | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Um
die Temperatur zu erfassen
benutze ich den IC2 Temperatursensor der Firma Dallas von
Typ
DS1820. Zum auswerten diese Sensor genügt ein Digitaler Eingang des Mikroprozessors. Der Sensor hat einmal die Betriebsspannung von 5 Volt , Masse an Pin1 und +5V an Pin 3, und den Digitalen Ausgang an Pin 2. Der Mikroprozessor Eingang für die Temperaturerfassung kann individuell ausgewählt werden , hier der Pin 14 (Pin B0). Der Sensor gibt in Abhängigkeit der aktuell erfassten Temperatur ein Digitales Signal ab. Datenblatt : DS1820 Mit einer Auflösung von 9 Bit das 0,5 ° C Schritte zulässt. Wichtig ist beim Anschluss das ein 4,7 K Widerstand nach Plus notwendig ist. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Der
DS 1820 ist ein sogenannter 1Wire Device, was soviel heißt
das er in der Regel 3 Anschlüsse besitzt . 1. Plus 2. Masse 3. Datenleitung , es gibt aber auch Typen die nur zwei Anschlüsse aufweisen nämlich 1. Masse 2. Datenleitung bei diesen Typen holt sich der Sensor ( I-Button , oder 1Wire Device) seine Positive Betriebsspannung über die Datenleitung, die weil sie über einen Widerstand zu Positiven Spannungsversorgung verfügt den im Sensor enthaltenen Kondensator in den Datenpausen mit Spannung auflädt. (Siehe Sinnbild unten.) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Als
erstes sag ich dem Atmega an welchen Eingang sich der
Temperaturfühler befindet, dazu dient folgender Befehl in
Bascom: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Config 1Wire=Portc.5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
damit wird dieser Pin als I2C Schnittstelle konfiguriert. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mögliche
Probleme: |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Und so sieht die Schaltung aus |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bascom Datei Download hier |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Aktualisiert 11.10.2020 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright by Manfred Schrod 2009 |