Christians Webseite        << zurück        vor >>

DSO 150

dso150 dso150 dso150 dso150 dso150 dso150
dso150 dso150 dso150 dso150
Das DSO 150 ist ein digitales, 1-kanaliges Mini-Oszilloskop. Es wird auf vielen Webseiten für sehr kleines Geld als Bausatz angeboten.
Für den Hobbybastler ohne grosse Ansprüche ist es gut geeignet, für den professionellen Einsatz nicht. Ich finde es niedlich und eine nette Hilfe wenn man mal ein paar simple Signale klappern sehen möchte.

Durch seine kompakte Form bietet es sich geradezu für den mobilen Einsatz an. Aber leider ist es ab Werk nur für den Betrieb mit einem Netzteil ausgelegt ist. Zum Glück haben sich bereits viele Bastler mit dem DSO 150 beschäftigt und Lösungen für den Akku-Betrieb gefunden. Zusätzlich existiert sogar eine alternative Firmware mit erweiterten Funktionen. Also beste Voraussetzungen für erfolgreiches Basteln :)

Wie "üblich" gibt es das Gerät als Original von "JYE Tech" und in unendlich vielen Clone-Varianten. Welche Variante und von wem man da kauft ist vorab nicht wirklich erkennbar. Und für die Funktion auch nicht wichtig.
Das Gerät wird ebenfalls in einer komplett, fertig montierten Version angeboten.

Der zentrale Prozessor ist ein STM32F103C8T6.

Links und Hilfen

  • DSO_STM32Duino (mean00)

    Sehr zu empfehlen! Dieser geniale Programmierer hat die Firmware komplett überarbeitet und ein paar zusätzliche Features eingebaut. Diese Firmware scheint (für mich) aktuell die beste Wahl zu sein. "Nebenbei" werden optionale Hardwareverbesserungen unterstützt:
    • Umlegung der Rotary-Encoder Signale auf separate Pins. Im Original muss sich der Encoder die Interrupts mit dem Display teilen, wodurch öfters Impulse verloren gehen.
    • Aktivierung der USB-Schnittstelle. Der STM32F103 hat ein USB-Interface dass zur Steuerung und zum Auslesen der Daten verwendet werden kann.
    • Ersetzen des Prozessors durch einen GD32F303. Das Programm wird dadurch wesentlich beschleunigt
    Der Autor hat den zeitlichen Werdegang seiner Untersuchungen in seinem Blog dokumentiert. Darin geht er ebenfalls z.B. auf die Kalibrierung und Verstärkungsumschaltung ein, und auf die starke Verwandschaft mit den "Blue Pill" Boards aus dem Arduino Universum.

  • Open-DSO-150 (michar71)

    Ein weiteres schönes Open-Source Project. Mit dieser Firmware habe ich meine Versuche begonnen. Lästig ist nur dass es keine fertig kompilierten "releases" gibt. Mit etwas Suchen findet man aber einige Beispiele in den "issues".

  • Rudis Wiki

    Eine sehr hilfreiche Seite eines engagierten Bastlers.

  • JYE Tech Forum

    Der Hersteller selbst hat für seine Produkte ein Support-Forum angelegt in dem man alle wichtigen Infos findet:
    Umbau auf Li-Ion-Akku
    Aktuelle Firmware
    DSO Shell: How to Upgrade Firmware
    JYE Tech hat seinen Quellcode im GitHub als DSO-Shell-open-source-version veröffentlicht. Allerdings nicht vollständig, das Kern-Programm gibt es nur als Black-Box.

Akku-Stromversorgung

Das Konzept der geänderten Stromversorgung in der Übersicht.
dso150 dso150

Ein 3.8V Li-Ion-Akku liefert die Energie, der folgende Step-Up Konverter hebt die Spannung auf 9V an.
Zum Aufladen wird ein normales USB-Netzteil benutzt (oder ein PC-Port).
Der Akku bleibt auch im ausgeschalteten Zustand mit der Ladeschaltung verbunden (Standby-Leckstrom nur ~2.5uA).
Der vorhandene Ein/Ausschalter wird weiterhin benutzt, er schaltet die Versorgung des Step-Up.

