Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
adc [2019/01/29 17:10]
huwi [Videozusammenfassung]
adc [2019/07/27 16:52] (aktuell)
huwi
Zeile 5: Zeile 5:
 Mit den ADC-Klassen des AVR C++ Framework lassen sich eine Vielzahl von Aufgabenstellungen rings um den //​**A**nalog-**D**igital-**C**onverter//​ mit wenigen Handgriffen erledigen. Das folgende Bild zeigt die UML-Darstellung ausgewählter ADC-Klassen. Mit den ADC-Klassen des AVR C++ Framework lassen sich eine Vielzahl von Aufgabenstellungen rings um den //​**A**nalog-**D**igital-**C**onverter//​ mit wenigen Handgriffen erledigen. Das folgende Bild zeigt die UML-Darstellung ausgewählter ADC-Klassen.
  
->>>>>>>>>>>​>​{{:​adc.jpg?​400|}}+>​{{:​adc.jpg?​400|}}
  
 ====== Analoge Daten verarbeiten ====== ====== Analoge Daten verarbeiten ======
Zeile 13: Zeile 13:
 Wahrscheinlich sind die meisten Problemstellungen,​ bei denen ein Analogwert erfasst, verarbeitet und daraufhin etwas, was auch immer, getan werden soll, mit einer Auflösung von 8 Bit absolut hinreichend zu lösen. Somit soll im ersten Beispiel ein 8 Bit Wert erfasst und per Uart an das Controlcenter gesendet werden. //Der Charm dabei ist, dass 8 Bit Werte sich auch sehr reibungslos per Uart übertragen lassen. Nun denn - der Entwurf:// Wahrscheinlich sind die meisten Problemstellungen,​ bei denen ein Analogwert erfasst, verarbeitet und daraufhin etwas, was auch immer, getan werden soll, mit einer Auflösung von 8 Bit absolut hinreichend zu lösen. Somit soll im ersten Beispiel ein 8 Bit Wert erfasst und per Uart an das Controlcenter gesendet werden. //Der Charm dabei ist, dass 8 Bit Werte sich auch sehr reibungslos per Uart übertragen lassen. Nun denn - der Entwurf://
  
->>><​code cpp>+><​code cpp>
 /////////////////////////////////////////////////////​ /////////////////////////////////////////////////////​
 // ENTWURF Beispiel Analog 1 // ENTWURF Beispiel Analog 1
Zeile 42: Zeile 42:
 Es sollen die Sensorwerte vom Lichtsensor erfasst und an das Control Center gesendet werden. Verbinden Sie den Lichtsensor mit dem Analogkanal 0. Dieser liegt in Zweitbelegung an Port C Bit 0. Es sollen die Sensorwerte vom Lichtsensor erfasst und an das Control Center gesendet werden. Verbinden Sie den Lichtsensor mit dem Analogkanal 0. Dieser liegt in Zweitbelegung an Port C Bit 0.
  
->>>>>>>>>​>​{{:​analog1.jpg?​300|}}+>​{{:​analog1.jpg?​300|}}
  
 Der ADC des AVR sampelt grundsätzlich mit 10 Bit. Man kann aber das Ergebnis der Digitalisierung so im ADC Register ausrichten, dass sich ein 8 Bit Ergebnis in Assembler leichter abholen lässt. Aber, ist es in C noch wichtig sich um derartige Details zu kümmern? Die Klasse AnalogDevice besitzt jeweils eine Operation, die den 10 bzw. 8 Bit Wert der Wandlung liefert. Und hier setzen wir mit dem folgenden Beisiel an: Der ADC des AVR sampelt grundsätzlich mit 10 Bit. Man kann aber das Ergebnis der Digitalisierung so im ADC Register ausrichten, dass sich ein 8 Bit Ergebnis in Assembler leichter abholen lässt. Aber, ist es in C noch wichtig sich um derartige Details zu kümmern? Die Klasse AnalogDevice besitzt jeweils eine Operation, die den 10 bzw. 8 Bit Wert der Wandlung liefert. Und hier setzen wir mit dem folgenden Beisiel an:
  
->>><​code cpp>+><​code cpp>
 /////////////////////////////////////////////////////​ /////////////////////////////////////////////////////​
 // Beispiel Analog 1 // Beispiel Analog 1
Zeile 78: Zeile 78:
 Bilden, übertragen und testen Sie das Programm. Beachten Sie die Einstellungen des COM-Ports im Controlcenter. Bilden, übertragen und testen Sie das Programm. Beachten Sie die Einstellungen des COM-Ports im Controlcenter.
  
->>><​flashplayer width="​600"​ height="​450"​ position="​0">​file=http://​youtu.be/​eKqLqUJUB14</​flashplayer>​+><​flashplayer width="​600"​ height="​450"​ position="​0">​file=http://​youtu.be/​eKqLqUJUB14</​flashplayer>​
  
 ===== 10 Bit Werte erfassen und ausgeben ===== ===== 10 Bit Werte erfassen und ausgeben =====
