Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
microcontrollertechnik:8_temperatur [2023/11/14 00:48]
mexleadmin
microcontrollertechnik:8_temperatur [2024/04/23 01:23] (aktuell)
mexleadmin
Zeile 13: Zeile 13:
   * Eine [[https://www.katharinengymnasium.de/wolf/web/analogdigital/analogdigital_inhalt.html|schnelle und seichte Einführung in AD-Wandler]]   * Eine [[https://www.katharinengymnasium.de/wolf/web/analogdigital/analogdigital_inhalt.html|schnelle und seichte Einführung in AD-Wandler]]
  
-</WRAP> <WRAP column 65%>+</WRAP> <WRAP>
 ===== Video ===== ===== Video =====
    
 +{{youtube>IkPOZXeW_CM?size=700x400}}
 +
 +<WRAP hide>
 {{youtube>MaddgEBeMLE?size=700x400}} {{youtube>MaddgEBeMLE?size=700x400}}
 +</WRAP> 
  
 </WRAP> </WRAP> </WRAP> </WRAP>
  
 +<WRAP >
 +<imgcaption BildNr10 | Schaltung des AD-Wandlers im 328>
 +</imgcaption>
 +{{drawio>AdcWandler.svg}}
 +</WRAP>
 ===== Messsignal-Digitalisierung und Auswertung ===== ===== Messsignal-Digitalisierung und Auswertung =====
  
Zeile 272: Zeile 281:
 <-- <--
  
---> III. Eingabe in Atmel Studio #+--> III. Eingabe in Microchip Studio #
  
  
Zeile 619: Zeile 628:
   - Hier wird wieder geprüft ob die Frequenz des Quarz bereits eingestellt wurde und - falls nicht - dessen Frequenz eingestellt. \\ \\    - Hier wird wieder geprüft ob die Frequenz des Quarz bereits eingestellt wurde und - falls nicht - dessen Frequenz eingestellt. \\ \\ 
   - Die Header-Dateien entsprechen denen der letzten Programme. \\ \\ \\ \\ \\    - Die Header-Dateien entsprechen denen der letzten Programme. \\ \\ \\ \\ \\ 
-  - Die Konstanten entsprechen denen der letzten Programme. \\ \\ \\ \\ +  - Die Konstanten entsprechen denen der letzten Programme. \\ \\ \\ \\ \\ \\
   - Es wird eine zusätzliches Array ''TEMP[]'' angelegt, in denen die Temperaturen in 1/10 °C abgespeichert sind. Beispielsweise entspricht der erste Eintrag''521'' einer Temperatur von $52,1°\rm C$. Der erste Eintrag wird bei einem ADC-Wert von 256 benötigt. Der zweite Eintrag entspricht $49,9° \rm C$ und wird bei einem ADC-Wert von 256+16 = 272 benötigt. Die weiteren entsprechend. Die Herleitung erfolgt wie unter [[8_temperatur#Messsignal-Digitalisierung und Auswertung]] vorgegeben.  \\ \\ \\    - Es wird eine zusätzliches Array ''TEMP[]'' angelegt, in denen die Temperaturen in 1/10 °C abgespeichert sind. Beispielsweise entspricht der erste Eintrag''521'' einer Temperatur von $52,1°\rm C$. Der erste Eintrag wird bei einem ADC-Wert von 256 benötigt. Der zweite Eintrag entspricht $49,9° \rm C$ und wird bei einem ADC-Wert von 256+16 = 272 benötigt. Die weiteren entsprechend. Die Herleitung erfolgt wie unter [[8_temperatur#Messsignal-Digitalisierung und Auswertung]] vorgegeben.  \\ \\ \\ 
-  - Bei den Variablen entsprechen einige denen der letzten Programme. \\ \\ \\ \\ \\ \\+  - Bei den Variablen entsprechen einige denen der letzten Programme. \\ \\ \\ \\
   - Die Variable ''adcValue'' wird mit dem digitalisierten ADC-Wert befüllt.   - Die Variable ''adcValue'' wird mit dem digitalisierten ADC-Wert befüllt.
   - Die Variable ''tValue'' beinhaltet die aktuelle Temperatur in 1/10°C und mit Vorzeichen.   - Die Variable ''tValue'' beinhaltet die aktuelle Temperatur in 1/10°C und mit Vorzeichen.
   - Die Variable ''tValueMax'' beinhaltet die höchsten seit Start gemessene Temperatur in 1/10°C und mit Vorzeichen (entspricht einem Schleppzeiger). \\ \\ \\ \\   - Die Variable ''tValueMax'' beinhaltet die höchsten seit Start gemessene Temperatur in 1/10°C und mit Vorzeichen (entspricht einem Schleppzeiger). \\ \\ \\ \\
-  - Bei den Funktionsprototypen sind einige bekannte Unterprogramme vorhanden. Details werden weiter unten erklärt. \\ \\ \\ \\ +  - Bei den Funktionsprototypen sind einige bekannte Unterprogramme vorhanden. Details werden weiter unten erklärt. \\ \\ \\ \\ \\
  
 ''Hauptprogramm ========================='' ''Hauptprogramm =========================''
  
   - Das Hauptprogramm ähnelt sehr stark dem [[4_up_down_counter|Up/Down Counter]], wobei die Initialisierung des Timers in eine Unterfunktion ''initTimer0()'' ausgegliedert wurde. Die Unterfunktion ''initAdc'' initialisiert den ADC. \\ \\ \\ \\ \\    - Das Hauptprogramm ähnelt sehr stark dem [[4_up_down_counter|Up/Down Counter]], wobei die Initialisierung des Timers in eine Unterfunktion ''initTimer0()'' ausgegliedert wurde. Die Unterfunktion ''initAdc'' initialisiert den ADC. \\ \\ \\ \\ \\ 
-  - In der Endlosschleife sind auf der ersten Ebene wieder nur If-Abfragen zu den Flags ''takt10ms'' und ''takt100ms'' zu finden. \\ \\+  - In der Endlosschleife sind auf der ersten Ebene wieder nur If-Abfragen zu den Flags ''cycle100msActive'' und ''cycle1sActive'' zu finden. \\ \\
     - Alle $100~\rm ms$ (bzw. wenn das entsprechende Flag gesetzt wird) wird das Flag zurückgesetzt und das Unterprogramm ''doAdc()'' sowie ''calculateTemp()'' aufgerufen \\ \\ \\      - Alle $100~\rm ms$ (bzw. wenn das entsprechende Flag gesetzt wird) wird das Flag zurückgesetzt und das Unterprogramm ''doAdc()'' sowie ''calculateTemp()'' aufgerufen \\ \\ \\ 
-    - Alle $1~\rm s$ (bzw. wenn das entsprechende Flag gesetzt wird) wird das Flag zurückgesetzt und das Unterprogramm ''refreshDisplay()'' aufgerufen \\ \\ \\ \\ \\+    - Alle $1~\rm s$ (bzw. wenn das entsprechende Flag gesetzt wird) wird das Flag zurückgesetzt und das Unterprogramm ''refreshDisplay()'' aufgerufen \\ \\ \\ \\ \\ \\ \\ \\
 ''Timer Initialisierung ============'' ''Timer Initialisierung ============''
-  - Die Timer Initialisierung ist dem Programm [[4_up_down_counter|Up/Down Counter]] entlehnt und wird hier nicht weiter erklärt.  \\ \\ \\ \\ \\ \\ \\+  - Die Timer Initialisierung ist dem Programm [[4_up_down_counter|Up/Down Counter]] entlehnt und wird hier nicht weiter erklärt.  \\ \\ \\ \\ \\ \\ \\ \\
  
 ''ADC Initialisierung ==============''  ''ADC Initialisierung =============='' 
Zeile 649: Zeile 658:
 \\  \\ 
 ''Timer-Service Routine =========================''   ''Timer-Service Routine =========================''  
-  - Die Timer-Service Routine ist dem Programm [[4_up_down_counter|Up/Down Counter]] entlehnt und wird hier nicht weiter erklärt. \\ \\+  - Die Timer-Service Routine ist dem Programm [[4_up_down_counter|Up/Down Counter]] entlehnt und wird hier nicht weiter erklärt. \\ \\  \\ \\
  
 '' ADWandlung =============================================================='' \\ \\ '' ADWandlung =============================================================='' \\ \\
Zeile 656: Zeile 665:
   - Das Register ''ADCL'' enthält die untersten (8) Bits. Das Register ''ADCH'' enthält die oberen (2) Bits, welche hier um 8 Bitt nach links verschoben werden (also mit 256 multipliziert wird). \\ __Wichtig__:    - Das Register ''ADCL'' enthält die untersten (8) Bits. Das Register ''ADCH'' enthält die oberen (2) Bits, welche hier um 8 Bitt nach links verschoben werden (also mit 256 multipliziert wird). \\ __Wichtig__: 
     - immer erst ADCL auslesen, dann ADCH.       - immer erst ADCL auslesen, dann ADCH.  
-    - immer auch ADCH auslesen, selbst wenn es nicht benötigt wird. \\  +    - immer auch ADCH auslesen, selbst wenn es nicht benötigt wird. \\ \\
  
 '' Umrechnung ==========================='' \\ \\ \\ '' Umrechnung ==========================='' \\ \\ \\
Zeile 663: Zeile 672:
   - ''tValue'' ermittelt die Lineare Interpolation zwischen zwei Schritten    - ''tValue'' ermittelt die Lineare Interpolation zwischen zwei Schritten 
   - In ''tValue'' wird der Schleppzähler gespeichert   - In ''tValue'' wird der Schleppzähler gespeichert
-\\ \\ \\ \\ \\ +\\ \\ \\ \\ \\  \\ \\
  
 ''Anzeigefunktion ==============================='' ''Anzeigefunktion ===============================''