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
projekt_mexle_handoszi:start [2021/09/20 08:30]
mirupp [4.3 Development Board]
projekt_mexle_handoszi:start [2021/09/20 21:12] (aktuell)
mirupp
Zeile 7: Zeile 7:
 == 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 36: Zeile 36:
  
 ===== 3. Funktionen des Handoszilloskop ===== ===== 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://de.wikipedia.org/wiki/Nyquist-Shannon-Abtasttheorem|Nyquist-Shannon-Abtasttheorem]]))\\+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://de.wikipedia.org/wiki/Nyquist-Shannon-Abtasttheorem|Nyquist-Shannon-Abtasttheorem]]))\\
 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> abgebildet. 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> abgebildet.
  
Zeile 73: 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, welche die Möglichkeit bieten, das Oszilloskop um einen Funktionsgenerator zu erweitern. Da auch der Preis einen entscheidenden Anteil an der Wahl des Mikrocontrollers hatte war hier ebenfalls der PIC32MK zu bevorzugen.+Da der Schwerpunkt des Oszilloskops auf der Messung von Spannungen liegtist hier besonders der PIC32MK geeignet. Dieser ermöglicht höhere ADC Geschwindigkeiten und verfügt zudem über Digital-Analog-Wandler, welche die Möglichkeit bieten, das Oszilloskop um einen Funktionsgenerator zu erweitern. Da auch der Preis einen entscheidenden Anteil an der Wahl des Mikrocontrollers hattewar hier ebenfalls der PIC32MK zu bevorzugen.
  
 == Eigenschaften der PIC32MK-Familie == == Eigenschaften der PIC32MK-Familie ==
Zeile 83: 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: CAN FD, I2C, UART und SPI   * Kommunikationsschnittstellen: CAN FD, I2C, UART und SPI
   * 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
