Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
projekt_mexle_handoszi:start [2021/09/20 18:44] – [5.1 PIC32] mirupp | projekt_mexle_handoszi:start [2021/09/20 21:12] (aktuell) – mirupp |
---|
| |
== 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 Potenzialunterschied 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. 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]])) | Erfolgt eine Single Ended Messung bei einem Potenzialunterschied 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. 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]])) |
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. |
| |
=== 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-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. |
| |
== 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 ==== |
== 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 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. | * 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. |
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. | 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, solange 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. |
| |
| |
| |
**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 > |
[[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 |