Forum: Mikrocontroller und Digitale Elektronik noch ein Eigenbau DSO.


von Norbert S. (norberts)


Lesenswert?

Hi,

ich denke über ein neues DSO nach, das komplett mit recht einfachen 
Mitteln zu realisieren ist und dessen GUI auf einem Android Handy rennt.

Um alles im Rahmen zu halten sind 32MS/s angepeilt, was für jeden 
Bastler reichen sollte (wenn er nicht gerade so ein DSO bauen will).
Zwei Kanäle sollen es aber unbedingt werden.

So soll das aussehen:
-Verbindung zum Droiden per Bluetooth mit einem BTM112
Daher relativ geringe Datenrate -> mehr als ein paar kB Speichertiefe 
geht kaum aber sollte reichen
-ein ATMega lenkt alles
-Analogteil wird abgekupfert von den zugänglichen Schaltplänen des 
PCS32/64 von Velleman. Besser fummelt man das als Bastler sicher nicht 
hin.
-die Werte von 2 AD-Wandlern werden laufend in je ein SRAM geglappert 
(überlaufend nach 4kB)
-ein 74HC4040 zählt laufend die Adressen für die SRAMs durch (12bit also 
4k)
-eine Triggereinheit (eingestellt vom µC) überwacht ständig die Werte 
(mit den 8 bit wobei die 6 MSB wohl locker reichen würden) und löst den 
Trigger aus. Dadurch wird ein weiter 11bit Zähler (2k) gestartet, wenn 
der voll ist wird gestoppt. Der Trigger ist also immer in der Mitte des 
4kB-Frames.
- dann liest der µC die SRAMs aus, einfach inkrementierend von der 
letzten Adresse. Der Trigger hat ja in der Mitte des Frames 
zugeschlagen.
-für die zusammen 8kB Daten kommt externes SRAM an den µC
-damit es flotter geht, werden immer nur 800Byte um den Trigger herum 
aus den beiden Frames gesendet bis man scrollt

Meint ihr, das ist so praktikabel?
Klar, mit diskreter Logik wird das ein Gattergrab aber da ich das gleich 
in SMD mache sollte das überschaubar sein. FPGA oder Ähnliches kommt 
nicht in Frage.
Was mir noch fehlt ist der Trigger. Ein 74irgendwas, der mir zwei Bytes 
vergleicht und mir sagt welches grösser ist. Was nehme ich da oder wie 
macht man das?

Gruß,
Norbert

von Harri (Gast)


Lesenswert?

Hi Norbert,

mit einem async-Zähler wie dem HC4040 kommst du nicht auf 32MHz weil die 
Ausgänge erst nacheinander umschalten. Du brauchst einen sycronen 
Zähler.

Schau dir mal das Design des Minilog Logikanalysers hier im Forum an. 
Der kommt mit diskreten Bauteilen auf bis zu 80MHz. Sourcen sind 
verfügbar und eine Triggerlogik ist auch drin.

Ich hab den selbst auch nachgebaut, allerdings mit einem CPLD Latice 
M4A5-64 als Ersatz für die ganzen Logikchips. Derzeit plane ich 
ebenfalls einen Vorsatz um dem LA als Oszi zu nutzen incl. anderer 
Software zur Darstellung.

- Sampletiefe ist 32kB, umstellbar auf 4kB um einen kontinuierlichen 
Bildrefresh des Analogteils zu erhalten.
- ebenfalls über Bluetooth angebunden.
- Analogteil ist noch undefiniert, ein erster Entwurf mit einem ADS830 
auf Steckboard steht (zeigt bei hohen Sampletakten fast nur noch 
Störungen an, bis 5MHz geht). Es gibt allerdings nur einen analogen 
Kanal.
- an der Software für den AVR sind noch ein paar Anpassungen nötig, dann 
kann ich mit den ersten Tests meines Umbaus starten.
- PC-Software steht, allerdings sind die neuen Funktionen mit 4kB 
Sampletiefe noch ungetestet. Mit 32kB ging es jedenfalls.

Soll ich dir meine angepassten Sourcen mal zur Verfügung stellen? Evtl. 
können wir ja gemeinsam dran bauen.

