Speicheroszilloskop Eigenbau für 3€

Für Basteleien, Messgeräte und physikalische Experimente.

Moderatoren: MaxZ, ebastler, SeriousD

Antworten

Thread-Ersteller
ataio
Beiträge: 603
Registriert: Fr 13. Okt 2006, 21:54
Spezialgebiet: seltsame Geräte :)
Wohnort: Karlsruhe
Hat sich bedankt: 2 Mal
Danksagung erhalten: 14 Mal

Speicheroszilloskop Eigenbau für 3€

Beitrag von ataio »

Hallo zusammen,

neulich brauchte ich für das Elektrokoagulationsprojekt (viewtopic.php?f=3&t=64579) ein Speicheroszilloskop. Dort sollte ein Microcontroller auf Knopfdruck eine spezielle Folge von 10 ms Pulsen ausgeben und die korrekte Funktion sollte überprüft werden.

Deshalb habe ich folgendes Speicheroszilloskop zusammengebaut:
195 foto.jpg
195 foto.jpg (105.18 KiB) 9970 mal betrachtet
Es besteht praktisch nur aus einem Arduino nano, der per USB an den PC angeschlossen wird und aus einem Drucktaster. Das Signal wird über die gelbe Klemme (A0) eingespeist. Und die ansteigende Signalflanke löst die Aufzeichnung aus. Das Ergebnis wird dann als xy-Wertepaare wiedergegeben und kann in Excel als Grafik dargestellt werden. Im Fall des Elektrokoagulationsgeräts sieht das Ergebnis dann wie in der Grafik oben aus: 5 Pulse a 10 ms. - das passt also :)

Der Schaltplan des Speicheroszilloskops ist ziemlich einfach: :)
196 schaltplan.jpg
196 schaltplan.jpg (18.74 KiB) 9970 mal betrachtet
Der Code ist auch ziemlich einfach. Der Arduino liest einen Spannungswert über den ADC ein und speichert diesen im internen Speicher. Das braucht ca. mindestens 150 us pro Schritt. (Der genaue Zeitbedarf pro Schritt wird bei der Initialisierung kalibriert und dann für die Zeitachse verwendet).

Die Eingangsspannung kann 0 bis 5 V betragen und wird in 255 Schritte digitalisiert und als 1-Byte Wert weggespeichert (im Arduino). Direkt im Quellcode kann man angeben, wie lange (in Millisekunden) die Datenaufnahme sein soll. Das Programm teilt diese Zeit in 800 Schritte und sampelt immer 800 Schritte. Die minimale Samplezeit ist also durch die Geschwindigkeit des ADC (+Rechenzeit) gegeben und beträgt ca 150 us. Wenn man also die Samplingzeit auf 120 ms stellt, bekommt man eine höhere Auflösung für die ersten 120 ms:
197 resolution.jpg
197 resolution.jpg (36.08 KiB) 9970 mal betrachtet

In der nächsten Grafik ist rot unterstrichen, wo man die Samplingtime im Programmcode einstellen kann. Wenn man aus Zeitgründen nicht alle 800 Punkte ausgeben möchte, kann man showPoints < 800 wählen. Dann den Code kompilieren. Den serial monitor starten (rot unterstrichen). und bei der nächsten positiven Flanke am Eingang, wird die Aufzeichnung gestartet. nach der Aufzeichnung werden die Messwerte dann im Serialmonitor angezeigt. Von da aus kann man sie mit copy-paste in Excel transferieren um eine Grafik zu erstellen:
198_oberfläche.jpg

Und hier noch ein Beispiel mit einem 1 kHz Testsignal: und der minamalen Samplingzeit von 120 ms (und damit der höchsten Zeitauflösung).
links sind nur die ersten 4.5 ms angezeigt und rechts die vollen 120 ms und 800 Datenpunkte.
199 1 kHz.jpg

Wenn man den beschreibenden Text aus dem Quellcode löscht, belegen die 800 Messwerte nur ca. 50% es Speichers des Arduinos. Der limitierende Faktor bei diesem Gerät ist also mehr die Zeitauflösung als der Speicher. In einer nächsten Version könnte man noch versuchen anstelle des Befehls analogRead() den fast-analogRead zu verwenden. Dadurch könnte eine ca. 10-fach höhere Zeitauflösung möglich werden.

Viele Grüsse
ataio
Dateianhänge
Speicheroszilloskop_v1.txt
(5.2 KiB) 435-mal heruntergeladen
Benutzeravatar

kilovolt
Beiträge: 13382
Registriert: So 25. Feb 2007, 09:50
Hat sich bedankt: 694 Mal
Danksagung erhalten: 448 Mal
Kontaktdaten:

Re: Speicheroszilloskop Eigenbau für 3€

Beitrag von kilovolt »

Unglaublich, was man für 3 Euro bauen kann :shock: Ein wirklich erstaunliches Projekt!

Beste Grüsse
kilovolt
Alle Angaben meinerseits ohne Gewähr! Ich lehne jegliche Haftung für Personen- und/oder Sachschäden ab. Jeder ist für seine Sicherheit selber verantwortlich.

http://www.kilovolt.ch
Antworten