PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Oszilloskop mal anders ?



PICture
01.08.2012, 11:10
Hallo!

Ich möchte mir demnächst einen Spielzeugoszi (kein DSO) bauen, der auf von mir gerade gebastelten Spielzeugen (künstlichen Tieren) gelegt wird und ohne Berührung ständig optimales Bild von z.B. Tacho aus einem Antriebsmotor zeigt. Der Oszi sollte nur nötigen Ein- und Auschalter haben.

Bisher ist mir ein schon bei ebay gekauftes und vorhandenes Kunststffgehäuse (ca. 100x50x13 mm, komplett ca. 50 g) aus Solartaschenlampe mit schon integriertem Li-Po 900 mAh mt Schutzschaltung, USB Lader und Schalter eingefallen, wobei die Solarzelle durch das Handydisplay + benötigte Elektronik ersetzt und die 4 weiße LED's entfernt werden. Damit halte ich die Chancen auf Realisierung sehr hoch, da die Mechanik (meine Schwäche) schon fast ferig ist (siehe Foto).

Da ich meistens mit nur bis 3 V Spannungen arbeite, ist anfangs nur fester Eigangsteiler vorgesehen. Genauso ist mit der Zeitbasis, die durch Software für momentane Signalfrequenz automatisch ermitteln werden sollte.

Der ADC sollte mit fester Frequenz 10 MHz ständig wandeln und nur die entsprechende "samples" werden mit variabler von Software festgelegte Frequenz in RAM von µC eingelesen und als Kurve aufm Display gezeigt.

Um auf Triggerung verzichten zu können, habe ich mir gedacht, dass ich immer mehr als nötig "samples" in RAM einlese und sie so verschiebe, dass das Bild auf einem Handydisplay aus Nokia 3510 (S/W mit 64x96 Pixeln) immer beim "Null" anfängt und immer nur 3 "Nulldurchgänge" angezeigt werden.

Um nix sinnloses zu basteln, möchte ich Euch zuerst fragen, ob meine "verrückte" Idee realistisch ist und darüber diskutieren. Ich bin für alle Eure Meinungen sehr dankbar im voraus. ;)

Ritchie
01.08.2012, 11:25
Hi,

die Abtastrate von 10MHz und die zusätzliche weitere Verarbeitung ist aber nicht ohne. Was für einen Controller möchtest Du den einsetzen.

Gruss R.

PICture
01.08.2012, 11:59
Hallo Ritche!

Es wurde dafür PIC18F252 (SMD) mit 40 MHz PLL Prozessortakt (mit 10 MHz Quarz), der mit max. 5 MHz aus ADC1173 (SMD) ein 8-bittigen Port in RAM einlesen kann (ausprobiert). Nach dem Einlesen habe ich praktisch unbegrentzte Zeit für Verarbeitung der gespeicherten Daten bis das Signal am Display gezeigt wird, da es für mich nicht echtzeitig nötig ist.;)

Ritchie
01.08.2012, 12:03
Ach ja,
ich habe das falsch verstanden. Du willst ja z.b. Geschwindigkeit in der Form eines Tacho darstellen. Hierbei wäre dann natürlich die Bezeichnung eines Oszi eher irreführend. Die Idee ist nicht schlecht, kann man solche Funktionen auch später bei anderen Projekt gut gebrauchen. Da Du SMD Bauteile verwendest wird die ganze Sache auch baulich sehr kompakt. Ich habe den PIC's derzeit den Rücken zugedreht (PIC16F873), da mir die Programmierung in ASM zu anstrengend wurde und meine Projekt einfach zu lange gebraucht haben. Jedoch schnell sind die Teile. Derzeit kämpfe ich dafür jetzt mit Amtels.

Gruss R.

PICture
01.08.2012, 14:36
Danke sehr für deine Bestätigung, das es nicht sinnlos ist ! :D

Es sollte mit kleinem Li-Po Akku auch sehr leicht sein, da ausser o.g. zwei IC's, "low drop" Spannungsregler 3 V (TK11532 in SMD) und Inverter 74HC14 (SMD) für ADC "clock" keine weitere Elektronik vorgesehen ist.

Weil es auf dem Display nur 6 bits angezeigt werden können, sollte bei 8-bittigen ADC auch softwaremassige Umschaltung der Amplitude auf dem Bildschirm 1:1, 2:1, und 4:1 möglich sein (z.B. 2V/DIV, 1V/DIV, und 0,5V/DIV). Möglicherweise, falls nötig wid, werde ich dazu noch einen per Hand einsteckbaren frequenzkompensierten Eingangsteiler 10:1 basteln, da er nach einmaliger Einstellung nicht mehr geändert werden muss.

oderlachs
01.08.2012, 16:50
Ich finde Deine Idee gut, werde mich auch mal damit befassen. habe da noch ein gutes Display für "rumzuliegen", das sollte mal genutz werden...und nicht gammeln ;)
Ich denke ich werde hier fleissig mitlesen, wenn die Gartenarbeit weniger wird, hab ich auch mehr Zeit dann für's Elektronische :)

