Christians Webseite        << zurueck        vor >>

DSO 150

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 professionellen Einsatz nicht. Ich finde es niedlich und eine grosse Hilfe wenn man mal schnell ein paar simple Signale klappern sehen möchte. Ideal für vor Ort Basteleien an Autos und Motorrädern.

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

  • Blogspot von "mean00"
    Dieser geniale Programmierer und Bastler hat die Firmware komplett überarbeitet. Und das sogar zweimal, in unterschiedlichen Programmierumgebungen!

    - InDSO150 (mean00, GitHub)

    - DSO_STM32Duino (mean00, GitHub)

    Ein paar zusätzliche Features und Optimierungen sind dabei hinzugekommen:
    • 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.

Dreh-Encoder

Für den Dreh-Encoder wird eine kleine Hilfsplatine mitgeliefert weil die Anschlussbeinchen in die falsche Richtung zeigen. Einfaches Zurückbiegen der Beinchen und direktes Anlöten auf der Platine lösst das Problem aber viel vorteilhafter. Zusätzlich gewinnt man etwas Platz und Bauraum (für den Akku-Umbau).
dso150 dso150

Die elektrische Verdrahtung des Dreh-Encoders hat ein generelles Problemchen. Die zugehörigen Ports am Prozessor (PB0 .. PB7) werden zeitgleich auch für das Display verwendet. Als Folge entstehen beim Display-Refresh zeitliche Lücken in denen der Encoder nicht abgefragt werden kann. Die Bedienung wird daurch als stockend empfunden.

Eine Alternative wird mit der "mean00"-Software gegeben. Dort sind die Encoder-Signale auf die Ports PB14 und PB15 gelegt. Die Vedrahtung des Encoders muss dazu verändert werden.

Achtung, dieser Mod funktioniert nur zusammen mit der Software von "mean00"!

- Die beiden Kupferbahnen vom Encoder zum Display werden unterbrochen.
- 2 neue Leitungen vom Encoder zu den Ports [14]und [15] ziehen.

dso150


Weitere Infos finden sich im Blog von "MEANX"
oder im zugehörigen GitHub Wiki".

Übersicht Akku-Stromversorgung

Der fehlende Akku ist ein lästiges Manko des DSO 150. Die folgende Übersicht zeigt ein Konzept für eine geänderte Stromversorgung.

dso150

  • ein 3.8V Li-Ion-Akku (Handy) liefert die Energie
  • der folgende Step-Up Konverter hebt die Spannung auf 9V an
  • aufgeladen wird über einen Li-Ion Laderegler
  • der Ladestrom kommt über USB, alternativ könnte man auch die originale Ladebuchse (J6) verwenden
  • der vorhandene Ein/Ausschalter (SW5) wird weiter verwendet
  • der Akku bleibt auch im ausgeschalteten Zustand mit der Ladeschaltung verbunden. Wegen des sehr geringen Leckstroms (Standby-Leckstrom nur ~2.5uA) ist das kein Problem.
Für den Umbau müssen auf der Platine einige Leiterbahnen unterbrochen werden.

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

Das Lade-IC ist ein TP4056 (Stichwort für die ebay-Suche). Die Module gibt es in diversen Konfigurationen und auch mit alternativen ICs. 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 den Modulen befindet sich typischerweise ein Poti um die Ausgangsspannung einzustellen. Der Ladestrom sollte auf ~250mA begrenzt werden (Widerstand an Pin 2) um auch an einem strombegrenzten 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 ausreicht..

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

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

Vorbereitung für die geänderte Stromversorgung. Die Bauteile J7 und D2 werden entfernt. Die Zuleitung zu U3 wird unterbrochen.
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

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 überlegen ob man in den abgedeckten Bereiche noch irgendwas anlöten muss..
dso150 dso150

Die Kabel verdrahten.
dso150 dso150

Den Akku anschliessen.
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.

Das Bild zeigt meine Lösung zur Montage der Buchse, aufgelötet auf einem Stück Lochrasterplatine als mechanische Befestigung. Direkt ein fertiges USB-Breakout-Board einzusetzen wäre eine Alternative die viel einfacher zu Löten ist. Welche Type USB-Buchse (mini, micro,..) man verwendet spielt keine Rolle.

dso150

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.

dso150

Weitere Infos zum USB mod finden sich im Blog von "MEANX" oder im GitHub Wiki
dso150 dso150

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

Ein gut passender Einbauplatz ist neben dem Dreh-Encoder. Der dicke Bügel sichert die Buchse mechanisch.
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

Firmware von "mean00"

Mein nächster Testkandidat ist die Variante InDSO150.

Aktuell verwende ich seine vorherige Variante "DSOSTM32Duino". Die funktioniert hervorragend und ist sehr zu empfehlen.

Achtung, diese Softwaren benötigen zwingend den Umbau für die Dreh-Encoder-Signale auf die Ports PB14 und PB15!

Firmware von "michar71"

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.

Firmware Original

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

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

Die Oberfläche sieht so aus:
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

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

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.