RIN67630:
Ich würde dir aber empfehlen, die Pins D13 bis D9 für ein SPI interface frei zu lassen.
Schalte lieber deine Kontakte über Widerstände auf Analog(x).
So hast du das SPI interface für was anderes (ggf ein Wireless Transmitter) frei.
Wer weiss, vielleicht magst Du den Signal zum PC schicken und dann würde ich NIEMALS ohne galvanische Trennung arbeiten.
Ich sehe das Problem fehlender galvanischer Trennung als nicht so groß. Ich habe eh angedacht, dass der Arduino entweder extern (z. B. 9 V Block) oder über USB mit Energie versorgt wird. Und bei letzterem hat sich das mit der galvanischen Trennung IMO eh erledigt.
Mir kommt es vor Allem darauf an, mit eher wenig Teilen zurecht zu kommen und die Angelegenheit so zu machen, dass es auch ein verhältnismäßig ahnungsloser Anfänger versteht. Da ist das mit I²C eh schon grenzwertig. Aber ich könnte die Sachen, die jetzt die Pins D9-D12 belegen, auch auf A1, A2, A3 und A6 legen. Dann kann man immer noch mit SPI spielen. Die analogen Pins kann man angeblich (ich habs noch nie probiert) wie digitale handhaben.
Nuja ... schön, dass man so viele Möglichkeiten hat 
Gruß
Gregor
gregorss:
Die analogen Pins kann man angeblich (ich habs noch nie probiert) wie digitale handhaben.
Gilt aber nur für A0 bis A5. A6 und A7 sind reine Analoge Eingänge ( und auch nur bei Nano und Mini vorhanden ).
RIN67630:
Naja das mit dem schnellerer Takt und weniger ressourcen überzeugt mich nicht.
Bei schnellerem Takt muss der Arduino nicht so viel Däumchen drehen
. Das ist natürlich nur der speziellen Arduino-Implementierung mit 'Däumchen drehen' zu verdanken....
gregorss:
Ich sehe das Problem fehlender galvanischer Trennung als nicht so groß. Ich habe eh angedacht, dass der Arduino entweder extern (z. B. 9 V Block) oder über USB mit Energie versorgt wird. Und bei letzterem hat sich das mit der galvanischen Trennung IMO eh erledigt.
Mir kommt es vor Allem darauf an, mit eher wenig Teilen zurecht zu kommen und die Angelegenheit so zu machen, dass es auch ein verhältnismäßig ahnungsloser Anfänger versteht. Da ist das mit I²C eh schon grenzwertig. Aber ich könnte die Sachen, die jetzt die Pins D9-D12 belegen, auch auf A1, A2, A3 und A6 legen. Dann kann man immer noch mit SPI spielen. Die analogen Pins kann man angeblich (ich habs noch nie probiert) wie digitale handhaben.
Nuja ... schön, dass man so viele Möglichkeiten hat 
Das Prinzip mit der der galvanische Trennung ist nicht die Stromversorgung des Arduinos, sondern dein Messkreis. Du weißt nie, wo deine Prüfspitze rutschen kann. Mit einer galvanische Trennung schmort schlimmstenfalls deinen Arduino, ohne könnte es auch dein PC treffen.
Ich würde auch keinesfalls die Prüfspitze direkt auf den Eingang A0 führen. Mindestens eine >10 KΩ in Serie, am Besten mit AnalogReference(INTERNAL) arbeiten, so das du ein einigermaßen stabilen 0..1,1V Messbereich hast, davor noch ein schaltbarer Spannungsteiler 1:10 und eine Widerstandsbrücke um den Nullpukt etwa in der Mitte des Messberreichs zu platzieren.
Dann brauchst du wahrscheinlich noch ein Kondensator, damit auch Wechselspannungen bearbeitet werden können, letztlich ist es ein Oszi...
Die Kontakte auf A1, A2, A3 zu legen, ist eine Möglichkeit.
Als digitalen Signale klappt es ganz gut. Nimm schon mal die Analogeingänge für die ext Trigger, Du könntest noch froh sein, dass sie proportional sind, u.A. wenn da nur wenig Spannung zum Triggern vorliegt.
Interessantes Projekt
Ich denke ich werde mich auch irgendwann mal an soetwas setzten :D.
Zum Thema wie Bauen?:
Vlt. kennt der ein oder andere von euch das DSO 138
Der Schaltplan von dem Ding ist public.
Wenn man ein paar Ideen braucht kann man sich daran orientieren.
Also was das Messen von Wechselstrom, den Trigger usw. angeht.
Erfordert aber etwas tiefere OPV-Kenntnisse.
Laut Specs kann man mit der Schaltung ein Vpp von 100 bzw. ein Vp von +- 50 messen.
Bisher getetste habe ich Vp +-30.
Ich habe den Schaltplan mal aktualisiert. Siehe Anhang.
RIN67630:
... weißt nie, wo deine Prüfspitze rutschen kann. Mit einer galvanische Trennung schmort schlimmstenfalls deinen Arduino, ohne könnte es auch dein PC treffen.
Die Prüfspitze hängt jetzt über einen 10 k-Widerstand an A6, d. h. selbst wenn die Prüfspitze an eine 230 V-Leitung gerät, fließen maximal 23 mA. Wieso dann auch der PC geschrottet werden sollte, ist mir nicht klar – immerhin hängt die Prüfspitze am Arduino und nicht am PC.
RIN67630:
Ich würde auch ...
Dann brauchst du wahrscheinlich noch ein Kondensator, damit auch Wechselspannungen bearbeitet werden können, letztlich ist es ein Oszi...
Den Kondensator müsste ich meinem Verständnis nach schaltbar von A6 gegen GND schalten. Richtig? Welche Daten sollte der Kondensator haben und warum? Wie man das rechnet, weiß ich nicht, würde mich über eine Erklärung aber sehr freuen.
Was die Knöpfe an D9-D12 angeht: Da war eh noch ein Fehler im Schaltplan. Die Knöpfe hängen jetzt an A0, A1 und A2.
Da die Pins D9-D12 für gelegentliche SPI-Spiele frei bleiben sollen, sind jetzt nur noch die Pins D13 und A3 für andere Sachen frei. Wenn mir (oder Euch) keine sinnvolle Verwendung dafür einfällt, lasse ich das mal so. Einwände?
Gruß
Gregor
gOszi.pdf (8.74 KB)
Sehr schön, nur warum nimmst du für die Taster nicht einen analogen Eingang und fragst die Tasten analog ab, wurde doch auch schon vorgeschlagen. Dann hast du noch sehr viel frei.
Oder alternativ per I2C-Expander.
HotSystems:
... warum nimmst du für die Taster nicht einen analogen Eingang und fragst die Tasten analog ab, wurde doch auch schon vorgeschlagen. Dann hast du noch sehr viel frei.
Das mit der analogen Tastenabfrage hätte den Nachteil, dass ich weitere Widerstände bräuchte. Mir kommt es wie gesagt auch darauf an, dass die Schaltung mit möglichst wenig Teilen auskommt.
Andererseits wäre die analoge Tastenabfrage etwas, wo ein Anfänger etwas Interessantes lernen könnte.
Ich bin ein bisschen unentschieden, wobei die geringe Teileanzahl ein ziemlich starkes Argument ist. Außerdem sind, wie ich im Nachhinein gesehen habe, auch noch die Pins D0-D3 frei. Die möchte ich auch frei lassen, damit nichts mit dem USB ins Gehege kommt und damit bei Bedarf extern ge-Interrupt-et werden kann.
Was D13 angeht: Da muss eigentlich nichts weiter ran, finde ich. D13 ist ja mit der Onboard-LED verschaltet, die man bei Bedarf schalten kann. Und wenn dann immer noch ein analoger Pin frei ist, stört mich das nicht. Es gibt viele Anwendungen, bei denen sehr viele Pins unbenutzt sind.
Gruß
Gregor
Ok, wenn das dein Ziel ist, verstehe ich den Grund.
gregorss:
Das mit der analogen Tastenabfrage hätte den Nachteil, dass ich weitere Widerstände bräuchte. Mir kommt es wie gesagt auch darauf an, dass die Schaltung mit möglichst wenig Teilen auskommt.
Andererseits wäre die analoge Tastenabfrage etwas, wo ein Anfänger etwas Interessantes lernen könnte.
Ich bin ein bisschen unentschieden, wobei die geringe Teileanzahl ein ziemlich starkes Argument ist. Außerdem sind, wie ich im Nachhinein gesehen habe, auch noch die Pins D0-D3 frei. Die möchte ich auch frei lassen, damit nichts mit dem USB ins Gehege kommt und damit bei Bedarf extern ge-Interrupt-et werden kann.
Was D13 angeht: Da muss eigentlich nichts weiter ran, finde ich. D13 ist ja mit der Onboard-LED verschaltet, die man bei Bedarf schalten kann. Und wenn dann immer noch ein analoger Pin frei ist, stört mich das nicht. Es gibt viele Anwendungen, bei denen sehr viele Pins unbenutzt sind.
Gruß
Gregor
D13 wird auch fest für SPI gebraucht. Lass es lieber frei.
Wenn es mit wenig Bauteile und Lötstellen gehen muss, kannst Du immer noch die vielen Tasten durch einen Poti und ein einfacher Knopf ersetzen.
Der Poti wählt die funktion, der Knopf führt sie aus.
Der Vorteil ist, dass Du die Funktion auf dem Gehäuse beschriften kannst und so Platz auf dem knappen Display sparst.
Wenn man schlau programmiert, kann man auch damit gut und komfortabel Einstellfunktionen wie Triggerpegeln oder Zeitauflösung umsetzen. (z.B. +- duch Veränderung der Potispannung um den letzten Punkt)
Ich bin schon an dein "Oszi" interessiert, allerdings mehr als grafische Visialisierung für langsameren Prozesse
(~1 Pixel pro Sekunde)
gregorss:
Ich habe den Schaltplan mal aktualisiert. Siehe Anhang.
Die Prüfspitze hängt jetzt über einen 10 k-Widerstand an A6, d. h. selbst wenn die Prüfspitze an eine 230 V-Leitung gerät, fließen maximal 23 mA. Wieso dann auch der PC geschrottet werden sollte, ist mir nicht klar – immerhin hängt die Prüfspitze am Arduino und nicht am PC.
Den Kondensator müsste ich meinem Verständnis nach schaltbar von A6 gegen GND schalten. Richtig?
Welche Daten sollte der Kondensator haben und warum? Wie man das rechnet, weiß ich nicht, würde mich über eine Erklärung aber sehr freuen.
Der Kondensator (z.B. 470nF oder mehr, aber kein Elko) sollte in Serie mit dem 10KΩ Widerstand geschaltet werden und mit einem Schalter überbrückbar werden. Er dient ggf. eine unerwünschte DC Spannungskomponente im Signal zu eliminieren.
Dann brauchst Du noch einen Widerstand von ca 100KΩ zwischen A6 und Masse, damit sich der Kondensator entladen kann.
RIN67630:
Wenn es mit wenig Bauteile und Lötstellen gehen muss
Nein, das muss es nicht. Ich möchte das Ding nur einfach und auch für Anfänger verständlich halten. Je mehr ich darüber nachdenke, desto mehr finde ich, dass das ein supergutes Einsteiger-Projekt sein könnte. Man kann recht „klein“ anfangen, es Stufe für Stufe ausbauen und jedes Mal etwas dabei lernen.
Und wenn man fertig ist, hat man sich mit geringem Aufwand das beste Werkzeug gebaut, das sich ein Elektroniker wünschen kann (sehr klein und eingeschränkt halt).
Gruß
Gregor
PS: Deine Idee mit dem Poti+Knopf ist geil. So kommt auch der letzte freie Pin zu seinem Einsatz
Der Knopf fällt halt weg, aber davon gibt es genug, das lässt sich bestimmt kompensieren.
RIN67630:
Dann brauchst Du noch einen Widerstand von ca 100KΩ zwischen A6 und Masse, damit sich der Kondensator entladen kann.
Das verstehe ich nicht. Entlädt sich der Kondensator denn nicht über A6 wenn er benutzt wird? Und wenn er überbrückt ist, ist er ja eh kurzgeschlossen.
Ich gebe zu, dass ich kein Elektroniker bin
Außerdem hätte ich das Problem, dass der Widerstand in den Schaltplan müsste und ich nicht weiß, wie er dort reinkönnte, ohne dass hässliche Routen entstehen.
Gruß
Gregor
PS: Die aktuelle Version des Schaltplans im Anhang.
gOszi.pdf (10.1 KB)
Im Anhang eine nochmal leicht geänderte Version des Schaltplans. Für das Poti an A3 habe ich 4,7 kOhm gewählt, weil das der einzige Wert war, den ich als Poti herumliegen hatte.
Gruß
Gregor
gOszi.pdf (10.1 KB)
gregorss:
Das verstehe ich nicht. Entlädt sich der Kondensator denn nicht über A6 wenn er benutzt wird?
PS: Die aktuelle Version des Schaltplans im Anhang.
A6 hat ein Widerstand von ~100MΩ. Das ist viel zu hoch, um den Kondensator zu laden/entladen.
Du brauchst den Widerstand, wirklich.
Der Taster "Reset" ist m.E. Luxus. Braucht keiner.
RIN67630:
Dann brauchst Du noch einen Widerstand von ca 100KΩ zwischen A6 und Masse, damit sich der Kondensator entladen kann.
Ich würde eher zu 1MOhm tendieren. Das ist der übliche Eingangsswiderstand für ein Oszi.
Zum Poti: Warum nimmst Du nicht einen Drehimpulsgeber? Der braucht zwar 2 Eingänge, kann aber auch zumindest die Up-Down-Taster ersetzen. Wenn der dann noch einen Taster (als OK-Eingabe) integriert hat, ist das ein sehr elegantes Bedienelement zum Navigieren und z.B. um die Zeitbasis einzustellen.
RIN67630:
A6 hat ein Widerstand von ~100MΩ. Das ist viel zu hoch, um den Kondensator zu laden/entladen.
Du brauchst den Widerstand, wirklich.
Das mit den 100 MOhm wusste ich nicht. Nunja, dann werde ich mal sehen, ob ich den Widerstand in den Schaltplan bekomme, ohne dass es hässlich wird.
RIN67630:
Der Taster "Reset" ist m.E. Luxus. Braucht keiner.
Ja. Als ich den eingebaut habe, war ich schon ein bisschen müde.
Zum Poti: Warum nimmst Du nicht einen Drehimpulsgeber? Der braucht zwar 2 Eingänge, ...
Der Gedanke, einen Rotationsencoder zu nehmen, kam mir natürlich. Nur sind inzwischen alle Pins irgendwie belegt oder sollen für SPI und andere Späße frei bleiben. Ein Ausweg wäre, auf die Möglichkeit, extern Interrupt-en zu können, zu verzichten und den Rotationsencoder an D2 und D3 anzuschließen. Das mit den externen Interrupts ist vielleicht auch nicht so wichtig – verglichen mit dem Komfort, den ein Rotationsencoder bietet.
Gruß
Gregor
MicroBahner:
Ich würde eher zu 1MOhm tendieren. Das ist der übliche Eingangsswiderstand für ein Oszi.
Zum Poti: Warum nimmst Du nicht einen Drehimpulsgeber? Der braucht zwar 2 Eingänge, kann aber auch zumindest die Up-Down-Taster ersetzen. Wenn der dann noch einen Taster (als OK-Eingabe) integriert hat, ist das ein sehr elegantes Bedienelement zum Navigieren und z.B. um die Zeitbasis einzustellen.
Drehimpulsgeber: Geht natürlich auch.
Die Wahrscheinlichkeit, dass ein Poti in der Schublade liegt, ist jedoch größer.
RIN67630:
Die Wahrscheinlichkeit, dass ein Poti in der Schublade liegt, ist jedoch größer.
Das ist sicher richtig. Der Bedienkomfort ist aber auch deutlich höher.
gregorss:
Der Gedanke, einen Rotationsencoder zu nehmen, kam mir natürlich. Nur sind inzwischen alle Pins irgendwie belegt oder sollen für SPI und andere Späße frei bleiben.
Mit einem Drehencoder kannst Du doch locker auf die Up-Down Taster verzichten - das erledigt der Drehencoder mit. Dann hast Du genau die beiden Eingänge frei, die der Drehencoder braucht.
MicroBahner:
Der Bedienkomfort [eines Rotationsencoders] ist aber auch deutlich höher.
Das ist ein starkes Argument.
MicroBahner:
Mit einem Drehencoder kannst Du doch locker auf die Up-Down Taster verzichten - das erledigt der Drehencoder mit. Dann hast Du genau die beiden Eingänge frei, die der Drehencoder braucht.
Ja bzw. nein. Die Up-/Down-Taster werden für viele Dinge benötigt, z. B. um irgendwann einen Cursor bewegen zu können (Steuerkreuz, Stichwort Komfort).
Den Drehencoder bringe ich unter, indem ich auf einen der ext-Interrupt-Eingänge verzichte, der andere benötigte Eingang entsteht dadurch, dass das Poti wegfällt. Sobald ich das im Schaltplan umgesetzt habe, poste ich ihn.
Gruß
Gregor