Gruss

OL

PICture
01.08.2012, 17:24
hallo oderlachs!

Danke schön für deine mich erfreuliche Bewertung ! :)

Ich weiß nicht, wann ich dazu komme, weil bisher hat mir immer Zeit gefehlt um alle meine Ideen auszuprobieren. Deswegen würde ich mal sehr gerne etwas fertiges nachbauen, vielleicht von dir ? :D

Besserwessi
01.08.2012, 17:43
Die Zeitbasis rein automatisch wählen zu lassen sehe ich als nicht so gut an. Zum einen ist das von der Software einiges an Aufwand, und es müsste auch annähernd in Echtzeit erfolgen, denn erst damit kann festgelegt werden welche Samples des ADC gespeichert werden. Das 2. ist, das man gerade bei einem so kleinen Display eine gute Wahl der Zeitbasis braucht, um wirklich was zu erkennen - das kann oft auch einfach nur eine Flanke sein, also weniger als eine ganz Periode. Eine gewisse Automatik kann schon helfen, aber die Möglichkeit auch noch von Hand die Auflösung zu verschieben würde ich wenigstens vorsehen, auch wenn man dazu auch noch den Ausschnitt (Verzögerung ab Trigger) einstellen muss.

PICture
01.08.2012, 18:59
Hallo Besserwessi !

Danke für deine Anmerkungen ! :D

Schön, dass du keine Denkfehler siehst, die mir immer pasieren können. Es wird also so aufgebaut, wie oben erwähnt, und praktisch ausprobiert, da ich kein prezises Messgerät in Echtzeit, sondern nur ein vollautomatisches Visualisierungsgerät haben will.

Vielleicht wäre es für mich aureichend, wenn ich immer 1024 "samples" (16 Bildschirminhalte) einlese und danach jede n-te aufs Display schicke ohne Zeitbasis oft ändern lassen zu müssen. Was nötig ist, werde ich erst während des Bastelns sehen. Die Hardware ist also schon determiniert. :)

Besserwessi
01.08.2012, 22:23
Der vorgeschlagene µC kommt mir etwas langsam vor: mit 10 MIPs wird man da kaum 5 MHz Abtastrate hinkriegen, außer ggf. ohne schleife einfach nur las lange Kette: laden , speichern (mit Index hochzählen, falls der PIC das hat) und das dann 100-1000 mal wiederholt.

Bei der Geschwindigkeit gibt es mittlerweile auch schon erschwingliche µC die intern so schnell wandeln können, z.B. der STM32F405RG kann ein Signal bis 7,2 MSPS abtasten. Damit hat man dann auch genug Rechenleistung und RAM fürs speichern und Skalieren. Der PIC18 ist da einfach etwas klein gewählt und macht die Sache relativ schwierig.


Die automatische Skalierung in der Zeit kann ich mit schwierig zu programmieren vorstellen. Bei so einem kleinen Display muss die Skalierung schon recht gut passen, damit man da noch was erkennen soll. Zu der Kurvenform braucht man ja auch noch die Skalierung. Wenn überhaupt wäre das dann sinnvoll eher 1-1.5 Periode darzustellen, kaum mehr. Die Erkennung der Periode braucht aber ggf. schon einige Zeit, einfach weil so etwas wie ein 50 Hz Signal einfach 20 ms braucht und so lange kann man nicht mit 5 MHz abtasten. Da braucht es dann schon einige Versuche mit verschiedenen Abtastraten (z.B. 5 MHz, 500 kHz, 50 kHz, 5 kHz).

PICture
02.08.2012, 09:58
Du hast sicher Recht, aber mein Hauptziel ist: hardwaremässig am einfachsten. Ich habe bereits die oben erwähnte Bauteile und jetzt bleibt mir nur Software zu erstellen. Ich werde das eben für 5 MHz ohne Schleife mit 256 mal wiederholten Ladebefehl und Indexhochzählen machen müssen, habe aber bereits erfolgreich ausprobiert. Für niedrigere Frequenzen (ab ca. 1,25 MHz) geht das Einlesen schon mit Schleifen und ich habe es auch bereits für Logic Analyser mit PIC18F252 "geübt" (gesamte Übung war ca. 13 kB ASM Code von 5 MHz bis ca. 72 Hz, wo immer die Zeit zwischen Einlesungen verdoppelt war).

Wegen Problemen mit gewünschter Triggerung habe ich es damals verworfen. Jetzt kann ich aber die schon praktisch ausprobierte Fragmente einfach kopieren. Das Program wird sicher einfacher, weil es kein Speicheroszi mit Messparameter aufm Bildschirm wird und somit viel Sachen nicht nötig sind (z.B. Speichern im "flash", u.s.w.).

