Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projekt_mexle_handoszi:start [2021/09/18 09:46] – [3. Funktionen des Handoszilloskop] aschmehlik | projekt_mexle_handoszi:start [2021/09/20 21:12] (aktuell) – mirupp | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
{{ : | {{ : | ||
===== 1. Einführung ===== | ===== 1. Einführung ===== | ||
- | Als Teil des MEXLE Systems soll ein kostengünstiger Oszilloskopstift für die Studierenden entwickelt werden, der im Labor und bei Projekten zu Hause die Nutzung eines Oszilloskops ohne teuere | + | Als Teil des MEXLE Systems soll ein kostengünstiger Oszilloskopstift für die Studierenden entwickelt werden, der im Labor und bei Projekten zu Hause die Nutzung eines Oszilloskops ohne teure Laborausrüstung ermöglicht. |
== Anforderungen == | == Anforderungen == | ||
Die Anforderungen an die Funktionen des Oszilloskopstiftes ergeben sich wie folgt: | Die Anforderungen an die Funktionen des Oszilloskopstiftes ergeben sich wie folgt: | ||
- | * Messung einer analogen Spannung im Bereich von -10V bis +10V | + | * Messung einer analogen Spannung im Bereich von -10 V bis +10 V |
* Die Abtastung soll Signale (Rechtecksignale und sinusförmige Signale) mit mindestens 50 kHz, im Optimalfall bis 1 MHz erfassen können | * Die Abtastung soll Signale (Rechtecksignale und sinusförmige Signale) mit mindestens 50 kHz, im Optimalfall bis 1 MHz erfassen können | ||
* Ausgabe der Messdaten über ein Display | * Ausgabe der Messdaten über ein Display | ||
Zeile 14: | Zeile 14: | ||
* über WLAN | * über WLAN | ||
* Möglichkeit die gemessenen Spannungen mit einer Oszilloskopoberfläche darzustellen | * Möglichkeit die gemessenen Spannungen mit einer Oszilloskopoberfläche darzustellen | ||
- | * Der Zielpreis eines Exemplars sollte unter 60€ liegen | + | * Der Zielpreis eines Exemplars sollte unter 60 € liegen |
== Vorhandene Arbeiten == | == Vorhandene Arbeiten == | ||
- | Aus einer vorherigen Arbeit war bereits ein Entwurf eines Oszilloskopstiftes vorhanden. Dieser umfasste einen Mikrocontroller auf ARM Basis, eine Schaltung zur Analog-Digital-Wandlung von gemessenen Spannungen und ein LC-Display. | + | Aus einer vorherigen Arbeit war bereits ein Entwurf eines Oszilloskopstiftes vorhanden. Dieser umfasste einen Mikrocontroller auf ARM-Basis, eine Schaltung zur Analog-Digital-Wandlung von gemessenen Spannungen und ein LC-Display. |
== Gründe für die Neuauslegung == | == Gründe für die Neuauslegung == | ||
Zeile 25: | Zeile 25: | ||
===== 2. Konzept ===== | ===== 2. Konzept ===== | ||
- | Das Handoszilloskop selbst dient nur zur Erfassung der Messwerte. Die Darstellung der Messung erfolgt nicht auf dem Handoszilloskop selbst. Stattdessen wird ein Endgerät, zum Beispiel ein PC oder ein Smartphone, mittels WLAN mit dem Accesspoint | + | Das Handoszilloskop selbst dient nur zur Erfassung der Messwerte. Realisiert wird dies mit einem PIC32. Die Darstellung der Messung erfolgt nicht auf dem Handoszilloskop selbst. Stattdessen wird ein Endgerät, zum Beispiel ein PC oder ein Smartphone, mittels WLAN mit dem Accesspoint |
< | < | ||
Zeile 35: | Zeile 35: | ||
<WRAP pagebreak> | <WRAP pagebreak> | ||
- | ==== 6.3 ESP32 Programmierung | + | ===== 3. Funktionen des Handoszilloskop |
+ | Die Erfassung der Spannungswerte geschieht über vier miteinander verschachtelte ADC-Wandler des PIC32, womit eine Sampling-Rate von 12 Msps erreicht wird. Laut dem Nyquist-Abtasttheorem können somit Frequenzen bis 6 MHz gemessen werden. (([[https:// | ||
+ | Bedient wird das Handoszilloskop mithilfe von drei auf dem Gerät verbauten Tastern. Auf einem OLED-Display werden wichtige Parameter zur Messung angezeigt. Eine mögliche Form der Darstellung ist in <imgref gui_oled> | ||
- | ==== 6.3 ESP32 Programmierung ==== | + | < |
+ | {{ : | ||
+ | </ | ||
- | Zur Demonstration der Funktionen | + | Die Daten, die auf dem Display angezeigt werden können, umfassen beispielsweise die Frequenz |
- | + | Die Datenübertragung an einen Computer ist über USB oder WLAN möglich. Eingestellt wird diese mithilfe | |
- | Verbesserungspotentiale zeigen sich vor allem beim Funktionsumfang des Webserver. Zudem ist noch kein Demoprogramm zur Nutzung | + | |
- | + | ||
- | Da die mikroBUS-Platine des ESP32 keinen integrierten Programmer enthält, ist die Anschaffung eines ESP-Prog | + | |
- | + | ||
- | Ein detaillierter Überblick findet sich in Kapitel [[: | + | |
- | + | ||
- | ===== Quellenverzeichnis ===== | + | |
- | + | ||
- | ===== Quellenverzeichnis ===== | + | |
+ | <WRAP pagebreak> | ||
===== 4. Hardware ===== | ===== 4. Hardware ===== | ||
- | Die Hardware des Handoszilloskops umfasst im Wesentlichen die 4 Funktionsbereiche: | + | Die Hardware des Handoszilloskops umfasst im Wesentlichen die 4 Funktionsbereiche: |
==== 4.1 Auswahl der Hardwarekomponenten ==== | ==== 4.1 Auswahl der Hardwarekomponenten ==== | ||
Zunächst war es erforderlich die neuen Komponenten auszuwählen. | Zunächst war es erforderlich die neuen Komponenten auszuwählen. | ||
=== 4.1.1 Mikrocontroller === | === 4.1.1 Mikrocontroller === | ||
- | Als Ersatz für den ARM-basierten Mikrocontroller, wurden Mikrocontroller der PIC32-Serie von Microchip betrachtet. Diese sind auf industrielle Anwendungen ausgelegt. Sie zeichnen sich besonders durch leistungsstarke Analog-Digital-Komponenten aus und sind daher sehr gut für die Analog-Digital-Wandlung und den Einsatz in einem Oszilloskop geeignet. | + | Als Ersatz für den ARM-basierten Mikrocontroller wurden Mikrocontroller der PIC32-Serie von Microchip betrachtet. Diese sind auf industrielle Anwendungen ausgelegt. Sie zeichnen sich besonders durch leistungsstarke Analog-Digital-Komponenten aus und sind daher sehr gut für die Analog-Digital-Wandlung und den Einsatz in einem Oszilloskop geeignet. |
== Vergleich potenzieller Mikrocontroller == | == Vergleich potenzieller Mikrocontroller == | ||
Zeile 77: | Zeile 73: | ||
== Auswahl == | == Auswahl == | ||
- | Da der Schwerpunkt des Oszilloskops auf der Messung von Spannungen liegt ist hier besonders der PIC32MK geeignet. Dieser ermöglicht höhere ADC Geschwindigkeiten und verfügt zudem über Digital-Analog-Wandler, | + | Da der Schwerpunkt des Oszilloskops auf der Messung von Spannungen liegt, ist hier besonders der PIC32MK geeignet. Dieser ermöglicht höhere ADC Geschwindigkeiten und verfügt zudem über Digital-Analog-Wandler, |
== Eigenschaften der PIC32MK-Familie == | == Eigenschaften der PIC32MK-Familie == | ||
Zeile 87: | Zeile 83: | ||
* Anzahl an Pins 64 oder 100 | * Anzahl an Pins 64 oder 100 | ||
* Package als QFP oder QFN | * Package als QFP oder QFN | ||
- | * integrierte USB Schnittstelle | + | * integrierte USB-Schnittstelle |
- | * Kommunikationsschnittstellen: | + | * Kommunikationsschnittstellen: |
* 12 Bit Analog-Digital-Wandler mit bis zu 25,45 Msps Leistung kombiniert | * 12 Bit Analog-Digital-Wandler mit bis zu 25,45 Msps Leistung kombiniert | ||
* 12 Bit Digital-Analog-Wandlung | * 12 Bit Digital-Analog-Wandlung | ||
Zeile 94: | Zeile 90: | ||
== Weitere Hardware == | == Weitere Hardware == | ||
- | Neben dem Mikrocontroller als Hauptkomponenten | + | Neben dem Mikrocontroller als Hauptkomponente |
=== 4.1.2 Drahtlose Konnektivität === | === 4.1.2 Drahtlose Konnektivität === | ||
Zeile 102: | Zeile 98: | ||
Bluetooth: | Bluetooth: | ||
* Bluetooth | * Bluetooth | ||
- | * Aktuelle Geräte verwenden den Standard in der Version V4.x oder V5.x. Zudem beherrschen die meisten Geräte den Standard Bluetooth Low Energy , dieser ist besonders auf geringen Stromverbrauch ausgelegt. Auch die Datenrate hat sich mit den Versionen gesteigert und kann mit Version 5 bis zu 50 MBit/s betragen. (([[https:// | + | * Aktuelle Geräte verwenden den Standard in der Version V4.x oder V5.x. Zudem beherrschen die meisten Geräte den Standard Bluetooth Low Energy, dieser ist besonders auf geringen Stromverbrauch ausgelegt. Auch die Datenrate hat sich mit den Versionen gesteigert und kann mit Version 5 bis zu 50 MBit/s betragen. (([[https:// |
WLAN: | WLAN: | ||
* Englisch für Wireless Local Area Network, wird umgangssprachlich für Funknetze nach dem Standard IEEE 802.11 verwendet. Es wird, je nach Version des Standards, hauptsächlich der 2,4 GHz und 5 GHz Bereich des Frequenzspektrums verwendet. Aktuelle Geräte beherrschen in der Regel mindestens den Standard 802.11n im 2,4 GHz Funkbereich. (([[https:// | * Englisch für Wireless Local Area Network, wird umgangssprachlich für Funknetze nach dem Standard IEEE 802.11 verwendet. Es wird, je nach Version des Standards, hauptsächlich der 2,4 GHz und 5 GHz Bereich des Frequenzspektrums verwendet. Aktuelle Geräte beherrschen in der Regel mindestens den Standard 802.11n im 2,4 GHz Funkbereich. (([[https:// | ||
Zeile 108: | Zeile 104: | ||
== Auswahl == | == Auswahl == | ||
- | WLAN- und Bluetooth-Controller gibt es in der einfachsten Form als reine ICs die es erfordern die umgebende Peripherie, Spannungsversorgung und Antenne mit einem eigenen Design zu entwickeln. Zusätzlich gibt es die meisten Controller auch als Komplettmodule, | + | WLAN- und Bluetooth-Controller gibt es in der einfachsten Form als reine ICs, die es erfordern, die umgebende Peripherie, Spannungsversorgung und Antenne mit einem eigenen Design zu entwickeln. Zusätzlich gibt es die meisten Controller auch als Komplettmodule, |
Zeile 124: | Zeile 120: | ||
* [[https:// | * [[https:// | ||
- | Das ATWINC1500 bietet für den doppelten Preis wie ein ESP32 Modul lediglich eine WLAN Funktionalität und wurde daher nicht weiter betrachtet. Interessante Alternative zu einem zusätzlichen WLAN Modul war der PIC32MZ-W1 Wi-Fi®. Dieser besteht aus einem PIC Mikrocontrollerkern und erweitert | + | Das ATWINC1500 bietet für den doppelten Preis wie ein ESP32 Modul lediglich eine WLAN-Funktionalität und wurde daher nicht weiter betrachtet. Interessante Alternative zu einem zusätzlichen WLAN-Modul war der PIC32MZ-W1 Wi-Fi®. Dieser besteht aus einem PIC Mikrocontrollerkern und erweitert |
- | Nach Betrachtung der einzelnen Module, fiel die Wahl auf ein ESP32-WROOM Modul (<imgref Ausgewaehltes_Modul_ESP32-WROOM-32E> | + | Nach Betrachtung der einzelnen Module fiel die Wahl auf ein ESP32-WROOM-Modul (<imgref Ausgewaehltes_Modul_ESP32-WROOM-32E> |
< | < | ||
Zeile 134: | Zeile 130: | ||
== ESP32 == | == ESP32 == | ||
- | Hauptkriterium für die Auswahl eines Funkmoduls war der Preis. Da die ESP32 einen deutlich größeren Funktionsumfang bei gleichzeitig kleinerem Preis liefern als die Konkurrenzprodukte von Microchip wurde der ESP32 zur Erweiterung des Oszilloskops mit Drahtloskonnektivität ausgewählt. Da im Labor Entwicklungsplatinen mit ESP32-WROOM-Modulen zu Verfügung standen, wurde dieses | + | Hauptkriterium für die Auswahl eines Funkmoduls war der Preis. Da die ESP32 einen deutlich größeren Funktionsumfang bei gleichzeitig kleinerem Preis liefern als die Konkurrenzprodukte von Microchip wurde der ESP32 zur Erweiterung des Oszilloskops mit Drahtloskonnektivität ausgewählt. Da im Labor Entwicklungsplatinen mit ESP32-WROOM-Modulen zu Verfügung standen, wurde diese Version gewählt. Einen großen Unterschied im Preis oder Funktionsumfang gab es zwischen den zu Auswahl stehenden ESP32-Modulen nicht. |
Das ausgewählte ESP32 Modell beherrscht WLAN und Bluetooth. WLAN ist im Standard 802.11 b/g/n mit 2.4 GHz. Bluetooth in Version v4.2 BR/EDR und mit BLE (Bluetooth Low Energy) vorhanden. Die erforderliche Antenne war bereits auf der Platine des Moduls vorhanden und erforderte daher keine gesonderte Auslegung.(([[https:// | Das ausgewählte ESP32 Modell beherrscht WLAN und Bluetooth. WLAN ist im Standard 802.11 b/g/n mit 2.4 GHz. Bluetooth in Version v4.2 BR/EDR und mit BLE (Bluetooth Low Energy) vorhanden. Die erforderliche Antenne war bereits auf der Platine des Moduls vorhanden und erforderte daher keine gesonderte Auslegung.(([[https:// | ||
Zeile 143: | Zeile 139: | ||
* Wi-Fi im Standard 802.11b/ | * Wi-Fi im Standard 802.11b/ | ||
* Bluetooth V4.2 BR/EDR und Bluetooth LE | * Bluetooth V4.2 BR/EDR und Bluetooth LE | ||
- | * Version 32E mit PCB Antenne | + | * Version 32E mit PCB-Antenne |
* Schnittstellen: | * Schnittstellen: | ||
* 40 MHz Oszillator | * 40 MHz Oszillator | ||
* 4 MB Flash Speicher | * 4 MB Flash Speicher | ||
- | Das ESP32-Modul soll auch als Benutzerschnittstelle eingesetzt werden können. Der Vorteil eines ESP32 gegenüber einfacheren Wifi- und Bluetooth Controllern ist der integrierte 2-Kern Prozessor (([[https:// | + | Das ESP32-Modul soll auch als Benutzerschnittstelle eingesetzt werden können. Der Vorteil eines ESP32 gegenüber einfacheren Wifi- und Bluetooth-Controllern ist der integrierte 2-Kern Prozessor (([[https:// |
== Vergleich mit dem Vorgänger 8266 == | == Vergleich mit dem Vorgänger 8266 == | ||
Zeile 158: | Zeile 154: | ||
Bei anderen Projekten zum MEXLE System wird der TTGO Micro32 von Lilygo (([[http:// | Bei anderen Projekten zum MEXLE System wird der TTGO Micro32 von Lilygo (([[http:// | ||
- | Preislich ist der TTGO Micro32 mit 5,26 € (([[https:// | + | Preislich ist der TTGO Micro32 mit 5,26 € (([[https:// |
- | Der Größenvergleich, | + | Der Größenvergleich, |
< | < | ||
Zeile 169: | Zeile 165: | ||
Ziel des TTGO ist laut Hersteller den ESP32 in kleinerem Formfaktor anzubieten. Dies stellt den größten Unterschied zwischen den Modulen dar.(([[http:// | Ziel des TTGO ist laut Hersteller den ESP32 in kleinerem Formfaktor anzubieten. Dies stellt den größten Unterschied zwischen den Modulen dar.(([[http:// | ||
- | Der Kern der beiden Module ist jeweils ein ESP32, was in den sehr ähnlichen Eigenschaften resultiert. Beide Module besitzen 38 Pins, verfügen über die üblichen Schnittstellen wie I²C, UART und SPI und funken mit WLAN im Standard 802.11 b/g/n sowie Bluetooth 4.2 und BLE. Einziger Unterschied ist die verwendete Antennentechnik. Der TTGO Micro32 verfügt sowohl über eine Keramik Antenne | + | Der Kern der beiden Module ist jeweils ein ESP32, was in sehr ähnlichen Eigenschaften resultiert. Beide Module besitzen 38 Pins, verfügen über die üblichen Schnittstellen wie I2C, UART und SPI und funken mit WLAN im Standard 802.11 b/g/n sowie Bluetooth 4.2 und BLE. Einziger Unterschied ist die verwendete Antennentechnik. Der TTGO Micro32 verfügt sowohl über eine Keramikantenne |
- | Da es neben dem Größenunterschied keine wesentlichen Vorteile des TTGO gegenüber dem ESP32 WROOM gibt, der TTGO jedoch doppelt so teuer ist, ist der ESP32 WROOM besser für ein kostengünstiges Oszilloskop geeignet. | + | Da es neben dem Größenunterschied keine wesentlichen Vorteile des TTGO gegenüber dem ESP32-WROOM gibt, der TTGO jedoch doppelt so teuer ist, ist der ESP32-WROOM besser für ein kostengünstiges Oszilloskop geeignet. |
=== 4.1.3 Analoge Eingänge === | === 4.1.3 Analoge Eingänge === | ||
Zeile 177: | Zeile 173: | ||
== Gabotronics == | == Gabotronics == | ||
- | Die Firma Gabotronics stellt kleine, Mikrocontroller-basierte Oszilloksope her. Dieses | + | Die Firma Gabotronics stellt kleine, Mikrocontroller-basierte Oszilloksope her. Diese basieren wie z.B. das XMEGA Xprotolab auf einem XMEGA-Prozessor mit daran angeschlossener Analogschaltung zur Wandlung der Messsignale auf die Logikspannung des Mikrocontroller.(([[https:// |
== Beschreibung == | == Beschreibung == | ||
Zeile 187: | Zeile 183: | ||
Da das Gabotronics Oszilloskop mehrere Kanäle verwendet, waren auch die Hardwarekomponenten dementsprechend groß dimensioniert. Bei der Begrenzung der Schaltung auf einen Kanal war der verwendete Operationsverstärker überdimensioniert und wurde ersetzt.(([[https:// | Da das Gabotronics Oszilloskop mehrere Kanäle verwendet, waren auch die Hardwarekomponenten dementsprechend groß dimensioniert. Bei der Begrenzung der Schaltung auf einen Kanal war der verwendete Operationsverstärker überdimensioniert und wurde ersetzt.(([[https:// | ||
- | Anstelle des TL064 Operationsverstärker des Gabotronics, | + | Anstelle des TL064 Operationsverstärker des Gabotronics, |
== Schaltung == | == Schaltung == | ||
- | Als Anschlussmöglichkeit zum Messen von Spannungen sind ein MCX Anschluss sowie eine Klemme vorhanden. Über den MCX Anschluss können Oszilloskoptastköpfe verwendet werden. Steht dieser nicht zur Verfügung ist auch der Anschluss mittels Kabel über die Klemme möglich. | + | Als Anschlussmöglichkeit zum Messen von Spannungen sind ein MCX-Anschluss sowie eine Klemme vorhanden. Über den MCX-Anschluss können Oszilloskoptastköpfe verwendet werden. Steht dieser nicht zur Verfügung, ist auch der Anschluss mittels Kabel über die Klemme möglich. |
Die Schaltung wurde auf eine Messspannung im Bereich von -10 V bis +10 V ausgelegt. Über einen Spannungsteiler wird die gemessene Spannung zunächst auf eine Amplitude im Bereich von +3,3 V bis -3,3 V begrenzt. Durch eine angeschlossene Operationsverstärkerschaltung erfolgt eine Wandlung auf den gewünschten Spannungsbereich von 0 V bis 3,3 V für die Analog-Digital-Wandlung. | Die Schaltung wurde auf eine Messspannung im Bereich von -10 V bis +10 V ausgelegt. Über einen Spannungsteiler wird die gemessene Spannung zunächst auf eine Amplitude im Bereich von +3,3 V bis -3,3 V begrenzt. Durch eine angeschlossene Operationsverstärkerschaltung erfolgt eine Wandlung auf den gewünschten Spannungsbereich von 0 V bis 3,3 V für die Analog-Digital-Wandlung. | ||
Zeile 199: | Zeile 195: | ||
== Differentielle | == Differentielle | ||
- | Die zuvor dargestellte Schaltung ist auf eine Single Ended Messung ausgelegt. Hierdurch ist es erforderlich, | + | Die zuvor dargestellte Schaltung ist auf eine Single Ended Messung ausgelegt. Hierdurch ist es erforderlich, |
- | Erfolgt eine Single Ended Messung bei einem Potentialunterschied | + | Erfolgt eine Single Ended Messung bei einem Potenzialunterschied |
< | < | ||
Zeile 224: | Zeile 220: | ||
</ | </ | ||
- | Im zweiten Schritt war es erforderlich herauszufinden, | + | Im zweiten Schritt war es erforderlich herauszufinden, |
< | < | ||
Zeile 230: | Zeile 226: | ||
</ | </ | ||
- | Ab einer Frequenz von 500 kHz fällt die Verstärkung der Ausgangsspannung ab. Der Frequenzgang zeigt damit, dass die Schaltung bis zu einer Frequenz von ca. 500 kHz sinnvoll nutzbar ist. Die Verstärkung der Schaltung liegt immer unter 0 dB, dies ist dadurch zu erklären, dass neben der Operationsverstärkerschaltung, ein vorgelagerter Spannungsteiler in der Schaltung vorhanden ist. Zudem wird der Ausgang des Operationsverstärker nicht direkt an den PIC32 angeschlossen. Als Zwischenglied ist ein Tiefpass integriert, welcher ebenfalls zu einer Dämpfung beiträgt. | + | Ab einer Frequenz von 500 kHz fällt die Verstärkung der Ausgangsspannung ab. Der Frequenzgang zeigt damit, dass die Schaltung bis zu einer Frequenz von ca. 500 kHz sinnvoll nutzbar ist. Die Verstärkung der Schaltung liegt immer unter 0 dB. Dies ist dadurch zu erklären, dass neben der Operationsverstärkerschaltung ein vorgelagerter Spannungsteiler in der Schaltung vorhanden ist. Zudem wird der Ausgang des Operationsverstärker nicht direkt an den PIC32 angeschlossen. Als Zwischenglied ist ein Tiefpass integriert, welcher ebenfalls zu einer Dämpfung beiträgt. |
Die Simulationsdateien sind zu finden unter: [[https:// | Die Simulationsdateien sind zu finden unter: [[https:// | ||
Zeile 259: | Zeile 255: | ||
== Verbesserungspotential == | == Verbesserungspotential == | ||
- | Die Bandbreite des verwendeten Operationsverstärker beträgt 1,1 MHz. Hierdurch ist auch die Bandbreite, die für das Oszilloskop genutzt werden kann begrenzt. Da die Analog-Digital-Wandler des PIC32 eine Samplerate von bis zu 25,45 Msps bei einer Auflösung von 12 Bit ermöglichen, | + | Die Bandbreite des verwendeten Operationsverstärker beträgt 1,1 MHz. Hierdurch ist auch die Bandbreite, die für das Oszilloskop genutzt werden kann, begrenzt. Da die Analog-Digital-Wandler des PIC32 eine Samplerate von bis zu 25,45 Msps bei einer Auflösung von 12 Bit ermöglichen, |
- | Die Verstärkung der Schaltung zu den analogen Eingängen fällt bereits bei 400-500 kHz ab. Daher sollte durch eine Anpassung der Bauteilwerte eine Verbesserung und Annäherung der Grenzfrequenz an ca. 1 MHz erreicht werden können, um die Bandbreite der verwendeten Komponenten optimal | + | Die Verstärkung der Schaltung zu den analogen Eingängen fällt bereits bei 400-500 kHz ab. Daher sollte durch eine Anpassung der Bauteilwerte eine Verbesserung und Annäherung der Grenzfrequenz an ca. 1 MHz erreicht werden können, um die Bandbreite der verwendeten Komponenten optimal zu nutzen. |
Zeile 268: | Zeile 264: | ||
== Spezifikation == | == Spezifikation == | ||
- | Laut Datenblatt besitzt das ausgewählte Display eine Auflösung von 128x64 Pixeln bei einer Bildschirmdiagonale von 0.96 Zoll.(([[https:// | + | Laut Datenblatt besitzt das ausgewählte Display eine Auflösung von 128x64 Pixeln bei einer Bildschirmdiagonale von 0,96 Zoll.(([[https:// |
- | Das Display ist in verschiedenen Anzeigeversionen mit Ein- oder Zweifarbdarstellung erhältlich. Die einfachen Versionen des Displays können Bilder in Schwarz und Weiß (ER-OLED0.96-1W) oder Schwarz und Blau (ER-OLED0.96-1B) darstellen. Daneben gibt es eine Multicolor Version, | + | Das Display ist in verschiedenen Anzeigeversionen mit Ein- oder Zweifarbdarstellung erhältlich. Die einfachen Versionen des Displays können Bilder in Schwarz und Weiß (ER-OLED0.96-1W) oder Schwarz und Blau (ER-OLED0.96-1B) darstellen. Daneben gibt es eine Multicolor Version, |
- | Das Display | + | Das Display |
- | Zur Ansteuerung des Displays | + | Zur Ansteuerung des Displays |
| ^ BS0 ^ BS1 ^ BS2 ^ | | ^ BS0 ^ BS1 ^ BS2 ^ | ||
| I2C | 0 | 1 | 0 | | | I2C | 0 | 1 | 0 | | ||
- | | 3-wire SPI | 1 | 0 | 0 | | + | | 3-Wire SPI | 1 | 0 | 0 | |
- | | 4-wire SPI | 0 | 0 | 0 | | + | | 4-Wire SPI | 0 | 0 | 0 | |
| 8-bit 68XX Parallel | | 8-bit 68XX Parallel | ||
| 8-bit 80XX Parallel | | 8-bit 80XX Parallel | ||
Zeile 286: | Zeile 282: | ||
Quelle Tabelle: (([[https:// | Quelle Tabelle: (([[https:// | ||
- | Die Auswahl der geeignetsten | + | Die Auswahl der geeigneten |
Die Anbindung des Displays an den PIC32 sollte mit möglichst geringem Hardwareaufwand erfolgen, dementsprechend war eine Ansteuerung mit einer so geringen Anzahl an Leitungen wie möglich zu finden. Die Anbindung über die beiden 8 Bit Parallelbusse entfiel, da diese neben den 8 Datenleitungen weitere zusätzliche Steuerleitungen erfordern. | Die Anbindung des Displays an den PIC32 sollte mit möglichst geringem Hardwareaufwand erfolgen, dementsprechend war eine Ansteuerung mit einer so geringen Anzahl an Leitungen wie möglich zu finden. Die Anbindung über die beiden 8 Bit Parallelbusse entfiel, da diese neben den 8 Datenleitungen weitere zusätzliche Steuerleitungen erfordern. | ||
- | Alternativ kann das Display über I²C oder SPI angesteuert werden. Da das Display auch die Möglichkeit bieten soll, die Messdaten anzuzeigen, ist auch die Geschwindigkeit der Ansteuerung ein wichtiger Faktor der Betrachtung. Im Vergleich mit I²C ermöglicht SPI höhere Übertragungsgeschwindigkeiten. Daher war SPI gegenüber | + | Alternativ kann das Display über I2C oder SPI angesteuert werden. Da das Display auch die Möglichkeit bieten soll, die Messdaten anzuzeigen, ist auch die Geschwindigkeit der Ansteuerung ein wichtiger Faktor der Betrachtung. Im Vergleich mit I2C ermöglicht SPI höhere Übertragungsgeschwindigkeiten. Daher war SPI gegenüber |
- | Das Display kann mit SPI in zwei unterschiedlichen | + | Das Display kann mit SPI in zwei unterschiedlichen |
== Anschlüsse == | == Anschlüsse == | ||
- | Neben den unterschiedlichen Farbdarstellungen gibt es das Display auch mit unterschiedlichen Anschlüssen. Zum einen kann das Display direkt mit dem angefügten Flachkabel auf die Platine aufgelötet werden. Weitere Varianten des Displays ermöglichen | + | Neben den unterschiedlichen Farbdarstellungen gibt es das Display auch mit unterschiedlichen Anschlüssen. Zum einen kann das Display direkt mit dem angefügten Flachkabel auf die Platine aufgelötet werden. Weitere Varianten des Displays ermöglichen die Nutzung eines Klemmverbinders zur Montage auf der Platine. Dies hat den Vorteil, dass das Display ausgetauscht werden kann. Der Verbinder für die Verwendung mit einer Klemmbuchse besitzt schmalere Kontakte als die Lötversion. Dadurch sind diese nicht zueinander kompatibel. Zudem gibt es die Klemmversion in zwei Ausführungen. Die Kontakte sind entweder auf der Unterseite oder Oberseite des Kabels aufgebracht. Dies ist bei der Wahl und Lage der entsprechenden Buchse auf der Platine zu berücksichtigen.(([[https:// |
- | Das Display des Handoszilloskops besitzt den Anschluss zum Klemmen mit den Kontakten auf der Oberseite. Beim Einbau des Display | + | Das Display des Handoszilloskops besitzt den Anschluss zum Klemmen mit den Kontakten auf der Oberseite. Beim Einbau des Displays |
< | < | ||
Zeile 304: | Zeile 300: | ||
== Spannungsversorgung == | == Spannungsversorgung == | ||
- | Das Display unterstützt zwei Arten der Spannungsversorgung. Bei der ersten erfolgt die Versorgung mit den erforderlichen Spannungen vollständig durch die externe Schaltung. Dies erfordert, dass alle erforderlichen Spannungen extern zur Verfügung stehen. Hierzu ist eine Versorgungsspannung von 1,65 V bis 3,3 V für die Logik des Displays und 7 V bis 15 V zur Ansteuerung des Display | + | Das Display unterstützt zwei Arten der Spannungsversorgung. Bei der ersten erfolgt die Versorgung mit den erforderlichen Spannungen vollständig durch die externe Schaltung. Dies erfordert, dass alle erforderlichen Spannungen extern zur Verfügung stehen. Hierzu ist eine Versorgungsspannung von 1,65 V bis 3,3 V für die Logik des Displays und 7 V bis 15 V zur Ansteuerung des Display-Panels |
- | Die zweite Art ist die Nutzung des integrierten DC/DC Wandler. Dieser erzeugt die für die Ansteuerung des Display | + | Die zweite Art ist die Nutzung des integrierten DC/DC-Wandler. Dieser erzeugt die für die Ansteuerung des Display-Panels |
==== 4.2 Integration in Vorarbeiten ==== | ==== 4.2 Integration in Vorarbeiten ==== | ||
- | Durch die Vorarbeiten bei der Entwicklung des Handoszilloskops war bereits ein Gehäuse vorgegeben. Die Abmessungen der Platine der vorhandenen Schaltung waren auf die Größe dieses Gehäuse ausgelegt. Sie verfügte über einen Atmel® SMART SAM L21 Mikrocontroller(([[http:// | + | Durch die Vorarbeiten bei der Entwicklung des Handoszilloskops war bereits ein Gehäuse vorgegeben. Die Abmessungen der Platine der vorhandenen Schaltung waren auf die Größe dieses Gehäuse ausgelegt. Sie verfügte über einen Atmel® SMART SAM L21 Mikrocontroller(([[http:// |
- | Nach der Auswahl des PIC32 war zunächst angedacht, diesen in das bestehende Design zu integrieren. Hierbei zeigten sich Probleme durch die starke Komprimierung der Leiterbahnen im Design. Zudem sind die Anschlüsse und Schnittstellen | + | Nach der Auswahl des PIC32 war zunächst angedacht, diesen in das bestehende Design zu integrieren. Hierbei zeigten sich Probleme durch die starke Komprimierung der Leiterbahnen im Design. Zudem sind die Anschlüsse und Schnittstellen |
- | Da als Batterie | + | Da als Batterie |
- | Da der Wunsch bestand, die sehr komplexe und hohe Anzahl an Pins erfordernde analoge Schaltung zu vereinfachen wurde die Strategie der Entwicklung geändert. | + | Da der Wunsch bestand, die sehr komplexe und hohe Anzahl an Pins erfordernde analoge Schaltung zu vereinfachen, wurde die Strategie der Entwicklung geändert. |
Die im Projekt zu erstellende Hardware sollte nicht mehr als Integration der neuen Komponenten und dem Austausch der alten Komponenten in die bestehende Schaltung durchgeführt werden. Stattdessen sollten kleine Module mit den Hauptfunktionalitäten des Oszilloskops entwickelt werden. Die Anbindung an den PIC sollte nicht mehr auf der gleichen Platine erfolgen. Stattdessen sollte mittels Developmentkit und geeigneter Aufsteckschnittstelle eine Funktionsdemonstration ermöglicht werden. | Die im Projekt zu erstellende Hardware sollte nicht mehr als Integration der neuen Komponenten und dem Austausch der alten Komponenten in die bestehende Schaltung durchgeführt werden. Stattdessen sollten kleine Module mit den Hauptfunktionalitäten des Oszilloskops entwickelt werden. Die Anbindung an den PIC sollte nicht mehr auf der gleichen Platine erfolgen. Stattdessen sollte mittels Developmentkit und geeigneter Aufsteckschnittstelle eine Funktionsdemonstration ermöglicht werden. | ||
- | Der Schaltplan der durchgeführten Teilintegration ist unter folgendem Link zu finden: [[https:// | + | Der Schaltplan der durchgeführten Teilintegration ist unter folgendem Link zu finden: [[https:// |
==== 4.3 Development Board ==== | ==== 4.3 Development Board ==== | ||
- | Nach der Anpassung des Projektziels wurde der Fokus des Projektes stärker auf die Oszilloskopfunktionalitäten | + | Nach der Anpassung des Projektziels wurde der Fokus des Projektes stärker auf die Oszilloskopfunktionalitäten |
== Anschlüsse | == Anschlüsse | ||
Zeile 335: | Zeile 331: | ||
- USB Type-A Verbindung für PIC32 Host-basierte Anwendungen | - USB Type-A Verbindung für PIC32 Host-basierte Anwendungen | ||
- X32 Stiftleisten | - X32 Stiftleisten | ||
- | - mikroBUS Schnittstelle | + | - mikroBUS-Schnittstelle |
- 3 konfigurierbare Schalter | - 3 konfigurierbare Schalter | ||
- 3 konfigurierbare LEDs | - 3 konfigurierbare LEDs | ||
Zeile 349: | Zeile 345: | ||
Auf der Unterseite sind folgende Komponenten vorhanden: | Auf der Unterseite sind folgende Komponenten vorhanden: | ||
- | - 50-Pin LCD Buchse | + | - 50-Pin LCD Anschluss |
- SSD1963QL9 Display Controller | - SSD1963QL9 Display Controller | ||
- PIC24FJ256GB106 Debug IC | - PIC24FJ256GB106 Debug IC | ||
Zeile 363: | Zeile 359: | ||
== PIC32MK1024GPE100 == | == PIC32MK1024GPE100 == | ||
- | Auf dem Board ist ein PIC32MK1024GPE100 bestückt, dieser | + | Das Developmentboard |
==== 4.4 mikroBUS Prototypen ==== | ==== 4.4 mikroBUS Prototypen ==== | ||
- | Wie zuvor beschrieben, | + | Wie zuvor beschrieben, |
=== 4.4.1 mikroBUS-Standard === | === 4.4.1 mikroBUS-Standard === | ||
- | mikroBUS ist ein offener Standard entwickelt vom Unternehmen MikroElektronika als eine Erweiterungsschnittstelle für Aufsteckboards. Ziel des Standards ist eine größtmögliche Erweiterbarkeit mit zugleich kleiner Anzahl an Pins zu bieten. Der Standard wird von vielen Herstellern unterstützt und ist auf vielen derer Entwicklungsboards zu finden. Mit sogenannten Click Boards listet MikroElektronika auf seiner | + | mikroBUS ist ein offener Standard entwickelt vom Unternehmen MikroElektronika als eine Erweiterungsschnittstelle für Aufsteckboards. Ziel des Standards ist eine größtmögliche Erweiterbarkeit mit zugleich kleiner Anzahl an Pins zu bieten. Der Standard wird von vielen Herstellern unterstützt und ist auf vielen derer Entwicklungsboards zu finden. Mit sogenannten Click Boards listet MikroElektronika auf der firmeneigenen |
== Platinengrößen == | == Platinengrößen == | ||
- | Der Standard definiert für die Aufsteckboards 3 mögliche Platinengrößen. Diese sind S, M und L. Die Breite eines Boards entspricht | + | Der Standard definiert für die Aufsteckboards 3 mögliche Platinengrößen. Diese sind S, M und L. Die Breite eines Boards entspricht immer 25,4 mm. Die Länge variiert dabei von 28,6 mm bei Platinen der Größe S bis 57,15 mm bei Platinen der Größe L. Zudem definiert der Standard die Lage der Pins sowie die Beschriftung |
< | < | ||
Zeile 389: | Zeile 385: | ||
=== 4.4.2 Oszilloskop-Modul mit Display === | === 4.4.2 Oszilloskop-Modul mit Display === | ||
- | Die erste Platine umfasst den Analog-Eingang-Teil der Oszilloskopfunktion, | + | Die erste Platine umfasst den Analog-Eingang-Teil der Oszilloskopfunktion, |
- | Zusätzlich zur Analogschaltung umfasst die Platine auch ein OLED-Display welches über einen FPC-Steckverbinder mit 30 Kontakten angeschlossen werden kann. Zur Ansteuerung wird 3 Wire SPI verwendet. Nutzereingaben können über 3 vorhandene | + | Zusätzlich zur Analogschaltung umfasst die Platine auch ein OLED-Display, welches über einen FPC-Steckverbinder mit 30 Kontakten angeschlossen werden kann. Zur Ansteuerung wird 3-Wire SPI verwendet. Nutzereingaben können über 3 Taster erfolgen. |
Nachfolgend ist das Pinout | Nachfolgend ist das Pinout | ||
Zeile 410: | Zeile 406: | ||
== Varianten == | == Varianten == | ||
- | Es wurden zwei Varianten der Schaltung erstellt, um unterschiedliche Arten der Messung zu testen. Die erste Schaltung kann für eine Single Ended Messung genutzt werden. Die zweite Schaltung ermöglicht eine differentielle Messung. Gefertigt wurde bisher nur die nicht differentielle | + | Es wurden zwei Varianten der Schaltung erstellt, um unterschiedliche Arten der Messung zu testen. Die erste Schaltung kann für eine Single Ended Messung genutzt werden. Die zweite Schaltung ermöglicht eine differentielle Messung. Gefertigt wurde bisher nur die Single Ended Messschaltung. |
=== 4.4.3 ESP32-Modul === | === 4.4.3 ESP32-Modul === | ||
- | Die zweite erstellte Prototypenplatine umfasst den ESP32, dieser ist mit SPI, I²C und UART über die mikroBUS-Schnittstelle mit dem PIC32 verbunden. | + | Die zweite erstellte Prototypenplatine umfasst den ESP32, dieser ist mit SPI, I2C und UART über die mikroBUS-Schnittstelle mit dem PIC32 verbunden. |
- | Der Schaltplan basiert auf dem Referenzdesign welches Espressif mit dem Datenblatt des ESP32 liefert und wurde an den mikroBUS-Formfaktor angepasst. | + | Der Schaltplan basiert auf dem Referenzdesign, welches Espressif mit dem Datenblatt des ESP32 liefert und wurde an den mikroBUS-Formfaktor angepasst. |
- | Für die Programmierung des ESP32 ist eine JTAG Schnittstelle vorgesehen. Ein Programmer auf der Platine ist nicht vorhanden. Stattdessen muss auf einen externen JTAG Programmer zurückgegriffen werden. | + | Für die Programmierung des ESP32 ist eine JTAG-Schnittstelle vorgesehen. Ein Programmer auf der Platine ist nicht vorhanden. Stattdessen muss auf einen externen JTAG Programmer zurückgegriffen werden. |
- | Hierzu kann zum Beispiel der ESP Prog von Espressif Systems verwendet werden. Mit diesem können sowohl ESP32 Modelle als auch die Vorgängerversion ESP8266 programmiert werden. Die Umsetzung erfolgt über eine FTDI USB Bridge und kann über Stecker unterschiedlicher Abmessung durchgeführt werden. Neben der Programmierfunktion ist auch das Debugging über den ESP Prog möglich. (([[https:// | + | Hierzu kann zum Beispiel der ESP Prog von Espressif Systems verwendet werden. Mit diesem können sowohl ESP32 Modelle als auch die Vorgängerversion ESP8266 programmiert werden. Die Umsetzung erfolgt über eine FTDI-USB-Bridge und kann über Stecker unterschiedlicher Abmessung durchgeführt werden. Neben der Programmierfunktion ist auch das Debugging über den ESP Prog möglich. (([[https:// |
< | < | ||
Zeile 427: | Zeile 423: | ||
Quelle <imgref ESP-Prog_Programmer_Platine_fuer_den_ESP32_und_ESP8266>: | Quelle <imgref ESP-Prog_Programmer_Platine_fuer_den_ESP32_und_ESP8266>: | ||
- | Zusätzlich zu der JTAG Schnittstelle besitzt die Platine einen Jumper für die Bootoption des ESP32 sowie einen Reset Taster. | + | Zusätzlich zu der JTAG-Schnittstelle besitzt die Platine einen Jumper für die Bootoption des ESP32 sowie einen Reset Taster. |
Die Platine basiert auf dem mikroBUS-Format der Größe M, wurde jedoch etwas in der Länge | Die Platine basiert auf dem mikroBUS-Format der Größe M, wurde jedoch etwas in der Länge | ||
Zeile 447: | Zeile 443: | ||
== Layoutvarianten == | == Layoutvarianten == | ||
- | Es wurden zwei Layouts der Schaltung erstellt. Der Schaltplan ist in beiden Fällen identisch. | + | Es wurden zwei Layouts der Schaltung erstellt. Der Schaltplan ist in beiden Fällen identisch. |
==== 4.5 Akku-Schaltung und Spannungsversorgung ==== | ==== 4.5 Akku-Schaltung und Spannungsversorgung ==== | ||
Zeile 453: | Zeile 449: | ||
Für spätere Ausbaustufen des Oszilloskops ist der autarke Betrieb ohne Anschluss an einen PC über USB vorgesehen. Hierfür wird eine Batterie oder ein Akku benötigt. | Für spätere Ausbaustufen des Oszilloskops ist der autarke Betrieb ohne Anschluss an einen PC über USB vorgesehen. Hierfür wird eine Batterie oder ein Akku benötigt. | ||
- | Als Vorbereitung auf den autarken Betrieb wurde eine Batterieschaltung zur Nutzung eines LiPo Akkus entwickelt. Als Basis diente das Design eines Adafruit Arduino Boards (([[https:// | + | Als Vorbereitung auf den autarken Betrieb wurde eine Batterieschaltung zur Nutzung eines Lithium-Polymer-Akkus entwickelt. Als Basis diente das Design eines Adafruit Arduino Boards (([[https:// |
* Betrieb über USB (hierbei wird das Board mit Spannung versorgt und gleichzeitig der Akku aufgeladen) | * Betrieb über USB (hierbei wird das Board mit Spannung versorgt und gleichzeitig der Akku aufgeladen) | ||
* Akkubetrieb (Das Board wird durch den Akku mit Spannung versorgt) | * Akkubetrieb (Das Board wird durch den Akku mit Spannung versorgt) | ||
- | Wird im Betrieb über USB das USB Kabel abgezogen schaltet die Schaltung automatisch auf den Akkubetrieb um. Wird das Kabel wieder eingesteckt, | + | Wird im Betrieb über USB das USB-Kabel abgezogen, schaltet die Schaltung automatisch auf den Akkubetrieb um. Wird das Kabel wieder eingesteckt, |
- | Zum Laden des Akkus kommt ein Lademanagement Controller der Firma Microchip zum Einsatz. Der MCP73831/2 Lademanagement-Controller kann für Schaltungen zum Laden von Lithium Ionen und Lithium Polymer Akkus genutzt werden. Der Ladestrom für den jeweiligen Akku kann über die Auslegung des Ladewiderstands fest eingestellt werden. Bei der Auswahl des Akkus ist dadurch darauf zu achten, dass dieser auch mit dem festgelegten Strom geladen werden kann, ohne beschädigt zu werden.(([[https:// | + | Zum Laden des Akkus kommt ein Lademanagement Controller der Firma Microchip zum Einsatz. Der MCP73831/2 Lademanagement-Controller kann für Schaltungen zum Laden von Lithium-Ionen- und Lithium-Polymer-Akkus genutzt werden. Der Ladestrom für den jeweiligen Akku kann über die Auslegung des Ladewiderstands fest eingestellt werden. Bei der Auswahl des Akkus ist dadurch darauf zu achten, dass dieser auch mit dem festgelegten Strom geladen werden kann, ohne beschädigt zu werden.(([[https:// |
Der Schaltplan wurde erstellt. Ein Layout wurde noch nicht angelegt, da dieses auf die Gesamthardware abgestimmt werden muss und somit erst bei der Erstellung eines Gesamtlayouts mit allen Funktionen des Oszilloskops ein optimales Layout erreicht werden kann. | Der Schaltplan wurde erstellt. Ein Layout wurde noch nicht angelegt, da dieses auf die Gesamthardware abgestimmt werden muss und somit erst bei der Erstellung eines Gesamtlayouts mit allen Funktionen des Oszilloskops ein optimales Layout erreicht werden kann. | ||
- | Der Schaltplan kann über folgenden Link heruntergeladen werden: | + | Der Schaltplan kann über folgenden Link heruntergeladen werden: [[https:// |
- | + | ||
- | [[https:// | + | |
==== 4.6 PIC32 Peripherieschaltung und Spannungsversorgung ==== | ==== 4.6 PIC32 Peripherieschaltung und Spannungsversorgung ==== | ||
- | Im Rahmen der zunächst durchgeführten Integration des PIC32 in die Schaltung aus den Vorarbeiten, wurde ein Schaltplan erstellt, der den PIC32 mit allen notwendigen Versorgungsspannungen, | + | Im Rahmen der zunächst durchgeführten Integration des PIC32 in die Schaltung aus den Vorarbeiten wurde ein Schaltplan erstellt, der den PIC32 mit allen notwendigen Versorgungsspannungen, |
- | + | ||
- | Dieser kann unter folgendem Link heruntergeladen werden: | + | |
- | [[https:// | + | Dieser kann unter folgendem Link heruntergeladen werden: |
==== 4.7 Preisvergleich Neuauslegung und Vorarbeiten ==== | ==== 4.7 Preisvergleich Neuauslegung und Vorarbeiten ==== | ||
- | Für die in den Vorarbeiten entwickelte Schaltung wurde eine Stückliste erzeugt. Mithilfe dieser wurde eine Preisliste der erforderlichen Komponenten angelegt, um zu prüfen bei welchen Komponenten Einsparungspotential besteht. Nach der Neuausrichtung des Projektziels wurden die meisten Komponenten neu ausgewählt. Daher war ein Preisvergleich zwischen der neuen Version und der Vorarbeit sinnvoll, um die Veränderung des Stückpreises untersuchen zu können. | + | Für die in den Vorarbeiten entwickelte Schaltung wurde eine Stückliste erzeugt. Mithilfe dieser wurde eine Preisliste der erforderlichen Komponenten angelegt, um zu prüfen, bei welchen Komponenten Einsparungspotential besteht. Nach der Neuausrichtung des Projektziels wurden die meisten Komponenten neu ausgewählt. Daher war ein Preisvergleich zwischen der neuen Version und der Vorarbeit sinnvoll, um die Veränderung des Stückpreises untersuchen zu können. |
Die Preise, die im Folgenden genannt werden, beziehen sich nur auf die Komponenten, | Die Preise, die im Folgenden genannt werden, beziehen sich nur auf die Komponenten, | ||
Zeile 487: | Zeile 479: | ||
Für die Neuauslegung wurde ein Preis von ca. 35 € pro Stück ermittelt. Dieser setzt sich aus den folgenden Teilen zusammen: | Für die Neuauslegung wurde ein Preis von ca. 35 € pro Stück ermittelt. Dieser setzt sich aus den folgenden Teilen zusammen: | ||
- | * ESP32 MikroBus: 5,58 € bzw. bei reiner Nutzung der USB Schnittstelle | + | * ESP32 mikroBus: 5,58 € bzw. bei reiner Nutzung der USB-Schnittstelle |
- | * Oszilloskop | + | * Oszilloskop |
* PIC32 + Peripherie: 10,37 €, Einsparung durch Auswahl eines PIC32 Modell mit geringerer Leistung möglich | * PIC32 + Peripherie: 10,37 €, Einsparung durch Auswahl eines PIC32 Modell mit geringerer Leistung möglich | ||
- | * Spannungsversorgung Akku: 9,30 € | + | * Spannungsversorgung |
* resultierender Gesamtpreis: | * resultierender Gesamtpreis: | ||
Zeile 499: | Zeile 491: | ||
Durch die Fertigung einer größeren Stückzahl, von z.B. 100, können weitere Einsparpotentiale bei der Beschaffung der Komponenten ausgeschöpft werden. | Durch die Fertigung einer größeren Stückzahl, von z.B. 100, können weitere Einsparpotentiale bei der Beschaffung der Komponenten ausgeschöpft werden. | ||
- | Zusätzlich besteht Einsparpotential durch Modellvarianten. Zum einen kann durch die Wahl eines kleineren PIC32 Modells mit geringerer Pin Anzahl der Anteil des PIC32 an den Beschaffungskosten reduziert werden. Wird nur die Klemme zum Anschluss der Messobjekte verwendet und ist die MCX Buchse optional kann der Preis des Oszilloskopmoduls auf 6,40 € gesenkt werden. Ein Verzicht auf Drahtlose Konnektivität und dadurch ausschließliche Nutzung der USB Schnittstelle zur Kommunikation kann weitere 5,58 € einsparen. Ein Handoszilloskop mit minimaler Ausstattung wäre bereits ab ca. 26 € möglich. | + | Zusätzlich besteht Einsparpotential durch Modellvarianten. Zum einen kann durch die Wahl eines kleineren PIC32 Modells mit geringerer Pin Anzahl der Anteil des PIC32 an den Beschaffungskosten reduziert werden. Wird nur die Klemme zum Anschluss der Messobjekte verwendet und ist die MCX-Buchse optional kann der Preis des Oszilloskopmoduls auf 6,40 € gesenkt werden. Ein Verzicht auf Drahtlose Konnektivität und dadurch ausschließliche Nutzung der USB-Schnittstelle zur Kommunikation kann weitere 5,58 € einsparen. Ein Handoszilloskop mit minimaler Ausstattung wäre bereits ab ca. 26 € möglich. |
Zeile 519: | Zeile 511: | ||
==== 5.1 PIC32 ==== | ==== 5.1 PIC32 ==== | ||
- | Die Software für den PIC32 umfasst die Funktionen zur Erfassung der Messwerte, Umsetzung der Nutzereingaben die über die Taster erfolgen und die Kommunikation mit dem Display sowie dem PC (über USB) und dem ESP32. Programmiert wird der PIC32 über die von Microchip veröffentlichte Entwicklungsumgebung [[https:// | + | Die Software für den PIC32 umfasst die Funktionen zur Erfassung der Messwerte, Umsetzung der Nutzereingaben, die über die Taster erfolgen und die Kommunikation mit dem Display sowie dem PC (über USB) und dem ESP32. |
=== 5.1.1 MPLAB X === | === 5.1.1 MPLAB X === | ||
+ | |||
+ | Programmiert wird der PIC32 über die von Microchip veröffentlichte Entwicklungsumgebung [[https:// | ||
== 5.1.1.1 Benutzeroberfläche == | == 5.1.1.1 Benutzeroberfläche == | ||
- | Im folgenden Abschnitt werden die wichtigsten Funktionen von MPLAB und Harmony beschrieben. <imgref MPLAB_Benutzeroberflaeche > zeigt die Oberfläche von MPLAB, die nummerierten Elemente des Bildes werden genauer beschrieben.(([[http:// | + | Im folgenden Abschnitt werden die wichtigsten Funktionen von MPLAB und Harmony beschrieben. <imgref MPLAB_Benutzeroberflaeche > zeigt die Oberfläche von MPLAB, die nummerierten Elemente des Bildes werden |
< | < | ||
Zeile 531: | Zeile 525: | ||
</ | </ | ||
- | - Tools: Hier kann auf verschiedene Unterprogramme zugegriffen werden, sowie deren Installation verwaltet werden. MPLAB Harmony und der Data Visualizer müssen vor der Verwendung installiert werden. | + | - Tools: Hier kann auf verschiedene Unterprogramme zugegriffen werden, sowie deren Installation verwaltet werden. MPLAB Harmony und der Data Visualizer müssen vor der Verwendung installiert werden. |
- | - Clean & Build: Über diese Schaltfläche wird der Programmcode erstellt und auf Fehler geprüft. Erstellt wird das momentan ausgewählte Hauptprojekt, | + | - Clean & Build: Über diese Schaltfläche wird der Programmcode erstellt und auf Fehler geprüft. Erstellt wird das momentan ausgewählte Hauptprojekt, |
- Make and Program Device: Der Code wird erstellt und auf Fehler geprüft, anschließend wird der Code auf den µC geladen. Dafür muss das Development-Kit mit dem PC verbunden sein, sowie in der Konfiguration als Hardware-Tool ausgewählt sein. | - Make and Program Device: Der Code wird erstellt und auf Fehler geprüft, anschließend wird der Code auf den µC geladen. Dafür muss das Development-Kit mit dem PC verbunden sein, sowie in der Konfiguration als Hardware-Tool ausgewählt sein. | ||
- | - Debugger: Damit kann das Programm | + | - Debugger: Damit kann das Programm |
- | - Data Visualizer: Darstellung der Datenströme des µC. (Muss erst heruntergeladen und intalliert | + | - Data Visualizer: Darstellung der Datenströme des µC. (Muss erst heruntergeladen und installiert |
- Output & Variablen Watchlist: Output zeigt den Status des Programms an, z.B. Fehler beim Kompilieren, | - Output & Variablen Watchlist: Output zeigt den Status des Programms an, z.B. Fehler beim Kompilieren, | ||
- | | + | - Über den Tab Production->Set Project Configuration-> |
- | | + | |
== 5.1.1.2 Projekt anlegen == | == 5.1.1.2 Projekt anlegen == | ||
- | Für die Installation wichtiger Komponenten und das Anlegen von neuen Projekten wurde von MicroChip | + | Für die Installation wichtiger Komponenten und das Anlegen von neuen Projekten wurde von Microchip |
- | Die Schritte zum Erstellen eines Projekts für den bis jetzt verwendeten PIC32MK1024GPE100 werden schrittweise erläutert: | + | Die Schritte zum Erstellen eines Projekts für den bis jetzt verwendeten PIC32MK1024GPE100 werden schrittweise erläutert:(([[https:// |
- Unter File -> New Project… auswählen | - Unter File -> New Project… auswählen | ||
- Das 32-bit MPLAB Harmony 3 Project auswählen | - Das 32-bit MPLAB Harmony 3 Project auswählen | ||
Zeile 549: | Zeile 542: | ||
- Dem neuen Projekt einen Ordner- und Projektnamen geben. | - Dem neuen Projekt einen Ordner- und Projektnamen geben. | ||
- Der Konfigurationsdatei einen Namen geben und den gewollten Chip auswählen. | - Der Konfigurationsdatei einen Namen geben und den gewollten Chip auswählen. | ||
- | - Es wird empfohlen, nicht den Namen „default“ für die Configuration | + | - Es wird empfohlen, nicht den Namen „default“ für die Konfiguration |
- | - Es wird ein leeres Projekt erstellt. Soll Harmony für die Programmierung verwendet werden, muss es als nächster Schritt gestartet werden. Die weiteren Schritte werden in den folgenden Kapiteln erläutert. Ansonsten müssen die „.c-“ und „.h-“ Dateien manuell hinzugefügt werden.(([[https:// | + | - Es wird ein leeres Projekt erstellt. Soll Harmony für die Programmierung verwendet werden, muss es als nächster Schritt gestartet werden. Die weiteren Schritte werden in den folgenden Kapiteln erläutert. Ansonsten müssen die „.c-“ und „.h-“ Dateien manuell hinzugefügt werden. |
- | == 5.1.1.3 PIC32 config settings | + | == 5.1.1.3 PIC32 Konfigurationseinstellungen |
- | Die Konfiguration des PIC32 kann manuell oder über Harmony vorgenommen werden. Wird Harmony nicht verwendet, können die Settings über Window-> Target Memory Views-> | + | Die Konfiguration des PIC32 kann manuell oder über Harmony vorgenommen werden. Wird Harmony nicht verwendet, können die Settings über Window-> |
(([[https:// | (([[https:// | ||
Zeile 564: | Zeile 557: | ||
Um neue Module der Programmierung hinzuzufügen, | Um neue Module der Programmierung hinzuzufügen, | ||
- | Ein einfaches Beispiel von MICROCHIP | + | Ein einfaches Beispiel von Microchip |
- | Manche Komponenten, | + | Manche Komponenten, |
Um den in Harmony konfigurierten Code zu erstellen, muss auf das „Generate Code“ Symbol geklickt werden. Dann erstellt MPLAB eine main.c-Datei und die Bibliotheken der ausgewählten Module.(([[https:// | Um den in Harmony konfigurierten Code zu erstellen, muss auf das „Generate Code“ Symbol geklickt werden. Dann erstellt MPLAB eine main.c-Datei und die Bibliotheken der ausgewählten Module.(([[https:// | ||
Zeile 576: | Zeile 569: | ||
</ | </ | ||
- | Über diese Oberfläche lässt sich leicht die Auflösung, Sampling-Rate, | + | Über die Oberfläche lässt sich leicht die Auflösung, Sampling-Rate, |
== 5.1.1.5 Harmony Pinzuweisung == | == 5.1.1.5 Harmony Pinzuweisung == | ||
Zeile 585: | Zeile 578: | ||
</ | </ | ||
- | Im Pin Settings Menü können den einzelnen Pins Funktionen (z.B. UART oder SPI) und selbst erstellte Namen zugewiesen werden. Außerdem kann definiert werden, ob es sich um einen Input oder Output handelt und ob ein Pull Up oder Pull Down Wiederstand | + | Im Pin Settings Menü können den einzelnen Pins Funktionen (z.B. UART oder SPI) und selbst erstellte Namen zugewiesen werden. Außerdem kann definiert werden, ob es sich um einen Input oder Output handelt und ob ein Pull-Up oder Pull-Down-Widerstand |
< | < | ||
Zeile 591: | Zeile 584: | ||
</ | </ | ||
- | Die Pin Table stellt dar, welchem Modul welche Pins zur Verfügung stehen. Pins, welche bereits von anderen Modulen verwendet werden, werden | + | Die Pin Table stellt dar, welchem Modul welche Pins zur Verfügung stehen. Pins, welche bereits von anderen Modulen verwendet werden, werden |
< | < | ||
Zeile 600: | Zeile 593: | ||
== 5.1.1.6 Bare Metal Pinzuweisung == | == 5.1.1.6 Bare Metal Pinzuweisung == | ||
- | Die Definition von Input oder Output wird über die TRISx-Register definiert, eine 1 seht für Input, eine 0 für Output. Das x gibt die einzelnen Port Module an und kann beim PIC32MK die Werte A bis D annehmen. Im Code sieht das folgendermaßen aus: <code cpp> | + | Die Definition von Input oder Output wird über die TRISx-Register definiert, eine 1 steht für Input, eine 0 für Output. Das x gibt die einzelnen Port Module an und kann beim PIC32MK die Werte A bis D annehmen. Im Code sieht das folgendermaßen aus: <code cpp> |
Für die Zuordnung von Funktionen zu den Pins müssen den Pins bzw. Registern bestimmte Zahlenwerte zugewiesen werden. Inputs und Outputs unterscheiden sich in der Art der Zuweisung. Die Bedeutung der Zahlenwerte ist im Datenblatt zu finden.(([[https:// | Für die Zuordnung von Funktionen zu den Pins müssen den Pins bzw. Registern bestimmte Zahlenwerte zugewiesen werden. Inputs und Outputs unterscheiden sich in der Art der Zuweisung. Die Bedeutung der Zahlenwerte ist im Datenblatt zu finden.(([[https:// | ||
Zeile 612: | Zeile 605: | ||
== 5.1.1.7 Interrupts == | == 5.1.1.7 Interrupts == | ||
- | <imgref Harmony_Interrupts > zeigt die Harmony Oberfläche zur Konfiguration der Interrupts. Es kann eingestellt werden, welche Interrupts verwendet werden sollen und welche Priorität sie haben. | + | <imgref Harmony_Interrupts > zeigt die Harmony-Oberfläche zur Konfiguration der Interrupts. Es kann eingestellt werden, welche Interrupts verwendet werden sollen und welche Priorität sie haben. |
< | < | ||
Zeile 621: | Zeile 614: | ||
== 5.1.1.8 Unterschied Harmony und MPLAB Code Configurator == | == 5.1.1.8 Unterschied Harmony und MPLAB Code Configurator == | ||
- | Die MPLAB X IDE unterstützt zwei visuelle Code Konfiguratoren, | + | Die MPLAB X IDE unterstützt zwei visuelle Code Konfiguratoren, |
Wird zur Programmierung nicht Harmony oder MCC verwendet, können die Benutzeroberflächen bei der Programmierung helfen, indem man zum Beispiel die verfügbaren Pins und deren Namen nachschauen kann, ohne die Datenblätter durchsuchen zu müssen. | Wird zur Programmierung nicht Harmony oder MCC verwendet, können die Benutzeroberflächen bei der Programmierung helfen, indem man zum Beispiel die verfügbaren Pins und deren Namen nachschauen kann, ohne die Datenblätter durchsuchen zu müssen. | ||
Zeile 631: | Zeile 624: | ||
</ | </ | ||
- | Je nach gesendeten Daten muss vor und nach der Übertragung eine Bitfolge gesendet werden, damit der Data Visualizer die Daten korrekt anzeigen kann. Der Ablauf der Übertragung sieht dann beispielweiße | + | Je nach gesendeten Daten muss vor und nach der Übertragung eine Bitfolge gesendet werden, damit der Data Visualizer die Daten korrekt anzeigen kann. Der Ablauf der Übertragung sieht dann beispielsweise |
<code cpp> | <code cpp> | ||
UART1_Write(ADC_Value); | UART1_Write(ADC_Value); | ||
Zeile 639: | Zeile 632: | ||
== 5.1.1.10 MPLAB und Harmony Eigenheiten == | == 5.1.1.10 MPLAB und Harmony Eigenheiten == | ||
Nachfolgend werden einige Besonderheiten bei der Bedienung von MPLAB aufgelistet, | Nachfolgend werden einige Besonderheiten bei der Bedienung von MPLAB aufgelistet, | ||
- | * Kombination von Bibliotheken von Harmony und extern | + | * Kombination von Bibliotheken von Harmony und externen Bibliotheken |
* Move und Copy von Projekten nicht innerhalb des Programms ausführen, sonst unerwünschte Nebenwirkungen. (Copy führt zu Verschachtelung des Projektordners, | * Move und Copy von Projekten nicht innerhalb des Programms ausführen, sonst unerwünschte Nebenwirkungen. (Copy führt zu Verschachtelung des Projektordners, | ||
- | * Harmony Einstellungen werden über Project-Properties und Configuration | + | * Harmony Einstellungen werden über Project-Properties und Konfiguration |
- | * Wenn ein Laptop mit zweitem Bildschirm verwendet wurde, kann es passieren, dass falls der zweite Bildschirm nicht mehr angeschlossen ist und MPLAB mit Harmony und dessen Oberflächen | + | * Wenn ein Laptop mit zweitem Bildschirm verwendet wurde, kann es passieren, dass, falls der zweite Bildschirm nicht mehr angeschlossen ist und MPLAB mit Harmony und dessen Oberflächen |
* Bei Verwendung eines Laptops oder kleinen Bildschirms können manche Menüoptionen abgeschnitten sein. (Beispiel: Rechtsklick-Menü der Projektliste.) | * Bei Verwendung eines Laptops oder kleinen Bildschirms können manche Menüoptionen abgeschnitten sein. (Beispiel: Rechtsklick-Menü der Projektliste.) | ||
* Bei Anschluss des Development-Kit über USB-Hub mit zusätzlichem USB-Kabel für das Senden von Daten an den PC wird die Verbindung nicht erkannt. | * Bei Anschluss des Development-Kit über USB-Hub mit zusätzlichem USB-Kabel für das Senden von Daten an den PC wird die Verbindung nicht erkannt. | ||
Zeile 652: | Zeile 645: | ||
=== 5.1.3 Handoszi Programmierung === | === 5.1.3 Handoszi Programmierung === | ||
- | Für die Programmierung des Handoszilloskop | + | Für die Programmierung des Handoszilloskops |
== OLED == | == OLED == | ||
Zeile 658: | Zeile 651: | ||
**Test-Display** | **Test-Display** | ||
- | Um die Software für die Displays vor der Erstellung der mikrobus-Platinen testen zu können, wurden zwei OLED-Displays beschafft, welche ebenfalls den SSD1306 Displaytreiber verwenden, allerdings schon mit Pins für die Montage auf Lochrasterplatinen vorkonfektioniert sind. Diese Displays besitzen sieben Pins für den Anschluss von Spannungsversorgung und SPI-Leitungen Der Anschluss ist wie folgt: | + | Um die Software für die Displays vor der Erstellung der mikroBUS-Platinen testen zu können, wurden zwei OLED-Displays beschafft, welche ebenfalls den SSD1306 Displaytreiber verwenden, allerdings schon mit Pins für die Montage auf Lochrasterplatinen vorkonfektioniert sind. Diese Displays besitzen sieben Pins für den Anschluss von Spannungsversorgung und SPI-Leitungen. Der Anschluss ist wie folgt:(([[https:// |
* GND: Masse | * GND: Masse | ||
Zeile 664: | Zeile 657: | ||
* D0: Taktungsleitung (SPI: SCK, I2C: SCL) | * D0: Taktungsleitung (SPI: SCK, I2C: SCL) | ||
* D1: Datenleitung (SPI: MOSI, I2C: SDA) | * D1: Datenleitung (SPI: MOSI, I2C: SDA) | ||
- | * RES: OLED Reset, | + | * RES: OLED Reset, |
* DC: SPI: MISO, Adressauswahl I2C | * DC: SPI: MISO, Adressauswahl I2C | ||
* CS: SPI Chip Select, falls nicht verwendet: Verbindung mit GND | * CS: SPI Chip Select, falls nicht verwendet: Verbindung mit GND | ||
- | Die OLED-Displays können wie in der Spezifikation beschrieben durch Umlöten von Widerständen auf der Rückseite mit I2c, 3 wire SPI oder 4 wire SPI betrieben werden. Standardkonfiguration ist 4 wire SPI.(([[https:// | + | Die OLED-Displays können wie in der Spezifikation beschrieben durch Umlöten von Widerständen auf der Rückseite mit I2C, 3-Wire SPI oder 4-Wire SPI betrieben werden. Standardkonfiguration ist 4-Wire SPI.(([[https:// |
- | **Adafruit | + | **Adafruit |
[[https:// | [[https:// | ||
Verwendet wird die SSD1306 Display Treiber Software von Adafruit(([[https:// | Verwendet wird die SSD1306 Display Treiber Software von Adafruit(([[https:// | ||
- | Da das Display keine Reaktion zeigt wurde ein weiteres Programm erstellt, welches für die Kommunikation selbst geschriebene Funktionen verwendet. Allerdings brachte auch diese Version nicht den gewünschten Erfolg. Diese Version des Programms ist unter folgendem Link zu finden: [[https:// | + | Da das Display keine Reaktion zeigt, wurde ein weiteres Programm erstellt, welches für die Kommunikation selbst geschriebene Funktionen verwendet. Allerdings brachte auch diese Version nicht den gewünschten Erfolg. |
+ | |||
+ | Diese Version des Programms ist unter folgendem Link zu finden: [[https:// | ||
**U8G2Lib**\\ | **U8G2Lib**\\ | ||
[[https:// | [[https:// | ||
- | Im nächsten Schritt wurde die Implementierung der U8G2 Library(([[https:// | + | Im nächsten Schritt wurde die Implementierung der U8G2 Bibliothek(([[https:// |
< | < | ||
Zeile 686: | Zeile 681: | ||
== Ausblick Displayprogrammierung == | == Ausblick Displayprogrammierung == | ||
- | Mithilfe eines Arduino wurde die Funktionsfähigkeit des OLED-Displays getestet (<imgref gui_oled> | + | Mithilfe eines Arduino wurde die Funktionsfähigkeit des OLED-Displays getestet (<imgref gui_oled> |
- | Die Programme wurde mit dem in MPLAB implementierten Debugger auf Fehler untersucht und getestet, ob der Code die erforderlichen Stellen zur Displaysteuerung erreicht. Das hat in allen Fällen funktioniert. Anschließend wurde mit einem Logic Analyzer (<imgref logic_analyzer>, | + | Die Programme wurde mit dem in MPLAB implementierten Debugger auf Fehler untersucht und getestet, ob der Code die erforderlichen Stellen zur Displaysteuerung erreicht. Das hat in allen Fällen funktioniert. Anschließend wurde mit einem Logic Analyzer (<imgref logic_analyzer>, |
< | < | ||
Zeile 703: | Zeile 698: | ||
**Bare Metal**\\ | **Bare Metal**\\ | ||
[[https:// | [[https:// | ||
- | Nach Vorbild des MICROCHIP | + | Nach Vorbild des Microchip |
== GPIO == | == GPIO == | ||
[[https:// | [[https:// | ||
- | Separates Triggern von 4 ADCs und Datenübertragung nach Samplen der einzelnen Kanäle als Rohdaten über USB und mikrobus | + | Separates Triggern von 4 ADCs und Datenübertragung nach Samplen der einzelnen Kanäle als Rohdaten über USB und mikroBUS-Steckplatz |
=== 5.1.4 Testen des Handoszi === | === 5.1.4 Testen des Handoszi === | ||
- | Um die Performance der verschiedenen ADC-Varianten miteinander vergleichen zu können wurden zwei unterschiedliche Tests mit einem Signalgenerator durchgeführt. Verwendet wurde ein PWM & Pulse Generator vom Typ ZK-PP1K (<imgref pwm_generator> | + | Um die Performance der verschiedenen ADC-Varianten miteinander vergleichen zu können, wurden zwei unterschiedliche Tests mit einem Signalgenerator durchgeführt. Verwendet wurde ein PWM & Pulse Generator vom Typ ZK-PP1K (<imgref pwm_generator> |
< | < | ||
Zeile 716: | Zeile 711: | ||
</ | </ | ||
- | Er bietet die Möglichkeit, | + | Er bietet die Möglichkeit, |
== Terminal Programme == | == Terminal Programme == | ||
Zeile 728: | Zeile 723: | ||
</ | </ | ||
- | Die USB-Kommunikation kann verwendet werden, um die ADC-Werte des PIC32 an einem externen Computer darstellen zu können und die Messwerte z.B. als .csv-Datei zu speichern. Die Darstellung in Tera Term ist beschränkt auf ASCII Zeichen, kann in den Log-Dateien aber in Binärform gespeichert werden.(([[https:// | + | Die USB-Kommunikation kann verwendet werden, um die ADC-Werte des PIC32 an einem externen Computer darstellen zu können und die Messwerte z.B. als .csv-Datei zu speichern. Die Darstellung in Tera Term ist beschränkt auf ASCII-Zeichen, kann in den Log-Dateien aber in Binärform gespeichert werden.(([[https:// |
**RealTerm**\\ | **RealTerm**\\ | ||
- | [[https:// | + | [[https:// |
< | < | ||
Zeile 740: | Zeile 735: | ||
**PuTTY**\\ | **PuTTY**\\ | ||
- | Als letztes Terminalprogramm wird [[https:// | + | Als letztes Terminalprogramm wird [[https:// |
< | < | ||
Zeile 746: | Zeile 741: | ||
</ | </ | ||
- | Ein weiterer Unterschied zu den beiden anderen Programmen ist, dass die Einstellungen der Übertragung vor dem Öffnen der Verbindung | + | Ein weiterer Unterschied zu den beiden anderen Programmen ist, dass die Einstellungen der Übertragung vor dem Öffnen der Verbindung |
Keines der Programme bietet die Möglichkeit, | Keines der Programme bietet die Möglichkeit, | ||
== Vergleich ADC-Performance == | == Vergleich ADC-Performance == | ||
** PWM Signal **\\ | ** PWM Signal **\\ | ||
- | Der erste Test war, ein PWM Signal mit bekannter Frequenz und bekanntem Duty-Cycle zu messen. Die Frequenz wurde so gewählt, dass bei einem erwarteten ADC-Sampling von 12 MSps und 4 ADCs mit jeweils Speicher für 256 Samples ein Zyklus gespeichert wird(([[https:// | + | Der erste Test war, ein PWM Signal mit bekannter Frequenz und bekanntem Duty-Cycle zu messen. Die Frequenz wurde so gewählt, dass bei einem erwarteten ADC-Sampling von 12 Msps und 4 ADCs mit jeweils Speicher für 256 Samples ein Zyklus gespeichert wird(([[https:// |
< | < | ||
Zeile 757: | Zeile 752: | ||
</ | </ | ||
- | Vergleicht man die einzelnen Messungen fällt auf, dass bei der Bare Metal Programmierung der verschachtelten ADCs das Signal nur teilweise aufgezeichnet wird. Der Grund dafür ist die notwendige Unterbrechung des Samplings für die Datenübertragung. Zoomt man in die aufgenommenen Daten zeigt sich, dass die Pulse gleichmäßig aufgezeichnet werden, bei den Versionen mit Harmony wird das Signal nicht gleichmäßig abgetastet, die Abtastfrequenz ist zu gering. | + | Vergleicht man die einzelnen Messungen fällt auf, dass bei der Bare Metal Programmierung der verschachtelten ADCs das Signal nur teilweise aufgezeichnet wird. Der Grund dafür ist die notwendige Unterbrechung des Samplings für die Datenübertragung. Zoomt man in die aufgenommenen Daten zeigt sich, dass die Pulse gleichmäßig aufgezeichnet werden. Bei den Versionen mit Harmony wird das Signal nicht gleichmäßig abgetastet, die Abtastfrequenz ist zu gering. |
**Puls**\\ | **Puls**\\ | ||
Zeile 766: | Zeile 761: | ||
</ | </ | ||
- | Im Vergleich der drei Aufzeichnungen kann man sehen, | + | Im Vergleich der drei Aufzeichnungen kann man sehen, |
Durch die langsamere Übertragung ist es möglich, dass die einzelnen Pulse stärker geblockt werden. | Durch die langsamere Übertragung ist es möglich, dass die einzelnen Pulse stärker geblockt werden. | ||
- | Die Programmierung ohne DMA zeigt ebenfalls keine einzelnen Pulse, hier ist es möglich, dass die Sample Rate zu niedrig ist und somit Teile des Signals verloren gehen. | + | Die Programmierung ohne DMA zeigt ebenfalls keine einzelnen Pulse, hier ist es möglich, dass die Sample-Rate zu niedrig ist und somit Teile des Signals verloren gehen. |
== Auswertung ADC == | == Auswertung ADC == | ||
- | Die Messungen werden so dargestellt, | + | Die Messungen werden so dargestellt, |
Die Auswertung der Versuche zeigt vor allem bei der Puls-Messung sonderbare Ergebnisse, daher sollten weitere Versuchsreihen durchgeführt werden, sowie der Programmcode angepasst werden. | Die Auswertung der Versuche zeigt vor allem bei der Puls-Messung sonderbare Ergebnisse, daher sollten weitere Versuchsreihen durchgeführt werden, sowie der Programmcode angepasst werden. | ||
- | Die Verschachtelung der ADC zeigt die höchste Auflösung des Signals, schneidet aber im kontinuierlichen Betrieb aufgrund der notwendigen Unterbrechungen große Teile des Signals ab. Ein Einsatz im kontinuierlichen Betrieb ist daher nicht sinnvoll. Es sollte möglich sein, ein hochfrequentes Signal komplett aufzuzeichnen, | + | Die Verschachtelung der ADC zeigt die höchste Auflösung des Signals, schneidet aber im kontinuierlichen Betrieb aufgrund der notwendigen Unterbrechungen große Teile des Signals ab. Ein Einsatz im kontinuierlichen Betrieb ist daher nicht sinnvoll. Es sollte möglich sein, ein hochfrequentes Signal komplett aufzuzeichnen, |
- | Im kontinuierlichen Betrieb ergibt eine Umsetzung ohne den „ADC DMA Buffer Full“-Interrupt mehr Sinn, hier können die Daten übertragen werden, sobald Daten im ADC DMA Buffer liegen. Damit reduziert sich allerdings die Sample Rate. | + | Im kontinuierlichen Betrieb ergibt eine Umsetzung ohne den „ADC DMA Buffer Full“-Interrupt mehr Sinn, hier können die Daten übertragen werden, sobald Daten im ADC DMA Buffer liegen. Damit reduziert sich allerdings die Sample-Rate. |
- | Eine weitere Überlegung kann sein, ob für das Handoszilloskop die restlichen | + | |
+ | Eine weitere Überlegung kann sein, ob für das Handoszilloskop die restlichen | ||
- | ==== 5.2 Kommunikation zwischen | + | ==== 5.2 Kommunikation zwischen |
+ | Für die Kommunikation zwischen dem ESP32 und dem PIC32 können unterschiedliche Bussysteme eingesetzt werden. Diese sind im Folgenden näher beschrieben. | ||
**I2C:**\\ | **I2C:**\\ | ||
I2C steht für Inter-Integrated-Circuit und wurde 1982 von Philips Semiconductors (heute NXP Semiconductors) für den Datenaustausch zwischen Mikrocontrollern und IC’s entwickelt. | I2C steht für Inter-Integrated-Circuit und wurde 1982 von Philips Semiconductors (heute NXP Semiconductors) für den Datenaustausch zwischen Mikrocontrollern und IC’s entwickelt. | ||
- | Bei I2C handelt es sich um einen Master-Slave-Bus, | + | Bei I2C handelt es sich um einen Master-Slave-Bus, |
< | < | ||
Zeile 791: | Zeile 789: | ||
**SPI:**\\ | **SPI:**\\ | ||
- | SPI (Serial Peripheral Interface) wurde 1987 bei Motorola entwickelt und ist ein synchroner serieller Datenbus. Wie I2C basiert er auf dem Master Slave Prinzip. Neben der Spannungsversorgung verwendet SPI drei Datenleitungen. Der SPI-Busaufbau zwischen Master und einem Slave ist in <imgref Busaufbau_SPI> | + | SPI (Serial Peripheral Interface) wurde 1987 bei Motorola entwickelt und ist ein synchroner serieller Datenbus. Wie I2C basiert er auf dem Master Slave Prinzip. Neben der Spannungsversorgung verwendet SPI drei Datenleitungen. Der SPI-Busaufbau zwischen Master und einem Slave ist in <imgref Busaufbau_SPI> |
< | < | ||
Zeile 797: | Zeile 795: | ||
</ | </ | ||
- | Für die Datenleitungen existieren mehrere Namenvarianten: | + | Für die Datenleitungen existieren mehrere Namenvarianten: |
* SCLK (auch SCK): wird vom Master zur Taktung verwendet | * SCLK (auch SCK): wird vom Master zur Taktung verwendet | ||
* MOSI (auch SIMO): steht für Master Out Slave In | * MOSI (auch SIMO): steht für Master Out Slave In | ||
Zeile 806: | Zeile 804: | ||
**UART:**\\ | **UART:**\\ | ||
- | UART steht für Universal Asynchronous Receiver Transmitter. Es benötigt für die Kommunikation keine separate Bustaktung, die Synchronisierung zwischen Sender und Empfänger geschieht über vom Transmitter gesendete Start- und Stop-bits. So benötigt UART für die bidirektionele Kommunikation nur zwei Datenleitungen, | + | UART steht für Universal Asynchronous Receiver Transmitter. Es benötigt für die Kommunikation keine separate Bustaktung, die Synchronisierung zwischen Sender und Empfänger geschieht über vom Transmitter gesendete Start- und Stop-Bits. So benötigt UART für die bidirektionele Kommunikation nur zwei Datenleitungen, |
< | < | ||
Zeile 812: | Zeile 810: | ||
</ | </ | ||
- | Eine UART-Übertragung besteht aus einer Nachricht mit festem Rahmen, zuerst wird ein Start-bit gesendet, anschließend fünf bis neun Daten-bits, einem Parity-bit zur Fehlererkennung und einem Stop-bit. Die Baud Rate entspricht bei UART der Bit Rate und kann Geschwindigkeiten von 50 bit/s bis 3 Mbit/s erreichen.(([[https:// | + | Eine UART-Übertragung besteht aus einer Nachricht mit festem Rahmen, zuerst wird ein Start-Bit gesendet, anschließend fünf bis neun Daten-Bits, einem Parity-Bit zur Fehlererkennung und einem Stop-Bit. Die Baud Rate entspricht bei UART der Bit Rate und kann Geschwindigkeiten von 50 Bit/s bis 3 Mbit/s erreichen.(([[https:// |
== Fazit: == | == Fazit: == | ||
Zeile 819: | Zeile 817: | ||
==== 5.3 ESP32 ==== | ==== 5.3 ESP32 ==== | ||
- | Die finale Schnittstelle | + | Die finale Schnittstelle |
=== 5.3.1 Programmierumgebungen === | === 5.3.1 Programmierumgebungen === | ||
Zeile 840: | Zeile 838: | ||
* ESP Integration [[https:// | * ESP Integration [[https:// | ||
- | Zur Programmierung des mikroBUS-ESP32-Prototypen kann die integrierte JTAG Schnittstelle genutzt werden. Dies erfordert einen externen Programmer. Die ESP Developmentkits besitzen einen integrierten Programmer und erfordern daher keine externe Hardware für diese Aufgabe. | + | Zur Programmierung des mikroBUS-ESP32-Prototypen kann die integrierte JTAG-Schnittstelle genutzt werden. Dies erfordert einen externen Programmer. Die ESP Developmentkits besitzen einen integrierten Programmer und erfordern daher keine externe Hardware für diese Aufgabe. |
== Einrichten eines Projektes in Eclipse == | == Einrichten eines Projektes in Eclipse == | ||
Zeile 855: | Zeile 853: | ||
</ | </ | ||
- | Im nächsten Schritt folgt die Auswahl des Projektes. Wird an dieser Stelle nichts ausgewählt legt Eclipse ein leeres FreeRTOS basiertes Projekt an. Alternativ kann eines der aufgelisteten Beispielprojekte ausgewählt werden, welches dann als Basis für das eigene Projekt dient. | + | Im nächsten Schritt folgt die Auswahl des Projektes. Wird an dieser Stelle nichts ausgewählt, legt Eclipse ein leeres FreeRTOS basiertes Projekt an. Alternativ kann eines der aufgelisteten Beispielprojekte ausgewählt werden, welches dann als Basis für das eigene Projekt dient. |
< | < | ||
Zeile 861: | Zeile 859: | ||
</ | </ | ||
- | Nach Drücken auf „Finish“ wird das Projekt erstellt. Die Ordnerstruktur besteht aus dem Build Ordner welcher die Ergebnisse des Buildprozess enthalten wird. Im Ordner main, befinden sich die Quelltextdateien und Konfigurationsdateien. Im Hauptverzeichnis befinden sich weitere Dateien wie die readme Datei die eine Beschreibung des Beispiels enthält, eine Lizenzdatei und weitere. | + | Nach Drücken auf „Finish“ wird das Projekt erstellt. Die Ordnerstruktur besteht aus dem Build Ordner, welcher die Ergebnisse des Buildprozess enthalten wird. Im Ordner main, befinden sich die Quelltextdateien und Konfigurationsdateien. Im Hauptverzeichnis befinden sich weitere Dateien wie die readme-Datei, die eine Beschreibung des Beispiels enthält, eine Lizenzdatei und weitere. |
< | < | ||
Zeile 867: | Zeile 865: | ||
</ | </ | ||
- | Wurde das Projekt erfolgreich angelegt kann mit dem Programmieren begonnen werden. Über das Auswahlmenü, | + | Wurde das Projekt erfolgreich angelegt, kann mit dem Programmieren begonnen werden. Über das Auswahlmenü, |
< | < | ||
Zeile 873: | Zeile 871: | ||
</ | </ | ||
- | Sind mehrere Projekte im Workspace von Eclipse angelegt kann im zweiten Dropdown-Menü, | + | Sind mehrere Projekte im Workspace von Eclipse angelegt, kann im zweiten Dropdown-Menü, |
< | < | ||
Zeile 885: | Zeile 883: | ||
</ | </ | ||
- | Wird der Programmer mittels USB an den PC angeschlossen erscheint dieser in der Regel automatisch in der Liste. Ist dies nicht der Fall muss dieser von Hand ausgewählt werden. Hierzu muss das Menü „New Launch Target“ geöffnet und der Programmer auswählt werden. | + | Wird der Programmer mittels USB an den PC angeschlossen, erscheint dieser in der Regel automatisch in der Liste. Ist dies nicht der Fall, muss dieser von Hand ausgewählt werden. Hierzu muss das Menü „New Launch Target“ geöffnet und der Programmer auswählt werden. |
Zeile 891: | Zeile 889: | ||
Bei der Nutzung der ESP-IDF und Eclipse wird der ESP32 nicht wie der PIC32 direkt auf Hardwareebene programmiert. Die Programme werden als Tasks implementiert und laufen auf einer unterliegenden Betriebssystemschicht. Als Betriebssystem kommt hierbei FreeRTOS zum Einsatz. Die verwendeten Programmiersprachen sind C und C++. (([[https:// | Bei der Nutzung der ESP-IDF und Eclipse wird der ESP32 nicht wie der PIC32 direkt auf Hardwareebene programmiert. Die Programme werden als Tasks implementiert und laufen auf einer unterliegenden Betriebssystemschicht. Als Betriebssystem kommt hierbei FreeRTOS zum Einsatz. Die verwendeten Programmiersprachen sind C und C++. (([[https:// | ||
- | Vorteil dieses Ansatzes ist das Vorhandensein von Treibern. Über dieses lassen sich die Hardwareschnittstellen für I²C, UART, SPI und weitere ansteuern. Die jeweilige Funktion wird mittels Softwaretreiber im jeweiligen Task geladen und kann anschließend über Funktionsaufrufe genutzt werden. Hierdurch entfällt der zusätzliche Aufwand durch die Verwendung von Registern und sorgt gelichzeitig | + | Vorteil dieses Ansatzes ist das Vorhandensein von Treibern. Über dieses lassen sich die Hardwareschnittstellen für I2C, UART, SPI und weitere ansteuern. Die jeweilige Funktion wird mittels Softwaretreiber im jeweiligen Task geladen und kann anschließend über Funktionsaufrufe genutzt werden. Hierdurch entfällt der zusätzliche Aufwand durch die Verwendung von Registern und sorgt gleichzeitig |
=== 5.3.3 Testkit mit ESP32 === | === 5.3.3 Testkit mit ESP32 === | ||
- | Für die Nutzung der Kommunikationsschnittstellen und des Webservers wurden bereits erste Testprogramme für den ESP32 implementiert. Als Basis wurden die verfügbaren Beispielprogramme verwendet und auf die wesentlichen Kernfunktionen gekürzt. Die Implementierung erfolgte für ein im Labor zur Verfügung stehendes ESP32 Devkit. Dieses verwendet dasselbe Modell des ESP32 wie der mikroBUS-ESP32-Prototyp. Daher können die implementierten Programme auch für den Prototypen | + | Für die Nutzung der Kommunikationsschnittstellen und des Webservers wurden bereits erste Testprogramme für den ESP32 implementiert. Als Basis wurden die verfügbaren Beispielprogramme verwendet und auf die wesentlichen Kernfunktionen gekürzt. Die Implementierung erfolgte für ein im Labor zur Verfügung stehendes ESP32 Devkit. Dieses verwendet dasselbe Modell des ESP32 wie der mikroBUS-ESP32-Prototyp. Daher können die implementierten Programme auch für den Prototyp |
< | < | ||
Zeile 906: | Zeile 904: | ||
=== 5.3.4 implementierte Funktionen === | === 5.3.4 implementierte Funktionen === | ||
- | Für das ESP32 Devkit wurden die I²C und UART Testprogramme implementiert und getestet. Eine Beschreibung der einzelnen Beispiele | + | Für das ESP32 Devkit wurden die I2C und UART Testprogramme implementiert und getestet. Eine Beschreibung der einzelnen Beispiele |
- | == I²C-Testprogramm == | + | == I2C-Testprogramm == |
- | Das Programm dient als Demonstration der I²C Funktion des ESP32 mittels FreeRTOS Tasks. | + | Das Programm dient als Demonstration der I2C Funktion des ESP32 mittels FreeRTOS Tasks. |
- | Implementiert sind hierbei Master und Slave gleichzeitig in jeweils einem eigenständigen Task. In einer Schleife werden Daten vom Master an den Slave und umgekehrt gesendet. Da die Implementierung beider Funktionen auf dem selben | + | Implementiert sind hierbei Master und Slave gleichzeitig in jeweils einem eigenständigen Task. In einer Schleife werden Daten vom Master an den Slave und umgekehrt gesendet. Da die Implementierung beider Funktionen auf demselben |
Das Programm ist zu finden unter: | Das Programm ist zu finden unter: | ||
Zeile 931: | Zeile 929: | ||
Die Webseite ist einfach gehalten, um mögliche Funktionen zu demonstrieren. Ein Button wird genutzt, um das Senden von Befehlen an den Webserver zu simulieren. Es können zwei Befehle gesendet werden. Ein Textfeld gibt einen Beispielmesswert an, ist das Board mittels UART mit einem anderen verbunden, können Werte an den ESP gesendet werden. Nach einer Aktualisierung der Webseite wird der empfangene Wert als Beispielmesswert angezeigt. | Die Webseite ist einfach gehalten, um mögliche Funktionen zu demonstrieren. Ein Button wird genutzt, um das Senden von Befehlen an den Webserver zu simulieren. Es können zwei Befehle gesendet werden. Ein Textfeld gibt einen Beispielmesswert an, ist das Board mittels UART mit einem anderen verbunden, können Werte an den ESP gesendet werden. Nach einer Aktualisierung der Webseite wird der empfangene Wert als Beispielmesswert angezeigt. | ||
- | Das Beispiel benötigt für eine sinnvolle Nutzung als Oszilloskop jedoch Anpassungen. Der angezeigte Wert wird nur aktualisiert, | + | Das Beispiel benötigt für eine sinnvolle Nutzung als Oszilloskop jedoch Anpassungen. Der angezeigte Wert wird nur aktualisiert, |
Nachfolgende Abbildung zeigt die Weboberfläche, | Nachfolgende Abbildung zeigt die Weboberfläche, | ||
Zeile 949: | Zeile 947: | ||
==== 5.4 Anbindung an Oszilloskopsoftware für PCs ==== | ==== 5.4 Anbindung an Oszilloskopsoftware für PCs ==== | ||
- | Für die Darstellung eines Oszilloskops auf einem PC stehen bereits verschiedene Programme zur Verfügung. Um Kosten zu reduzieren, soll hierbei auf Open Source Software und kostenlose Software gesetzt werden. Mögliche Programme für diesen Verwendungszweck sind Sigrok PulseView und Saleae Logic. | + | Für die Darstellung eines Oszilloskops auf einem PC stehen bereits verschiedene Programme zur Verfügung. Um Kosten zu reduzieren, soll hierbei auf Open-Source-Software und kostenlose Software gesetzt werden. Mögliche Programme für diesen Verwendungszweck sind Sigrok PulseView und Saleae Logic. |
=== 5.4.1 Sigrok PulseView === | === 5.4.1 Sigrok PulseView === | ||
Zeile 961: | Zeile 959: | ||
[[https:// | [[https:// | ||
Die Umsetzung geschieht mit der [[https:// | Die Umsetzung geschieht mit der [[https:// | ||
- | Vor der Umsetzung im Handoszilloskop sollte die Möglichkeit der Implementierung mit den sigrok PulseView Entwicklern abgesprochen werden. Diese sind unter folgenden Links zu errreichen: | + | Vor der Umsetzung im Handoszilloskop sollte die Möglichkeit der Implementierung mit den sigrok PulseView Entwicklern abgesprochen werden. Diese sind unter folgenden Links zu erreichen: |
* https:// | * https:// | ||
* https:// | * https:// | ||
Zeile 975: | Zeile 973: | ||
===== 6 Ausblick ===== | ===== 6 Ausblick ===== | ||
- | Im Rahmen des Projekt | + | Im Rahmen des Projekts |
==== 6.1 Hardware ==== | ==== 6.1 Hardware ==== | ||
Zunächst sollte ein Austausch von Hardwarekomponenten in einem bestehenden Design eines Handoszilloskops erfolgen. Um den Fokus der Entwicklung auf die Verbesserung der ADC-Leistung und die Reduzierung des Preises zu legen, wurde das Projektziel für die Hardware angepasst. | Zunächst sollte ein Austausch von Hardwarekomponenten in einem bestehenden Design eines Handoszilloskops erfolgen. Um den Fokus der Entwicklung auf die Verbesserung der ADC-Leistung und die Reduzierung des Preises zu legen, wurde das Projektziel für die Hardware angepasst. | ||
Zeile 985: | Zeile 983: | ||
Die Basisfunktionen zur Spannungsmessung sind umgesetzt. Dazu gehört das Ausmessen und Verarbeiten von Eingangssignalen. Zudem ist die Übertragung der Spannungswerte an Computer und ESP32 implementiert. Die Messwerte können per SPI an ein OLED-Display gesendet werden, allerdings funktioniert die Ansteuerung des Displays noch nicht fehlerfrei und die Ursache der Anzeigefehler konnte noch nicht ermittelt werden.\\ | Die Basisfunktionen zur Spannungsmessung sind umgesetzt. Dazu gehört das Ausmessen und Verarbeiten von Eingangssignalen. Zudem ist die Übertragung der Spannungswerte an Computer und ESP32 implementiert. Die Messwerte können per SPI an ein OLED-Display gesendet werden, allerdings funktioniert die Ansteuerung des Displays noch nicht fehlerfrei und die Ursache der Anzeigefehler konnte noch nicht ermittelt werden.\\ | ||
- | Im nächsten Schritt sollte mithilfe eines Oszilloskops die Datenübertragung zwischen PIC32 und OLED-Display geprüft werden und, sobald die Fehler behoben sind, eine Benutzeroberfläche zur Einstellung von Messparametern und der Darstellung momentaner Messwerte implementiert werden. Das OLED-Display im Handoszilloskop soll über 3 wire SPI gesteuert werden, das heißt, dass der Code von 4 wire SPI zu 3 wire SPI angepasst werden muss.\\ | + | Im nächsten Schritt sollte mithilfe eines Oszilloskops die Datenübertragung zwischen PIC32 und OLED-Display geprüft werden und, sobald die Fehler behoben sind, eine Benutzeroberfläche zur Einstellung von Messparametern und der Darstellung momentaner Messwerte implementiert werden. Das OLED-Display im Handoszilloskop soll über 3-Wire SPI gesteuert werden, das heißt, dass der Code von 4-Wire SPI zu 3-Wire SPI angepasst werden muss.\\ |
- | Die Sample-Rate der AD-Wandler sollte ebenfalls, zum Beispiel mit einem Oszilloskop, | + | Die Sample-Rate der AD-Wandler sollte ebenfalls, zum Beispiel mit einem Oszilloskop, |
- | Für die Kommunikation soll im fertigen Produkt nur ein Protokoll verwendet werden. Momentan ist nur die Kommunikation via UART programmiert, | + | Für die Kommunikation soll im fertigen Produkt nur ein Protokoll verwendet werden. Momentan ist nur die Kommunikation via UART programmiert, |
Geplant ist, dass das Handoszilloskop auch zur Protokollanalyse (zum Beispiel I2C und SPI) verwendet werden kann, das kann mithilfe von externer Software wie sigrok Pulseview umgesetzt werden, es wäre aber auch möglich diese Funktion direkt im Oszilloskopstift zu programmieren.\\ | Geplant ist, dass das Handoszilloskop auch zur Protokollanalyse (zum Beispiel I2C und SPI) verwendet werden kann, das kann mithilfe von externer Software wie sigrok Pulseview umgesetzt werden, es wäre aber auch möglich diese Funktion direkt im Oszilloskopstift zu programmieren.\\ | ||
Zeile 1002: | Zeile 1000: | ||
==== 6.3 ESP32 Programmierung ==== | ==== 6.3 ESP32 Programmierung ==== | ||
- | Zur Demonstration der Funktionen des ESP32 wurden verschiedene Demoprogramme entwickelt. Diese demonstieren | + | Zur Demonstration der Funktionen des ESP32 wurden verschiedene Demoprogramme entwickelt. Diese demonstrieren |
Verbesserungspotentiale zeigen sich vor allem beim Funktionsumfang des Webserver. Zudem ist noch kein Demoprogramm zur Nutzung der SPI-Schnittstelle vollständig erstellt. | Verbesserungspotentiale zeigen sich vor allem beim Funktionsumfang des Webserver. Zudem ist noch kein Demoprogramm zur Nutzung der SPI-Schnittstelle vollständig erstellt. |