Forum: Mikrocontroller und Digitale Elektronik Pulszähler mit USB Readout


von Friedrich K. (fiete)


Lesenswert?

Hallo,

Ich suche einen Pulszähler, der Spannungs-Pulse zeitverknüpft loggt. Die 
Pulsrate wird etwa 20 Pulse pro Minute betragen, also recht moderat. Das 
ganze soll über einen größeren Zeitraum (Monate) geloggt werden und dann 
per USB ausgelesen werden können. Es spräche nix dagegen die Pulse 
minütlich oder 5 minütlich zu kommulieren und "Zeitbins" zu loggen, wenn 
das Sinnvoll ist.

Ich habe zahlreiche fertige USB-Logger gefunden, die in einstellbaren 
Zeitintervallen messen, aber keinen, der eingehende Pulse zählt. Die 
Suche nach "USB Logger" hier im Forum gab über 11.000 Treffer, und 
bezogen sich meist auf Temperaturmessungen oder GPS-Datenlogger.

Konkret möchte ich den Hausstromverbrauch mit einem S0-Fähigen 
Stromzähler loggen, der pro verbrauchte Wh einen S0-Puls ausgibt. Da der 
Rechner nicht die ganze Zeit laufen soll, würde ich es eben gern loggen. 
Anschließend würde ich gern die Daten auf den Rechner übertragen und 
auswerten.

Es gibt Lösungen von ELV-Elektronik. Diese setzen am analogen 
Stromzähler an und übertragen die Daten per Funk an eine Displayeinheit. 
Ich fürchte nur, dass die sich bei mir schlecht anwenden lassen, weil 
ich befürchte, dass die Funkübertragung aus dem Keller nicht so recht 
funktioniert. Den Datenlogger, den sie mal im Angebot hatten, gibts 
nicht mehr.

Als Physiker habe ich eher geringe elektronik-Erfahrung aber bin willens 
mich in die Thematik einzuarbeiten, scheue also größeren Aufwand nicht. 
Hohe Kosten schon ;-) Meine Vorstellung der Kosten rangiert (inklusive 
Stromzähler) um 60-70 Euro.

Gibt es eventuell alternative Lösungen für dieses Vorhaben?

Über Antworten freue ich mich! Gruß, Fiete

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Hast du mal nach einem Pulslogger für Menschen gesucht?

von Friedrich K. (fiete)


Lesenswert?

Du meinst einen Herzfrequenzmesser? Ich glaube das bringt mich nicht 
weiter, denn der S0 Puls den ich auslesen möchte ist im wesentlichen ein 
Rechteck-Puls.

von ME (Gast)


Lesenswert?

Falls du eine Eigenentwicklung nicht scheust, könnte man sowas evtl. 
auch mit einem kleinen Mikrocontroller (z.B. AVR) selbst entwickeln:

- Das zählen der Pulse schafft der Controller bei der genannten 
Pulsfrequenz locker.
- Die Timestamps müssten mit einem RTC-Modul generiert werden.
- Als Speichermedium würde ich ein EEPROM, Flasch-Speicher oder SD-Karte 
vorschlagen (Speicherplatz und Abnutzung der Speicherzellen müsste man 
mal mit genauerer Kenntnis der geforderten Aufzeichungsdaten 
(Zeitauflösung etc.) und den angestrebten Ausleseintervallen abschätzen)
- Auslesen würde ich über RS232 realisieren, evtl. mit 
USB-Seriell-Wandler

Je nach Vorkenntnissen braucht die Realisierung allerdings etwas Zeit.

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Dann wandel per F/V-Wandler in eine Spannung und logge die.

von Friedrich K. (fiete)


Lesenswert?

Danke für die schnelle Antwort.
Das hilft weiter. Meine Vorkenntnisse sind sehr gering, aber wie erwähnt 
scheue ich die Einarbeitung nicht.

Ob das überhaupt schaffbar ist, versuche ich gerade abzuschätzen.
Eine Hürde ist zu wissen, welche Bausteine überhaupt für diese Aufgabe 
in Frage kommen können. Hab mir das gerade mal angeschaut, was ein AVR 
ist. Eigentlich hatte ich gehofft, dass es Bausteine mit USB-Interface 
gibt, die Programmierbar sind, sodass man das alles beisammen hätte und 
nur noch durch einen Zusatzspeicher ergänzen müsste.

Was gut ist, dass die Anforderungen was Präzision und Auflösung betrifft 
nicht sehr hoch sind.