mfg
Harri

von Norbert S. (norberts)


Lesenswert?

Harri schrieb:
> mit einem async-Zähler wie dem HC4040 kommst du nicht auf 32MHz weil die
> Ausgänge erst nacheinander umschalten. Du brauchst einen sycronen
> Zähler.

Hi,

das verstehe ich jetzt nicht ganz.
Bei jedem Takt zählt der HC4040 doch die Ausgänge einen hoch oder nicht?
Ich ahne da was...
Wenn man sich das Datenblatt ansieht, der Takt muß erst ganz 
durchrattern um alle Ausgänge zu aktualisieren. Nein, durch die 
Verzögerung der Gatter langt es nicht für etliche MHz.
Ok, was wäre dann ein synchroner Zähler?

Den Rest muß ich mir noch zu Gemüte führen.

Gruß,
Norbert

von Norbert S. (norberts)


Lesenswert?

Hi,

der Minilog ist ja ganz famos, Danke!
Also den Adresszähler kann ich praktisch so übernehmen, nur das mit dem 
Trigger wird so nix.
Passen müsste ein 74HC682. Der Minilog hat mir aber bei der Suche sehr 
geholfen.
Die Art der Flanke kann ich dann mit Gattern einstellen.

Von daher wirst Du auch mit Deinem Vorsatz nicht glücklich werden bzw. 
musst den Trigger im CPLD entsprechend anpassen.

Vor dem Analogteil habe ich höchsten Respekt, das übernehme ich 
praktisch 1:1 von dem PSC64. Daran krankt ja auch das DSO203 während der 
Rest wohl ziemlich genial ist. (Verglichen mit dem Niveau auf dem wir 
uns hier bewegen).

Mit der PC-Software werde ich wohl kaum was anfangen können und die 
Sources für den AVR sind a) eher nicht das Problem und b) wohl doch sehr 
anders bei meinem geplanten Projekt.
Sehe gerade, das ist ja in ASM - Weia, da kann ich ja nun auch so gar 
nichts mit anfangen.
Ich mache das mit Bascom und auch die Soft auf dem Droiden wird wohl in 
einem Basic-Interpreter laufen (wenn der das schafft). Immer alles schön 
einfach.

Mein Problem war eigentlich bisher nur die externe Logik und das sieht 
jetzt sehr gut aus! Danke!

Wie man sich sowas aber auf Lochraster antun kann...

Gruß,
Norbert

von Harald S. (harri)


Angehängte Dateien:

Lesenswert?

Hi Nrbert,

ich bin's wieder - diesmal sogar angemeldet.

Norbert S. schrieb:
> Also den Adresszähler kann ich praktisch so übernehmen, nur das mit dem
> Trigger wird so nix.
> Passen müsste ein 74HC682. Der Minilog hat mir aber bei der Suche sehr
> geholfen.

Hast du schon eine Bezugsquelle für den HC682 gefunden? Sowas exotisches 
dürfte nicht ganz einfach sein. Es gibt aber auch noch den HC85, die 4 
Bit Version davon.

Meiner Meinung nach reicht der Trigger des Minilog aus und es ist gar 
kein genauer Vergleich der AD-Werte mit einem Triggerwert nötig.
Beispiel:
Nullpunkt in Skalenmitte entspricht 10000000 bzw. 01111111 (der genaue 
AD-Wert dürfte um diesen Punkt schwanken).
Normalerweise muss man selten genau auf einen bestimmten Wert triggern.
Also wertet man einfach die obersten 3 Bits aus und kann bei 101, 110, 
111 triggern. Negative Werte gehen auch, Trigger auf 011, 010, 001.
Damit kann man mit der minilog-Triggerlogik auf 25, 50 und 75% des 
Skalenwertes positiv wie negativ triggern.
Sehr schnelle Flanken könnten den Triggerbereich durchlaufen ohne dass 
der AD-Wert einmal aufgetaucht ist. Aber dann hat man vermutlich sowieso 
eine zu geringe Samplerate gewählt ;-)