dso150 dso150

Die komplette Ladeelektronik für Li-Ion-Akkus gibt es als Modul bei z.B. ebay. Ich habe das folgende Modul ausgewählt:
dso150
dso150
Das Lade-IC ist ein TP4056 (Stichwort für die ebay-Suche). Die Module gibt es in diversen Konfigurationen. Einige haben zusätzlich noch eine kleine Schutzschaltung (gegen Unterspannung?) mit drauf, andere einen zusätzlichen Step-Up Konverter (wie in meinem Fall). Welche Kombination aus Lade-/Step-Up-Modulen man wählt spielt keine Rolle.

Das DSO150 benötigt eine Spannung von 9V (untere Grenze ~7.5V). Zwei Akkus in Reihe wären grenzwertig (2*3.8V=7.6V), ein Step-Up Konverter ist daher die bessere Wahl. Auch diese gibt es in grosser Auswahl als fertige, kleine Module. Üblicherweise sind sie mit einem SDB628, oder einem kompatiblen Typ (MT3608, FP6291, ..) aufgebaut.

Auf dem Modul befindet sich typischerweise ein Poti um die Ausgangsspannung einzustellen. Dieses kann durch einen Festwiderstand ersetzt werden. Der Ladestrom sollte auf ~250mA begrenzt werden (Widerstand an Pin 2) um auch an einem PC-USB-Port zu funktionieren.

Sobald man auf Akku-Betrieb übergeht ist es naheliegend auch den Leistungsverbrauch zu minimieren. In mehreren Foren gibt es deshalb längliche Diskussionen zur optimalen Auslegung der Stromversorgung. Ergebnis: mit viel Aufwand kann man die Leistungsaufnahme ~ halbieren. Nice to have, aber für mich spielt es keine Rolle ob das Gerät 8 Stunden oder "nur" 4 Stunden läuft. Die verfügbaren Akkus haben alle soviel Kapazität dass es immer reicht..

Der Stromverbrauch des Originals liegt bei 130mA @ 9V = 1,17W. Ein typischer Smartphone-Akku hat 1,5Ah @ 3,8V = 5,7Wh. Das sollte locker für 4h Dauerbetrieb ausreichen.

Akkus

In meinem Fundus hatte ich eine kleine Auswahl von alten Smartphone-Akkus die alle ausreichend Platz im Gehäuse finden.
Flach sollte er sein!

dso150
dso150
Ich habe den Typ "MS1" mit ~1500mAh Kapazität gewählt (das DSO150 benötigt ca 130mA@9V).

Welche Type von Akku man wählt ist ziemlich egal solange er eine Nominalspannung von 3.8V hat. Etwas vorsichtig sollte man nur beim Einstellen der oberen Ladegrenze sein. Im Bereich 4.0 .. 4.1V ist man auf der sicheren Seite, auch wenn man ein wenig der maximalen Kapazität verschenkt.

HW-Modifikationen

Um mehr Platz im Gehäuse zu bekommen wird der Dreh-Encoder ohne Hilfsplatine montiert. Das geht ganz einfach und ohne irgendwelche Nachteile. Nur die Beinchen zurückbiegen und direkt auf die Hauptplatine löten.
dso150 dso150 dso150

dso150 Vorbereitung für die geänderte Stromversorgung. Die Bauteile J7 und D2 werden entfernt. Die Zuleitung zu U3 wird unterbrochen.
dso150

dso150 Falls eine Kombi-Platine benutzt wird (Ladeelektronik + StepUp) muss die Verbindung zwischen Akku-Ladeteil und StepUp-Teil unterbrochen werden. An dieser Stelle wird der Ein/Aussschalter eingeschleift.
dso150 dso150

Das Modul wird auf der Unterseite isoliert und auf der Hauptplatine befestigt. Dazu die Massefläche an einigen Punkte freikratzen und stabile Drähte zu den Massepunkten auf dem Modul ziehen (oder einfach ankleben..).
Vor dem Befestigen sollte man gut schauen ob man in den abgedeckten Bereiche noch irgendwas anlöten muss..
dso150 dso150 dso150 dso150