Zeile 98: Zeile 98:
 Bluetooth:  Bluetooth: 
   * Bluetooth  wurde als Industriestandard von der Bluetooth Special Interest Group entwickelt und dient der Datenübertragung per Funk zwischen zwei Geräten. Der Fokus liegt dabei auf einer vergleichsweise kurzen Distanz zwischen den Geräten. Die Frequenz der Funkübertragung liegt bei 2,4 GHz, daher sind Störungen durch andere Geräte wie Telefone, Mikrowellen oder WLAN Netze möglich. (([[https://de.wikipedia.org/wiki/Bluetooth| Bluetooth - Wikipedia, 18.08.2021]]))   * Bluetooth  wurde als Industriestandard von der Bluetooth Special Interest Group entwickelt und dient der Datenübertragung per Funk zwischen zwei Geräten. Der Fokus liegt dabei auf einer vergleichsweise kurzen Distanz zwischen den Geräten. Die Frequenz der Funkübertragung liegt bei 2,4 GHz, daher sind Störungen durch andere Geräte wie Telefone, Mikrowellen oder WLAN Netze möglich. (([[https://de.wikipedia.org/wiki/Bluetooth| Bluetooth - Wikipedia, 18.08.2021]]))
-  * 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://de.wikipedia.org/wiki/Bluetooth_Low_Energy, | Bluetooth Low Energy - Wikipedia, 18.08.2021]])), (([[https://de.wikipedia.org/wiki/Bluetooth| Bluetooth - Wikipedia, 18.08.2021]]))+  * 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://de.wikipedia.org/wiki/Bluetooth_Low_Energy, | Bluetooth Low Energy - Wikipedia, 18.08.2021]])), (([[https://de.wikipedia.org/wiki/Bluetooth| Bluetooth - Wikipedia, 18.08.2021]]))
 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://de.wikipedia.org/wiki/Wireless_Local_Area_Network#Standards_nach_IEEE_802.11| WLAN - Wikipedia, 18.08.2021]]))   * 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://de.wikipedia.org/wiki/Wireless_Local_Area_Network#Standards_nach_IEEE_802.11| WLAN - Wikipedia, 18.08.2021]]))
Zeile 104: 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, diese integrieren die zuvor genannten peripheren Komponenten in einem bereits fertigen Layout mit Platine. Die Antenne kann dabei auf der Platine vorhanden sein oder extern durch einen entsprechenden Antennenstecker angeschlossen werden. Diese Komplettmodule können kostengünstig beschafft werden und erfordern einen geringeren Aufwand für die Integration in ein eigenes Layout. Daher wurden für das Oszilloskop solche Module betrachtet. Der Funktionsumfang der Module ist von Hersteller zu Hersteller unterschiedlich. Einige Module integrieren Bluetooth und Wifi wie die Modelle des ESP32, andere bieten nur Wifi- oder Bluetooth-Funktionalität an. Nachfolgende Tabelle listet die Module auf, die für das Handoszilloskop zur Auswahl standen.+WLAN- und Bluetooth-Controller gibt es in der einfachsten Form als reine ICsdie es erforderndie umgebende Peripherie, Spannungsversorgung und Antenne mit einem eigenen Design zu entwickeln. Zusätzlich gibt es die meisten Controller auch als Komplettmodule, diese integrieren die zuvor genannten peripheren Komponenten in einem bereits fertigen Layout mit Platine. Die Antenne kann dabei auf der Platine vorhanden sein oder extern durch einen entsprechenden Antennenstecker angeschlossen werden. Diese Komplettmodule können kostengünstig beschafft werden und erfordern einen geringeren Aufwand für die Integration in ein eigenes Layout. Daher wurden für das Oszilloskop solche Module betrachtet. Der Funktionsumfang der Module ist von Hersteller zu Hersteller unterschiedlich. Einige Module integrieren Bluetooth und Wifi wie die Modelle des ESP32, andere bieten nur Wifi- oder Bluetooth-Funktionalität an. Nachfolgende Tabelle listet die Module auf, die für das Handoszilloskop zur Auswahl standen.
  
  
Zeile 120: Zeile 120:
   * [[https://www.microchip.com/design-centers/wireless-connectivity/embedded-wi-fi|Microchip Embedded Wi-Fi®]]   * [[https://www.microchip.com/design-centers/wireless-connectivity/embedded-wi-fi|Microchip Embedded Wi-Fi®]]
  
-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 diesen mit WLAN. Mit einem Preis von ca. 12 € ist dieser im Vergleich mit einem eigenständigen PIC32MK und zusätzlichem ESP32 teurer und stellt damit einen Nachteil für ein kostengünstiges Oszilloskop dar. Zusätzlich war der PIC32MZ-W1 nicht lieferbar und fiel ebenfalls aus der Auswahl für die drahtlose Erweiterung des Oszilloskops.+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 diesen mit WLAN. Mit einem Preis von ca. 12 € ist dieser im Vergleich mit einem eigenständigen PIC32MK und zusätzlichem ESP32 teurer und stellt damit einen Nachteil für ein kostengünstiges Oszilloskop dar. Zusätzlich war der PIC32MZ-W1 nicht lieferbar und fiel ebenfalls aus der Auswahl für die drahtlose Erweiterung des Oszilloskops.
  
-Nach Betrachtung der einzelnen Modulefiel 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>).
  
 <imgcaption Ausgewaehltes_Modul_ESP32-WROOM-32E | Ausgewähltes Modul ESP32-WROOM-32E > <imgcaption Ausgewaehltes_Modul_ESP32-WROOM-32E | Ausgewähltes Modul ESP32-WROOM-32E >
Zeile 139: Zeile 139:
   * Wi-Fi im Standard 802.11b/g/n, mit Bitraten bis zu 150 Mbps bei 802.11n   * Wi-Fi im Standard 802.11b/g/n, mit Bitraten bis zu 150 Mbps bei 802.11n
   * 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: UART, SPI, I2C, PWM, I2S, GPIO, ADC, DAC und weitere   * Schnittstellen: UART, SPI, I2C, PWM, I2S, GPIO, ADC, DAC und weitere
   * 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://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf|Datenblatt ESP32 WROOM 32E & ESP32 WROOM 32UE, 18.08.2021]])). Durch die ausreichend vorhandene Leistung ist es möglich diesen als Server zu verwenden und so ein Webinterface für ein Oszilloskop zu bieten. Mit diesem sollen sich die Funktionen des Oszilloskops steuern lassen und die Messdaten angezeigt werden.+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://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf|Datenblatt ESP32 WROOM 32E & ESP32 WROOM 32UE, 18.08.2021]])). Durch die ausreichend vorhandene Leistung ist es möglich diesen als Server zu verwenden und so ein Webinterface für ein Oszilloskop zu bieten. Mit diesem sollen sich die Funktionen des Oszilloskops steuern lassen und die Messdaten angezeigt werden.
  
 == Vergleich mit dem Vorgänger 8266 == == Vergleich mit dem Vorgänger 8266 ==
Zeile 154: Zeile 154:
 Bei anderen Projekten zum MEXLE System wird der TTGO Micro32 von Lilygo (([[http://www.lilygo.cn/prod_view.aspx?TypeId=50033&Id=1091&FId=t3:50033:3|TTGO-Micro32]])) eingesetzt. Daher ist auch ein Vergleich zwischen dem verwendeten ESP32 und dem TTGO Micro sinnvoll. Bei anderen Projekten zum MEXLE System wird der TTGO Micro32 von Lilygo (([[http://www.lilygo.cn/prod_view.aspx?TypeId=50033&Id=1091&FId=t3:50033:3|TTGO-Micro32]])) eingesetzt. Daher ist auch ein Vergleich zwischen dem verwendeten ESP32 und dem TTGO Micro sinnvoll.
  
-Preislich ist der TTGO Micro32 mit 5,26 € (([[https://de.aliexpress.com/item/32869180373.html.|TTGO-Micro32 Aliexpress]])) etwa doppelt so teuer wie der ESP32 WROOM mit 2,31 € (([[https://www.mouser.de/ProductDetail/Espressif-Systems/ESP32-WROOM-32EM113EH3200PS3Q0?qs=sGAEpiMZZMu3sxpa5v1qrtF2x2x397lq4CHZ98VSUtg%3D|Mouser - ESP32-WROOM-32E(M113EH3200PS3Q0), 2021]])). Für das Oszilloskop kommt dieser daher nur in Frage, wenn sich ein wesentlicher Vorteil durch die Funktionen des TTGO Micro32 bietet.+Preislich ist der TTGO Micro32 mit 5,26 € (([[https://de.aliexpress.com/item/32869180373.html.|TTGO-Micro32 Aliexpress]])) etwa doppelt so teuer wie der ESP32-WROOM mit 2,31 € (([[https://www.mouser.de/ProductDetail/Espressif-Systems/ESP32-WROOM-32EM113EH3200PS3Q0?qs=sGAEpiMZZMu3sxpa5v1qrtF2x2x397lq4CHZ98VSUtg%3D|Mouser - ESP32-WROOM-32E(M113EH3200PS3Q0), 2021]])). Für das Oszilloskop kommt dieser daher nur infrage, wenn sich ein wesentlicher Vorteil durch die Funktionen des TTGO Micro32 bietet.
  
-Der Größenvergleich, zu sehen in nachfolgender Abbildung, zeigt den Vorteil des TTGO Micro32 gegenüber dem ESP32 WROOM Modell.+Der Größenvergleich, zu sehen in nachfolgender Abbildung, zeigt den Vorteil des TTGO Micro32 gegenüber dem ESP32-WROOM-Modell.
  
 <imgcaption Vergleich_TTGO_Micro32_und_ESP32_WROOM | Vergleich TTGO Micro32 und ESP32 WROOM > <imgcaption Vergleich_TTGO_Micro32_und_ESP32_WROOM | Vergleich TTGO Micro32 und ESP32 WROOM >
Zeile 165: 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://www.lilygo.cn/prod_view.aspx?TypeId=50033&Id=1091&FId=t3:50033:3|TTGO-Micro32]])) Ziel des TTGO ist laut Hersteller den ESP32 in kleinerem Formfaktor anzubieten. Dies stellt den größten Unterschied zwischen den Modulen dar.(([[http://www.lilygo.cn/prod_view.aspx?TypeId=50033&Id=1091&FId=t3:50033:3|TTGO-Micro32]]))
  
-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 Keramik Antenne als auch über einen IPEX Stecker zum Anschluss einer externen Antenne. Das ESP32-WROOM-Modul, wie in <imgref Ausgewaehltes_Modul_ESP32-WROOM-32E> und <imgref Vergleich_TTGO_Micro32_und_ESP32_WROOM> dargestellt, verfügt lediglich über eine PCB Antenne. Das ESP32-WROOM-Modul ist in einer weiteren Konfiguration erhältlich, diese besitzt ebenfalls einen IPEX Stecker, verzichtet dabei aber auf die PCB Antenne. (([[http://www.lilygo.cn/prod_view.aspx?TypeId=50033&Id=1091&FId=t3:50033:3|TTGO-Micro32]])), (([[https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf|Datenblatt ESP32 WROOM 32E & ESP32 WROOM 32UE, 18.08.2021]]))+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 als auch über einen IPEX-Stecker zum Anschluss einer externen Antenne. Das ESP32-WROOM-Modul, wie in <imgref Ausgewaehltes_Modul_ESP32-WROOM-32E> und <imgref Vergleich_TTGO_Micro32_und_ESP32_WROOM> dargestellt, verfügt lediglich über eine PCB-Antenne. Das ESP32-WROOM-Modul ist in einer weiteren Konfiguration erhältlich, diese besitzt ebenfalls einen IPEX-Stecker, verzichtet dabei aber auf die PCB-Antenne. (([[http://www.lilygo.cn/prod_view.aspx?TypeId=50033&Id=1091&FId=t3:50033:3|TTGO-Micro32]])), (([[https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32e_esp32-wroom-32ue_datasheet_en.pdf|Datenblatt ESP32 WROOM 32E & ESP32 WROOM 32UE, 18.08.2021]]))
  
-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 173: Zeile 173:
  
 == Gabotronics == == Gabotronics ==
-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://www.gabotronics.com/products/development-boards/xmega-xprotolab|Gabotronics XMEGA Xprotolab]]))+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://www.gabotronics.com/products/development-boards/xmega-xprotolab|Gabotronics XMEGA Xprotolab]]))
  
 == Beschreibung == == Beschreibung ==
Zeile 186: Zeile 186:
  
 == 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ügungist 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 195: Zeile 195:
  
 == Differentielle  Messung und Single Ended Messung  == == Differentielle  Messung und Single Ended Messung  ==
-Die zuvor dargestellte Schaltung ist auf eine Single Ended Messung ausgelegt. Hierdurch ist es erforderlich, dass die zu messende Spannung immer in Bezug auf die Masse der Oszilloskopschaltung gemessen wird.(([[https://infosys.beckhoff.com/index.php?content=../content/1031/ep3632/3311905675.html&id=|Beckhoff Information System - Typisierung SingleEnded / Differentiell, 18.08.2021]]))+Die zuvor dargestellte Schaltung ist auf eine Single Ended Messung ausgelegt. Hierdurch ist es erforderlich, dass die zu messende Spannung immer im Bezug auf die Masse der Oszilloskopschaltung gemessen wird.(([[https://infosys.beckhoff.com/index.php?content=../content/1031/ep3632/3311905675.html&id=|Beckhoff Information System - Typisierung SingleEnded / Differentiell, 18.08.2021]]))
  
-Erfolgt eine Single Ended Messung bei einem Potentialunterschied der Massen die größer ist als die maximale Messamplitude, kann es zu Schäden am Messgerät kommen. Dies tritt meist auf, wenn das Messgerät und das Messobjekt über unterschiedliche Netzteile mit Spannung versorgt werden und keine gemeinsame Erdung nutzen. Über eine differentielle Messschaltung kann eine Messung unabhängig vom Bezugspotential des Oszilloskops erfolgen, was den großen Vorteil dieser Messart darstellt. Potentialunterschiede der Massen können so ausgeglichen und Schäden am Messgerät vermieden werden.(([[https://infosys.beckhoff.com/index.php?content=../content/1031/ep3632/3311905675.html&id=|Beckhoff Information System - Typisierung SingleEnded / Differentiell, 18.08.2021]]))+Erfolgt eine Single Ended Messung bei einem Potenzialunterschied der Massendie größer ist als die maximale Messamplitude, kann es zu Schäden am Messgerät kommen. Dies tritt meist auf, wenn das Messgerät und das Messobjekt über unterschiedliche Netzteile mit Spannung versorgt werden und keine gemeinsame Erdung nutzen. Über eine differentielle Messschaltung kann eine Messung unabhängig vom Bezugspotential des Oszilloskops erfolgen, was den großen Vorteil dieser Messart darstellt. Potenzialunterschiede der Massen können so ausgeglichen und Schäden am Messgerät vermieden werden.(([[https://infosys.beckhoff.com/index.php?content=../content/1031/ep3632/3311905675.html&id=|Beckhoff Information System - Typisierung SingleEnded / Differentiell, 18.08.2021]]))
  
 <imgcaption Schaltplan_der_differentiellen_Messschaltung | Schaltplan der differentiellen Messschaltung > <imgcaption Schaltplan_der_differentiellen_Messschaltung | Schaltplan der differentiellen Messschaltung >
Zeile 257: Zeile 257:
 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, kann das Messsignal ausreichend gut erfasst werden. (([[https://www.ti.com/product/TLV9101|TLV9101 Datenblatt]])), (([[https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/32-bit-mcus/pic32-32-bit-mcus/pic32mk|PIC32MK Product Family]])) 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, kann das Messsignal ausreichend gut erfasst werden. (([[https://www.ti.com/product/TLV9101|TLV9101 Datenblatt]])), (([[https://www.microchip.com/en-us/products/microcontrollers-and-microprocessors/32-bit-mcus/pic32-32-bit-mcus/pic32mk|PIC32MK Product Family]]))
  
-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 nutzen zu können.+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 264: 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://www.buydisplay.com/128x64-oled-i2c-0-96-display-white-color-connector-fpc-ssd1306|Buydisplay ER-OLED0.96-1.3W]]))+Laut Datenblatt besitzt das ausgewählte Display eine Auflösung von 128x64 Pixeln bei einer Bildschirmdiagonale von 0,96 Zoll.(([[https://www.buydisplay.com/128x64-oled-i2c-0-96-display-white-color-connector-fpc-ssd1306|Buydisplay ER-OLED0.96-1.3W]]))
  
-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, welche farbige Pixel in Blau und Gelb sowie einen schwarzen Hintergrund darstellen kann (ER-OLED0.96-1YB). Da es sich bei dem Display um ein OLED handelt ist keine zusätzliche Hintergrundbeleuchtung erforderlich. Das ursprüngliche Design des Oszilloskops hatte zur Anzeige LC-Displays geplant. Der Wegfall der Hintergrundbeleuchtung spart somit Platz auf der Platine ein.(([[https://www.buydisplay.com/128x64-oled-i2c-0-96-display-white-color-connector-fpc-ssd1306|Buydisplay ER-OLED0.96-1.3W]]))+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, welche farbige Pixel in Blau und Gelb sowie einen schwarzen Hintergrund darstellen kann (ER-OLED0.96-1YB). Da es sich bei dem Display um ein OLED handeltist keine zusätzliche Hintergrundbeleuchtung erforderlich. Das ursprüngliche Design des Oszilloskops hatte zur Anzeige LC-Displays geplant. Der Wegfall der Hintergrundbeleuchtung spart somit Platz auf der Platine ein.(([[https://www.buydisplay.com/128x64-oled-i2c-0-96-display-white-color-connector-fpc-ssd1306|Buydisplay ER-OLED0.96-1.3W]]))
  
 Das Display besitzt einen integrierten SSD1306 Controller mit SRAM Buffer zur Ansteuerung des OLED Panel und erleichtert dadurch die Integration in die Schaltung.(([[https://www.buydisplay.com/128x64-oled-i2c-0-96-display-white-color-connector-fpc-ssd1306|Buydisplay ER-OLED0.96-1.3W]])) Das Display besitzt einen integrierten SSD1306 Controller mit SRAM Buffer zur Ansteuerung des OLED Panel und erleichtert dadurch die Integration in die Schaltung.(([[https://www.buydisplay.com/128x64-oled-i2c-0-96-display-white-color-connector-fpc-ssd1306|Buydisplay ER-OLED0.96-1.3W]]))
Zeile 282: Zeile 282:
 Quelle Tabelle: (([[https://www.buydisplay.com/download/manual/ER-OLED0.96-1_Series_Datasheet.pdf|ER-OLED0.96-1.3W Datenblatt]])) Quelle Tabelle: (([[https://www.buydisplay.com/download/manual/ER-OLED0.96-1_Series_Datasheet.pdf|ER-OLED0.96-1.3W Datenblatt]]))
  
-Die Auswahl der geeignetsten Schnittstelle folgte einem Vergleich der verfügbaren Ansteuerungsarten.+Die Auswahl der geeigneten Schnittstelle folgte einem Vergleich der verfügbaren Ansteuerungsarten.
  
 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.
Zeile 288: Zeile 288:
 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 I2C zu bevorzugen.(([[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface#Advantages|Serial Peripheral Interface # Advantages - Wikipedia, 18.08.2021]])) 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 I2C zu bevorzugen.(([[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface#Advantages|Serial Peripheral Interface # Advantages - Wikipedia, 18.08.2021]]))
  
-Das Display kann mit SPI in zwei unterschiedlichen Anbindungskonfigurationen verwendet werden. Die Anbindung kann über 3 oder 4 Leitungen erfolgen. Da das Display nur Daten über die Schnittstelle empfangen kann, jedoch keine Daten zurücksendet, kann auf die vierte Leitung verzichtet werden. Das Display wurde daher über 3-Wire SPI angebunden. (([[https://www.buydisplay.com/download/manual/ER-OLED0.96-1_Series_Datasheet.pdf|ER-OLED0.96-1.3W Datenblatt]]))+Das Display kann mit SPI in zwei unterschiedlichen Konfigurationen verwendet werden. Die Anbindung kann über 3 oder 4 Leitungen erfolgen. Da das Display nur Daten über die Schnittstelle empfangen kann, jedoch keine Daten zurücksendet, kann auf die vierte Leitung verzichtet werden. Das Display wurde daher über 3-Wire SPI angebunden. (([[https://www.buydisplay.com/download/manual/ER-OLED0.96-1_Series_Datasheet.pdf|ER-OLED0.96-1.3W Datenblatt]]))
  
 == 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 auch 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://www.buydisplay.com/download/manual/ER-OLED0.96-1_Series_Datasheet.pdf|ER-OLED0.96-1.3W Datenblatt]]))+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://www.buydisplay.com/download/manual/ER-OLED0.96-1_Series_Datasheet.pdf|ER-OLED0.96-1.3W Datenblatt]]))
  
-Das Display des Handoszilloskops besitzt den Anschluss zum Klemmen mit den Kontakten auf der Oberseite. Beim Einbau des Display wird das Kabel unter das Display gebogen. Dadurch ist der Platzbedarf für das Display auf der Platine geringer. +Das Display des Handoszilloskops besitzt den Anschluss zum Klemmen mit den Kontakten auf der Oberseite. Beim Einbau des Displays wird das Kabel unter das Display gebogen. Dadurch ist der Platzbedarf für das Display auf der Platine geringer. 
  
 <imgcaption Einbau_des_ER-OLED0.96-1.3W_mit_Klemmverbinder | Einbau des ER-OLED0.96-1.3W mit Klemmverbinder> <imgcaption Einbau_des_ER-OLED0.96-1.3W_mit_Klemmverbinder | Einbau des ER-OLED0.96-1.3W mit Klemmverbinder>
Zeile 300: 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 Panel zu erzeugen.(([[https://www.buydisplay.com/download/manual/ER-OLED0.96-1_Series_Datasheet.pdf|ER-OLED0.96-1.3W Datenblatt]]))+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 zu erzeugen.(([[https://www.buydisplay.com/download/manual/ER-OLED0.96-1_Series_Datasheet.pdf|ER-OLED0.96-1.3W Datenblatt]]))
  
-Die zweite Art ist die Nutzung des integrierten DC/DC Wandler. Dieser erzeugt die für die Ansteuerung des Display Panel erforderliche Spannung selbst. Vorteil hierbei ist, dass bei einer Versorgungsspannung von 3,3 V auf der Gesamtplatine des Oszilloskops, bei dieser Art der Spannungsversorgung, sowohl für die Logik des Displays als auch den DC/DC Wandler verwendet werden und weitere Hardware zur Spannungswandlung eingespart werden kann.(([[https://www.buydisplay.com/download/manual/ER-OLED0.96-1_Series_Datasheet.pdf|ER-OLED0.96-1.3W Datenblatt]]))+Die zweite Art ist die Nutzung des integrierten DC/DC-Wandler. Dieser erzeugt die für die Ansteuerung des Display-Panels erforderliche Spannung selbst. Vorteil hierbei ist, dass bei einer Versorgungsspannung von 3,3 V auf der Gesamtplatine des Oszilloskops, bei dieser Art der Spannungsversorgung, sowohl für die Logik des Displays als auch den DC/DC-Wandler verwendet werden und weitere Hardware zur Spannungswandlung eingespart werden kann.(([[https://www.buydisplay.com/download/manual/ER-OLED0.96-1_Series_Datasheet.pdf|ER-OLED0.96-1.3W Datenblatt]]))
  
 ==== 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://ww1.microchip.com/downloads/en/DeviceDoc/SAM_L21_Family_DataSheet_DS60001477C.pdf|SAM L21 Datenblatt]])), zwei LC-Displays sowie einen microSD Kartenschacht und eine Batterie.+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://ww1.microchip.com/downloads/en/DeviceDoc/SAM_L21_Family_DataSheet_DS60001477C.pdf|SAM L21 Datenblatt]])), zwei LC-Displays sowie einen microSD-Kartenschacht und eine Batterie.
  
 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 des PIC32 anders angeordnet, wodurch die Integration mehr Platz für die Leiterbahnen benötigt als für den SAM L21 vorgesehen war. 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 des PIC32 anders angeordnet, wodurch die Integration mehr Platz für die Leiterbahnen benötigt als für den SAM L21 vorgesehen war.
  
-Da als Batterie  ein 9 V Block zum Einsatz kam, war bereits ein großer Teil des Gehäuses durch diese belegt, der nicht für die Platine verwendet werden konnte. Auch eine Reduktion von zwei auf ein Display sorgte nicht für ausreichenden Platzgewinn, um den ESP32 im Gehäuse unterbringen zu können, ohne dass ein von Grund auf neues Layout für die gesamte Schaltung erforderlich wäre.+Da als Batterie  ein 9 V Block zum Einsatz kam, war bereits ein großer Teil des Gehäuses durch diesen belegt, der nicht für die Platine verwendet werden konnte. Auch eine Reduktion von zwei auf ein Display sorgte nicht für ausreichenden Platzgewinn, um den ESP32 im Gehäuse unterbringen zu können, ohne dass ein von Grund auf neues Layout für die gesamte Schaltung erforderlich wäre.
  
 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.
Zeile 316: Zeile 316:
 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://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Schaltplan/alte_ Schaltungen/Oszilloskopstift_Lite|Redmine->Handoszilloskop->Schaltplan->alte_ Schaltungen->Oszilloskopstift_Lite]]+Der Schaltplan der durchgeführten Teilintegration ist unter folgendem Link zu finden: [[https://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Schaltplan/alte%20Schaltungen/Oszilloskopstift_Lite|Redmine->Handoszilloskop->Schaltplan->alte Schaltungen->Oszilloskopstift_Lite]]
 ==== 4.3 Development Board ==== ==== 4.3 Development Board ====
-Nach der Anpassung des Projektziels wurde der Fokus des Projektes stärker auf die Oszilloskopfunktionalitäten als auf die Integration in das bestehende Layout gelegt. Darum wurde ein Developmentboard mit dem ausgewählten PIC32 beschafft, das als Basis für die zu entwickelnden Aufsteckplatinen dienen sollte. Als Developmentboard kommt das PIC32MK GP Development Kit (DM320106)(([[http://ww1.microchip.com/downloads/en/DeviceDoc/70005316A.pdf|PIC32MK General Purpose (GP) Development Board User’s Guide]])) zum Einsatz. Dieses bietet folgende Anschlüsse und Funktionalitäten.+Nach der Anpassung des Projektziels wurde der Fokus des Projektes stärker auf die Oszilloskopfunktionalitäten anstelle der Integration in das bestehende Layout gelegt. Darum wurde ein Developmentboard mit dem ausgewählten PIC32 beschafft, das als Basis für die zu entwickelnden Aufsteckplatinen dienen sollte. Als Developmentboard kommt das PIC32MK GP Development Kit (DM320106)(([[http://ww1.microchip.com/downloads/en/DeviceDoc/70005316A.pdf|PIC32MK General Purpose (GP) Development Board User’s Guide]])) zum Einsatz. Dieses bietet folgende Anschlüsse und Funktionalitäten.
  
 == Anschlüsse  und Komponenten == == Anschlüsse  und Komponenten ==
Zeile 331: 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 345: Zeile 345:
  
 Auf der Unterseite sind folgende Komponenten vorhanden:(([[http://ww1.microchip.com/downloads/en/DeviceDoc/70005316A.pdf|PIC32MK General Purpose (GP) Development Board User’s Guide]])) Auf der Unterseite sind folgende Komponenten vorhanden:(([[http://ww1.microchip.com/downloads/en/DeviceDoc/70005316A.pdf|PIC32MK General Purpose (GP) Development Board User’s Guide]]))
-  - 50-Pin LCD Buchse+  - 50-Pin LCD Anschluss
   - SSD1963QL9 Display Controller   - SSD1963QL9 Display Controller
   - PIC24FJ256GB106 Debug IC   - PIC24FJ256GB106 Debug IC
Zeile 359: Zeile 359:
  
 == PIC32MK1024GPE100 == == PIC32MK1024GPE100 ==
-Das Developmentboard ist mit einem PIC32MK1024GPE100 bestückt. Dieser ist das leistungsfähigste Modell der PIC32MK  Serie (([[http://ww1.microchip.com/downloads/en/DeviceDoc/70005316A.pdf|PIC32MK General Purpose (GP) Development Board User’s Guide]])). Hierdurch kann bei der Entwicklung der Software auf die volle Leistungsfähigkeit zurückgegriffen werden. Wird für die finale Version des Handoszilloskops weniger Leistung oder eine geringere Anzahl an Pins benötigt, kann innerhalb der PIC32MK Familie auf eine weniger leistungsfähige oder kleine Version skaliert werden. Dies reduziert die später anfallenden Kosten eines Exemplars des Handoszilloskops.+Das Developmentboard ist mit einem PIC32MK1024GPE100 bestückt. Dieser ist das leistungsfähigste Modell der PIC32MK  Serie (([[http://ww1.microchip.com/downloads/en/DeviceDoc/70005316A.pdf|PIC32MK General Purpose (GP) Development Board User’s Guide]])). Hierdurch kann bei der Entwicklung der Software auf die volle Leistungsfähigkeit zurückgegriffen werden. Wird für die finale Version des Handoszilloskops weniger Leistung oder eine geringere Anzahl an Pins benötigt, kann innerhalb der PIC32MK Familie auf eine weniger leistungsfähige oder kleinere Version skaliert werden. Dies reduziert die später anfallenden Kosten eines Exemplars des Handoszilloskops.
 ==== 4.4 mikroBUS Prototypen ==== ==== 4.4 mikroBUS Prototypen ====
-Wie zuvor beschrieben, wurde für die Tests der grundlegenden Funktionen zunächst auf die Entwicklung eines Gesamtboards verzichtet. Die Funktionsbereiche um den PIC32 wurden auf zwei Prototypen Platinen aufgeteilt, um die Funktionen des Oszilloskops auch getrennt voneindander testen zu können. Als Basis zum Anschluss der Platinen auf dem Developmentboard wurde der mikroBUS-Standard ausgewählt.+Wie zuvor beschrieben, wurde für die Tests der grundlegenden Funktionen zunächst auf die Entwicklung eines Gesamtboards verzichtet. Die Funktionsbereiche um den PIC32 wurden auf zwei Prototypen Platinen aufgeteilt, um die Funktionen des Oszilloskops auch getrennt voneinander testen zu können. Als Basis zum Anschluss der Platinen auf dem Developmentboard wurde der mikroBUS-Standard ausgewählt.
  
 === 4.4.1 mikroBUS-Standard === === 4.4.1 mikroBUS-Standard ===
Zeile 385: 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, welcher die Vorverarbeitung angelegter Spannungen übernimmt und an den Spannungspegel des PIC32 anpasst. Zur Verwendung von Tastköpfen ist eine MCX-Buchse vorhanden. Alternativ können Messleitungen auch an einer zweipoligen Klemme angeschlossen werden. Zulässige Messspannungen sind -10 V bis +10 V. Der angepasste Spannungsegel beträgt 0 V bis 3,3 V.+Die erste Platine umfasst den Analog-Eingang-Teil der Oszilloskopfunktion, welcher die Vorverarbeitung angelegter Spannungen übernimmt und an den Spannungspegel des PIC32 anpasst. Zur Verwendung von Tastköpfen ist eine MCX-Buchse vorhanden. Alternativ können Messleitungen auch an einer zweipoligen Klemme angeschlossen werden. Zulässige Messspannungen sind -10 V bis +10 V. Der angepasste Spannungspegel beträgt 0 V bis 3,3 V.
  
-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.+Zusätzlich zur Analogschaltung umfasst die Platine auch ein OLED-Displaywelches ü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  der Platine und der bestückte Prototyp abgebildet. Nachfolgend ist das Pinout  der Platine und der bestückte Prototyp abgebildet.
Zeile 411: Zeile 411:
 Die zweite erstellte Prototypenplatine umfasst den ESP32, dieser ist mit SPI, I2C 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 Referenzdesignwelches 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://docs.platformio.org/en/latest/plus/debug-tools/esp-prog.html|ESP-Prog - PlatformIO]])), (([[https://www.digikey.de/product-detail/de/espressif-systems/ESP-PROG/1965-ESP-PROG-ND/10259352|ESP-PROG - Digi-Key]])) 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://docs.platformio.org/en/latest/plus/debug-tools/esp-prog.html|ESP-Prog - PlatformIO]])), (([[https://www.digikey.de/product-detail/de/espressif-systems/ESP-PROG/1965-ESP-PROG-ND/10259352|ESP-PROG - Digi-Key]]))
Zeile 423: Zeile 423:
 Quelle <imgref ESP-Prog_Programmer_Platine_fuer_den_ESP32_und_ESP8266>: (([[https://docs.espressif.com/projects/espressif-esp-iot-solution/en/latest/hw-reference/ESP-Prog_guide.html|Introduction to the ESP-Prog Board, 10.09.2021]])) Quelle <imgref ESP-Prog_Programmer_Platine_fuer_den_ESP32_und_ESP8266>: (([[https://docs.espressif.com/projects/espressif-esp-iot-solution/en/latest/hw-reference/ESP-Prog_guide.html|Introduction to the ESP-Prog Board, 10.09.2021]]))
  
-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  erweitert, damit zwischen den Bauteilen ein ausreichend großer Abstand für das Auflöten besteht. Die Antenne des ESP32 steht über den Rand der Platine über, damit die Funkverbindung nicht gestört wird. Die Platine basiert auf dem mikroBUS-Format der Größe M, wurde jedoch etwas in der Länge  erweitert, damit zwischen den Bauteilen ein ausreichend großer Abstand für das Auflöten besteht. Die Antenne des ESP32 steht über den Rand der Platine über, damit die Funkverbindung nicht gestört wird.
Zeile 443: Zeile 443:
  
 == Layoutvarianten == == Layoutvarianten ==
-Es wurden zwei Layouts der Schaltung erstellt. Der Schaltplan ist in beiden Fällen identisch. Ein Unterschied gibt es bei der Anzahl der verwendeten Schichten bei der Fertigung der Platine. Das erste Layout ist auf ein zweilagiges Design begrenzt und nutzt nur die Ober- und Unterseite der Platine für die Leiterbahnen. Das zweite Design sieht vier Lagen vor. Die inneren Lagen der Platine dienen der Spannungsversorgung mit 3,3 V und als Masselage.+Es wurden zwei Layouts der Schaltung erstellt. Der Schaltplan ist in beiden Fällen identisch. Einen Unterschied gibt es bei der Anzahl der verwendeten Schichten bei der Fertigung der Platine. Das erste Layout ist auf ein zweilagiges Design begrenzt und nutzt nur die Ober- und Unterseite der Platine für die Leiterbahnen. Das zweite Design sieht vier Lagen vor. Die inneren Lagen der Platine dienen der Spannungsversorgung mit 3,3 V und als Masselage.
  
 ==== 4.5 Akku-Schaltung und Spannungsversorgung ==== ==== 4.5 Akku-Schaltung und Spannungsversorgung ====
Zeile 449: 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://learn.adafruit.com/adafruit-stm32f405-feather-express|Adafruit STM32F405 Feather Express]])). Die Schaltung ermöglicht die folgenden Betriebsarten:+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://learn.adafruit.com/adafruit-stm32f405-feather-express|Adafruit STM32F405 Feather Express]])). Die Schaltung ermöglicht die folgenden Betriebsarten:
   * 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, erfolgt die Versorgung wieder über die USB Schnittstelle.+Wird im Betrieb über USB das USB-Kabel abgezogenschaltet die Schaltung automatisch auf den Akkubetrieb um. Wird das Kabel wieder eingesteckt, erfolgt die Versorgung wieder über die USB-Schnittstelle.
  
-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://ww1.microchip.com/downloads/en/DeviceDoc/MCP73831-Family-Data-Sheet-DS20001984H.pdf|Datenblatt MCP73831/2 Lademanagement-Controller]]))+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-Ionenund 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://ww1.microchip.com/downloads/en/DeviceDoc/MCP73831-Family-Data-Sheet-DS20001984H.pdf|Datenblatt MCP73831/2 Lademanagement-Controller]]))
  
 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://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Schaltplan/Handoszilloskop_Akkuschaltung|Redmine->Handoszilloskop->Schaltplan->Handoszilloskop_Akkuschaltung]]
- +
-[[https://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Schaltplan/Handoszilloskop_Akkuschaltung|Redmine->Handoszilloskop->Schaltplan->Handoszilloskop_Akkuschaltung]]+
  
 ==== 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, Programmierschnittstellen und Peripherie anbindet. 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, Programmierschnittstellen und Peripherie anbindet.
  
-Dieser kann unter folgendem Link heruntergeladen werden: +Dieser kann unter folgendem Link heruntergeladen werden: [[https://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Schaltplan/PIC32_Peripherie|Redmine->Handoszilloskop->Schaltplan->PIC32_Peripherie]]
- +
-[[https://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Schaltplan/PIC32_Peripherie|Redmine->Handoszilloskop->Schaltplan->PIC32_Peripherie]]+
  
 ==== 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üfenbei 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 auf der Platine bestückt werden. Der Preis für die Fertigung und Bestückung der Platine selbst sind darin nicht enthalten. Die Preise wurden auf Basis der Fertigung von 10 Oszilloskopen ermittelt. Die unten aufgelisteten Preisangaben beziehen sich jeweils auf ein Stück. Die Preise, die im Folgenden genannt werden, beziehen sich nur auf die Komponenten, die auf der Platine bestückt werden. Der Preis für die Fertigung und Bestückung der Platine selbst sind darin nicht enthalten. Die Preise wurden auf Basis der Fertigung von 10 Oszilloskopen ermittelt. Die unten aufgelisteten Preisangaben beziehen sich jeweils auf ein Stück.
Zeile 483: 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 0€ +  * ESP32 mikroBus: 5,58 € bzw. bei reiner Nutzung der USB-Schnittstelle € 
-  * Oszilloskop mikroBUS: 9,39 €, bei optionaler MCX Buchse reduzierbar auf 6,40 €+  * Oszilloskop mikroBUS: 9,39 €, bei optionaler MCX-Buchse reduzierbar auf 6,40 €
   * 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 und Akku-Schaltung: 9,30 €   * Spannungsversorgung und Akku-Schaltung: 9,30 €
Zeile 495: 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 515: 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. +Die Software für den PIC32 umfasst die Funktionen zur Erfassung der Messwerte, Umsetzung der Nutzereingabendie ü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://www.microchip.com/en-us/development-tools-tools-and-software/mplab-x-ide|MPLAB X IDE]] und dem darin verwendbaren Addon [[https://www.microchip.com/en-us/development-tools-tools-and-software/embedded-software-center/mplab-harmony-v3|MPLAB Harmony]].+Programmiert wird der PIC32 über die von Microchip veröffentlichte Entwicklungsumgebung [[https://www.microchip.com/en-us/development-tools-tools-and-software/mplab-x-ide|MPLAB X IDE]] und dem darin verwendbaren Add-on [[https://www.microchip.com/en-us/development-tools-tools-and-software/embedded-software-center/mplab-harmony-v3|MPLAB Harmony]].
  
 == 5.1.1.1 Benutzeroberfläche == == 5.1.1.1 Benutzeroberfläche ==
Zeile 530: Zeile 526:
  
   - 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, nicht die aktuell geöffnete main-Datei. (Das Hauptprojekt ist in der linken Spalte des Bildes Fett hervorgehoben) +  - Clean & Build: Über diese Schaltfläche wird der Programmcode erstellt und auf Fehler geprüft. Erstellt wird das momentan ausgewählte Hauptprojekt, nicht die aktuell geöffnete main-Datei. (Das Hauptprojekt ist in der linken Spalte des Bildes fett hervorgehoben) 
   - 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 im Debug-Modus analysiert werden.   - Debugger: Damit kann das Programm im Debug-Modus analysiert werden.
Zeile 538: Zeile 534:
  
 == 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 ein Tutorial für das Erstellen eines Beispielprojektes veröffentlicht. Dieses Tutorial ist unter folgendem Link zu finden: [[https://microchipdeveloper.com/harmony3:pic32mk-gp-db-getting-started-training-module-step1|PIC32MK Beispielprojekt]]\\ +Für die Installation wichtiger Komponenten und das Anlegen von neuen Projekten wurde von Microchip ein Tutorial für das Erstellen eines Beispielprojektes veröffentlicht. Dieses Tutorial ist unter folgendem Link zu finden: [[https://microchipdeveloper.com/harmony3:pic32mk-gp-db-getting-started-training-module-step1|PIC32MK Beispielprojekt]]\\ 
  
 Die Schritte zum Erstellen eines Projekts für den bis jetzt verwendeten PIC32MK1024GPE100 werden schrittweise erläutert:(([[https://microchipdeveloper.com/tls0101:lab1|MPLAB Creating a Harmony Project]])) Die Schritte zum Erstellen eines Projekts für den bis jetzt verwendeten PIC32MK1024GPE100 werden schrittweise erläutert:(([[https://microchipdeveloper.com/tls0101:lab1|MPLAB Creating a Harmony Project]]))
Zeile 546: 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 zu verwenden, da Konfigurationen mit demselben Namen für mehrere Projekte gelten können. +    - Es wird empfohlen, nicht den Namen „default“ für die Konfiguration zu verwenden, da Konfigurationen mit demselben Namen für mehrere Projekte gelten können. 
   - 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.   - 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->Configuration Bits geändert werden. So muss nicht jede Option im Datenblatt nachgelesen werden. Sind die gewünschten Änderungen vorgenommen, kann über die Schaltfläche "Generate Source Code to Output" der Code erzeugt werden. Um den Code dem Projekt hinzuzufügen muss er mit Copy-Paste aus dem Outputfenster in ein Projektfile eingefügt werden. Alternativ kann mit Rechtsklick->Save as... ein separates File erzeugt werden, welches in das Projekt eingebunden werden kann. +Die Konfiguration des PIC32 kann manuell oder über Harmony vorgenommen werden. Wird Harmony nicht verwendet, können die Settings über Window->Target Memory Views->Configuration Bits geändert werden. So muss nicht jede Option im Datenblatt nachgelesen werden. Sind die gewünschten Änderungen vorgenommen, kann über die Schaltfläche "Generate Source Code to Output" der Code erzeugt werden. Um den Code dem Projekt hinzuzufügenmuss er mit Copy-and-paste aus dem Outputfenster in ein Projektfile eingefügt werden. Alternativ kann mit Rechtsklick->Save as... ein separates File erzeugt werden, welches in das Projekt eingebunden werden kann. 
 (([[https://microchipdeveloper.com/mplabx:view-and-set-configuration-bits|MPLAB view and set configuration bits]])) (([[https://microchipdeveloper.com/mplabx:view-and-set-configuration-bits|MPLAB view and set configuration bits]]))
  
Zeile 582: Zeile 578:
 </imgcaption> </imgcaption>
  
-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 verwendet werden soll.+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 verwendet werden soll.
  
 <imgcaption Harmony_Pin_Table | Harmony Pin Table > <imgcaption Harmony_Pin_Table | Harmony Pin Table >
Zeile 597: 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>TRISAbits.TRISA15 = 1;</code>+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>TRISAbits.TRISA15 = 1;</code>
 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://ww1.microchip.com/downloads/en/DeviceDoc/PIC32MK_GP_MC_Familly_Datasheet_60001402G.pdf|PICE32 Family Datasheet]])) 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://ww1.microchip.com/downloads/en/DeviceDoc/PIC32MK_GP_MC_Familly_Datasheet_60001402G.pdf|PICE32 Family Datasheet]]))
  
Zeile 609: 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.
  
 <imgcaption Harmony_Interrupts | Harmony Interrupts > <imgcaption Harmony_Interrupts | Harmony Interrupts >
Zeile 636: 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, welche während der Bearbeitung des Projekts festgestellt worden sind: Nachfolgend werden einige Besonderheiten bei der Bedienung von MPLAB aufgelistet, welche während der Bearbeitung des Projekts festgestellt worden sind:
-  * Kombination von Bibliotheken von Harmony und externen Bibliotheken nur schlecht möglich, da der von Harmony generierte alle Module des Prozessors, welche nicht hinzugefügt wurden, blockiert.+  * Kombination von Bibliotheken von Harmony und externen Bibliotheken nur schlecht möglich, da von Harmony generierte alle Module des Prozessors, welche nicht hinzugefügt wurden, blockiert.
   * Move und Copy von Projekten nicht innerhalb des Programms ausführen, sonst unerwünschte Nebenwirkungen. (Copy führt zu Verschachtelung des Projektordners, kopiertes Projekt erzeugt Unterordner, keinen neuen Projektordner)   * Move und Copy von Projekten nicht innerhalb des Programms ausführen, sonst unerwünschte Nebenwirkungen. (Copy führt zu Verschachtelung des Projektordners, kopiertes Projekt erzeugt Unterordner, keinen neuen Projektordner)
-  * Harmony Einstellungen werden über Project-Properties und Configuration gespeichert. Inkonsistentes Verhalten bei Move und Copy führt dazu, dass die Configuration für das kopiertes Projekt übernommen wird. Bei Veränderungen der Configuration werden beide Projekte geändert. Um dieses Verhalten zu umgehen, empfiehlt es sich ein neues Projekt mit neuer Configuration anzulegen und die Projektfiles manuell zu kopieren. +  * Harmony Einstellungen werden über Project-Properties und Konfiguration gespeichert. Inkonsistentes Verhalten bei Move und Copy führt dazu, dass die Konfiguration für das kopiertes Projekt übernommen wird. Bei Veränderungen der Konfiguration werden beide Projekte geändert. Um dieses Verhalten zu umgehen, empfiehlt es sich ein neues Projekt mit neuer Konfiguration anzulegen und die Projektfiles manuell zu kopieren. 
-  * 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 neugestartet wird die Position der Fenster gespeichert wurde und auf dem einzelnen Bildschirm nicht alle geöffneten Fenster angezeigt werden.+  * Wenn ein Laptop mit zweitem Bildschirm verwendet wurde, kann es passieren, dassfalls der zweite Bildschirm nicht mehr angeschlossen ist und MPLAB mit Harmony und dessen Oberflächen neu gestartet wirddie Position der Fenster gespeichert wurde und auf dem einzelnen Bildschirm nicht alle geöffneten Fenster angezeigt werden.
   * 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 667: Zeile 663:
 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://www.amazon.de/-/en/DollaTek-Display-SSD1306-Serial-Arduino/dp/B07QJ1JHKQ/ref=pb_allspark_dp_session_sims_pao_desktop_5/257-2161920-1826841?pd_rd_w=9i8Py&pf_rd_p=d0ecb613-4040-45f8-b335-5cd8ff54c281&pf_rd_r=VQXKEYCEE8GCNM8W6YSB&pd_rd_r=62c2cc7e-603a-4e48-961a-5741e1983293&pd_rd_wg=dScRX&pd_rd_i=B07QJ1JHKQ&psc=1|OLED-Display]])) 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://www.amazon.de/-/en/DollaTek-Display-SSD1306-Serial-Arduino/dp/B07QJ1JHKQ/ref=pb_allspark_dp_session_sims_pao_desktop_5/257-2161920-1826841?pd_rd_w=9i8Py&pf_rd_p=d0ecb613-4040-45f8-b335-5cd8ff54c281&pf_rd_r=VQXKEYCEE8GCNM8W6YSB&pd_rd_r=62c2cc7e-603a-4e48-961a-5741e1983293&pd_rd_wg=dScRX&pd_rd_i=B07QJ1JHKQ&psc=1|OLED-Display]]))
  
-**Adafruit Library**\\+**Adafruit Bibliothek**\\
 [[https://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Code/PIC32MK_GP/SPI_OLED|Redmine->Handoszilloskop->Code->PIC32MK_GP->SPI_OLED]]:\\ [[https://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Code/PIC32MK_GP/SPI_OLED|Redmine->Handoszilloskop->Code->PIC32MK_GP->SPI_OLED]]:\\
 Verwendet wird die SSD1306 Display Treiber Software von Adafruit(([[https://adafruit.github.io/Adafruit_SSD1306/html/class_adafruit___s_s_d1306.html|Adafruit SSD1306 Library]])) mit den von Harmony erzeugten Funktionen für SPI und Timer.(([[https://simple-circuit.com/ssd1306-oled-spi-mode-pic-mcu-mikroc-projects/|PIC MCU with SSD1306 SPI OLED]])) Das Display zeigt keine Reaktion auf Signale. Verwendet wird die SSD1306 Display Treiber Software von Adafruit(([[https://adafruit.github.io/Adafruit_SSD1306/html/class_adafruit___s_s_d1306.html|Adafruit SSD1306 Library]])) mit den von Harmony erzeugten Funktionen für SPI und Timer.(([[https://simple-circuit.com/ssd1306-oled-spi-mode-pic-mcu-mikroc-projects/|PIC MCU with SSD1306 SPI OLED]])) Das Display zeigt keine Reaktion auf Signale.
-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://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Code/PIC32MK_GP/SPI_OLED_no_harmony|Redmine->Handoszilloskop->Code->PIC32MK_GP->SPI_OLED_no_harmony]]+Da das Display keine Reaktion zeigtwurde 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://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Code/PIC32MK_GP/SPI_OLED_no_harmony|Redmine->Handoszilloskop->Code->PIC32MK_GP->SPI_OLED_no_harmony]]
  
 **U8G2Lib**\\ **U8G2Lib**\\
 [[https://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Code/PIC32MK_GP/PIC32MZ_SPI_U8G2.X|Redmine->Handoszilloskop->Code->PIC32MK_GP->PIC32MZ_SPI_U8G2]]:\\ [[https://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Code/PIC32MK_GP/PIC32MZ_SPI_U8G2.X|Redmine->Handoszilloskop->Code->PIC32MK_GP->PIC32MZ_SPI_U8G2]]:\\
-Im nächsten Schritt wurde die Implementierung der U8G2 Library(([[https://github.com/olikraus/u8g2/wiki/u8g2reference|Github u8g2 Library]])) für PIC32 getestet. Diese beinhaltet Software für verschiedene Display Treiber. Das Beispiel (([[https://github.com/eziya/PIC32MZ_EXAMPLES|Github PIC32MZ examples]])) wurde ursprünglich für den PIC32MZ programmiert, kann mit minimalen Änderungen der Konfigurationsbits auch mit dem PIC32MK verwendet werden. Ergänzt wurde die Pinbelegung, so dass das OLED-Display an mikroBUS Steckplatz J1 des Developmentboards angeschlossen werden kann. Das ist in <imgref anschluss_oled> dargestellt.+Im nächsten Schritt wurde die Implementierung der U8G2 Bibliothek(([[https://github.com/olikraus/u8g2/wiki/u8g2reference|Github u8g2 Library]])) für PIC32 getestet. Diese Bibliothek beinhaltet Software für verschiedene Display Treiber. Das Beispiel (([[https://github.com/eziya/PIC32MZ_EXAMPLES|Github PIC32MZ examples]])) wurde ursprünglich für den PIC32MZ programmiert, kann mit minimalen Änderungen der Konfigurationsbits auch mit dem PIC32MK verwendet werden. Ergänzt wurde die Pinbelegung, sodass das OLED-Display an mikroBUS Steckplatz J1 des Developmentboards angeschlossen werden kann. Das ist in <imgref anschluss_oled> dargestellt.
  
 <imgcaption anschluss_oled | Anschluss OLED > <imgcaption anschluss_oled | Anschluss OLED >
Zeile 683: Zeile 681:
  
 == Ausblick Displayprogrammierung == == Ausblick Displayprogrammierung ==
-Mithilfe eines Arduino wurde die Funktionsfähigkeit des OLED-Displays getestet (<imgref gui_oled>). Das Display hat mit der Adafruit SSD1306 Library und dem darin enthaltenen Beispielcode(([[https://learn.adafruit.com/monochrome-oled-breakouts/arduino-library-and-examples|Arduino Adafruit example]])) einwandfrei funktioniert. Damit konnte ein defektes Display als Fehlerquelle ausgeschlossen werden.+Mithilfe eines Arduino wurde die Funktionsfähigkeit des OLED-Displays getestet (<imgref gui_oled>). Das Display hat mit der Adafruit SSD1306 Bibliothek und dem darin enthaltenen Beispielcode(([[https://learn.adafruit.com/monochrome-oled-breakouts/arduino-library-and-examples|Arduino Adafruit example]])) einwandfrei funktioniert. Damit konnte ein defektes Display als Fehlerquelle ausgeschlossen werden.
 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>, baugleich dem Saleae Logic Analyzer(([[https://www.amazon.de/Saleae-Analyzer-8Channel-saleae-support/dp/B00DPCDEV2|Saleae Logic Analyzer Amazon]])) ) getestet, ob über die SPI-Schnittstelle Daten gesendet werden, was zutreffend war. 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>, baugleich dem Saleae Logic Analyzer(([[https://www.amazon.de/Saleae-Analyzer-8Channel-saleae-support/dp/B00DPCDEV2|Saleae Logic Analyzer Amazon]])) ) getestet, ob über die SPI-Schnittstelle Daten gesendet werden, was zutreffend war.
  
Zeile 700: Zeile 698:
 **Bare Metal**\\ **Bare Metal**\\
 [[https://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Code/PIC32MK_GP/4_adc_interleavedUart6|Redmine->Handoszilloskop->Code->PIC32MK_GP->4_adc_interleaved]]:\\ [[https://redmine.hs-heilbronn.de/subversion/entwicklung_von_schulungsmitteln/Handoszilloskop/Code/PIC32MK_GP/4_adc_interleavedUart6|Redmine->Handoszilloskop->Code->PIC32MK_GP->4_adc_interleaved]]:\\
-Nach Vorbild des Microchip AN2785 Application Note(([[https://www.microchip.com/content/dam/mchp/documents/OTH/ApplicationNotes/ApplicationNotes/Worlds-Fastest-Embedded-Interleaved-12-bit-ADC-Using-PIC32MZ-and-PIC32MK-Families-DS00002785A.pdf|Microchip AN2786]])) erstellt, ergänzt um die Datenübertragung per UART an PC und mikroBUS Steckplatz J1 und die dafür notwendige Unterbrechung des Samplings. Die Unterbrechung ist notwendig, da die AD-Wandler ihren AD-Wandler Speicher neu füllen würden, bevor die vorherigen Daten per UART übertragen sind. Außerdem wurde der ADC Trigger auf Output Compare 1-4 umgestellt, da der PIC32MKxxxGPE keine separaten PWM-Module unterstützt. Die Rohdaten der ADC werden mit UART6 über das an Developmentboard-Buchse J25 angeschlossene USB Kabel an den PC gesendet.(([[https://ww1.microchip.com/downloads/en/DeviceDoc/61111E.pdf|PIC32 Output Compare]]))+Nach Vorbild des Microchip AN2785 Application Note(([[https://www.microchip.com/content/dam/mchp/documents/OTH/ApplicationNotes/ApplicationNotes/Worlds-Fastest-Embedded-Interleaved-12-bit-ADC-Using-PIC32MZ-and-PIC32MK-Families-DS00002785A.pdf|Microchip AN2786]])) erstellt, ergänzt um die Datenübertragung per UART an PC und mikroBUS Steckplatz J1 und die dafür notwendige Unterbrechung des Samplings. Die Unterbrechung ist notwendig, da die AD-Wandler ihren AD-Wandler Speicher neu füllen würden, bevor die vorherigen Daten per UART übertragen sind. Außerdem wurde der ADC Trigger auf Output Compare 1-4 umgestellt, da der PIC32MKxxxGPE keine separaten PWM-Module unterstützt. Die Rohdaten der ADC werden mit UART6 über das an Developmentboard-Buchse J25 angeschlossene USB-Kabel an den PC gesendet.(([[https://ww1.microchip.com/downloads/en/DeviceDoc/61111E.pdf|PIC32 Output Compare]]))
  
 == GPIO == == GPIO ==
Zeile 707: Zeile 705:
  
 === 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>), welcher Frequenzen bis 150 kHz erzeugen kann. +Um die Performance der verschiedenen ADC-Varianten miteinander vergleichen zu könnenwurden zwei unterschiedliche Tests mit einem Signalgenerator durchgeführt. Verwendet wurde ein PWM & Pulse Generator vom Typ ZK-PP1K (<imgref pwm_generator>), welcher Frequenzen bis 150 kHz erzeugen kann. 
  
 <imgcaption pwm_generator | PWM Generator > <imgcaption pwm_generator | PWM Generator >
Zeile 713: Zeile 711:
 </imgcaption> </imgcaption>
  
-Er bietet die Möglichkeit, ein PWM-Signal mit variablem Duty-Cycle oder Pulse wahlweise einzeln oder Mehrere mit Zeitverzögerung abzugeben(([[https://docplayer.net/191256108-Qingdao-wuzhi-intelligent-co-ltd.html|ZK-PP1K Manual]])). Die aufgenommenen Messungen wurden mittels eines Terminal-Programms eingelesen und mit MATLAB wurden aus den Rohdaten die Spannungswerte errechnet.+Er bietet die Möglichkeit, ein PWM-Signal mit variablem Duty-Cycle oder Pulse wahlweise einzeln oder mehrere mit Zeitverzögerung abzugeben(([[https://docplayer.net/191256108-Qingdao-wuzhi-intelligent-co-ltd.html|ZK-PP1K Manual]])). Die aufgenommenen Messungen wurden mittels eines Terminal-Programms eingelesen und mit MATLAB wurden aus den Rohdaten die Spannungswerte errechnet.
  
 == Terminal Programme == == Terminal Programme ==
Zeile 725: Zeile 723:
 </imgcaption> </imgcaption>
  
-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://ttssh2.osdn.jp/manual/4/en/|TeraTerm Manual]]))+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://ttssh2.osdn.jp/manual/4/en/|TeraTerm Manual]]))
  
 **RealTerm**\\ **RealTerm**\\
Zeile 737: Zeile 735:
  
 **PuTTY**\\ **PuTTY**\\
-Als letztes Terminalprogramm wird [[https://www.putty.org/| PuTTY]] (<imgref PuTTY >) vorgestellt. Wie Tera Term kann es für USB- und Drahtloskommunikation verwendet werden. Eine Besonderheit ist, dass die Konfiguration des Programms für spätere Verwendung gespeichert und neu geladen werden kann. So muss zum Beispiel nicht immer die korrekte Baudrate neu eingestellt werden.+Als letztes Terminalprogramm wird [[https://www.putty.org/| PuTTY]] (<imgref PuTTY >) vorgestellt. Wie Tera Term kann es für USB- und Drahtlos-Kommunikation verwendet werden. Eine Besonderheit ist, dass die Konfiguration des Programms für spätere Verwendung gespeichert und neu geladen werden kann. So muss zum Beispiel nicht immer die korrekte Baudrate neu eingestellt werden.
  
 <imgcaption PuTTY | PuTTY > <imgcaption PuTTY | PuTTY >
Zeile 748: Zeile 746:
 == 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://www.microchip.com/content/dam/mchp/documents/OTH/ApplicationNotes/ApplicationNotes/Worlds-Fastest-Embedded-Interleaved-12-bit-ADC-Using-PIC32MZ-and-PIC32MK-Families-DS00002785A.pdf|PIC32 Worlds fastest 12 bit ADC]]))(([[http://ww1.microchip.com/downloads/en/DeviceDoc/60001344D.pdf|PIC32 12 bit SAR ADC]])). Daraus ergibt sich eine Frequenz von 12 kHz. Verwendet wurde ein 50% Duty-Cycle. Die Messung ist in <imgref Vergleich_PWM> verzeichnet.+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://www.microchip.com/content/dam/mchp/documents/OTH/ApplicationNotes/ApplicationNotes/Worlds-Fastest-Embedded-Interleaved-12-bit-ADC-Using-PIC32MZ-and-PIC32MK-Families-DS00002785A.pdf|PIC32 Worlds fastest 12 bit ADC]]))(([[http://ww1.microchip.com/downloads/en/DeviceDoc/60001344D.pdf|PIC32 12 bit SAR ADC]])). Daraus ergibt sich eine Frequenz von 12 kHz. Verwendet wurde ein 50% Duty-Cycle. Die Messung ist in <imgref Vergleich_PWM> verzeichnet.
  
 <imgcaption Vergleich_PWM | ADC_Vergleich_PWM > <imgcaption Vergleich_PWM | ADC_Vergleich_PWM >
Zeile 763: Zeile 761:
 </imgcaption> </imgcaption>
  
-Im Vergleich der drei Aufzeichnungen kann man sehen, das nur die Version mit Harmony und DMA die fünf Pulse richtig anzeigt. Die Bare Metal Programmierung der vier verschachtelten ADC sendet die Daten mit einer Baudrate von 115200 Baud/s, die beiden anderen mit 962100 Baud/s. Die Reduzierung war notwendig, da es sonst zu Übertragungsfehlern kommt.+Im Vergleich der drei Aufzeichnungen kann man sehen, dass nur die Version mit Harmony und DMA die fünf Pulse richtig anzeigt. Die Bare Metal Programmierung der vier verschachtelten ADC sendet die Daten mit einer Baudrate von 115200 Baud/s, die beiden anderen mit 962100 Baud/s. Die Reduzierung war notwendig, da es sonst zu Übertragungsfehlern kommt.
 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, dass auf die X-Achse der ADC-Wert in Volt, auf der Y-Achse die dazugehörigen Sample-Werte angegeben wird. Bevorzugt wäre anstatt des Sample-Werts der Zeitpunkt des Samplings angegeben worden, allerdings war das mit den vorhandenen Mitteln nicht sinnvoll. Bei der Umsetung mit vier verschachtelten ADC werden die Sample-Werte in einem Buffer zwischengespeichert und erst bei vollem Speicher ausgelesen. Dadurch lässt sich kein genauer Zeitpunkt den Werten zuweisen. Die beiden Umsetzungen mit Harmony könnten den genauen Zeitpunkt des Samplings mittels Timer per USB an den PC übertragen, allerdings würde durch die momentane Umsetzung des Codes dadurch die Sample-Rate niedriger werden. Die Terminalprogramme haben ebenfalls die Möglichkeit den Zeitpunkt der eingehenden Übertragung aufzuzeichnen, allerdings ist die zeitliche Auflösung zu niedrig, bei einer Sampling-Rate im MSps-Bereich ist eine Auflösung in Mikrosekunden notwendig, die Programme können nur bis Millisekunden aufzeichnen.+Die Messungen werden so dargestellt, dass auf die X-Achse der ADC-Wert in Volt, auf der Y-Achse die dazugehörigen Sample-Werte angegeben werden. Bevorzugt wäre anstatt des Sample-Werts der Zeitpunkt des Samplings angegeben worden, allerdings war das mit den vorhandenen Mitteln nicht sinnvoll. Bei der Umsetzung mit vier verschachtelten ADC werden die Sample-Werte in einem Buffer zwischengespeichert und erst bei vollem Speicher ausgelesen. Dadurch lässt sich kein genauer Zeitpunkt den Werten zuweisen. Die beiden Umsetzungen mit Harmony könnten den genauen Zeitpunkt des Samplings mittels Timer per USB an den PC übertragen, allerdings würde durch die momentane Umsetzung des Codes dadurch die Sample-Rate niedriger werden. Die Terminalprogramme haben ebenfalls die Möglichkeit den Zeitpunkt der eingehenden Übertragung aufzuzeichnen, allerdings ist die zeitliche Auflösung zu niedrig, bei einer Sampling-Rate im Msps-Bereich ist eine Auflösung in Mikrosekunden notwendig, die Programme können nur bis Millisekunden aufzeichnen. 
 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, so lange die Signaldauer nicht länger als 82 ms ist. (Berechnet aus: 4 ADC mit je 2*128 Sample Speicher -> Gesamt 1024 Samples / 12,5 MSps)(([[http://ww1.microchip.com/downloads/en/DeviceDoc/60001344D.pdf|PIC32 12 bit SAR ADC]])). +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, solange die Signaldauer nicht länger als 82 ms ist. (Berechnet aus: 4 ADCs mit je 2*128 Sample Speicher -> Gesamt 1024 Samples / 12,5 Msps)(([[http://ww1.microchip.com/downloads/en/DeviceDoc/60001344D.pdf|PIC32 12 bit SAR ADC]])). 
-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 ADC verwendet werden, um die Sample Rate weiter zu erhöhen, oder ob sie als weiterer separater Oszilloskop-Kanal verwendet werden sollen. ADC 2, 5 und 6 können nicht so konfiguriert werden, dass sie ebenfalls die Spannung an AN0 einlesen. Dadurch wäre es bei einer gewünschten Erhöhung der Sample Rate notwendig, mehrere analoge Eingänge miteinander zu verbinden.+Eine weitere Überlegung kann sein, ob für das Handoszilloskop die restlichen ADCs verwendet werden, um die Sample Rate weiter zu erhöhen, oder ob sie als weiterer separater Oszilloskop-Kanal verwendet werden sollen. ADC 2, 5 und 6 können nicht so konfiguriert werden, dass sie ebenfalls die Spannung an AN0 einlesen. Dadurch wäre es bei einer gewünschten Erhöhung der Sample Rate notwendig, mehrere analoge Eingänge miteinander zu verbinden.
  
  
 ==== 5.2 Kommunikation zwischen ESP32 und PIC32 ==== ==== 5.2 Kommunikation zwischen ESP32 und PIC32 ====
-Für die Kommunikation zwischen dem ESP32 und dem PIC32 können unterschiedliche Bussysteme eingesetzt werden. Diese sind im folgenden näher beschrieben.+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, dass heißt ein Datentransfer wird nur durch den Master initiiert. Der Aufbau des I2C-Datenbus ist in <imgref Busaufbau_I2C>(([[https://www.analog.com/-/media/analog/en/landing-pages/technical-articles/i2c-primer-what-is-i2c-part-1-/36684.png?la=en&w=900&vs=1|I2C_Busaufbau.png]])) dargestellt.(([[https://de.wikipedia.org/wiki/I%C2%B2C|Wikipedia I2C]]))+Bei I2C handelt es sich um einen Master-Slave-Bus, das heißt ein Datentransfer wird nur durch den Master initiiert. Der Aufbau des I2C-Datenbus ist in <imgref Busaufbau_I2C>(([[https://www.analog.com/-/media/analog/en/landing-pages/technical-articles/i2c-primer-what-is-i2c-part-1-/36684.png?la=en&w=900&vs=1|I2C_Busaufbau.png]])) dargestellt.(([[https://de.wikipedia.org/wiki/I%C2%B2C|Wikipedia I2C]]))
  
 <imgcaption Busaufbau_I2C | Busaufbau I2C > <imgcaption Busaufbau_I2C | Busaufbau I2C >
Zeile 805: 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, wird nur in eine Richtung kommuniziert kann auch nur eine Leitung verwendet werden. <imgref Busaufbau_UART>(([[https://edistechlab.com/wie-funktioniert-uart/?v=3a52f3c22ed6|UART-Bus.png]])) zeigt eine typische UART-Kommunikation.(([[https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter|Wikipedia 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, wird nur in eine Richtung kommuniziert kann auch nur eine Leitung verwendet werden. <imgref Busaufbau_UART>(([[https://edistechlab.com/wie-funktioniert-uart/?v=3a52f3c22ed6|UART-Bus.png]])) zeigt eine typische UART-Kommunikation.(([[https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter|Wikipedia UART]]))
  
 <imgcaption Busaufbau_UART | Busaufbau UART > <imgcaption Busaufbau_UART | Busaufbau UART >
Zeile 839: Zeile 838:
   * ESP Integration [[https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html|Installing Arduino-ESP32 support]]   * ESP Integration [[https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html|Installing Arduino-ESP32 support]]
  
-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 854: Zeile 853:
 </imgcaption> </imgcaption>
  
-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ähltlegt 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.
  
 <imgcaption Auswahlmöglichkeit_leeres_Projekt_oder_Beispielprojekt | Auswahlmöglichkeit leeres Projekt oder Beispielprojekt > <imgcaption Auswahlmöglichkeit_leeres_Projekt_oder_Beispielprojekt | Auswahlmöglichkeit leeres Projekt oder Beispielprojekt >
Zeile 860: Zeile 859:
 </imgcaption> </imgcaption>
  
-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 Ordnerwelcher die Ergebnisse des Buildprozess enthalten wird. Im Ordner main, befinden sich die Quelltextdateien und Konfigurationsdateien. Im Hauptverzeichnis befinden sich weitere Dateien wie die readme-Dateidie eine Beschreibung des Beispiels enthält, eine Lizenzdatei und weitere.
  
 <imgcaption Ordnerstruktur_des_IDF-Projekt | Ordnerstruktur des IDF-Projekt > <imgcaption Ordnerstruktur_des_IDF-Projekt | Ordnerstruktur des IDF-Projekt >
Zeile 866: Zeile 865:
 </imgcaption> </imgcaption>
  
-Wurde das Projekt erfolgreich angelegt kann mit dem Programmieren begonnen werden. Über das Auswahlmenü, dargestellt in <imgref Auswahl_Ausfuehrungsart>, kann zwischen den Buildoptionen gewählt werden. Dabei kann die finale Version kompiliert und ausgeführt werden oder das Programm wird im Debugmodus gestartet.+Wurde das Projekt erfolgreich angelegtkann mit dem Programmieren begonnen werden. Über das Auswahlmenü, dargestellt in <imgref Auswahl_Ausfuehrungsart>, kann zwischen den Buildoptionen gewählt werden. Dabei kann die finale Version kompiliert und ausgeführt werden oder das Programm wird im Debugmodus gestartet.
  
 <imgcaption Auswahl_Ausfuehrungsart | Auswahl Ausführungsart > <imgcaption Auswahl_Ausfuehrungsart | Auswahl Ausführungsart >
Zeile 872: Zeile 871:
 </imgcaption> </imgcaption>
  
-Sind mehrere Projekte im Workspace von Eclipse angelegt kann im zweiten Dropdown-Menü, zu sehen in <imgref Auswahl_aktives_Projekt>, ausgewählt werden, welches der Projekte aktuell verwendet und ausgeführt werden soll.+Sind mehrere Projekte im Workspace von Eclipse angelegtkann im zweiten Dropdown-Menü, zu sehen in <imgref Auswahl_aktives_Projekt>, ausgewählt werden, welches der Projekte aktuell verwendet und ausgeführt werden soll.
  
 <imgcaption Auswahl_aktives_Projekt | Auswahl aktives Projekt > <imgcaption Auswahl_aktives_Projekt | Auswahl aktives Projekt >
Zeile 884: Zeile 883:
 </imgcaption> </imgcaption>
  
-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 angeschlossenerscheint dieser in der Regel automatisch in der Liste. Ist dies nicht der Fallmuss dieser von Hand ausgewählt werden. Hierzu muss das Menü „New Launch Target“ geöffnet und der Programmer auswählt werden.
  
  
Zeile 890: 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://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/freertos.html#|FreeRTOS - ESP32 - ESP-IDF Programming Guide]])) 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://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/freertos.html#|FreeRTOS - ESP32 - ESP-IDF Programming Guide]]))
  
-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 gelichzeitig für eine bessere Lesbarkeit des Quelltextes.+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 für eine bessere Lesbarkeit des Quelltextes.
  
  
 === 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 verwendet werden. Gegebenenfalls ist eine Anpassung der Pinnummern zu Nutzung der Kommunikationsschnittstellen erforderlich.+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 verwendet werden. Gegebenenfalls ist eine Anpassung der Pinnummern zu Nutzung der Kommunikationsschnittstellen erforderlich.
  
 <imgcaption ESP32-DevKitC_V4 | Zur Programmierung der Demoprogramme verwendetes ESP32-DevKitC V4 Testkit > <imgcaption ESP32-DevKitC_V4 | Zur Programmierung der Demoprogramme verwendetes ESP32-DevKitC V4 Testkit >
Zeile 905: Zeile 904:
  
 === 5.3.4 implementierte Funktionen === === 5.3.4 implementierte Funktionen ===
-Für das ESP32 Devkit wurden die I2C und UART Testprogramme implementiert und getestet. Eine Beschreibung der einzelnen Beispiele sind im Folgenden aufgelistet:+Für das ESP32 Devkit wurden die I2C und UART Testprogramme implementiert und getestet. Eine Beschreibung der einzelnen Beispiele ist im Folgenden aufgelistet:
  
 == I2C-Testprogramm == == I2C-Testprogramm ==
 Das Programm dient als Demonstration der I2C 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 ESP läuft, können anschließend die empfangenen Daten mit den Gesendeten verglichen werden um mögliche Fehler in der Übertragung festzustellen.+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 ESP läuft, können anschließend die empfangenen Daten mit den gesendeten verglichen werdenum mögliche Fehler in der Übertragung festzustellen.
  
 Das Programm ist zu finden unter: Das Programm ist zu finden unter:
Zeile 930: 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, wenn die Seite neu geladen wird. Für die kontinuierliche Anzeige eines Messwertes ist dies ungeeignet. Eine mögliche Lösung wäre die Integration eines JavaScript Codes der die entsprechenden Teile der Webseite, die den Messwert anzeigen, automatisch aktualisiert ohne auf eine Nutzereingabe zu warten.+Das Beispiel benötigt für eine sinnvolle Nutzung als Oszilloskop jedoch Anpassungen. Der angezeigte Wert wird nur aktualisiert, wenn die Seite neu geladen wird. Für die kontinuierliche Anzeige eines Messwertes ist dies ungeeignet. Eine mögliche Lösung wäre die Integration eines JavaScript-Codesder die entsprechenden Teile der Webseite, die den Messwert anzeigen, automatisch aktualisiertohne auf eine Nutzereingabe zu warten.
  
 Nachfolgende Abbildung zeigt die Weboberfläche, die mit dem ESP32 erzeugt wird. Nachfolgende Abbildung zeigt die Weboberfläche, die mit dem ESP32 erzeugt wird.
Zeile 948: 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 960: Zeile 959:
 [[https://sigrok.org/wiki/Supported_hardware|PulseView unterstützte Hardware]]\\ [[https://sigrok.org/wiki/Supported_hardware|PulseView unterstützte Hardware]]\\
 Die Umsetzung geschieht mit der [[https://sigrok.org/wiki/Developers|libsigrok API]]. Entwickler können für Geräte die Software für PulseView selbst einbinden. Generell sollten Geräte, welche auf dem Cypress FX2 µC basieren, oder das [[https://de.wikipedia.org/wiki/Standard_Commands_for_Programmable_Instruments|SCPI Protokoll]] verwenden, kompatibel sein. Mehr Informationen dazu im [[https://sigrok.org/doc/pulseview/0.4.1/manual.html|PulseView User Manual]]. PulseView bietet ebenfalls Unterstützung für den [[https://sigrok.org/wiki/Openbench_Logic_Sniffer|Openbench Logic Sniffer]], welcher einen PIC18 für die USB Kommunikation verwendet.\\ Die Umsetzung geschieht mit der [[https://sigrok.org/wiki/Developers|libsigrok API]]. Entwickler können für Geräte die Software für PulseView selbst einbinden. Generell sollten Geräte, welche auf dem Cypress FX2 µC basieren, oder das [[https://de.wikipedia.org/wiki/Standard_Commands_for_Programmable_Instruments|SCPI Protokoll]] verwenden, kompatibel sein. Mehr Informationen dazu im [[https://sigrok.org/doc/pulseview/0.4.1/manual.html|PulseView User Manual]]. PulseView bietet ebenfalls Unterstützung für den [[https://sigrok.org/wiki/Openbench_Logic_Sniffer|Openbench Logic Sniffer]], welcher einen PIC18 für die USB Kommunikation verwendet.\\
-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://lists.sourceforge.net/lists/listinfo/sigrok-devel   * https://lists.sourceforge.net/lists/listinfo/sigrok-devel
   * https://web.libera.chat/#sigrok   * https://web.libera.chat/#sigrok
Zeile 974: Zeile 973:
  
 ===== 6 Ausblick ===== ===== 6 Ausblick =====
-Im Rahmen des Projekt wurden Funktionsprototypen und Demosoftware zum Test eines MEXLE-Oszilloskops erstellt. Die Einzelheiten zu den Entwicklungsbereichen sind in den folgenden Kapiteln aufgelistet.+Im Rahmen des Projekts wurden Funktionsprototypen und Demosoftware zum Test eines MEXLE-Oszilloskops erstellt. Die Einzelheiten zu den Entwicklungsbereichen sind in den folgenden Kapiteln aufgelistet.
 ==== 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 986: Zeile 985:
 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, überprüft werden. Anschließend fehlt für die Oszilloskopfunktion eine Möglichkeit, die Spannungsmessung bei Erfassung eines Eingangssignals zu starten.\\+Die Sample-Rate der AD-Wandler sollte ebenfalls, zum Beispiel mit einem Oszilloskop, überprüft werden. Außerdem fehlt für die Oszilloskopfunktion eine Möglichkeit, die Spannungsmessung bei Erfassung eines Eingangssignals zu starten.\\
  
 Für die Kommunikation soll im fertigen Produkt nur ein Protokoll verwendet werden. Momentan ist nur die Kommunikation via UART programmiert, um die beste Schnittstelle zwischen den beiden Komponenten zu finden, muss getestet werden, welche Art am schnellsten bzw. besten funktioniert.\\ Für die Kommunikation soll im fertigen Produkt nur ein Protokoll verwendet werden. Momentan ist nur die Kommunikation via UART programmiert, um die beste Schnittstelle zwischen den beiden Komponenten zu finden, muss getestet werden, welche Art am schnellsten bzw. besten funktioniert.\\
Zeile 1001: Zeile 1000:
  
 ==== 6.3 ESP32 Programmierung ==== ==== 6.3 ESP32 Programmierung ====
-Zur Demonstration der Funktionen des ESP32 wurden verschiedene Demoprogramme entwickelt. Diese demonstieren die Funktionen der I2C-Bus-Schnittstelle, der UART-Schnittstelle und die Verwendung des ESP32 als Webserver.+Zur Demonstration der Funktionen des ESP32 wurden verschiedene Demoprogramme entwickelt. Diese demonstrieren die Funktionen der I2C-Bus-Schnittstelle, der UART-Schnittstelle und die Verwendung des ESP32 als Webserver.
  
 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.