> Vor dem Analogteil habe ich höchsten Respekt, das übernehme ich
> praktisch 1:1 von dem PSC64. Daran krankt ja auch das DSO203 während der
> Rest wohl ziemlich genial ist. (Verglichen mit dem Niveau auf dem wir
> uns hier bewegen).

Dann schau dir mal das hier an: 
Beitrag "Projekt - universelle analoge Oszilloskop-Vorstufe"
Dort wird/wurde eine universelle analoge Vorstufe mit richtig guten 
Leitungsdaten entwickelt.


> Wie man sich sowas aber auf Lochraster antun kann...

Wenn man das ganze TTL-Gerödel in einen CPLD-Baustein packt, dann geht 
es.
Ich hab dir mal ein Bildchen meines Aufbaus dran gehängt, du siehst den 
AVR, das RAM, den Eingangspuffer, beide Oszillatoren und der Rest steckt 
im CPLD. Der hat zwar keine Pins mehr frei, aber die Logikzellen sind 
gerade mal zur Hälfte belegt - also noch Platz für einen zweiten Zähler 
und ein Schieberegister für Config-Daten. Ein HC682 sollte auch kein 
Problem sein, falls ich mit meinem Triggerkonzept nicht zufrieden bin.
Aber um das rauszufinden müsste ich erstmal weiter basteln ;-)

mfg
Harri

von Norbert S. (norberts)


Lesenswert?

Hi,

Harald S. schrieb:
> Sehr schnelle Flanken könnten den Triggerbereich durchlaufen ohne dass
> der AD-Wert einmal aufgetaucht ist.

Genau da sehe ich das Problem aber hast Recht, so dramatisch ist das 
vermutlich nicht. Aber mit einem 682 oder 684 ginge das perfekt und nur 
3 Triggerstufen wäre mir dann doch etwas wenig.

Bezug einer der Dinger ist in der Tat ein Problem, erst recht in SMD.
Der HC85 ist eigentlich perfekt und 4bit sollten reichen. Bei 8 div 
vertikal gibt das einen Trigger in Stufen von 0,5 div.
HC85 gibt es für ganz schmales Geld bei Segor.

Klar, mit der programmierbaren Logik ist das eleganter aber da hab ich 
keinen Schimmer von und wenn man das alles in SMD macht (eigene 
Produktion, sehr schön eingespielt) ist das kein Problem.

Harald S. schrieb:
> Dann schau dir mal das hier an:
> Beitrag "Projekt - universelle analoge Oszilloskop-Vorstufe"

Na das wäre weit übertrieben.

Was mir jetzt noch fehlt ist ein passender AD-Wandler, den TDA8703 vom 
PCS32/64 gibt's nicht mehr.
TDA8702 von Segor ginge wohl...

Gruß,
Norbert

von Harald S. (harri)


Lesenswert?

Norbert S. schrieb:
>> Beitrag "Projekt - universelle analoge Oszilloskop-Vorstufe"
>
> Na das wäre weit übertrieben.

Sag das nicht zu schnell. Mir gefällt an dem Konzept, dass der Teiler 10 
und 100 getrennt voneinander sind. Bei Vellemann beeinflusst der 
Abgleich des einen Teilers u.U. den anderen Teiler.


> TDA8702 von Segor ginge wohl...

Glaube ich kaum, das ist ein DA-Wandler. Andere Richtung :-)
Wie wäre der ADS830?

von Norbert S. (norberts)


Lesenswert?

Hi,

dafür ist die Vorstufe von Velleman so schön einfach. Wobei der Offset 
mit der Temperatur immer wieder abhaut, was etwas nervte. Vielleicht 
baue ich da noch ne geregelte Heizung ein, dann müsste das nach 10-20s 
stabil sein.
Ich denke das ist der Fet (SST440) der da so driftet?
Ansonsten will ich es wirklich nicht übertreiben und Analog ist nicht 
meine Welt. 20-40MS/s müssen reichen.
Wenn der Abgleich etwas umständlicher ist - das macht man einmal.

Dazu habe ich noch 74HCT590 gefunden, 8bit synchron.
Dann wird die Zählerei noch etwas einfacher und ich kann die 
Speichertiefe aufbohren, der Speicher ist ja 32k (10 St. mit 20ns fürn 
Appel & Ei aus der Bucht aus GB). Ausserdem muß ich bei 4k auch nochmal 
bis 2k nach dem Trigger zählen.