Ich wollte mir einen "OsziFox" von Wittig mit 16x32 Pixeln Display kaufen, weil er für meine Bastlereien genug wäre. Der ist aber kaum zu kriegen, da nicht mehr hergestellt wird. Deswegen muss ich mir einen quasi "OsziFox" mit "riesigem" Display basteln. Das Display mit 64x96 Pixeln für ein Spielzeugoszi finde ich gar nicht schlecht, weil 6-bittige Darstellung eine Genauigkeit von ca. 1,5 % hat und mein "grosser" Oszi, laut Gerätehandbuch des Herstellers, auch nur 2 % garantiert.

Mir ist bewusst, dass die von mir gewünschte Software nich trivial ist, aber wenn mir das Spass macht ? :lol:

Der ADC, wenn ich nicht etwas übersehen habe, darf laut Dattenblatt: http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/ADC1173.pdf permanent wandeln und das für mich am einfachsten ist. Ausserdem hat er min. "samplingrate" gleich 1 MHz.

@ alle

Weil ich das nicht zum Messen brauche (dafür habe ich analogen Oszi mit Zeitlupe), werde ich das ganze Display 64x96 Pixeln nur für Bilder ohne jeglicher Markierung verwenden. Es wird nur die Periode bzw. Frequenz und Amplitude (VSS) vom sichtbaren Signal am freiem Platz angezeigt.

Da die Umrechnung von Hex- auf Dezimalzahlen im ASM nur für ganze Zahlen einfach ist, werde ich z.B. 18530 ns anstatt 18,53 µS gerne in Kauf nehmen. Die Software wird angeblich quasi stufenlos die Einlesefrequenz vermindern, bis auf das Handydisplay gewünschtes Bild gesendet werden kann, weil für mich keine störende Skalierung für Display und kein preziser Messergebnis nötig sind. :)

Nach Überlegungen habe ich den PIC18F252 mit 10 MHz Quarz und PLL (40 MHz) gewählt um mit 5 Mhz und weniger vom ADC in RAM einlesen zu können, der dann mit immer 10 MHz MHz abtastet. Einfacher wäre mit PIC16FXXX und 16 MHz Quarz, dann kann man mit höchstens 2 MHz abtasten.

Aus Einfachkeitsgründen möchte ich beim ADC1173 die Anschlüsse VRT und VRTS zusammen und VRB mit GND verbinden. Die genaue Amplitude für 50 mV pro Pixel möchte ich dann per sowieso nötigen Eingangsteiler genau einstellen, damit der ADC für theoretisch 3,1875 V den Code FFh ausgibt.

Ob ich es vollständig praktisch realisieren könnte, hängt davon ab, ob ich den ADC mit Pinabstand 0,65 mm und Ø 0,1 mm Kupferlackdraht noch fädeln kann. Wenn nicht, wird es, wie bisher immer, einfach mit Spass verworfen und ein ännlicher ADC im "normalen" SMD Gehäuse bei ebay weitergesucht oder vorhandenes TDA8703 hergenommen.

Die Grösse der bestückter Lochrasterplatine habe ich auf 14x15 Lötpunkte (ca. 37x39 mm) ermittelt und es sich dort die vier SMD Bauteile problemlos platzieren und fädeln lassen sollten. Die max. Höhe der bestückter Platine kann aber max. 5 mm sein, deshalb müssen sich höhere als 3,5 mm Bauteile (z.B. Quarz, SMD Elkos, usw.) am Rand (ausser der Lochrasterplatine) befinden, was Abschneiden (Verkleinern) der Lochrasterplatine erzwingt.

Weil zwei eingelesene Bildschirme reichen um sie, wie gewünscht, in der x-Achse zu versschieben, habe ich festgelegt, dass ich immer nur 256 "samples" einlesen muss. Das wird mir genug freier RAM garantieren um das Bild entsprechend zu bearbeiten, bevor es zum Display geschickt wird.

Zuerst möchte ich sowieso schauen, was ich auf dem Handydisplay bei 5 MHz und kleinerer Einlesefrequenz mit o.g. PIC "zaubern" kann. Grob ausgerechnet wird ein Signal (z.B. Sinus) mit einer Periode von 96 Pixel bis max. ca. 50 kHz mit höchster Auflösung (also allen Pixeln) darstellbar. Das sollte für meine Zwecke ausreichen und kann jederzeit per schnelleren µC und ADC, durch "oversampling" bzw. kompliziertere Software durch Interpolieren erhöht werden. Für mehr als 50 kHz werden praktisch nur weniger Bildpunkte angezeigt und das möchte ich sehen. Eigentlich, falls noch freier "flash" übrig bleibt, könnte man Bilder dort abspeichern und damit Speicherosziloskop (DSO) haben.

Wahrscheinlich werde ich einen kleinen und leichten Oszi im Handygehäuse zur Inbetriebnahme meines fahrenden Solarspielzeugs basteln versuchen bzw. bei ebay kaufen, weil es einfacher ist. Unter Suchbegriff "Mini-Pocket-Sized-Digital-Storage-Oszilloskope-Board" gibt es sowas zum Fertigkaufen eben ab 30 € !!!

Vielen Dank für alle Eure Meinungen ! :D