Hallo, suche eine günstige Möglichkeit (<100€), zwei DC-Spannungen über ca. 20 Stunden zu überwachen. Die Auflösung kann dabei relativ gering sein (ca. 20k-samples/s). Eine 8-bit-Auflösung der Messsignale müsste reichen. Ein Zwei-Kanal-USB-Oszilloskop für den PC wäre wohl das richtige. Bevor ich jetzt irgendein China-Teil bei der Bucht hole, wollte ich hier fragen, ob jemand eine Empfehlung für ein konkretes Gerät oder ein USB-DSO über hat. Danke und viele Grüße!
Für sowas setze ich einen gebrauchten Linienschreiber (old school auf Papier) für 15 Euro aus der 1-2-3 Bucht ein. Da diese Teile fast immer eine (variable) 0-Punkt Unterdrückung haben, sind auch kleine Abweichungen vom Sollwert leicht sichtbar zu machen.
Danke für die Antwort! Schöne Idee! Ich selber hatte zwischenzeitlich schon Versuche mit einer Soundkarte (line in) unternommen. Für die DC-Messung habe ich die Koppelkondensatoren der Eingänge überbrückt. Mein Plan war, die Signale der beiden Kanäle mit Audacity aufzuzeichnen. Leider funktioniert das so nicht. Sobald der Koppelkondensator überbrückt ist, gibt die Soundkarte 0,0V auf beiden Kanälen aus, egal, wie hoch die jeweilige DC-Eingangsspannung ist. Nimmt man die Brücke vom Koppelkondensator wieder raus, funktioniert der Soundkarteneingang wie gewohnt. Wenn jemand weiß, wie man eine Soundkarte für DC-Messungen bis 7V umrüsten kann, bitte posten! Der Chip auf der verwendeten Soundkarte ist übrigens ein STAC9721, Datenblatt im Anhang.
dan1el schrieb: > Wenn jemand weiß, wie man eine Soundkarte für DC-Messungen bis 7V > umrüsten kann, bitte posten! z.B. je Kanal einen U/f Wandler davorsetzen. Macht aus DC in eine variable Frequenz, die Du dann aufzeichnen kannst.
Andrew Taylor schrieb: > z.B. je Kanal einen U/f Wandler davorsetzen. Kreative Idee!!! Mir ist allerdings der Aufwand etwas hoch. Dann würde ich schon eher ein 50€-Hantek-Oszi bei der Bucht holen. Mich würde aber wirklich mal interessieren, ob und wenn ja wie man die Eingänge der Soundkarte als normale DC-AD-Wandler benutzen kann.
dan1el schrieb: > Mich würde aber wirklich mal interessieren, ob und wenn ja wie man die > Eingänge der Soundkarte als normale DC-AD-Wandler benutzen kann. Habe jetzt die Antwort beim Googeln gefunden, die Soundkarte hat wohl einen softwaremäßigen DC-Filter eingebaut. Zurück zur eigentlichen Frage: Hat jemand eine Empfehlung für ein konkretes 2-Kanal-USB-DSO bis 100€ oder will ein solches loswerden?
Hallo dan1el, vielleicht ist das hier für dich geeignet: "http://yveslebrac.blogspot.de/2008/10/cheapest-dual-trace-scope-in-galaxy.html". Das Ding läßt sich auch auf Lochraster aufbauen, es benutzt die A/D-Wandler des Tiny45. Vielleicht gibt es das auch schon irgendwo fertig zu kaufen? Oder jemand in deinem Umfeld ist in der Lage es zu bauen (man benötigt ein Programmiergerät für Tiny45), oder wenigstens den Tiny45 zu flashen! Gruß. Tom
Was für eine Samplingfrequenz brauchst du? Diese angabe fehlt noch... Bei einem Sample / h würde auch der interne flash eines atmegas reichen... Gruß Jonas
jo schrieb: > Was für eine Samplingfrequenz brauchst du? Diese angabe fehlt noch... dan1el schrieb: > (ca. 20k-samples/s)
Nee, du hast geschrieben die "Auflösung"...
>Die Auflösung kann dabei relativ gering sein (ca. 20k-samples/s)
Der Unterschied zwischen Auflösung und Samplingfrequenz ist schon
eklatant.
Gruß Jonas
1. Ich habe gar nichts geschrieben, ich habe zitiert. 2. Jeder normale Mensch kann sich aus dem Kontext herleiten, was gemeint war.
Das macht also: 2*8*20000 = 320.000 bits /s macht bei 20 stunden aufnahmedauer: 320.000 3600 20 8 1024 = 2.812.500 Gb. Also bleibt nur der PC als Medium... Gruß Jonas
>Jeder normale Mensch kann sich aus dem Kontext herleiten, was gemeint >war. Und den anderen dumm sterben lassen... Bestimmte Begrifflichkeiten sollten einfach passen. Gruß Jonas
20000Samples/s * 8bit *60s/min *60min/h*20h=1,373 GB Da muss wahrscheinlich was her was an den PC angeschlossen wird, oder großer Speicherkarte.
>20000Samples/s * 8bit *60s/min *60min/h*20h=1,373 GB er will 2 signale aufzeichnen >Das macht also: 2*8*20000 = 320.000 bits /s >macht bei 20 stunden aufnahmedauer: 320.000 3600 20 8 1024 = >2.812.500 Gb. Also bleibt nur der PC als Medium...
Ja, dann das ganze *2 War übrigens nicht zur Verbesserung deiner Rechnung gemeint, habe nur langsam am Handy getippt. Wobe ich mit dem Ausdruck: 2.812.500Gb recht wenig anfangen kann.
Gerald G. schrieb: > 2.812.500Gb Es könnten damit Gigabarn gemeint sein. http://de.wikipedia.org/wiki/Barn
>Es könnten damit Gigabarn gemeint sein. >Jeder normale Mensch kann sich aus dem Kontext herleiten, was gemeint >war. Quitt? Gruß Jonas
Tut mir leid, ich konnte es mir nicht verkneifen ;) Ja, quitt :o)
Danke für die Feststellungen! Lustig zu lesen :O) Zurück zur eigentlichen Frage: Hat jemand eine Empfehlung für ein konkretes 2-Kanal-USB-DSO bis 100€, das in Frage kommt - oder will ein solches loswerden?
Hall Leute, ich habe grad bemerkt, daß der direkte Link zum USB-Scope nicht richtig funktioniert (die wesentlichen Infos werden nicht gezeigt). Mit dem indirekten Link, über OBDEV, sollte es gehen. Dort nach "USB Scope" suchen. http://www.obdev.at/products/vusb/prjdata.html Ich sitze grad dran, mir eine Platine dafür zu machen und das Ding mal auszuprobieren. Alles dafür Benötigte ist auf der Seite vorhanden. Gruß. Tom
TomA schrieb: > ich habe grad bemerkt, daß der direkte Link zum USB-Scope nicht richtig > funktioniert Danke für den Link, hatte mich schon gewundert. Schönes Projekt! Habe leider keine Zeit, die NET C# Software an meine Bedürfnisse anzupassen. Brauche softwaremäßig etwas mit Fertiglösung.
Hallo Leute, ich habe das USB-Scope nun aufgebaut und getestet, es funktioniert überraschend gut! Probleme gab es mit den Fuse-Bits des Tiny45, da findet man unterschiedliche Angaben. Bei mir funktioniert es mit efuse=0xFF, hfuse=0xDF und lfuse=0xF1. Im Moment habe ich nur die Funktion getestet, eine genauere Prüfung steht noch aus. Den Trimmer des Originals ließ ich weg, denn ich plane an den Eingängen meine eigene Messhardware für Spannung, Strom, Temperatur, ..... anzukoppeln. Unter WindowsXP läuft es tadellos, unter WindowsVista läuft die mitgelieferte Anwendersoftware nicht. Das Scope wird im Gerätemanager aber richtig erkannt. Bei höheren Versionen von Windows gibt es vermutlich auch Probleme (laut FAQ der Homepage). Ist aber nicht so schlimm, denn die mitgelieferte Anwendersoftware dient ja nur zum ausprobieren. Eine angepaßte Meßsoftware muß man sich ohnehin selbst schreiben. Dafür hat der Autor, Yves Lebrac, die Quellen seiner Software auf der Homepage veröffentlicht. Die Bilder zeigen ein Foto der Platine mit externen Trimmer zur Spannungsvorgabe auf einem Kanal. Das mitgelieferte Anwendungsprogramm mit der Aufzeichnung einiger "Potidreher". Und den Eintrag im Gerätemanager der Systemsteuerung, das Scope meldet sich als Gamecontroller an. Die Software zeigt einen Meßbereich von 0mV bis 2350mV, dahinter steckt aber nur der 10Bit A/D-Wandler des Tiny45 (also 0-1023). Daß sich damit eine Abtastrate von 20kSamples erreichen läßt, glaube ich eher nicht. Genaueres wird ein Blick in die Software zeigen. Ich finde es aber ein tolles und vor allem unkompliziertes Projekt. Gruß. Tom
Hallo dan1el, falls du C# kannst, oder jemand kennst der das kann, dürfte es einfacher sein das bestehende Anwenderprogramm umzuschreiben, als was Neues zu programmieren. Da die Messwerte im Programm bereits vorhanden sind, braucht man sie eigentlich nur noch auf Datenträger zu speichern. Durch neu compilieren dürfte auch das Problem mit den neueren Betriebssystemen gelöst sein. Problematischer dürfte die Samplingrate sein. Ich fürchte mehr als ein paar kSamples/s sind da nicht möglich. Gruß. Tom
Hallo Leute, habe mich ein wenig mit dem USB-Scope beschäftigt und weiß nun etwas mehr darüber. Yves Lebrac selbst, geht davon aus, eine Samplerate von 250 Messungen/s nicht zu erreichen. Die Probleme mit der Anwendersoftware liegen am Typ des Betriebssystems. Mit 32Bit-System funktioniert es, mit 64Bit-Systemen nicht. Unter Vista64 läuft das Programm nicht und ich kann es auch nicht neu compilieren. Unter XP (32Bit) läuft es und läßt sich problemlos compilieren und damit auch bearbeiten. Ich habe die Quelldateien (MSVC#2005) mit MSVC#2008 geöffnet und compiliert, heraus kam das Programm, das im angefügten Bild zu sehen ist. Für 64Bit-Systeme muß man die Anwendersoftware neu aufsetzen. Gruß. Tom
Hallo Tom, Danke für Deine Mühe!!! TomA schrieb: > falls du C# kannst Kann leider kaum C# und kenne auch niemanden, der es besser kann. 200 Messungen/s könnten für mein Projekt aber bereits ausreichen. Schaue mir das Projekt morgen mal genauer an.
Hallo dan1el, habe jetzt das Programm erweitert, daß es die gemessenen Daten auch speichert. Wenn das Programm gestartet wird, schreibt es die Messwerte in eine Datei Namens "UsbScope.dat". Bei jedem Start des Programms wird die Datei neu angelegt, sie überschreibt also eine bereits vorhandene Datei. Die Daten liegen als Text, in der Datei. Die Form ist dabei: Wert-Kanal1(x), ein Komma, WertKanal-2(y), Zeilenende -> xxxx,yyyy<CR> Das Bild "CSFenster.png" zeigt das Fenster der C#-IDE und rechts unten den Eintrag für die Ereignisse des Fensters. Dort ist die Beenden-Funktion zu ergänzen. Das Bild "CSFenster1.png" zeigt den entscheidenden Ausschnitt, zur besseren Lesbarkeit, vergrößert. Im Archiv "UsbScope.zip" befindet sich das geänderte Programm und die zugehörige DLL für Win32. Und die Textdatei "Aenderung.txt" enthält eine Beschreibung der Änderungen am Quellcode. Das ganze soll kein komplettes Anwendungsprogramm sein, sondern als Anregung für eigene Erweiterungen dienen. Wünsche viel Erfolg und gutes Gelingen. Gruß. Tom
Hallo Leute, habe das Programm nochmal überarbeitet. Jetzt gibt es eine CheckBox, mit welcher das speichern ein- und ausgeschaltet wird. Nach Programmstart ist speichern passiv, erst wenn ein Häckchen in die CheckBox "Save" gesetzt wird, zeichnet das Programm auf. Wird das Häckchen entfernt, stopt auch die Aufzeichnung. Zudem wird nun nicht immer mit maximaler Geschwindigkeit aufgezeichnet, sondern die Rate ist an die Geschwindigkeit der Anzeige gebunden und kann mit ihr verändert werden. In der Datei "Aenderung.txt" sind die Änderungen enthalten. In "UsbScope1.zip" befindet sich das neue Programm, einschließlich zugehöriger DLL. Nun kann man mit dem Programm sogar schon gezielt aufzeichnen. :) Gruß. Tom
Wie wärs denn damit wenn die Datei nicht nur UsbScope.dat heißt. Sondern ans Ende des Dateinamens Startzeit und Datum gehangen werden?
Hallo Leute, nachdem ich die Idee von Martin gut und einfach zu realisieren finde, habe ich sie ins Programm übernommen. Nun wird eine Datei mit dem Namen -> USC Tag Monat Jahr Stunde Minute.dat erzeugt. Beispiel: Datum 24.9.2014 12:05 -> USC2492014129.dat Dadurch überschreiben sich die Datensätze nicht mehr, sofern zwischen den Aufzeichnungen mindestens eine Minute liegt. Gruß. Tom
Hey TomA, super, Danke!!! Habe grade einige Attiny45-20 bestellt. Wenn sie da sind, baue ich das USBscope auf und bin jetzt schon sehr gespannt! Wenn du magst, poste die umgestrickten Dateien im "Projekte & Code-Forum" http://www.mikrocontroller.net/forum/codesammlung Ich bin sicher, dass viele andere dieses Projekt auch nachbauen wollen! Martin Wende schrieb: > Wie wärs denn damit wenn die Datei nicht nur UsbScope.dat heißt. > Sondern ans Ende des Dateinamens Startzeit und Datum gehangen werden? Das klingt nach einer guten Idee! Viele Grüße, Daniel
Hallo Leute, jetzt musste ich doch noch eine Änderung durchführen. Im Dateinamen werden nun die Zahlen immer in voller Breite eingefügt (z.B: 5 = 05, 9 = 09), damit es keine Zweideutigkeiten (1.1.2015 = USC112015....) gibt. Mit dem posten warte ich noch ein wenig, vielleicht gibt es noch kleine Korrekturen am Programm. Gruß. Tom
Danke für das Zip-file! TomA schrieb: > Mit dem posten warte ich noch ein wenig, vielleicht gibt es noch kleine > Korrekturen am Programm. Gute Idee!!! Eine Schutzschaltung für die ACD-Eingänge wäre sicher auch nicht schlecht. Vielleicht könnte man sogar einen Operationsverstärker vorschalten, um auch hochohmig messen zu können (eventuell mit jumperbaren Koppel-Kondensatoren für AC-Messungen). Dort könnte man sicher auch einen Überspannungsschutz einbauen! Wenn die ADCs des Tiny45 so hochohmig sind wie bei den anderen AVRs, könnte man standardmäßig einen Spannungsteiler aus jeweils zwei 10k-Widerständen vorsehen. Dann könnte man einerseits bis 10V messen und andererseits hätte man einen Schutzwiderstand von 10k vor jedem ADC-Eingang (mit einem nachgeschalteten Kerko auch gut zur HF-Blockung geeignet).
Hallo Leute, hier noch der Schaltplan meiner Hardware. Ist noch nicht optimal, funktioniert aber ganz gut. Die 22-Ohm Widerstände sind etwas niederohmig an der Stelle. Ich weiß noch nicht, ob die Widerstände vergrößern (33/47/56-Ohm), oder die Spannung am Tiny verkleinern? In der Originalschaltung befinden sich 3,9V-Zenerdioden, anstelle meiner 3,3V-Typen. Das scheint mir etwas hoch für den USB-Port meiner PC's. Dazu ein Bild der Software, wie sie im Moment aussieht. Die hinzugekommene CheckBox "Save" dient dem ein- auschalten der Speicherung. Gruß. Tom
Hallo dan1el, so könnte ein Gleichspannungs-Voltmeter aussehen. Der Ausgang der Schaltung kommt direkt an den A/D-Eingang des Tiny45. Das ganze zweimal aufgebaut (der OP beinhaltet zwei Verstärker), für jeden A/D-Kanal einmal. Der Eingangswiderstand ist 10Megaohm in allen Bereichen. Bei 1000V muß man auf die geforderten Sicherheitsabstände achten, mit einem Jumper als Umschalter ist das nicht machbar. Man kann den 1000V Bereich aber auch weglassen. Mit Trimmer Tr1 wird, bei kurzgeschlossenem Eingang, der Nullpunkt eingestellt. Mit Trimmer Tr2 der Messwert, bei bekannter Eingangsspannung. Ich habe die Schaltung noch nicht ausprobiert, aber sie ist so einfach, daß sie funktionieren muß. Auf einem Steckbrett ist sie schnell überprüft und angepaßt. Leider fehlt mir im Moment die Zeit dafür. Für die negative Versorgungsspannung (-5V) des OP, muß noch ein Spannungsinverter dazu. Man kann dafür etwas mit NE555 oder 7660 verwenden, um aus den +5V von USB auch noch die -5V zu machen. Pläne dafür gibt es im Netz genug, das muß nur ein paar mA können. Gruß. Tom
Hallo TomA, vielen Dank für die Schaltbilder!!! 1000V müssen nicht sein. Ansonsten super Idee mit dem Messverstärker! In einem anderen Beitrag hat jemand hier die Benutzung eines Tiny45 kommentiert: Beitrag "Re: Habe eine Frage zu Hantek 6022BE USB-DSO?" Vielleicht sollte man überlegen, die Firmware auf einen Atmega88 umzuschreiben, wenn das die mögliche Sampling-Rate erhöht. Das erst mal als Zukunftsidee in den Raum gestellt, habe leider im Moment auch nicht viel Zeit dafür. Langfristig könnte das aber eine gute Sache sein! Viele Grüße und einen schönen Abend, Daniel
Hallo dan1el, ich habe auch schon darüber nachgedacht, einen echten USB-Chip zu nehmen. Durch den Software "USB-Controller" geht viel Ausführungszeit verloren. Das Ganze neu aufzurollen ist aber ein hoher Aufwand und wird trotzdem kein schnelles Oszi werden. Da ist es vermutlich einfacher und kostengünstiger, sich ein UsbOszi vom Kinamann zu besorgen? Ich sehe das UsbScope auch weniger als Oszi, sondern als eine Art Kennlinienschreiber/Datenlogger zum Aufzeichnen/Anzeigen langsamer Vorgänge. Damit kann man wunderbar die Ladespannung und den Temperaturverlauf beim Akkuladen erfassen. Auch die Temperatur ist eine Größe, welche sich normalerweise nicht Sprughaft ändert und damit gut zu erfassen. Auch als Multimeter für den PC ist es gut zu gebrauchen (3Messungen/s). Kommt einfach nur auf den Messvorsatz vor dem UsbScope an. Das Teil, durch Hardware-USB, schneller zu machen ist eine Aufgabe, wenn mal viel Zeit übrig ist. Das ist bei mir aber so schnell nicht der Fall. Habe das UsbScope, mit der aktuellen Anwendersoftware, jetzt auch unter Windows7 (32Bit) ausprobiert - läuft tadellos. Gruß. Tom
Nicht ganz 20 kS/s, sondern 10, aber sonst ideal geeignet: http://sine.ni.com/nips/cds/view/p/lang/de/nid/211872
Hallo Karl Otto, bei der Leistung zu dem Preis lohnt es nicht sich selbst etwas zu bauen. Danke für den Link. Das kleine UsbScope hat seine Berechtigung durch seinen sehr einfachen Aufbau und weil große Teile des Projekts bereits existieren. Noch ein paar Messwandler zum davorschalten und gut ist es. Wenn es schneller und/oder genauer sein muß, ist eine fertige Lösung, wie im Link, günstiger. Gruß. Tom
Du hast schon gesehen dass man dafür spezielle Software braucht? Und Du hast sicher auch gesehen dass die Software ein Vielfaches der Hardware kostet. Ohne Software ist das Teil ein USB-Briefbeschwerer.
Hallo Manfred, danke für den Hinweis, darauf habe ich noch gar nicht geachtet. :( Mir ist auch noch ein weiterer Vorteil der DoItYourself-Lösung in den Sinn gekommen. Wenn man Hard- und Software selbst macht, hat man natürlich die volle Kontrolle über sein Projekt. Man kann es jederzeit an die eigenen Bedürfnisse anpassen. Somit ist es doch keine so schlechte Idee, die Lücke zwischen Multimeter und Oszilloskop mit eigenen µC-Messgeräten zu schließen. Es muß halt einfach, kostengünstig und nachbausicher sein. Gleiches gilt für die Software. Wenn höhere Ansprüche gefordert sind, kann man immer noch fertige Produkte kaufen. Aber Schritt für Schritt, zunächst gilt es, das UsbScope zu einem brauchbaren Spannungsmessgerät zu machen. Dieses kann dann als Basis für viele verschiedene Messgeräte dienen. Als nächsten Schritt plane ich die Skalierung der Software zu ändern. Der Tiny besitzt einen 10Bit A/D-Wandler und kann damit 1024 unterschiedliche Werte abbilden. Dazu sollte ein lückenloser Messbereich von 0 bis 1000mV, in 1mV Schritten, gehören. Im Moment macht die Software einen Bereich von 0 bis 2350mV daraus, welcher natürlich Lücken aufweist. Danke und Gruß. Tom
TomA schrieb: > USC2492014129.dat Möglicherweise bringt es Vorteile, die Daten im .wav-Format abzuspeichern. Dann kann man sie z:B. mit Audacity als Stereospur genauer unter die Lupe nehmen und noch jede Menge mathematische Operationen damit durchführen. außerdem ließen sich die Daten so leicht schneiden, verwalten und wahrscheinlich auch als MP3 komprimieren.
Hallo HaraldDräger, ich denke das Beste wäre die Daten platzsparend (zwei 10/12/14Bit-Werte in drei Byte) binär zu speichern und Softwarekonverter, als ein oder mehrere Programme, für die verschiedenen Formate zum Projekt hinzufügen. Ich weiß, so ein Programm gibt bereits (zumindest für Audio). So schränken wir uns am wenigsten ein und das Grundsystem bleibt überschaubar. Gruß. Tom
Hallo Leute, ich sehe grad einen Fehler im vorigen Beitrag. Wenn drei Byte (24Bit) zum speichern von zwei, gleich breiten, Werten genutzt werden, dann kann jeder einzelne Wert höchstens 12Bit breit sein! 14Bit ist so also nicht möglich. 12Bit ist aber völlig ausreichend, das sind 4096 unterschiedliche Werte, also gut geeignet für ein Grundgerät mit einem Messbereich von -1999mV (-2000) bis +1999mV (+2000) - Wie bei einem 3,5stelligen Multimeter. Zudem deckt sich diese Datenbreite mit den A/D-D/A-Wandlern in den STM32Fxx µControllern. :) Da ist also einiges denkbar, doch das ist noch Zukunftsmusik. Erst muß mal das 10Bit-Grundgerät brauchbar funktionieren. Gruß. Tom
TomA schrieb: > Nun wird eine Datei mit dem Namen > -> USC Tag Monat Jahr Stunde Minute.dat erzeugt. > > Beispiel: Datum 24.9.2014 12:05 -> USC2492014129.dat Das alte deutsche Datumsformat ist für solche Aktionen denkbar ungeeignet, da jedes Sortieren nach Dateinamen zum Scheitern verurteilt ist. Wesentlich praktischer wäre ein Format nach der seit 1992 gültigen Norm ISO 8601 bzw. EN 28601. Der Dateiname könnte dann z.B. lauten
1 | USCyyyymmdd_hhmm.dat -> USC20140924_1205.dat |
Hallo Tom, man kann ja eventuell für schnelle Messungen einfach die ADC-Auflösung verringern, um einen höheren Datentransfer möglich zu machen. Bei langsameren Samplingraten würde man dagegen die volle Auflösung nutzen. Kanst du dich hier eigentlich einloggen? Falls ja, kannst du mal eine PN schicken? Viele Grüße und schönen Abend! Daniel
Hallo Mike, wenn es die Norm gibt, dann werden wir sie auch verwenden. Vielen Dank für die Info, so kann furcht...äh fruchtbare Zusammenarbeit aussehen. :) @all Im Anhang ist das geänderte Programm, es bildet den Dateinamen nun in der normgerechten Form: USCyyyyMMdd_hhmm.dat -> USC20140924_1205.dat Als nächstes wurde in der Anzeige des Programms aus den "mv" nun "mV". Und zuletzt wurde noch das anlegen einer neuen Datei verändert. Sie wird nun nicht mehr beim Programmstart, sondern beim anklicken des Save-Button erzeugt. So ist es jetzt möglich das Programm, ohne speichern, laufen zu lassen, ohne daß dabei jedesmal eine leere Datei erzeugt wird. Im Anhang das neue Programm und die Quelltextdatei mit den Änderungen. Auf die DLL habe ich verzichtet, sie ist in den vorigen ZIP's enthalten. @Daniel Ich werde mal versuchen mich hier anzumelden, habe aber keinen Dunst wie das geht. Zunächst werfe ich aber einen Blick auf die Skalierung des Anwenderprogramms. Gruß. Tom
Schau dir mal das Analog Discovery an. Mittels Matlab kannst du das ganze dann einfach auswerten, preislich gesehen aber nur für Studenten oder Leute die Matlab bereits besitzen interessant.
TomA schrieb: > @Daniel > Ich werde mal versuchen mich hier anzumelden, habe aber keinen Dunst wie > das geht. Zunächst werfe ich aber einen Blick auf die Skalierung des > Anwenderprogramms. Hi Tom, Anmelden ist eigentlich ganz einfach. Oben bei Forenliste | Neuer | Beitrag | Suchen | Anmelden | Benutzerliste | Bildergalerie | Hilfe | Login Auf "Anmelden" klicken. Name und Emailadresse eingeben, fertig. Manche Nutzer (wie ich) kürzen dort den Nachnahmen ab. Dann könnte man sich zu dem Projekt hier auch direkt über PN kurzschließen. Die Tiny45-Controller sind heute angekommen, werde gleich mal eine Platine entwerfen. Gibts was neues zur Skalierung? Viele Grüße, Daniel
Hallo Daniel, das einloggen war wirklich einfach. :) Ja, es gibt etwas neues von der Skalierung. Habe mir den ADC des Tiny45 im Datenblatt mal angesehen. Der kann mit verschiedenen Referenzen arbeiten. So wie es aussieht benutzt Yves Lebrac in seiner Firmware die 2,56V interne Referenz. Das bedeutet er bildet, mit den 10Bit des Wandlers, einen Spannungsbereich von 0mV bis 2560mV, mit einer Schrittweite von 2,5mV, ab. Diese hohe Eingangsspannung ist für ein Messgerät nicht gut geeignet. Wenn man Beispielsweise den Strom über den Spannungsabfall an einem Shunt mißt, fällt der Shunt unnötig hochohmig aus. Besser ist es, einen Eingangsspannungsbereich von 0,0mV bis 100,0mV zu schaffen. Nun könnte ich die Firmware im Tiny verändern, doch da habe ich rechtliche Bedenken. Verändere ich das Gerät, muß es auch eine geänderte USB-PID haben - doch woher nehmen? Ich besitze zwar zwei PID's, aber die sind schon mit Geräten belegt. Am Besten die Firmware lassen, wie sie ist und eine Lösung ausserhalb des Tiny finden. Die Lösung ist auch relativ einfach. Der Tiny wird mit dem Messverstärker verheiratet. Dieser bekommt die Verstärkung 25,6fach, die Anwendersoftware teilt den empfangenen Wert wieder durch 25,6 und schon paßt es. Als Verstärker kann man den vom DCVoltmeter, aus einem vorigen Beitrag nehmen. Es muß nur die Verstärkung angepaßt und eine negative Versorgung beigefügt werden. Damit wäre dann das Grundgerät fertig, ein Voltmeter mit 100mV Empfindlichkeit. Die Frage ist nun eigentlich nur, wie präzise soll es denn sein? Bei einer Genauigkeit um die 3% kann mann sich einen Abgleich sparen - damit entfallen die vier Trimmer für Nullpunkt und Verstärkung der beiden Kanäle. Oder ein Kanal abgleichbar der Andere nicht? Oder mit ausgemessenen Festwiderständen? Das kann im Grunde jeder so machen, wie er es für sich am Besten befindet. Ich werde die Tage mal ein Muster des Messverstärkers zusammenstecken und überprüfen, ob das alles wie gewollt funktioniert. Gruß. Tom
Hallo Tom, ja, ein wirklich userfreundliches Forum hier. Ok, interne 2,56V-Referenz. Die Spannungen, die mich momentan interessieren, liegen alle im Bereich zwischen 0,5V und 10V. Sozusagen der umgekehrte Fall zur Shuntmessung. Habe heute mit dem Aufbau begonnen. Kenne mich mit USB-Geräten nicht gut aus, habe zwei Fragen. Zum einen habe ich nur Zenerdioden 2V4 und 6V2 auf Lager. Die Datenleitungen D+ und D- sollen laut Schaltplan aber mit 3V6-Dioden geschützt werden. Könnte ich die 2V4-Dioden einfach mit jeweils zwei halbwegs schnellen seriellen Si-Dioden "verlängern"? Wenn ja, muss noch eine antiparallele Si-Diode zugeschaltet werden (die quasi wie bei einer Zenerdiode die "normale" Diode in Gegenflussrichtung simuliert)? Die andere Frage ist, ob der Schirm vom USB-Kabel an der USBscope-Geräteseite mit Masse verbunden werden soll oder lieber grade nicht?! Tom Amann schrieb: > Die Frage ist nun eigentlich nur, wie präzise soll es denn sein? Gute Frage. Die Antwort hängt vielleicht auch damit zusammen, wie groß die Temperaturdriften sind. Was ist eigentlich eine USB-PID? Viele Grüße, Daniel
> Tom Amann schrieb: >> Die Frage ist nun eigentlich nur, wie präzise soll es denn sein? > > Gute Frage. Die Antwort hängt vielleicht auch damit zusammen, wie groß > die Temperaturdriften sind. Die interne Referenzspannung liegt lt. Datenblatt im Bereich von 2,3V bis 2,8V. Das ist natürlich schon ein ganz schön breiter Bereich. Der ADC-Innenwiderstand liegt bei typisch 100MOhm. Für meine Messungen bis ca. 10V setze ich fürs erste einen Spannungsteiler aus 68k zu 18k vor. Mal schauen, wie das klappt.
Daniel C. schrieb: > Könnte ich die 2V4-Dioden einfach mit jeweils zwei halbwegs schnellen > seriellen Si-Dioden "verlängern"? Wenn ja, muss noch eine antiparallele > Si-Diode zugeschaltet werden (die quasi wie bei einer Zenerdiode die > "normale" Diode in Gegenflussrichtung simuliert)? Ok, die Frage hat sich erledigt. http://vusb.wikidot.com/hardware :O)
Hallo Daniel, die VID ist die Vendor-ID, das ist die Hersteller-Identifikationsnummer. Zu jeder VID gehören die PID's (Produkt-ID), das sind die Produktnummern der Geräte. Ein USB-Gerät meldet sich unter beiden Nummern beim Betriebssystem an. Ich habe nun einen Meßverstärker aufgebaut und ausprobiert. Bin mit dem Ergebnis noch nicht zufrieden. Wenn ich den Meßverstärker mit dem Multimeter prüfe ist alles wie es sein soll. Am UsbScope angeschlossen verliert er seine Stabilität (schwankt bis 6 Digit) und seine Linearität. Die Meßspannung erreicht dann maximal 900mV. Das scheint am UsbScope zu liegen, vermutlich werden die Messwerte in der Firmware schon irgendwie bearbeitet? Da bleibt mir nur ein Blick in den Quellcode des Tiny. Die Stabilität läßt sich mit dem Low-Paß-Filter (LPF-Button) verbessern, schwankt dann aber immer noch bis zu 2 Digit. Sicher wird das durch einen ordentlichen Aufbau auf einer Platine besser, der "fliegende" Aufbau der Steckplatine kann alles mögliche einkoppeln. Ein Aufbau ohne Abgleichmöglichkeit scheint mir auch keine gute Idee. Je nach verwendeten OP weicht der Offset (Nullpunkt) stark ab. Da ist noch viel zu tun, bis das Grundsystem sauber läuft. Der große Toleranzbereich der internen Referenz des Tiny sollte mit der Verstärkungseinstellung des Messverstärkers ausgleichbar sein. Ein weiterer Grund einen abgleichbaren Meßverstärker zu verwenden. Bei mir endet der Schirm am UsbScope. Das Gehäuse der USB-Buchse, des UsbScop, ist nicht mit GND der Platine verbunden. Das Bild zeigt meine ursprüngliche Platine (ohne Meßverstärker). Die Lötfahnen der USB-Buchse sind an freistehenden Flächen verlötet, sie haben keinen Kontakt zu GND. Gruß. Tom
Hallo Tom, Danke für die Informationen! meinst du, das Schwanken rührt vom Messwerstärker her oder eher von den ADCs vom Tiny45? Mein USBscope fünktioniert leider noch nicht. Habe das main.hex-File aufgeflasht. Die Fuse-Einstellungen (AVR-Studio4) sind Ex: 0xFF Hi: 0xDF Lo: 0xF1 Wenn man die Platine an einen USB-Port ansteckt, leuchtet die LED an Pin6 dauerhaft. Das WinXP schmeißt dann die Warnung aus: "USB-Gerät wurde nicht erkannt! Ein an diesen Computer angeschlossenens USB-Gerät funktioniert nicht richtig und wird nicht erkannt." Direkt an der Zenerdiode von D- misst man konstant 4,38V, an der ZD von D+ sind es -0,015V. (eine Datenübertragung scheint keine stattzufinden) Vermute mal, das die Zenerdiode(n) die Spannung nicht ausreichend begrenzen und werde jetzt noch mal ein bisschen mit den Werten experimentieren. Cooler Platinenaufbau übrigens! Viele Grüße, Daniel
Hatte eine Leiterbahnbrücke, jetzt geht es. Im Moment schwanken die Werte bei mir auch ziemlich.
Hallo Daniel, bei mir leuchtet die LED dauerhaft, sobald die Platine mit Strom versorgt ist. Im Gerätemanager von Windows wird das UsbScope als Gamecontroller eingetragen (Bild weiter oben). Die Anwendersoftware zeichnet sofort nach ihrem Start, am Bildschirm auf. Probleme mit dem UsbScope hatte ich mit 64Bit Windows. Da startet die Anwendersoftware, aber es kommen keine Messwerte von der UsbSchnittstelle. Deshalb wird auch nichts im Scope-Fenster des Anwenderprogramms dargestellt. Wenn dein UsbScope funktioniert, gibt es keine Fehlermeldung, das UsbScope ist im Gerätemanager eingetragen und in der Anwendersoftware läuft der Aufzeichnungsstrich (vertikal lila) von links nach rechts. Dabei zeichnet er die beiden Kanäle in das Ausgabefenster. Entweder benutzt du ein 64Bit-Windows, oder mit der Firmware im Tiny stimmt etwas nicht, oder die Hardware der USB-Schnittstelle des UsbScope hat noch Fehler. Viel Erfolg bei der Fehlersuche. Gruß. Tom
Meiner Meinung nach stören zwei achen eine saubere Messung. 1. gibt es Peaks in der USB-Spannungsversorgung 2. schwankt die USB-Spannung mit der Zeit (langsame Drift) Das stört möglicherweise die interne Spannungsreferenz. Momentan denke ich darüber nach, zu schauen, ob es besser ist, den Tiny45 über einen Spannungsregler aus einer 9V-Blockbatterie zu versorgen. Mit dem 9-V-Block könnte man auch gleich einen Operationsverstärker betreiben.
Danke fürs Posting! TomA schrieb: > Hallo Daniel, > > bei mir leuchtet die LED dauerhaft, sobald ... > ... Viel Erfolg bei der Fehlersuche. > > Gruß. Tom Da haben sich die Beiträge überschnitten! Jetzt läuft es. Danke!
Hallo Daniel, sorry, wurde am Telefon aufgehalten und habe die Antwort verspätet rausgekriegt. Der unruhige Messwert kommt vom Tiny. Ich weiß noch nicht, ob vom A/D-Wandler, oder durch die Firmware. Der Messverstärker funktioniert auch ohne das UsbScope und wenn ich ihn mit Gleichspannung überprüfe, arbeitet er tadellos. Allerdings sind die Bauteilwerte inzwischen andere, als im vorigen Schaltbild angegeben. Wenn alles sauber zusammen läuft, werde ich die Pläne dazu veröffentlichen. Doch zuerst nehme ich mir jetzt mal das UsbScope ohne Messverstärker vor, um zu untersuchen, ob und wie man das Ding stabil und linear bekommt. Gruß. Tom
TomA schrieb: > Der unruhige Messwert kommt vom Tiny. Ich weiß noch nicht, ob vom > A/D-Wandler, oder durch die Firmware. Hi Tom, bei mir läuft es in der ersten halben Minute ruckelig, könnte tatsächlich an der Firmware liegen. Danach läuft es ruhig. Wenn du erlaubst, zeichne ich in deinen Schaltplan von oben mal die Entstörmaßnahmen ein, die auf meiner Platine aktuell eingebaut sind. Wenn man 5V Batteriespannung parallel zu der 5V-Usb-Spannung laufen lässt, sieht man den Unterschied. Viele Grüße, Daniel
Hallo Daniel, ja, gerne. Ich werde mal versuchen die Versorgung des Tiny über eine Drossel zu führen, danach eine Diode in Serie und dahinter einen größeren Elko (50..100µF). So wäre auch gleich die Versorgungsspannung des Tiny kleiner, was mir die Zenerdioden, durch kleinere Stromimpulse, sicher danken. Soweit ich gesehen habe, ist am Tiny das Portbit für eine externe Referenzspannung noch frei. Dort kann man mal versuchen, eine stabile Referenzspannung (1024mV) anzulegen. Das wäre aber wieder mit einem Eingriff in die Firmware verbunden, aber langfristig wird sich das wohl nicht vermeiden lassen. Leider hat mir das Telefon wieder eine Menge Arbeit übers Wochenende beschert, so komme ich nur sporadisch zu den Änderungen am UsbScope. Gruß. Tom
Hallo Tom, TomA schrieb: > Soweit ich gesehen habe, ist am Tiny das Portbit für eine externe > Referenzspannung noch frei. Dort kann man mal versuchen, eine stabile > Referenzspannung (1024mV) anzulegen. Gut zu wissen! :O) > ja, gerne. Ich werde mal versuchen die Versorgung des Tiny über eine > Drossel zu führen, danach eine Diode in Serie und dahinter einen > größeren Elko (50..100µF). Ist bei mir auch so, Skizze im Anhang. Bin nicht ganz sicher, welche obere Grenze es für Elkos/Kapazitäten am VBUS (+5V) gibt. Habe deshalb erst mal kleinere Elkos verwendet. Das 47µF-Exemplar könnte man gegebenenfalls noch vergrößern. Am ADC-Eingang hat sich bei mir auf jeden Fall ein kleinerer Klasse-1-Keramikkondensator in Kombination mit einem größeren Folienkondensator bewährt. Viele Grüße, Daniel
Kleiner Nachtrag: wenn ich den USB-Schirm auf Masse der USBscope-Platine lege (also an PC und Scope), verringert sich der Ripple in der Versorgungsspannung zusätzlich. TomA schrieb: > Leider hat mir das Telefon wieder eine Menge Arbeit übers Wochenende > beschert, so komme ich nur sporadisch zu den Änderungen am UsbScope. VG und frohes Schaffen! Daniel
Hallo Daniel, meine Versorgung sieht jetzt ähnlich aus wie in deinem Schaltbild. Direkt an der USB-Buchse habe ich einen 100µF-Elko. Die Drossel ist im Moment 1.5µH, das war die einzig passende für den Umbau. Später möchte ich dort 10...47µH haben. Die Spannung nach der Drossel besitzt einen 47µF-Elko und wird so zum Stecker der Erweiterung geführt. Zum Tiny zweige ich über eine Diode (4148) ab, so daß am Tiny ca. 4,3V sind (wegen der Z-Dioden). Direkt am Tiny ist noch ein 100nF-Kondensator zum entkoppeln. Die Änderungen haben den gewünschten Effekt gebracht. Ich habe den Eingangsspannungsbereich von 0...1100mV stichprobenweise geprüft, er ist linear und ausreichend stabil. In der Software konnte ich den Korrekturfaktor, welchen Yves vorgegeben hat, von 0,92 auf 0,96 verbessern. Wenn er erst mal 1 ist, also nicht mehr benötigt wird, ist die Hardware perfekt. :) Wenn ich den Meßverstärker anschließe wird die Geschichte wieder instabil. Das liegt, meiner Meinung nach, an der relativ hohen Verstärkung von 25,6fach. Da ist es besser die Referenzspannung zu verkleinern, hier muß ich noch überlegen und ausprobieren, was das Beste ist. Das Grundgerät kann man nun, mit vorgeschalteten Spannungsteiler, schon als Voltmeter benutzen. Dabei ist der Messbereich 0mV bis ca. 2000mV mit einer Schrittweite von 2,5mV. Da Integerzahlen keine Nachkommastellen kennen, ändert sich der gemessene Wert mal um 2 und mal um 3, von einem Wert zum nächsten. Das macht schon der A/D-Wandler im Tiny, da hilft nur eine kleinere Referenzspannung zu verwenden. Im Bild rechts ist der Messwert zu einer Eingangsspannung von 1007mV zu sehen. Das UsbScope springt zwischen 1007 und 1009mV, was völlig in Ordnung ist. Interessant ist die linke Bildhälfte, da steht der Poti für die Eingangsspannung auf Vollanschlag. Es ist ein gewaltiges Rauschen zu sehen. Der Poti hat aber Kontakt, denn wenn ich ihn entferne (offener Eingang) sinkt die Spannung auf 0mV. Wie auch immer, das entkoppeln der Versorgung hat eine Menge gebracht. Nun mal sehen, ob die Skalierung jetzt machbar ist? Im Anhang die Software mit dem neuen Korrekturfaktor. Gruß. Tom
Hallo Leute, jetzt habe ich mal die interne Referenz des Tiny auf 1100mV umprogrammiert. Funktioniert ganz gut, aber sobald ich den Meßverstärker davorschalte, schwankt der Meßwert um 4 Digit. Und zwar unabhängig davon, ob er mit Verstärkung 1,1 (1000mV) oder 11 (100,0mV-Grundempfindlichkeit) arbeitet. Ich vermute das liegt am "fliegenden Aufbau" des Meßverstärkers auf der Steckplatine. Die Linearität paßt in beiden Grundempfindlichkeiten ganz gut. Die Anwendersoftware kann jetzt bis zu einer Stunde Aufzeichnung am Bildschirmfenster zeigen. Gruß. Tom
TomA schrieb: > Die Änderungen haben den gewünschten Effekt gebracht. Ich habe den > Eingangsspannungsbereich von 0...1100mV stichprobenweise geprüft, er ist > linear und ausreichend stabil. Hallo Tom, sehr gut! Im Anhang die überarbeitete Fassung von meiner Spannungsversorgung. Wenn die Drosseln einen zu großen ohmschen Widerstand haben, fängt der ADC-Wert deutlich an zu schwanken. Mit größeren als den von mir verwendeten 4,7nF-Abblockkondensatoren an den ADC-Eingängen ist der Effekt allerdings nicht so ausgeprägt. > Wenn ich den Meßverstärker anschließe wird die Geschichte wieder > instabil. Das liegt, meiner Meinung nach, an der relativ hohen > Verstärkung von 25,6fach. Da ist es besser die Referenzspannung zu > verkleinern, hier muß ich noch überlegen und ausprobieren, was das Beste > ist. Es könnte ein Problem mit der Masseführung sein. Du könntest für Versuchszwecke dem Messverstärker in der Plusleitung einen Widerstand spendieren (ca. 5 bis 100 Ohm) und schauen, ob das Schwanken nachläßt (oder mit einer Batterie extern versorgen). > 2000mV mit > einer Schrittweite von 2,5mV. Da Integerzahlen keine Nachkommastellen > kennen, ändert sich der gemessene Wert mal um 2 und mal um 3, von einem > Wert zum nächsten. Das macht schon der A/D-Wandler im Tiny, da hilft nur > eine kleinere Referenzspannung zu verwenden. Den Effekt kenne ich von einem selbstgebauten Frequenzzähler. Mit der neuen Referenzspannung scheint es nun besser zu klappen, wenn ich es richtig verstanden habe!?! > Es ist ein gewaltiges Rauschen zu > sehen. Der Poti hat aber Kontakt, denn wenn ich ihn entferne (offener > Eingang) sinkt die Spannung auf 0mV. Der Poti scheint ja wirklich heftig zu rauschen. Hat er möglicherweise Dreck auf dem Schleifer? > Im Anhang die Software mit dem neuen Korrekturfaktor. Muss mich auch mal an das Anpassen der Skalierung machen. Bei mir soll der Bereich fürs erste 0 bis 10V abdecken. Arbeitest du hier mit C#2005? Viele Grüße, Daniel
Hallo Daniel, ich bin mit dem UsbScope jetzt schon recht zufrieden. Als nächstes mache ich eine Platine, welche das Scope und die Meßverstärker enthält. Ich bin sicher, daß die Verstärker dann auch stabil genug sind. Auf der Platine sind kurze Verbindungen, das verringert die Störeinstrahlung. Ob es wie erwartet arbeitet, werde ich sehen wenn es fertig ist. Für den Hausgebrauch reicht es jetzt schon, und den kommerziellen Geräten kann es ohnehin keine Konkurenz sein. Ich denke die Variante mit 1000mV Eingangsempfindlichkeit reicht aus, das ist weniger Aufwand, denn sie braucht keinen Offset-Abgleich. Wenn es funktioniert, werde ich Programm und Schaltplan veröffentlichen. Im Moment halte ich mich etwas zurück, es sind schon mehr Versionen als nötig raus - da kennt sich niemand mehr aus. Die Skalierung funktioniert jetzt recht ordentlich, der Linearitätsfehler mit Verstärker liegt beim aktuellen Muster unter 1%. Der Messbereich ist jetzt 0....1000mV mit einer Schrittweite von 1mV. Die interne Referenz, von 1100mV, des Tiny ist noch ungewöhnlich, aber das Kompensiere ich durch die Verstärker (1,1fach oder 11fach). Die Verstärker sorgen auch für einen hohen Eingangswiderstand und eine niederohmige Ankopplung an den A/D-Wandler. Für das Anwenderprogramm verwende ich das C# aus dem Microsoft-Visual-Express 2008 Paket. Das gibt es kostenlos bei Microsoft (oder auch bei Zeitschriften z.B: Computerbild), es funktioniert noch ohne Registrierung. Für die Versionen ab 2010 ist eine Registrierung zwingend erforderlich. Die C#-Quellen von Yves, für das Anwenderprogramm liesen sich Problemlos als Projekt bearbeiten. Ein Projekt für die Firmware des Tiny, unter AtmelStudio4, zu erstellen hat da schon etwas mehr Schweiß gekostet. Aber auch das ist machbar. Leider habe ich im Moment wenig Zeit übrig. Weiterhin viel Spaß und Erfolg. Tom
Hallo Daniel, habe jetzt den Schaltplan erstellt. Der kam mir aber doch zu komplex für ein Bastelprojekt vor (UsbScope + doppelter Meßverstärker + negative Hilfsspannung), so habe ich mich an die externe Referenz gewagt. Der freie Eingang am Tiny ist nicht der für die Referenz, da hatte ich mich getäuscht. Also erst mal Hard- und Firmware so geändert, daß der Referenzeingang frei wird. Laut Datenblatt darf dort eine Vref von 2V...VCC anliegen. Ich bräuchte aber 1024mV, vielleicht kann der Eingang doch damit umgehen? Kann er nicht, ich habe es ausprobiert. Mit 2048mV ginge es, aber das nutzt mir nichts - da ist es besser die interne 1100mV Referenz zu verwenden. Den Umbau mit freiem Referenzeingang lasse ich aber jetzt, für spätere Experimente. Als nächstes versuchte ich den Meßverstärker zu vermeiden. Das funktioniert und ist zum messen von Spannungen größer 1,1V der einfachste Weg. Hier kann man mit einem (evtl. abgleichbaren) Spannungsteiler die Skalierung gleich mit erledigen. Will man den Spannungsteiler umschaltbar machen, tauchen neue Probleme auf. Ich gab, bei 1100mV interner Referenz) die Eingangsspannung, aus einer externen Referenz von 1240mV, über ein 25k-Poti vor. Dabei erhielt ich über den Messbereich von 0...1100 einen Linearitätsfehler von 14, das ist mehr als 1% zum Endwert. Er rührt vom sich ändernden Innenwiderstand der Spannungsquelle (Poti) her. Mit Meßverstärker ist dieser Fehler nicht vorhanden, denn der Verstärkerausgang bietet dem A/D-Eingang einen gleichbleibenden, niederohmigen Widerstand. Momentanes Fazit: Zum messen in einem feststehenden Spannungsbereich > 1100mV, wie in deinem Fall, reicht ein einfacher Spannungsteiler für ein gutes Ergebnis. Für umschaltbare Bereiche oder Werte <1100mV kommt man um einen Messverstärker nicht herum. Gruß. Tom
Hallo Tom, das klingt auf jeden Fall alles ganz gut! TomA schrieb: > habe jetzt den Schaltplan erstellt. Der kam mir aber doch zu komplex für > ein Bastelprojekt vor (UsbScope + doppelter Meßverstärker + negative > Hilfsspannung) Ja, da wächst schnell was zusammen auf der Platine. Für AC-Messungen müsste eigentlich auch ein Rail-to-Rail-Opamp (für +5V) reichen. Der Ausgang muss bei 0V Eingang einen Offset von 1/2 Uref aufweisen. Wenn man keine Verstärkung benötigt, kann man bei AC-Messungen auch einen hochohmigen Spannungsteiler für die halbe Referenzspannung nehmen (hinter dem AC-Kondensator). Ist natürlich zu größeren Werten hin nicht mehr supergenau. TomA schrieb: > Ein Projekt für die Firmware des Tiny, unter > AtmelStudio4, zu erstellen hat da schon etwas mehr Schweiß gekostet. Cool, das hast du echt schon fertig!?! Kannst du eventuell die gezippten AVR-Studio-4-Ordner mit den .aps-Dateien posten? (also vor und nach der Änderung der Referenzspannung) Das Microsoft-Visual-Express-2008-Paket habe ich hier, werde es heute Abend installieren. Danke für die Infos dazu. Viele Grüße, Daniel
Hallo Daniel, im Anhang das AtmelStudio4-Projekt der Firmeware des Tiny45. Ich habe es UsbScopeR11 genannt, wegen der internen Referenz von 1,1V. Aufpassen, in dieser Version ist PortB.5 das D- Signal der USB-Schnittstelle. PortB.0 ist der Eingang für die externe Referenz, wird im Moment aber nicht benutzt. In der Datei "....\usbdrv\usbconfig.h" ist die Änderung des D-Pin, auch die kannst du leicht wieder auf PortB.0 zurückstellen. //#define USB_CFG_DMINUS_BIT 0 // D- von PortB.0 #define USB_CFG_DMINUS_BIT 5 // geändert in PortB.5 Die Änderung der Referenzspannung findest du in main.c in den Funktionen "adcPoll" und "adcInit". Dort habe ich die nicht benötigten Zeilen nur auskomentiert (//), sie sind also ganz einfach änderbar (an 3 Stellen). //ADMUX = UTIL_BIN8(1001, 0011); // value * 2.5 for output in mV ADMUX = UTIL_BIN8(1000, 0011); // Referenz = 1100mV //ADMUX = UTIL_BIN8(0101, 0011); // Referenz = extern PB.0 Viel Erfolg und Gruß. Tom
Hallo Leute, habe jetzt einen Stand erreicht, mit dem sich arbeiten läßt. Auf eine negative Hilfsspannung verzichte ich, damit ist auch kein Nullpunkt-Abgleich möglich. Der 1000mV-Kanal benötigt diesen Abgleich ohnehin nicht. Im Schaltplan ist ein Kanal des Verstärkers mit Verstärkung 1,1 (1000mV-Empfindlichkeit) und der andere Kanal mit Verstärkung 11 (100,0mV-Empfindlichkeit). Sie unterscheiden sich nur durch die Bauteilwerte im Rückkoppelzweig des OP. Damit kann man die Empfindlichkeit der Kanäle durch die Bestückung wählen. Eine Platine dazu gibt es noch nicht, aber auf dem Steckbrett aufgebaut funktioniert es bereits wunderbar. Der Linearitätsfehler macht sich nur beim empfindlichen Kanal, bei kleinen Eingangsspannungen, bemerkbar. Die Stabilität ist ausreichend. Im Schaltplan habe ich noch zwei Fehler entdeckt. Der untere Eingangang an Stecker JP1 ist auch mit IN1 bezeichnet, es ist natürlich IN2. Die LED ist an 5V-Analog angeschlossen, sie sollte besser an den 5V-Digital des Tiny. An die Eingänge können nun Spannungsteiler, Shunts oder sonstwas angeschlossen werden. Als OP habe ich drei verschiedene Typen, mit asymetrischer Versorgung, probiert - LM358, TLC272 und LT1013 - der LT1013 funktioniert am besten, ist aber auch der Teuerste. Erstaunlicherweise hat der LM358 besser abgeschnitten als der TLC272! Die Firmware für den Tiny in diesem Schaltplan, findet ihr als Anhang im vorigen Beitrag (UsbScopeR11.zip). Dort findet sich das ganze Projekt für das AtmelStudio4 und darunter auch die .hex-Datei (...\default\UsbScope.hex). Im .ZIP-Archiv befindet sich wieder das Anwenderprogramm, diesmal ist die Zeit im Anzeigefenster bis ca. 1Stunde lang. Das heißt, daß man ggf. die letzte Stunde der Aufzeichnung sehen kann. Ich bin die nächsten Tage unterwegs, werde vermutlich solange nicht online sein. Für danach plane ich eine Platine dafür zu entwerfen. Viel Spaß und Erfolg beim experimentieren. Gruß. Tom
Hallo Tom, vielen Dank für die Firmware und die gute Dokumentation der Änderungen!!! Wenn man D- an PB5 anschließt, muss man in den Fuses den Reset-Pin deaktivieren, nehme ich an. Dann wäre der Controller anschließend nur noch HV-mäßig programmierbar?! Mein Tiny45 ist direkt auf die Platine gelötet, da müssten alle Software-Änderungen vor dem Flashen genau sitzen. Ich möchte gerne eine externe Referenzspannung von etwa 3.072V verwenden, es sollen dann Messwerte bis maximal 6.144V aufgenommen werden können (über Spannungsteiler 2:1). Die Änderung von einem ADC-Schritt wäre dann genau 0.003V bzw. nach Multiplikation mit der Zahl 2 letztlich 0.006V im späteren Anzeigenfenster. Für die externe Referenzspannung benutze ich also an den drei Stellen im Programm die Zeile ADMUX = UTIL_BIN8(0101, 0011); // Referenz = extern PB.0 und lasse das Programm sonst, wie es schon ist. Dann wird noch der jetzige Aufbau umgelötet, so dass D- an PB5 angeschlossen wird und der Resetpin in den Fuses deaktiviert, stimmts? (für den Fall, dass du Zeit und Lust hast, das mit durchzuüberlegen) In jedem Fall viele Grüße und noch mal Danke für die AVR-Studio-freundliche Firmware! Daniel
Habe grade das Posting entdeckt! Tom Amann schrieb: > Erstaunlicherweise hat der LM358 besser > abgeschnitten als der TLC272! Interessant, hätte ich nicht gedacht! Tom Amann schrieb: > Ich bin die nächsten Tage unterwegs, werde vermutlich solange nicht > online sein. Für danach plane ich eine Platine dafür zu entwerfen. Falls man sich vorher nicht mehr liest, viel Spaß/Erfolg unterwegs!
Hallo Leute, hatte noch den Überspannungsschutz der Eingänge vergessen. Bei der Gelegenheit habe ich auch gleich die bemerkten Fehler beseitigt. @Daniel > Wenn man D- an PB5 anschließt, muss man in den Fuses den Reset-Pin > deaktivieren, nehme ich an. Dann wäre der Controller anschließend nur > noch HV-mäßig programmierbar?! Es ist genau so, wie du sagst. Ich hatte vergessen das mit Reset zu erwähnen. Ich programmiere meinen gesockelten Tiny in einem Programmiergerät mit HV. Habe den Tiny mehrmals programmiert, er funktionierte jedesmal auf Anhieb. Soweit ich das überschaue, stimmen deine Ausführungen/Änderungen alle. Das Anwenderprogramm bekommt vom UsbScope nur Zahlen zwischen 0-1023, was angezeigt und gespeichert wird, legt man im Anwenderprogramm fest. Im Moment ist das Verhältnis 1:1, da mit den Trimmern abgeglichen wird. Wenn du dir das C#-Programm mal näher aschaust (in Aenderungen.txt), siehst du daß es gar nicht schwierig ist, die Werte umzurechnen. Ansonsten kann ich es für dich machen. Danke, bis die Tage. Tom
!!!! Vorsicht !!! Im neuen Schaltplan ist auch ein Fehler. Der Überspannungsschutz (Q3/Q4) des unteren Verstärkers (IC2B, V=1,1) ist falsch angeschlossen. Seine rechte Seite (Basis Q3), darf nicht am Pin 3 des Tiny liegen, sondern muß auf GND - das ist die übernächste Leitung (2Positionen rechts der jetztigen Verbindung). Der Eingangsschutz am anderen Verstärker (IC2A, V=11) ist in Ordnung und kann als Muster dienen. Gruß. Tom
Hallo Tom, Danke für den Schaltplan und die Infos! Meine derzeitige Schaltung ist in mehr oder weniger dichtester Kugelpackung ohne Sockel aufgebaut - da muss das Flashen beim ersten Mal sitzen ;O) Als Spannungsreferenz soll fürs erste ein LM317 dienen. Damit kann man natürlich gleich mehrere Referenzspannungen erzeugen. Mit entsprechenden Buttons im Anwenderfenster könnte man die von Hand eingestellte Uref wählen und wäre dann bei den Messbereichen flexibler. Tom Amann schrieb: > Wenn du dir das C#-Programm mal näher aschaust (in Aenderungen.txt), > siehst du daß es gar nicht schwierig ist, die Werte umzurechnen. > Ansonsten kann ich es für dich machen. Konnte aus Zeitmangel noch nicht reinschauen - bin gespannt, was mich erwartet :O) Auf jeden Fall schon mal Danke für das Angebot! Eventuell könnte man das Anzeigenfenster für die Messwerte von der Größe her noch optimieren und die Min-Max-Werte gleich grafisch mit eintragen. Zukunftsmusik ;O) Wünsche dir eine gute Zeit! VG, Daniel
Hallo Daniel, im letzten Schaltplan ist der Überspannungsschutz noch Fehlerhaft. Wenn man bis zu 1000mV Eingangsspannung messen will, ist ein Schutz der bei ca. 700mV wirkt, nicht die optimale Wahl :( Besser ist es, eine 4,7V-Zenerdiode paralell zu C12 und C13 zu legen. Also vom +Eingang des OP nach GND. Die wirkt bei positiven Spannungen ab ca. 4,7V und bei negativen Spannungen ab ca. 0,7V. Habe vom neuen Schaltplan gleich eine Platine gemacht und getestet. Als OP sitzt ein TLC272 drauf, der hat einen rel. hohen Offset. Dieser Offset hat mich sehr gestört, also habe ich ihn, per Software, korrigiert. Ist aber keine gute Lösung, weil sich dadurch der Meßbereich verschiebt. Wenn der OP einen Offset von -4 hat, addiert die Software 4 und es paßt zunächst. Aber durch die addierte 4 ist kein Messwert unter 4 mehr möglich. Die kleinste Zal vom A/D ist 0 -> +4 ist der kleinste Anzeige/Speicherwert 4. Dafür geht es dann oben bis 1027. Also doch negative Hilfsspannung, dann durch Trimmer den richtigen Widerstand ermittelt und als Festwiderstand eingelötet. Der Offset gehört ja zum OP und der ist auch verlötet, das spart den Trimmer im Layout. Nun läuft die Kiste mit erstaunlicher Präzision. Der Meßwert folgt meinem paralellgeschalteten Multimeter mit einer maximalen Abweichung von 1 Digit. Die Genauigkeit hängt nur vom Abgleich und den Daten des integrierten A/D-Wandlers ab. Wie sich das UsbScope auf Temperaturschwankungen verhält, habe ich noch nicht geprüft. Die Anwendersoftware und Firmware verarbeitet jetzt den Meßwert 1:1 die ursprüngliche Multiplikation ist nun entfernt. Im .ZIP-File findest du die Änderungen in "Aenderungen.txt". Die Fuses für den Tiny sind jetzt FF 5F F1. Nach meiner Meinung hat das Grundgerät jetzt den betriebsfähigen Zustand erreicht. Werde ein Packet schnüren und bei Projekte einstellen und mich danach um ein paar Vorschaltplatinen für Spannung, Strom, Temperatur .... kümmern. Im Anhang Bilder der momentanen Platine von vorne und hinten. Auf der Vorderseite sind Bereiche unkenntlich gemacht, sie beinhalten nur die Erzeugung der negativen Hilfsspannung. Ich verwende dafür eine spezielle Schaltung, welche ich für eine Firma entwickelt habe. Da die Firma dafür bezahlt hat, kann ich sie nicht einfach öffentlich machen. Es ist aber jede Standardschaltung (für -1V...-5V) dafür geeignet. In den Plänen fürs Packet werde ich das berücksichtigen. Gruß. Tom
Habe das vollständige Projekt mit den aktuellen Quellcodes jetzt im Abschnitt "Projekte" unter dem Titel "Zweikanal USB-Panelmeter mit ATTiny45 mit Quellcode" abgelegt. Gruß. Tom
Hallo Tom, coole Platine und Danke für die ausführlichen Informationen zum Projekt! Habe zwischenzeitlich auch weitergebastelt. Habe jetzt eine Spannungsreferenz mit LM317L aufgebaut für die Referenzspannungen von 3.072V, 2.500V und 1.024V. Erstaunlicherweise bleiben alle drei Spannungen auf 1mV genau, selbst wenn man mit einem warmen Luftstrom die Platine erwärmt. Nebeneffekt: die gemessenen Spannungen bei 3.072V und 2.500V schwanken im Gegensatz zur Internen Referenzspannung so gut wie gar nicht mehr. Bei der Referenzspannung 1.024V gibt es hingegen ein Problem. Selbst bei 0.000V Eingangsspannung bleibt die am PC angezeigte Spannung auf dem Maximalwert stehen. Das ist sicher ein Softwareproblem - habe die Ursache bisher allerdings noch nicht entdecken können. Ansonsten sitzt vor jedem AD-Eingang ein Spannungsteiler aus 2x 47k und jeweils eine Zenerdiode 6V2 von Masse zum Eingang (habe momentan keine kleineren ZDs vorrätig). So viel zu meinem aktuellen Aufbau. TomA schrieb: > Werde ein Packet schnüren und bei Projekte einstellen und mich > danach um ein paar Vorschaltplatinen für Spannung, Strom, Temperatur > .... kümmern. Coole Idee!!! Einen Helligkeitssensor ("Luxmeter") könnte ich im Moment auch ganz gut gebrauchen, den könnte ich gleich für das USB-Scope konzipieren. Und ein Geiger-Müller-Zählrohr hart hier auch noch seiner Anwendung :O) Wenn du ansonsten eine Idee hast, warum bei einer externen Referenzspannung von 1.024V der Messwert immer auf Vollanschlag steht, bitte posten! Viele Grüße und schönes WE, Daniel
Hallo Daniel, danke, ich mache oft Platinen direkt von der Vorlage vom Steckbrett weg. Das geht mit Tonertransfer meißt schneller als ein Muster zu fädeln. Dein Fehler kommt mir bekannt vor. Ich hatte es auch schon mit einer externen Referenz von 1024mV versucht, das klappt nicht. Die externe Referenz muß, nach Datenblatt, mindestens 2000mV betragen. Das ist auch der Grund für meine Messverstärker. Ich benutze die interne Referenz von 1100mV und verstärke die Eingangsspannung um 1,1 oder 11, dann paßt es wieder. Zudem schaffe ich mot den OP's einen sehr hohen Eingangswiderstand und mit Verstärkung 11 ist der Eingang 10fach empfindlicher. Das bringt einen Vorteil bei z.B. Strommessung - Der Shunt fällt dann 10mal niederohmiger aus. Ich weiß nicht was du messen willst, aber 47k scheint mir etwas niederohmig. Falls du nicht an einem niederohmigen Messpunkt arbeitest, kannst du dadurch einen Fehler erzeugen. Der Eingangswiderstand der A/D-Wandler ist 100MOhm, da kannst du den Teiler auch hochohmiger wählen. Noch ein paar Worte zu den Spannungsteilern allgemein. Die Werte der Widerstände dafür sind üblicherweise 9M, 900k, 90k, 9k und 1k. Die gibt es als fertiges Netzwerk, oder als Einzelwiderstände zu kaufen. Sie sind aber teuer und für unser Projekt, in dieser Präzision (0,1%), nicht nötig. Man kann sie auch aus Werten der E12 Reihe nachbilden 9M = 4,7M + 3,3M + 1M usw. Oder man nimmt für den Teiler Normwiderstände 9,09 und unten dann 1,01. Gruß. Tom
Hallo Tom, vielen Dank für die Infos, besonders zur externen Referenzspannung! Habe es bei meinem Aufbau noch mal getestet, in der Praxis würde anscheinend eine Referenzspannung bis minimal 1.6V funktionieren. Meine Prototypen baue ich meistens direkt im Manhattenstyle auf. So hat man eine durchgehende Massefläche und kann die Teile von oben bequem austauschen. Besonders bei HF-Projekten hat sich der Aufbau bewährt. Deine Idee mit der Umsetzung vom Steckbrett direkt zur (SMD-) Platine finde ich auch sehr gut! Das ist auch sehr nachbaufreundlich. TomA schrieb: > Ich weiß nicht was du messen willst, aber 47k scheint mir etwas > niederohmig. 2x 47k in Serie ergeben einen Eingangswiderstand von ca. 100k. Zur Beobachtung von Versorgungsspannungen ist das schon ganz ok. Da hast du völlig recht, für ein USB-Multimeter wäre der Eingangswiderstand sicher zu klein. > Der Eingangswiderstand der > A/D-Wandler ist 100MOhm, da kannst du den Teiler auch hochohmiger > wählen. Das stimmt. Allerdings führt das, wie ich mittlerweile festgestellt habe, zu Kanalübersprechungen. D.h., wenn die Spanung von Kanal 1 hochgeht und Kanal 2 auf Masse liegt, werden dort plötzlich einige mV gemessen. Der "Abschlusswiderstand" vom AD-Eingang nach Masse sollte wohl nach Möglichkeit relativ niederohmig sein. Werde auf jeden Fall dein Projekt mit Messverstärker auch noch aufbauen. Viele Grüße und eine gute Woche, Daniel
Hallo Daniel, danke für die Info. Zum messen von Versorgungsspannungen sind 100k-Ohm mehr als ausreichend, da bleibt der Messfehler vernachlässigbar. Ich habe mich inzwischen mit dem Timing des UsbScope beschäftigt, um eine Zeitbasis für die Messungen zu schaffen. Da sieht es eher schlecht aus. Im Quellcode der Firmware ist zu sehen, daß Yves das auch schon versucht hat. Ist aber schwer bis unmöglich das in den Griff zu bekommen. Das VUSB (USB durch Software nachgebildet) verbraucht zu viel Rechenleistung, da sind keine Lücken für ein paralell laufendes Timing. Man könnte höchstens mit dem VUSB synchronisieren. Aber läuft die USB-Kommunikation mit dem PC nach einem festen Zeitmuster ab? Das UsbScope fordert zwar einen 10ms-Poll vom Host, aber kann der PC das auch garantieren? Ich glaube eher nicht! Ich denke grad über einen Datenlogger, mit einer echten USB-Schnittstelle und zwei potentialfreien Eingängen, nach. Den passenden Chip hätte ich noch in 100er Stückzahlen hier. Den AT89C5122, der hat Full-Speed-USB, ein Speicherinterface für RAM und ein Card-Interface. Integrierte A/D-Wandler hat er nicht, aber die sind für potentialfreie Eingänge ohnehin unpraktisch. Das wäre dann aber kein Bastelprojekt mehr, dafür hätte ich sogar schon einen Kunden. Mal sehen .... Danke, dir auch eine schöne Woche. Tom
Hallo Tom, das sind gute Fragen zur Schaffung einer Zeitbasis! In jedem Fall scheint es nicht viele Selbstbaulösungen zu geben, mit denen man DC-Spannungen mit einer Samplingrate von einigen kHz auf einfache Weise am PC darstellen kann. Ich hatte eine Zeit lang mit umgebauten Soundkarten experimentiert. Die wären eigentlich optimal gewesen. Leider lässt die Firmware der (mir bekannten) Soundkarten softwaremäßig jede DC-Spannung am Chipeingang wegrechnen (als Offsetunterdrückung). Das Ergebnis ist, dass sich Soundkarten sehr gut als AC-DSO für niedrigere Frequenzen eignen, für DC-Messungen bzw. für Messungen von AC-Spannungen mit DC-Offset sind sie weitgehend ungeeignet. Von da her glaube ich gerne, dass du schon Interessenten für die vorgeschlagene professionelle Lösung mit dem AT89C5122 hast. (Ansonsten gibt es wohl noch die Möglichkeit, über einen VCO vor dem SC-Eingang die DC-Spannung in ein spannungsproportionales Tonsignal umzuwandeln und dieses nach dem Einsamplen PC-seitig wieder in ein DC-Signal umzusetzten. Habe es allerdings noch nicht getestet) Im Moment denke ich darüber nach, einen µ-Netzwerkanalysator mit einem Atmega648 und einem AD9851 aufzubauen. Es soll eine Art erweiterter HF-Messgenerator sein, der die frequenzabhängige Dämpfung eines Netzwerks (z.B. eines Quarzfilters) auf einfache Weise an den PC-übermitteln kann. Die Voraussetzung wäre, dass der Atmega eine saubere USB-Kommunikation mit dem PC hinbekommt. Was meinst du mit potentialfreien Eingängen? Viele Grüße, Daniel
Hallo Daniel, ich hänge im Moment noch an der USB-Übertragung unter C++, keiner der ausprobierten Treiber funktioniert wie gewünscht. Die mitgelieferten Beispiele laufen gar nicht, oder falsch :( Potentialfrei bedeutet, daß die Messeingänge nicht galvanisch miteinander verbunden sind. Damit lassen sich die Messpunkte frei innerhalb einer Schaltung wählen. Die integrierten A/D-Wandler messen alle gegen den gemeinsamen GND, das kann zu Kurzschlüssen führen. Das sieht man ganz deutlich an den Bildern zur Leistungsmessung. Teil "A" (links) zeigt wie es üblich bemacht wird, Spannung und Strom werden getrennt erfasst. Teil "B" (rechts) zeigt, wie es mit gemeinsamen GND der Messgeräte aussieht. Der Spannungsanteil des Shunt im Strommessgerät ist in der gemessenen Spannung am Lastwiderstand, als Fehler, enthalten. Anders angeschlossen ergiebt sich allerdings ein Kurzschluss, durch den gemeinsamen GND. Der im Bild gezeichnete Widerstand ist die Last, deren Leistung gemessen werden soll. Der Shunt befindet sich im Amperemeter. Potentialfrei, also galvanisch getrennt, kann ich die Messeingänge nach belieben anschließen. Gruß. Tom
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.