Für kleinere Sampleraten nehme ich dann noch einen 74hc590, bei 40MHz 
geht das dann max runter auf 156kHz, darunter kann dann der ATMega den 
Krempel steuern.

Hier und da wird dann noch das eine oder andere Gatter nötig werden - oh 
mann, was hab ich mir da bloß vorgenommen.

> das ist ein DA-Wandler
ups, falsch rum ;-)

> Wie wäre der ADS830?
Passt, gibts aber auch nicht an jeder Ecke.

Also habe ich mal bei Digikey geschaut.
Die parametrische Suche bei digikey ist wirklich immer wieder vom 
feinsten, da sind noch ein paar andere günstigere Kandidaten dabei. Auch 
die Logik-Exoten sind da kein Problem.
Also Beschaffung ist erstmal gelöst und da ich gleich für mind. 3 Stück 
bestelle komme ich auch in den kostenlosen Versand.

Also ich fasse zusammen:
-Es bleibt für mich bei der Eingangsstufe vom PCS32/64.
-AD-Wandler ADS830 oder ähnlich. Sieht passend aus: ADC0804S040 
http://www.nxp.com/documents/data_sheet/ADC0804S030_040_050.pdf

-Speicher CY7C199-20VC 32k x 8 (schon gekauft)
-Speicherzähler 2x 74hc590 kaskadiert erstmal nur bis 4k
-Zähler nach dem Trigger noch 2x 590 erstmal nur 2k
-Trigger 4bit Vergleicher 74hc85 (4 MSB macht 0,5div Triggerauflösung)
-Teiler für den Takt noch ein 590
-div. Gatter um das alternativ per ATMega steuern zu können

Das wird noch heftig das zu routen...

Danke für Deine Hilfe! Komisch, daß hier keine blöden Kommentare kamen 
sondern nur Deine äusserst hilfreichen Antworten.

Gruß,
Norbert

von Harald S. (harri)


Lesenswert?

Mahlzeit!

> dafür ist die Vorstufe von Velleman so schön einfach. Wobei der Offset
> mit der Temperatur immer wieder abhaut, was etwas nervte. Vielleicht
> baue ich da noch ne geregelte Heizung ein, dann müsste das nach 10-20s
> stabil sein.
> Ich denke das ist der Fet (SST440) der da so driftet?

Jupp, das liegt am FET. Deshalb hat die Vorstufe hier im Forum eine 
DC-Stabilisierung eingebaut, kombiniert mit der Offset-Einstellung.
Die Linear Appote 47 enthält eine andere Lösung zur DC-Stabilisierung 
eines FET.

Mit einem geeigneten OP kannst du den FET auch gleich weglassen. Schau 
mal hier Beitrag "Re: Eigenbautastköpfe" rein.
Das würde dann den Aufbau der Vellemann Vorstufe aber auch die 
universelle Stufe hier aus dem Forum wesentlich vereinfachen.


> Hier und da wird dann noch das eine oder andere Gatter nötig werden - oh
> mann, was hab ich mir da bloß vorgenommen.

Hmmm. Hast du mal die Anzahl der Bauteile grob durchgezählt? Da kommen 
locker 20 Chips zusammen.

2 x hct590 Adresszähler
2 x hct590 Triggerzähler
1 x hct590 Taktteiler
1 x hc85   Triggerkomparator
1 x hct151 Taktauswahl
1 x 164    Schieberegister für Triggerdaten
2 x 00     Logik vom Minilog
2 x RAM
1 x AVR
2 x AD-Wandler
2 x OP-Amp
1 x Treiber für die Relais im Analogteil

Alle zeitkritischen Bauteile müssen schnell genug sein, da gibt es 
manchmal schon Unterschiede zwischen zwei hct590 verschiedener 
Hersteller.