Ich rechne mit im mittel 8 Impulsen pro Minute. Das ist das 
Jahresmittel, also punktuell können deutlich höhere Raten zu erwarten 
sein, sodass ich gern nach oben ein wenig luft hätte. Vielleicht ist da 
20/min noch zu wenig. Wie weit wäre das nach oben ausbaubar? 600/min? 
Also eine Taktrate von 10Hz. Ist das üblich bei Microcontrollern? Die 
allerhöchste Pulsrate die zu erwarten ist wäre 450MHz (ich stutze grad 
doch ein bissel. Aber so hoch muss die Rate wirklich nicht ausgelegt 
sein.)
Die Pulse werden nicht überlagert sein, sodass man nicht das Problem 
haben sollte das noch auseinanderklamüsern zu müssen.

Wenn ich deinen Ansatz richtig verstehe, dann lässt du eine Uhr laufen, 
die immer dann ausgelesen wird, wenn ein Puls anliegt. Gibt es 
Controller mit integriertem Kalender? (einfacher wäre es natürlich von 
einem Startdatum an zu zählen)
Die Datenmenge wäre, wenn ich eine Auflösung von 1 min hätte ca. 
300KB/monat. Also wenn der Chip 512KB speichern kann, dann hälts nen 
guten Monat.

Nochmal zusammengefasst:

Gibt es Mikrochips, die

- bis zu 450MHz Pulse zählen können? 1MHz würde auch schon reichen
- 512 KB Speicher integriert haben
- Interne Uhr/Kalender
- USB-Interface haben

Zu dem Ansatz von Abdul K. :

Dein Ansatz ist eventuell deutlich einfacher, als der obige Weg, aber 
nur, wenn der Herzfrequenzmesser schon als fertiges Bauteil vorliegt. 
Gibt es da was oder müsste ich mir das selber bauen? Dann wäre das ja im 
Prinzip der obige Weg.

Versteht mich bitte nicht falsch, ich möchte keinen fertigen Bauplan von 
euch, sondern nur eine Richtung sodass ich schnell zum Ziel komme.

von Ulf R. (roolf)


Lesenswert?

Friedrich Kpunkt schrieb:

> Also eine Taktrate von 10Hz. Ist das üblich bei Microcontrollern? Die
> allerhöchste Pulsrate die zu erwarten ist wäre 450MHz (ich stutze grad
> doch ein bissel.

Ich stutze auch.

Bei einem Hausanschluss mit 60A hast Du 15kW Leistung. Das sind 15k Wh 
pro Stunde, also weniger als 5Wh pro Sekunde.  Das mit den Megahertz 
brauchen wir da nicht ...

von ME (Gast)


Lesenswert?

Hallo Friedrich

Ich denke, der zu wählende Ansatz hängt wesentlich davon ab, ob nur 
dieses spezifische Problem möglichst ökonomisch gelöst werden soll oder 
ob du dich grundsätzlich in die Mikrocontrollerprogrammierung 
einarbeiten willst. Das braucht einiges an Zeit (Controller kennen 
lernen, Programmiersprache lernen (C oder Assembler, evtl. Bascom), 
PC-Softwaretools kennen lernen, etc.), dafür hast du nachher evtl. ein 
neues Hobby und kannst - falls du in der Experimentalphysik tätig bist - 
das erworbene Wissen vielleicht auch mal im Labor anwenden.
Falls du einfach schnell eine brauchbare Lösung willst, würde ich 
möglichst nur fertige Module verwenden und daraus "irgendwie" etwas 
zusammen "basteln". (z.B. mit Frequenz-Spannungs-Wandlung)

Mein Lösungsvorschlag sähe so aus:

Konzept:
- Ich nehme einen freiprogrammierbaren Mikrocontroller (d.h. der weiss 
von sich aus nicht, ob er jetzt ein Auto oder eine Waschmaschine steuern 
oder eben deine Pulse loggen soll)*
- Die Software dazu schreibe ich selber in C (Puristen nehmen Assembler, 
Einsteiger haben evtl. Bascom gerne (das ist etwas VisualBasic ähnlich))
- An den Controller kommt ein geeignetes Speichermedium (wie oben 
erwähnt); was da am besten ist, weiss ich jetzt noch nicht
- Die Verbindung zum PC wird via serielle Schnittstelle gemacht, falls 
USB-erwünscht ist, gibt es kleine fertige USB-Seriell-Wandler (das ist 
VIEL einfacher als ein direkter USB-Anschluss)

*Für den anvisierten Zweck wäre ein AVR von Atmel sicher nicht schlecht: 
gut erhältlich, billig, weitverbreitet (d.h. du findest viele Leute hier 
im Forum, die dir helfen können)

Messverfahren:
Ich würde, wie von dir eingangs vorgeschlagen, 5-Minuten Zeitbins 
verwenden: Der Controller zählt während 5 Minuten die ankommenden Pulse. 
Danach schreibt er in den Speicher die Anzahl Impulse zusammen mit einer 
aktuellen Zeitangabe.
Für die Zeitangabe verwendet man entweder einen externen RTC-Chip oder 
lässt das auch gleich der Mikrocontroller machen.
Der Inhalt des Speichers kann dann nach ein paar Monaten oder so in den 
PC übertragen werden.


Zu deinen Fragen:
> Gibt es Mikrochips, die
> - bis zu 450MHz Pulse zählen können? 1MHz würde auch schon reichen

AVR-Mikrocontroller haben integrierte Hardwarezähler, die Pulse bis zur 
halben Taktfrequenz des Prozessors zählen können. Diese Controller 
werden Üblicherweise mit Frequenzen von 4 bis 20 MHz getaktet
D.h. 1 MHz: absolut problemlos
450 MHz: direkt nicht möglich, es müsste ein Vorteiler verwendet werden
(Aber irgendwie kann ich schlecht glauben, dass ein Stromzähler 
tatsächlich Pulse mit einem halben GHz rausspuckt?)

> - 512 KB Speicher integriert haben

Weiss ich jetzt gerade nicht. Würde aber wie erwähnt eher ein externer 
Chip verwenden.

> - Interne Uhr/Kalender

Das kann man auch per Software realisieren.
siehe z.B.: www.atmel.com/dyn/resources/prod_documents/DOC1259.PDF

> - USB-Interface haben
Ja, aber es ist wie gesagt meiner Meinung nach nicht die einfachste 
Lösung.

Vielleicht ist ja mein Lösungsvorschlag ein totaler Overkill für 
jemanden, der nur sein Stromverbrauch protokollieren und sich nicht ein 
halbes Jahr mit Mikrocontroller beschäftigen will, aber falls es dir 
hilft, habe ich mal mein Vorschlag gepostet.

von ME (Gast)


Lesenswert?

Offenbar erfinde ich wieder mal das Rad neu:

Hier wurde das schon mal ganz ähnlich diskutiert:
Beitrag "beispiel für S0 schnittstelle/stromzähler auslesen mit avr"

Und das hier ist vielleicht schon die Lösung des ganzen Problems:
http://busware.de/tiki-index.php?page=4S0ETH

von Friedrich K. (fiete)


Lesenswert?

Vielen dank ME.

Du schätzt das schon richtig ein. Schnell fertig muss es nicht sein und 
ich hatte das in der Tat als Vorbereitung für experimentalphysikalische 
Arbeiten gedacht.

So langsam schwant mir doch, dass es auch mit viel Einarbeitung schon 
recht aufwändig wird. Aber mein Elan ist da.

Habe mir mal die fertige Lösung angeschaut. Die können natürlich schon 
viel zu viel und mir fällt es da nicht ganz leicht, die wesentlichen 
Elemente der Schaltung zu erkennen, aber so eine grobe idee habe ich. 
Sie bieten Beta-Testern das ding für 200 Tacken an. Und dann braucht man 
noch 1-4 S0-Zähler, die auch nochmal je 50 tacken kosten. War nicht so 
der Preisramen den ich mir vorgestellt habe...

Könnte man das Schnittstellen-Problem eventuell durch eine 
SD-Speicherkarte lösen? Sodass die Daten direkt auf die Speicherkarte 
geschrieben werden und ich sie ab und zu rausnehme um sie auszulesen? 
Oder wäre das ähnlich kompliziert wie ein USB-Anschluss?

Gruß, Fiete

von ME (Gast)


Lesenswert?

> Könnte man das Schnittstellen-Problem eventuell durch eine
> SD-Speicherkarte lösen? Sodass die Daten direkt auf die Speicherkarte
> geschrieben werden und ich sie ab und zu rausnehme um sie auszulesen?
> Oder wäre das ähnlich kompliziert wie ein USB-Anschluss?

Klar, das geht. SD-Karten werden relativ häufig für solche Zwecke in 
Eigenentwicklungen eingesetzt, da sie relativ einfach angesteuert werden 
können. Kannst dir ja mal die Seite anschauen:

MMC- und SD-Karten

Ich hab mal sowas gemacht, aber lediglich mit Nur-Lese-Zugriff. 
Allerdings muss man sich bewusst sein, dass die Implementierung des 
Dateisystems (z.B. FAT16) schon etwas aufwändig ist.

Zum Thema USB gibts hier noch ganz viele Infos:
USB

Um mal einen Eindruck von einem USB-Seriell-Wandlermodul zu bekommen, 
kannst du hier schauen:
http://shop.embedded-projects.net/product_info.php/info/p54_USB-zu-RS232-Wandler--TTL-Pegel-0-und-5-V-.html

von Friedrich K. (fiete)


Lesenswert?

Vielen Dank ME. Macht richtig spaß sich da reinzuarbeiten. Das mit der 
SD-Karte ist eitentlich die beste Lösung. Allerdings stelle ich fest, 
dass es mir für ein solches Projekt definitv zu sehr an Praxis mangelt.
Deshalb habe ich beschlossen das Projekt Stromverbrauchslogger erstmal 
auf Eis zu legen und mich zunächst mal ganz klassisch mit der 
AVR-Programmierung auseinandersetzen. Bin gerade dabei das Tutorial 
durchzuarbeiten und obohl ich noch kein einziges Bauteil auf meinem 
Schreibtisch habe, hab ich schon echt viel gelernt.

Gehört zwar hier nicht so ganz hin, aber ich frage Trotzdem:

Der NE555 kann ja eingestellt werden über seine Außenbeschaltung. Man 
hat dafür 3 Freiheitsgrade um auf die selbe Frequenz zu kommen: R1, R2 
und C. Intuitiv würde ich sagen, dass man weder die R ganz groß macht 
und das C klein (oder andersrum). Was passiert, wenn man z.B. ein großes 
R hat? Das hat doch bestimmt irgendwelche Nebeneffekte oder?

Und noch eine Frage: Wofür sind meist die 100nF Kondensatoren außen an 
den µC? Ist das zum treiben der eigentaktgeber?


Besten gruß, Fiete

von ME (Gast)


Lesenswert?

> Der NE555 kann ja eingestellt werden über seine Außenbeschaltung. Man
> hat dafür 3 Freiheitsgrade um auf die selbe Frequenz zu kommen: R1, R2
> und C. Intuitiv würde ich sagen, dass man weder die R ganz groß macht
> und das C klein (oder andersrum). Was passiert, wenn man z.B. ein großes
> R hat? Das hat doch bestimmt irgendwelche Nebeneffekte oder?

Wenn R sehr gross ist, wird der durchfliessende Strom sehr klein. Das 
macht die Schaltung grundsätzlich eher empfindlich für Rauschen, 
EMV-Störungen etc. Zudem hab ich glaub mal gehört, dass sehr hochohmige 
Widerstände (Gigaohm) mehr von den Umgebungsbedingungen (Temperatur, 
Luftfeuchtigkeit) gestört werden. Ich gaube, auch der "Dreck" auf den 
Anschlüssen kann sich da dann auswirken. So genau kenn ich mich da aber 
nicht aus. Stell doch diese Frage mal im "Analogtechnik"-Forum.

> Und noch eine Frage: Wofür sind meist die 100nF Kondensatoren außen an
> den µC? Ist das zum treiben der eigentaktgeber?

Das sind so genannte ""Abblockkondensatoren". Getaktete digitale 
Schaltungen ziehen während kurzen Zeiten hohe Ströme - nämlich dann, 
wenn die digitalen Pegel wechseln. Das kann zum Einbrechen der 
Versorgungsspannung und zu elektromagnetischen Störungen führen. Ein 
Abblockondensator kann den hohen Strom kurzzeitig liefern (und wird 
danach von der Versorgungsspannung wieder geladen). Er sollte nahe bei 
den Versorgungsspannungsanschlüssen liegen, damit der Widerstand und die 
Induktivität der Zuleitungen klein ist.

Eine ausführliche Erklärung gibts hier:
http://www.rn-wissen.de/index.php/Abblockkondensator
(Dieses Forum/Wiki enthält sowieso noch viele hilfreiche Infos.)

In den langen Datenblättern der AVR-Mikrocontroller gibt es ziemlich am 
Ende einen Abschnitt über elektrische Eigenschaften, dort werden solche 
Aspekte noch genauer erklärt.

Viel Spass beim Tutorial! Bei Fragen einfach wieder posten ...

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