Zeile 84: Zeile 84:
 Das was wir als nächstes programmieren wollen, notieren wir als Konzept im Quellcode. // Sie kennen das Spiel ja.// In dieser Übung soll die Formatierung und Ausgabe von Zeichenketten mit der Erfassung von Analogwerten mit einer 10 Bit Auflösung kombiniert werden. Ganz nebenbei muss auch noch etwas gerechnet werden. Wir möchten die tatsächliche Spannung in Millivolt und auch in Volt, mit eins, zwei oder auch drei Nachkommastellen ermitteln. Das was wir als nächstes programmieren wollen, notieren wir als Konzept im Quellcode. // Sie kennen das Spiel ja.// In dieser Übung soll die Formatierung und Ausgabe von Zeichenketten mit der Erfassung von Analogwerten mit einer 10 Bit Auflösung kombiniert werden. Ganz nebenbei muss auch noch etwas gerechnet werden. Wir möchten die tatsächliche Spannung in Millivolt und auch in Volt, mit eins, zwei oder auch drei Nachkommastellen ermitteln.
  
->>><​code cpp>+><​code cpp>
 ///////////////////////////////////////////////////////​ ///////////////////////////////////////////////////////​
 // KONZEPT Beispiel Ausgabe der Spannung in Millivolt // KONZEPT Beispiel Ausgabe der Spannung in Millivolt
Zeile 112: Zeile 112:
 Die Realisierung soll in zwei Varianten erfolgen. Zunächst mit der Ausgabe in Millivolt und danach die Erweiterung auf die Ausgabe mit einer Stelle nach dem Komma. Die Realisierung soll in zwei Varianten erfolgen. Zunächst mit der Ausgabe in Millivolt und danach die Erweiterung auf die Ausgabe mit einer Stelle nach dem Komma.
  
->>><​code cpp>+><​code cpp>
 // Ausgabe der Spannung in Millivolt // Ausgabe der Spannung in Millivolt
 class Application : public Controller class Application : public Controller
Zeile 139: Zeile 139:
 Diesmal soll das Potentiometer 1 als Quelle für unsere Analogwerte dienen. Schließen Sie das Potentiometer an den Analogkanal 0 an (PortC.0). Diesmal soll das Potentiometer 1 als Quelle für unsere Analogwerte dienen. Schließen Sie das Potentiometer an den Analogkanal 0 an (PortC.0).
  
->>>>>>>>>>>>​>​{{:​analog2.jpg?​300|}}+>​{{:​analog2.jpg?​300|}}
    
 Erstellen, übertragen und testen Sie das Programm. Beachten Sie die Einstellungen für den Com-Port und den Zeilenumbruch im Controlcenter. Das Ergebnis sollte wie folgt aussehen: Erstellen, übertragen und testen Sie das Programm. Beachten Sie die Einstellungen für den Com-Port und den Zeilenumbruch im Controlcenter. Das Ergebnis sollte wie folgt aussehen:
  
->>>​{{:​analog2acc.jpg?​600|}}+>​{{:​analog2acc.jpg?​600|}}
  
 Nachdem die Umrechnung und Ausgabe in Millivolt funktioniert,​ geben wir die Werte formatiert mit einer Genauigkeit von einer Stelle nach dem Komma aus. Nachdem die Umrechnung und Ausgabe in Millivolt funktioniert,​ geben wir die Werte formatiert mit einer Genauigkeit von einer Stelle nach dem Komma aus.
  
->>><​code cpp>+><​code cpp>
 // Ausgabe der Spannung in Volt, Genauigkeit eine Stelle hinter dem Komma // Ausgabe der Spannung in Volt, Genauigkeit eine Stelle hinter dem Komma
 class Application : public Controller class Application : public Controller
Zeile 177: Zeile 177:
 Erstellen, übertragen und testen Sie das Programm. Beachten Sie die Einstellungen für den Com-Port und den Zeilenumbruch im Controlcenter. Das Ergebnis sollte dem folgendem Bildschirmauszug entsprechen. Erstellen, übertragen und testen Sie das Programm. Beachten Sie die Einstellungen für den Com-Port und den Zeilenumbruch im Controlcenter. Das Ergebnis sollte dem folgendem Bildschirmauszug entsprechen.
  
->>>​{{:​analog2bcc.jpg?​600|}}+>​{{:​analog2bcc.jpg?​600|}}
  
 ====== Videozusammenfassung ====== ====== Videozusammenfassung ======
->>><​html><​iframe width="​700"​ height="​550"​ src="​https://​www.youtube.com/​embed/​XHEKeN58cVQ"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; encrypted-media;​ gyroscope; picture-in-picture"​ allowfullscreen></​iframe></​html>​+><​html><​iframe width="​700"​ height="​550"​ src="​https://​www.youtube.com/​embed/​XHEKeN58cVQ"​ frameborder="​0"​ allow="​accelerometer;​ autoplay; encrypted-media;​ gyroscope; picture-in-picture"​ allowfullscreen></​iframe></​html>​
  
 ====== Nächstes Thema ====== ====== Nächstes Thema ======
 [[ein kleines Projekt]] [[ein kleines Projekt]]
 +