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
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
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
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.
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
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
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
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
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