Die Kabel verdrahten.
dso150 dso150 dso150
dso150
Den Akku anschliessen.
dso150
dso150 Auf dem Foto sind auch noch die Kabel vom Programmieren des Prozessors zur erkennen.

Jetzt fehlt noch die USB-Buchse.

USB - Variante 1, simple USB-Buchse auf Breakout-Board

Die USB-Verbindung wird primär nur zum Aufladen des Akkus benötigt. Dafür ist eine USB-Buchse ohne Elektronik ausreichend. Am besten auf einer kleinen Hilfsplatine weil die Kontakte sehr fusselig zu löten sind. Die Pins 1 und 5 an die Ladelektronik anschliessen und fertig.

Mit der Firmware von "mean00" wird die Prozessorinterne USB-Schnittstelle aktiviert. Falls man diese Option nutzen möchte müssen weiterhin die beiden USB-Signale verbunden werden. D+ und D- werden über 22 Ohm Widerstände mit den korrespondierenden Kontakten auf dem Board verbunden. Zusätzlich wird D+ über einen 1k5 Widerstand mit 3.3V verbunden, wichtig für die automatische Erkennung.

Das Bild zeigt meine Lösung zur Montage der Buchse, aufgelötet auf einem Stück Lochrasterplatine als mechanische Befestigung.

dso150 dso150

Weitere Infos zum USB mod finden sich im Blog von "MEANX".

USB - Variante 2, USB-Seriell Adapter

Diese Variante lädt ebenfalls den Akku. Der Adapter basiert auf einem CP2102 von Silicon Labs, jeder andere Umsetzer (z.B. FTDI) tut es aber auch. Er stellt gleichzeitig eine Verbindung zum Anschluss an die serielle Schnittstelle des Prozessors (J5, Rx/Tx) bereit.

Ob man diese Verbindung benötigt hängt davon ab welche Firmware man verwendet und ob und wie man sie in den Prozessor flashen möchte. Ich habe mit Variante 2 begonnen und danach auf Variante 1 umgebaut.

dso150 dso150 dso150
dso150
Ein gut passender Einbauplatz ist neben dem Dreh-Encoder. Der dicke Bügel sichert die Buchse mechanisch.
dso150 dso150 dso150 dso150
dso150 dso150 dso150 dso150
Im Bild sind die beiden Kabel (rot und schwarz) zum Laderegler zu erkennen. Rx und Tx sind mit den entsprechenden Punkten verbunden.

Laut Datenblatt arbeitet der CP21202 mit einer 3.3V Logik an seinem (Tx-) Port. Gemessen habe ich aber 4.0V !?. Deshalb folgt am Tx-Ausgang noch ein Spannungsteiler (1k/4k7) um auf die 3.3V des STM32 zu kommen. Der Rx ist tolerant ausgelegt und funktioniert ohne Änderungen.

Update zum CP21202:
Einige Varianten der Platine enthalten einen Layout-Fehler, Pin 9 ist fälschlicherweise mit VBUS verbunden, siehe hier. Möglicherweise ist das die Ursache für die falschen Tx-Pegel.

Die HW-Modifikationen sind damit abgeschlossen.
dso150 dso150

Firmware Versionen

Meine Empfehlung für eine alternative Software ist die von "mean00" (aktuellstes Release). Leider hatte das offizielle 1.06 Release noch kleinere Probleme. In der "issues"-Section gibt es aber einen Link zu einer funktionierenden Variante:

-> Dso150STM32F103_usb_128M.bin.zip.



Eine weitere alternative Firmware ist die "Open-DSO-150" von "michar71". Die hat ein anderer findiger Programmierer auf Basis der DSO 138 Firmware gebaut und ins GitHub gestellt.
Ein grosser Nachteil ist dass man keine fertig kompilierte Version findet (zumindest nicht ohne lange Suche). Ich bin deshalb den mühsamen Weg gegangen, habe mir die Umgebung installiert und die Quelle selbst kompiliert.. Hat am Ende geklappt.
Viele Hinweise und Tipps findet man auch in der "issues". Section.