Und danach hast du ein 2 Kanal Oszi, eine Zweitnutzung als Logikanalyzer 
scheidet aus, weil es deine Triggerlogik nicht hergibt.
Ich hab den 7485 für eine richtige analoge Triggerlogik noch mit in mein 
CPLD gequetscht, soll ich dir meine Sourcen mal per PM senden? Ist noch 
in Abel geschrieben, das ist zwar veraltet aber (meiner Ansicht nach) 
näher an der Logik als VHDL. VHDL hat mich bisher immer abgeschreckt, 
weil es mir zu abstrakt aussah.


>> Wie wäre der ADS830?
> Passt, gibts aber auch nicht an jeder Ecke.

Ich hatte meinen damals von Reichelt.


> -Es bleibt für mich bei der Eingangsstufe vom PCS32/64.
> -AD-Wandler ADS830 oder ähnlich. Sieht passend aus: ADC0804S040
> http://www.nxp.com/documents/data_sheet/ADC0804S030_040_050.pdf

Hat laut Datenblatt keine interne Referenzspannung. Du musst also noch 
eine Referenzspannung extern erzeugen. Der ADS830 hat das drin :-)


> Das wird noch heftig das zu routen...

Und bei jeder nötigen Schaltungsänderung musst du neu routen und ggfs 
eine neue Platine machen. Fragt sich dann ob du die SMD-Bauteile zum 
Teil erneut nehmen kannst oder nicht. Die AD-Wandler und seine 
Kondensatoren würde ich evtl. auf ein Adapterplatinchen setzen, auch 
wenn das elektrisch gesehen ungünstig ist. Wenn alles funzt, kannst du 
ja nochmal einen saubeen Aufbau machen.


> Danke für Deine Hilfe! Komisch, daß hier keine blöden Kommentare kamen
> sondern nur Deine äusserst hilfreichen Antworten.

Einfach mal Glück gehabt?


mfg
Harri

von Norbert S. (norberts)


Lesenswert?

Hi,

eine kleine Vereinfachung wäre noch, nur Ch1 als Trigger zu verwenden. 
Das hielte ich für absolut akzeptabel. Bleibt trotzdem ein böses 
Gattergrab, kaum flexibel so fest verdrahtet.
Für die Entwicklung wird das sicher erstmal als Module zusammengesteckt, 
sonst werde ich ja irre dabei.

Ich hab mir jetzt mal Abel, VHDL und Verilog angesehen und überlege 
ernsthaft, da mal einzusteigen. Wobei mir Abel ziemlich kryptisch 
erscheint und in eine eigentlich obsolete Sprache einzusteigen erscheint 
mir auch nicht sehr sinnvoll.
Also ev. VHDL oder Verilog, wobei mir Verilog auf den ersten Blick etwas 
sympatischer ist.
Trotzdem wäre es nett, wenn Du mir Deine Sourcen schicken würdest.
Was ich jetzt auf die Schnelle nicht gefunden habe: Kann man die Dinger 
nur mit Jtag programmieren oder geht das auch mit SPI wie z.B. mit 
AVRdude oder so? Also was wäre da der minimale Einstieg was die Hardware 
angeht?
Ich denke diese Geschichte wäre ein schöner Einstieg in CPLDs & Co.

Gruß,
Norbert

von Wolfgang M. (womai)


Lesenswert?

Sowas aehnliches (von der Idee her) habe ich schon mal gebaut:

http://www.pdamusician.com/lcscope/

Auf den Pretriggermodus habe ich aus Einfachheitsgruenden verzichtet. 
Die Samplerate ist auch niedriger (1 MHz war die Grenze der verwendeten 
ADCs, sonst sollte es schon auf einige MHz gehen). Dafuer besteht die 
Logik auch aus gerade mal vier 74HCxx-Chips. Triggerlevel wird mittels 
Opamp (als Komparator verwendet) eingestellt. Auf der Webseite ist die 
Schaltung auch im Detail beschireben.

Fuer den analogen Frontend, schau Dir mal auch mein DPScope an. Mit 
einem aehnlochen Konzept aber schnelleren Opamps ist da durchaus 10 MHz 
Bandbreite und mehr drin:

http://www.dpscope.com

Design des Fontends ist auch hier beschrieben, ist aenlich, aber hat 
Frequenzkompensation.

Wolfgang

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.