Noch eine Möglichkeit an Firmware zu kommen ist der Hersteller selbst. Die "neueste" Firmware des Originals ist die "113-15001-120" aus dem Jahr 2018.
Die letzte "freie" Version ist die mit der Endung -064. Für neuere Versionen benötigt man einen Freischaltcode vom Hersteller, unter Angabe der Seriennummer! Die hat natürlich niemand hat weil die meisten Geräte Fakes sind. Ja, selbst von chinesischen Produkten gibt es Fakes..
Im meinem Fake steckte ursprünglich eine "113-15001-060". Das Upgrade auf die -064 ist aber den Aufwand nicht wert.

Firmware tauschen - Variante 1: SWD-Adapter

Die Firmware von "mean00" liegt im BIN-Format vor und ist für diese Programmiermethode gedacht.

Diese Methode benötigt einen "richtigen" SWD-Programmieradpater. Solch einer ist z.B. auf einem "Nucleo 64"-Board vorhanden, der obere Teil. Die 4 wichtigen Signale werden entsprechend der folgenden Skizze verbunden (zwischen CN4 und J3):
dso150 dso150

Dazu noch die passende Programmier-Software von STM (STM32 ST-LINK Utility) und man kann loslegen.

Die Oberfläche sieht so aus:
dso150 dso150

Firmware tauschen - Variante 2: Bootloader

Alle sonstigen oben genannten Firmwaren werden mit/über einen Bootloader in den Prozessor geladen. Um den Bootloader selbst braucht man sich nicht zu kümmern, der sitzt bereits im Prozessor, nur um die Peripherie.

Geflasht wird über die serielle Schnittstelle des STM32F103 (J5, Rx/Tx). Man kann dafür den oben erwähnten USB/Seriell-Adapter einsetzen, oder einen anderen Adapter der die Verbindung zum PC herstellt. Die Kontaktpunkte der Schnittstelle sind auf dem Board gekennzeichnet. Ausserdem müssen noch 2 Lötbrücken temporär geschlossen werden um den Bootloader-Mode zu aktivieren. JYE Tech hat dafür eine Anleitung.

Ein passendes Flash-Tool gibt es kostenlos von "ST". Herunterladen und installieren. Die Bedienung ist simpel und geradeaus.
dso150 dso150 dso150 dso150 dso150 dso150 dso150 dso150

Ein Problemchen taucht auf wenn man die Firmware von "Michar71" benutzen möchte. Im "github" sind nur die Quellen abgelegt, kein "HEX"-File. Das muss man sich selbst kompilieren, und der Weg ist relativ aufwändig:

Ausgangspunkt ist der Atollic TrueStudio Kompiler von "ST". Herunterladen und installieren. Das Paket hat leider mehrere 100MB Umfang..
dso150 dso150

Meine ersten, naiven Versuche mit der Oberfläche brachten überhaupt keinen Erfolg. Einfach das Projekt von "Michar71" zu öffnen funktionierte nicht. Der Trick ist, dass man es zuerst importieren muss. Wie das geht ist in in den GitHub-Issues erläutert, oder in diesem Video.
Unter dem Menüpunkt "Project - Manage Build Configurations" kann man noch zwischen "Debug" und "Release" wählen, wobei "Release" mit einem Fehler abbricht. Beide Varianten sollen aber die gleiche Funktionalität haben. Ich benutze daher "Debug".
Nach dem (hoffentlich erfolgreichen) Kompilieren findet man dann im "Debug"-Ordner das ersehnte HEX-File.

Wer dann noch etwas spielen möchte findet in diesem Blog erste Anregungungen für eigene Modifikationen.

Zusammenfassung

Vielen Dank an die unermüdlichen Bastler und Programmierer die sich dieses unscheinbaren Gimmicks angenommen haben. Kaum zu glauben, und trotzdem schön zu sehen, wieviel Aufwand in dieses Pseudo-Oszilloskop investiert wurde.

Eine nette und praktische Ergänzung für den Basteltisch oder wenn man mal in der Wildnis was messen muss.