Forum: Mikrocontroller und Digitale Elektronik Raspberry.PI & S0


von Enrico F. (Gast)


Lesenswert?

Hallo Leute,

ich plane einen Teil meiner "Hauselektronik" zu erneuern und brauche 
einen Ratschlag.

Ist-Zustand: Beck SC13 der über DS2482-800 momentan 20 DS18B20 ausliest 
sowie von zwei Quellen (Gas, Strom) zwei S0-Signale empfängt. Der SC13 
bzw. die Beck-Libraries erlauben die problemlose Verarbeitung von 
externen Interrupts via ISRs, die ich für die Auswertung der S0-Signale 
verwende. Der Rest via I2C ist eher Kinderkram. Das ganze wird via 
Socket (TCP) an einen Host geschickt der dies wiederum in eine Oracle-DB 
schreibt. Die Verwendung der Daten (Heitungssteuerung und Auswertung) 
lasse ich an dieser Stelle einfach außen vor da diese ja bleiben soll. 
Das Ganze läuft seit ca. 5 Jahren 24/7 mit relativ wenig Problemen. 
Warum dann umstellen? Den SC13 gibt es nicht mehr. Relativ hoher 
Stromverbrauch (und Wärmeentwicklung). Grottenschlechte 
Entwicklungsumgebung. Ich möchte in Zukunft mehr als 2 S0-Signale 
verarbeiten (neu: Wasser sowie eine weitere Strom-Messung).


Avisierter Zustand: Ein Raspi, der die o.g. Aufgaben übernimmt aber die 
Daten nicht mehr via (proprietärem) Socket-Protokoll abliefert sondern 
sie gleich in eine remote (auf dem Host laufende) MySQL-DB schreibt 
(leider kein Oracle-Client für ARM verfügbar). Sollte der Kontakt zum 
Host abbrechen (Stromausfall, der Pi wird Batterie-gepuffert) wird 
solange in eine "lokale" SQLite-DB geschrieben, bis der Host wieder da 
ist um dann alle Daten von der lokalen zur remoten DB zu transportieren. 
Soweit so gut. Software dafür sowie I2C ist kein Problem. Der alles 
entscheidende Punkt sind die S0-Signale. Hier komme ich nicht weiter. 
Ich weiß dass es prinzipiell die Möglichkeit gibt, so etwas wie ISR auf 
dem Pi zu verwenden. Es wird aber von überall gewarnt dass es hier keine 
Priorisierung gibt und u.U. Signale (Flanken) verloren gehen können. Das 
aber will ich unbedingt vermeiden. Meine momentane Idee ist es, einen 
ATmega328 (Arduino, wegen der Einfachheit der Tool-Chain) zu verwenden, 
der die S0-Signale empfängt, die Zeiten (zwischen zwei Flanken == 
Verbrauchs-Momentanwert) misst und diese dann vi UART oder I2C (Slave) 
an den Raspi schickt. Softwaremäßig würde ich mir das auch zutrauen und 
sehe da auch keine großen Probleme. Aber: ich möchte die Anzahl der 
S0-Kanäle auf 4 erweitern und der ATmega328 besitzt nur 2 ext. 
Interruptus. Ich könnte auf einen Mega2560 ausweichen, der 8 ext. 
Interruptus besitzt, scheue mich aber vor der Idee so ein "Monster" 
selbst zu verbauen (PCB-Design, löten).  Der ATmega328 (DIL, Fassung, 
extern programmieren) wäre mir da deutlich lieber. Vielleicht wäre es 
auch möglich ein Eingangsbyte zu pollen (es gibt doch da so eine 
Fast-IO-Lib). Wie gestalte ich dann meine Timebase? Eine Möglichkeit 
wäre es, Timer1 im Hintergrund (mit Auto-Reload) laufen zu lassen 
(Überlauf mitzählen) und dann im 'main' einfach eine Schleife mit max. 
Speed laufen lassen, dabei die Eingänge (als Byte) pollen und bei 
Veränderung L->H (vorherigen Zustand sowie Timer1-Wert - getrennt für 
jeden Kanal bzw. Eingang gemerkt) die abgelaufene Zeit berechnen. Wird 
ein bisschen tricky (Überlauf berücksichtigen) aber sollte gehen. Dann 
aber noch die Kommunikation mit dem Host. Verwende ich I2C muss ich dem 
Host signalisieren, dass Daten zur Verfügung stehen (oder der muss 
ständig I2C-pollen, besser nicht). UART wäre hier besser, einfach Daten 
senden. Während ich das schreibe, frage ich mich gerade, ob ich nicht 
auch mit dem Raspi seine PIOs pollen kann. Ich würde mal sagen, 1k/s 
reichen. Wie hoch ist dabei die CPU-Belastung. Muss ich testen. Hat 
jemand Ideen oder Anmerkungen dazu? Was ist Eurer Meinung nach der beste 
Weg?

von 6502oldpapa (Gast)


Lesenswert?


von Enrico F. (Gast)


Lesenswert?

Gerade gefunden: https://github.com/w3llschmidt/s0vz

Wer suchen kann ist klar im Vorteil :)

von Enrico F. (Gast)


Lesenswert?

@6502oldpapa

Irgendeine Erklärung dazu?

von 6502oldpapa (Gast)


Lesenswert?

Vielleicht liest Du Dir mal die 4 Seiten Einführung durch!.....

von Enrico F. (Gast)


Lesenswert?

Danke für den sehr "freundlichen" Hinweis. Aber um des Friedens Willen, 
ich habe mir mehr als die ersten 4 Seiten durchgelesen - und verstehe 
immer noch nicht was das mit dem Problem "Interfacing S0 into the 
Raspberry.Pi" zu tun hat. Speziell, nachdem ich meine Zielkomponenten 
(sowie die Erklärung zur Entscheidung für dieselben) ja relativ deutlich 
dargelegt habe. Der CGMMSTICK ist sicherlich kein schlechtes Teil, ich 
(ich persönlich also) bleibe aber lieber bei einer überschaubaren Anzahl 
von zu verwendenden Controllern. Da ich derer schon einige "im Programm" 
habe möchte ich mein Repertoire nur ungern erweitern - und sehe auch 
keine Notwendigkeit dazu.

von 6502oldpapa (Gast)


Lesenswert?

na weil das Teil, basierend auf dem modernsten PIC, das alles kann was 
Du benötigst und beispielsweise 20 ext. Interrupts besitzt und auch all 
Deine Peripherieanforderungen erfüllt.

Und so ein rasend schneller Interpreter ist für Test und Entwicklung 
eine extrem angenehme Umgebung, nebst Eignung als Zielplattform.....

Die Beck Entwicklungsumgebung beschreibst Du ja selbst als sehr 
schlecht.

Der Stick kostet übrigens keine 20 Euronen.

von Sascha W. (sascha-w)


Lesenswert?

Enrico F. schrieb:
..schnipp..
> Aber: ich möchte die Anzahl der
> S0-Kanäle auf 4 erweitern und der ATmega328 besitzt nur 2 ext.
> Interruptus.
wieso? Jeder PIN ist als Interruptquelle nutzbar >siehe PCINTx

Sascha

von Enrico F. (Gast)


Lesenswert?

@Sascha

Gut recherchiert. Aber wie der Name es vermuten lässt handelt es sich um 
"Pin-Change-Ints" die noch dazu alle in einem einzigen Interrupt-Vector 
landen. D.h. dass ich in diesem dann als erstes einen Poll machen muss, 
um herauszufinden welcher Pin es war. Da kann ich auch gleich 
(Loop-)pollen ... Wenn der Chip sonst keine weiteren Tätigkeiten 
ausführen soll fände ich das (in diesem speziellen Fall) auch gar nicht 
so schlimm ... und ich freunde mich auch immer mehr mit dem Gedanken an 
:) In einer solchen (sehr schnellen) Loop könnte man auch problemlos 
einen Tiefpass einbauen und spart sich so eine externe Entprellung.

von Enrico F. (Gast)


Lesenswert?

@6502oldpapa
Bitte, bitte nicht falsch verstehen und bitte auch nicht persönlich 
nehmen: ich entwickle seit 16J. beruflich in C/C++, auf beinahe jeder 
bekannten Plattform (OS) inkl. einiger Exoten, "rasend schnell" ist für 
mich Assembler, schnell ist C, evtl. noch C++, aber einen Interpreter 
als "rasend schnell" zu bezeichnen ...
"Die Beck Entwicklungsumgebung beschreibst Du ja selbst als sehr
schlecht." Deswegen will ich ja auch weg davon. Für den Rasp.Pi verwende 
ich Eclipse, für den Arduino die gleichnamige "IDE". Vielleicht nicht 
"top notch", speziell die letzt genannte, aber OK.
Was mich ebenfalls davon abhalten würde den CGMMSTICK zu verwenden, ist 
die Verfügbarkeit. Wer weiß wie lange das "Projekt" noch lebt. Einen 
Atmega328 wird es sicherlich noch einige Jahre geben ... und dem Rasp.Pi 
traue ich auch einen langen live-cycle zu.

von Sascha W. (sascha-w)


Lesenswert?

das ist doch kein Problem, du schließt alle Eingänge an einen Port an. 
In der ISR liest du den ganzen Port ein und machst ein XOR mit einem 
gespeicherten Wert vom letzten Durchlauf - und schon hast du den/die 
Pins die sich geändert haben.
ODER: du nimmst INT0, INT1 und die zwei restlichen von zwei 
verschiedenen Ports - schon hast du 4 INTs mit eigener ISR.

Sascha

von Interpreter (Gast)


Lesenswert?

....für einen Interpreter ist der mmbasic Interpreter definitiv rasend 
schnell.
Abhängigkeiten bezüglich Verfügbarkeit sehe ich hier nicht, oder ist die 
Aversion gegen einen PIC in diesem Forum so groß ?

Komplette ERP Lösungen des damaligen Marktführers Nixdorf ( 80 er Jahre) 
liefen in einem Interpreter.

Das war schon bemerkenswert wie ein Bekannter damals in laufenden ERP 
Umgebungen großer Automobilhersteller on The fly Kundenwünsche in der 
Software umsetzte.
Etwas komfortableres ist mir bis heute nicht mehr begegnet.

Ich muss heute zwar keine Eproms mehr unter die Höhensonne legen, 
dennoch besteht der Zyklus immer aus programmieren, compilieren, 
flashen, testen und wieder von vorn beginnen.....

Es hängt halt immer von den Anforderungen ab, wer heilt hat recht ;-)...

von Enrico F. (Gast)


Lesenswert?

Interpreter schrieb:
> Abhängigkeiten bezüglich Verfügbarkeit sehe ich hier nicht, oder ist die
> Aversion gegen einen PIC in diesem Forum so groß ?

Nein, zumindest von meiner Seite keine Aversion. Und ich glaube auch, 
dass der Interpreter für viele Dinge (die Meisten?) schnell genug ist 
(vlt. auch für mein Ziel). Aber das ist nicht so sehr die Frage, sondern 
vielmehr wieviel Aufand es mich kostet vs. eine mir (und das nicht nur 
oberflächlich) bekannte Plattform (Arduino) zu verwenden, für die ich 
sowieso schon "eingerichtet" bin. Bei der Verfügbarkeit meinte ich mehr 
das kpl. Board (CGMMSTICK) als den PIC.

von Sebastian W. (sebastian_w29)


Lesenswert?

Hallo Enrico,

ein interessantes Projekt mit einigen Fragestellungen die mir auch schon 
untergekommen sind.

Zum Stromverbrauch:

Der Beck SC13 zieht laut Datenblatt 1,3W.

"Ein Raspberry Pi Modell A verbraucht 2,5W (5V, 500 mA), ein Modell B 
3,5W (5V, 700mA)."

Falls Atmega: Der Arduino Ethernet Shield basiert auf dem Wiznet W5100, 
der benötigt 150-180mA. Die 3.3V stammen aus Linearreglern, also 
5V*180ma -> 0.9W. Dann besser Wiz820IO, basierend auf W5200 -> 0.5W im 
Betrieb, und dann entweder den Power Down Modus benutzen oder die 
Spannungsversorgung nur für jede Übertragung aktivieren. Für den 
Wiz820IO kann die Arduino Ethernet-Lib mit einer kleinen Änderung weiter 
verwendet werden.

Wenn der Stromverbrauch wirklich minimal werden soll, solltest du den
uC immer wieder in den Stromsparmodus schicken. Dann kann die Software 
aber nicht pollen sondern muss Timer- und Interruptgesteuert gebaut 
werden.

Zur S0-Messung:

Ein S0-Impuls hat eine minimale Dauer von 30ms. Das ist eine Ewigkeit. 
Es werden dir also keine Impulse verlorengehen. Ich denke, dir geht es 
um die Messung der Zeit zwischen zwei Impulsen, um jederzeit den 
aktuellen Verbrauch zu ermitteln? Aber wie genau muss es denn sein? Bei 
einem S0-Impuls pro Wh bewirkt ein Stromverbrauch von 3600W einen Impuls 
pro Sekunde, und eine Änderung auf 3610W bewirkt einen Impulsverkürzung 
um 2770uS.

Solch "lange" Zeiten zu messen wird weder für den Raspi noch für einen 
uC irgend ein Problem sein. Der Raspi-Prozessor kalibriert zwei Mal pro 
Sekunde den SDRAM-Refresh und hält dabei für einige uS an, aber erstens 
lässt sich das mit disable_pvt=1 ausschalten (siehe 
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=37&t=7696) und 
zweitens wird der Messfehler (bei obigen Annahmen) unter 1/10W liegen.

Beim Ansatz mit Atmega ist die gemeinsame ISR für alle Pin Change 
Interrupts nicht wirklich ein Problem, und auch nicht die auch hier 
fehlende Priotisierung.

Zur Datenübertragung:

Bei meiner Hausüberwachung überträgt ein Arduino Ethernet minütlich 
Sensor- und Heizkesseldaten über HTTP an ein CGI-Script bei meinem 
Webhosting-Provider (DF). Als minimale Sicherheit überprüft das 
CGI-Script einen ebenfalls übermittelten Hashcode, der aus dem 
Datenpaket und einem Passwort gebildet wird. Das CGI-Script fügt die 
Daten dann in eine MySQL-Datenbank ein.

LG, Sebastian

von Enrico F. (Gast)


Lesenswert?

Hallo Sebastian,

Danke für Deine ausführliche Antwort.

>> Der Beck SC13 zieht laut Datenblatt 1,3W.

Ich gebe zu, ich habe die Stromaufnahme noch nicht gemessen, hole ich 
morgen Früh nach. Was aber auffällt ist, dass das Teil so heiß wird, 
dass man es nur kurz berühren kann. Daher meine Einschätzung.

Mit der Stromaufnahme des B-Modells kann ich leben.

Einen Atmega hatte ich zusätzlich zum R.Pi in Erwägung gezogen, um die 
Zeitmessung der S0-Impulse damit zu realisieren und den R.Pi damit zu 
entlasten. Irgendwie gefällt mir die Idee immer mehr, vor allem in 
Verbindung mit I2C als Kommunikation (Atmega als Slave). Diese 
Teilkomponente kann man dann auch recht einfach testen und in Betrieb 
nehmen.

Das mit der Länge der S0-Impulse ist klar - und ja, es geht um eine 
möglichst hohe (Betonung auf "möglichst" - aber eben nicht mehr als das) 
Genauigkeit. Ich habe bei der Berechnung mal max. 10kW zu Grunde gelegt. 
Ein Wert, der sicherlich nur selten zustande kommt (Weihnachten, 
Backofen, Herd, Waschmaschine und Trockner im Keller sowie Spülmaschine 
in der Küche läuft, Licht überall an, so kommen ganz schnell 10kW 
zusammen). Bei 1000Imp/kWh kommt man bei 10kW auf eine Zeit zw. zwei 
Impulsen von 360ms. Bei einer Ungenauigkeit von 1ms, also einem 
gemessenem Wert von (in diesem Beispiel) von 361ms würde ein Wert von 
9972W, also 28W zu wenig angezeigt. Bei einem Wert von bspw. 300W wäre 
der resultierende Fehler (bei 1ms Messungenauigkeit) deutlich kleiner 
(angezeigt: 299,975W). Ich denke, das wäre so in etwa die Genauigkeit 
die ich mind. anstrebe.

Man lernt nie aus, das Projekt "Panalyzer - a RaspberryPi based Logic 
Analyzer" (Dein Link) ist wirklich bemerkenswert und eine tolle Quelle 
für neue Ideen (Softwaretechnisch).

Mit dem Arduino Mega2560 + Ethernet Board habe ich auch ganz gute 
Erfahrung gemacht. Es gab auch eine Zeit, in der ich darüber nachdachte, 
die aktuelle Konstellation damit zu ersetzten. Ich hätte aber wie 
bereits beschrieben ganz gern eine möglichst lückenlose Aufzeichnung 
(vor allem der Temperatur sowie zukünftig auch einiger Wetter-Daten). 
Hin und wieder muss der Host mal angehalten werden (oder tut es vlt. 
auch mal von selbst). Kommt selten vor aber eine "Lücke" in der 
Datenbank ärgert mich immer. Vielleicht ist man ja auch mal ein paar 
Tage nicht da und kann nicht sofort reagieren. Dafür dann die SQLite 
"on-board", das bekommt man mit dem Atmega so nicht hin (natürlich kann 
man sich etwas einfallen lassen und auf eine SD-Karte schreiben, die 
SQLite ist in dem Moment einfach die "Luxusvariante").

von Sebastian W. (sebastian_w29)


Lesenswert?

Hallo Enrico,

bei Raspi und Atmega über I2C solltest du beachten: "There is a bug in 
the [Raspi] I2C master that it does not support clock stretching ..." 
(http://www.raspberrypi.org/phpBB3/viewtopic.php?f=44&t=13771). Bei 
meiner Kommunikation zwischen Raspi und Attiny 
(http://tilda.googlecode.com) habe ich die I2C-Clockrate auf dem Raspi 
ich glaube auf 94kHz reduziert um den Fehler zu umgehen.

LG, Sebastian

von Enrico F. (Gast)


Lesenswert?

Hallo Sebastian,

komme erst jetzt dazu zu Antworten, Sorry.

Also, bitte streiche aus meinem ersten Posting die Bemerkung mit der 
Stromaufnahme, erst messen, dann beschweren :) Die kpl. Platine zieht 
gerade einmal 150mA, also knapp 3,5W. Der Raspi ist da keine 
Verbesserung. Aber, die anderen Punkte (hauptsächlich die Seite der 
Entwicklungsumgebung sowie der Entwicklung selbst - Compiler etc.) 
stehen eher im Vordergrund.

Vielen Dank für den wertvollen Tipp bezüglich des Clock-Stretching. Ohne 
diesen hätte ich sicherlich Stundenlang versucht, den Fehler zu finden. 
Und obwohl ich prinzipiell I2C-"Sattelfest" :) bin, weiß ich wie ein 
solcher Fehler einen zur Verzweiflung bringen kann. Ich habe ein paar 
C++ Klassen geschrieben die nahtlos "ineinander" greifen (bzw. 
aufeinander aufbauen) - von der Möglichkeit eigene I2C Hardware zu 
verwenden (Bit-Bang oder am PC via RS232), über das Versenden/Empfangen 
(inkl. Timing) bis hin zu einzelnen Klassen (die auf die darunter 
liegenden aufbauen) für alle von mir verwendeten I2C-Devices. Je nach 
Verfügbarkeit von Hardware- bzw. Software-Support im Host setzten meine 
Klassen weiter oben oder unten an. So kann ich erst einmal die 
Kommunikation mit dem Slave am PC codieren und testen und wenn diese 
Lösung dann tut was sie soll auf den Ziel-Host portieren. Mit dem o.g. 
Problem hätte ich dann wohl einige Fragezeichen über meinem Kopf gehabt 
... und u.U. zu einem Bit-Bang-Mode übergegangen. Speed ist in meinem 
Fall glaube ich nicht so sehr das Thema, die 4 S0-Kanäle á 16Bit und 
einer geschätzten Impulsfrequenz von max. 2Hz würden mir auch die 50kHz 
I2C-Frequenz reichen.

von ... (Gast)


Lesenswert?


von Alexander S. (esko) Benutzerseite


Lesenswert?

Enrico F. schrieb:
> Ist-Zustand: Beck SC13 ...
> Das Ganze läuft seit ca. 5 Jahren 24/7 mit relativ wenig Problemen.
> Avisierter Zustand: Ein Raspi
Ich hätte da so meine Bedenken, ob ein Raspberry Pi so lange problemlos 
läuft. Als Schwachstellen hätte ich die SD-Karte und das Netzteil im 
Visier.

von Frank K. (fchk)


Lesenswert?

Schau Dir mal www.udoo.org an. Da hast Du Linux/Android und Arduino auf 
einem Board.

Der Pi ist zwarganz nett, aber auf billig designt, z.B 
unterdimensionierte Treiber und Spannungsregler. Für die Lehre oder als 
Spielerei ist das egal, für den Dauerbetrieb nicht. Und Ethernet über 
USB wäre mir auch nicht zuverlässig genug.

Alternative: BeagleBoneBlack. Die Hardware macht mir auch einen 
zuverlässigeren Eindruck, und Du hast viel mehrIOs als beim Pi.

fchk

von Enrico F. (Gast)


Lesenswert?

... schrieb:
> http://wiki.volkszaehler.org/hardware/controllers/...

Danke :) ... hatte ich weiter oben schon zitiert :)

von Enrico F. (Gast)


Lesenswert?

Frank K. schrieb:
> Schau Dir mal www.udoo.org an. Da hast Du Linux/Android und
> Arduino auf
> einem Board.
>
> Der Pi ist zwarganz nett, aber auf billig designt, z.B
> unterdimensionierte Treiber und Spannungsregler. Für die Lehre oder als
> Spielerei ist das egal, für den Dauerbetrieb nicht. Und Ethernet über
> USB wäre mir auch nicht zuverlässig genug.
>
> Alternative: BeagleBoneBlack. Die Hardware macht mir auch einen
> zuverlässigeren Eindruck, und Du hast viel mehrIOs als beim Pi.
>
> fchk

Vielen Dank für den Tip! Das Board auf www.udoo.org sieht 
vielversprechend aus. Preislich auch völlig ok bzw. im Rahmen. Die von 
Dir angesprochenen Punkte bzgl. Spannungsregler und USB2Eth. gefallen 
mir auch nicht sonderlich. Ich würde dem Rasp dennoch (bis auf 
Wiederruf, das muss dann einfach die Zeit zeigen) den Vorzug geben. 
Warum? Ganz großer Punkt für den Rasp ist die Verfügbarkeit und die 
Verkaufszahlen. Hohe Verkaufszahlen sind (mein Empfinden/Meinung) ein 
Motor für Weiterentwicklung und Verbesserungen (hoffentlich kompatibel).

Sehr gut gefällt mir BeagleBoneBlack. Ich bekomme seit einiger Zeit 
immer wieder Werbemails von TI (hatte mal beruflich mit denen zu tun), 
eine Dieser bewarb den BeagleBoneBlack. Cooles Teil. Ich denke ich werde 
mir einen besorgen und mal "unter die Lupe" nehmen :) Das wäre für mich 
tatsächlich eine Alternative zum Raspi, weil ich hier bzgl. der o.g. 
Punkte mind. das gleich Potential sehe (scheinbar auch noch gepusht von 
TI). Mit der gleichen CPU habe ich auch ein "AM335x Starter Kit" von TI 
hier "rum-liegen" ... allerdings ist mir dieses Teil schon zu "bulky".

Beste Grüße!

von Enrico F. (Gast)


Lesenswert?

Alexander Schmidt schrieb:
> Enrico F. schrieb:
>> Ist-Zustand: Beck SC13 ...
>> Das Ganze läuft seit ca. 5 Jahren 24/7 mit relativ wenig Problemen.
>> Avisierter Zustand: Ein Raspi
> Ich hätte da so meine Bedenken, ob ein Raspberry Pi so lange problemlos
> läuft. Als Schwachstellen hätte ich die SD-Karte und das Netzteil im
> Visier.

Hallo Alex,

das mit der SD-Karte macht mir auch "zu schaffen". Allerdings "leiden" 
alle solchen "Einplatinen-Computerchen" :) unter diesem Problem. Wie ich 
oben schon schrieb, soll der Rasp ja (auch wegen der Bedenken in 
Hinblick auf die SD-Card) seine Daten an eine remote MySQL-DB abliefern 
und nur im Notfall die Daten lokal speichern. Swapping etc. ausschalten, 
alle unnötigen Schreibzugriffe auf die SD unterbinden, evtl SSD via USB 
(durch die Größe des SSD und dem ausgefeilten wear-leveling hat diese 
dann schon ein beachtliches Leben - in hinblick auf die zu erwartenden 
Datenmengen), das sind so meine Ideen um dem Problem zu begegnen.
Beim Netzteil, hmm, wie könnte man es besser machen? Gibt es besser 
Komponenten als die drei Spannungsregler auf dem Board? Wenn ja welche? 
Und, wie hoch sind die Drei tatsächlich ausgelastet? Wie schon in einem 
meiner vorherigen Postings, die Zeit wird zeigen wie gut oder schlecht 
das alles für Langzeitanwendungen bemessen ist.

Beste Grüße.

von Frank K. (fchk)


Lesenswert?

Enrico F. schrieb:
> und dem Rasp.Pi
> traue ich auch einen langen live-cycle zu.

Ich nicht. Der Broadcom-SOC ist ein Consumerprodukt, und ich glaube 
nicht, dass der mehr als 5 Jahre verfügbar ist (und er hat ja schon 
einige Jahre rum). Er wurde gewählt, weil er billig ist, und das ist 
typisch für den Comsumermarkt: Billig, in kurzer Zeit hohe Stückzahlen 
verkaufen, und in einem Jahr kommt wieder was neues. Das siehst Du ja 
auch an der PC-Welt. Versuch mal ein, für ein zwei Jahre altes Mainboard 
einen exakten Ersatz in der gleichen Revision nachzubestellen. Du wirst 
Dich wundern, wie kurz die Produktzyklen hier sind.

Wenn Du Langzeitverfügbarkeit willst, bist Du hier komplett falsch. 
Automotive verlangt 15 Jahre Verfügbarkeit, die Industrie 10 Jahre. 
Freescale garantiert z.B., dass der iMX.53 bis 2026 verfügbar ist. DAS 
sind doch ganz andere Dimensionen, oder?

Weiterer Grund: Der Broadcom-Chip ist nur ein ARM11, also eigentlich 
schon veraltet. Aktuell sind die ARM Cortex Architekturen, also hier 
A8/A9.

fchk

von Detlef _. (detlef_a)


Lesenswert?

Ich habe mir den AVR-NetIO

http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_AVR_NET_IO.html

auf die Hutschiene in meinen Zählerkasten eingebaut. Der hat 4 A/D 
Wandler auf seine Schraubleiste herausgeführt, mit denen polle ich die 
S0 Ausgänge meiner Stromzähler. Der netio hat ne Ethernet Schnittstelle, 
die geht in ein PLC modem im Schaltschrank. Ganze Setup kost nix, 
braucht wenig Strom, kann aber nichts speichern. Deswegen lasse ich den 
ATMega auf dem netio alle drei Minuten ne email mit den Daten schreiben, 
dann brauche ich keinen 'Server' ständig laufen haben und Google zahlt 
den Strom für die Speicherung der Daten. Mit nem script hole ich die 
Daten gesammelt ab und pflücke sie für die Datenbank auseinander.

Läuft seit Jahren super.
Cheers
Detlef

von Enrico F. (Gast)


Lesenswert?

Detlef _a schrieb:
> Ich habe mir den AVR-NetIO
>
> http://www.pollin.de/shop/dt/MTQ5OTgxOTk-/Bausaetz...
>
> auf die Hutschiene in meinen Zählerkasten eingebaut. Der hat 4 A/D
> Wandler auf seine Schraubleiste herausgeführt, mit denen polle ich die
> S0 Ausgänge meiner Stromzähler. Der netio hat ne Ethernet Schnittstelle,
> die geht in ein PLC modem im Schaltschrank. Ganze Setup kost nix,
> braucht wenig Strom, kann aber nichts speichern. Deswegen lasse ich den
> ATMega auf dem netio alle drei Minuten ne email mit den Daten schreiben,
> dann brauche ich keinen 'Server' ständig laufen haben und Google zahlt
> den Strom für die Speicherung der Daten. Mit nem script hole ich die
> Daten gesammelt ab und pflücke sie für die Datenbank auseinander.
>
> Läuft seit Jahren super.
> Cheers
> Detlef

Das Teil kenne ich auch :) Beinahe hätte ich gesagt "warum einfach 
wenn's auch umständlich geht" (alle drei Minuten ne email, pflücke sie 
für die Datenbank auseinander) ... aber ich sag's nicht :)

Auf die Art und Weise ist aber leider keine Momentanverbrauchsanzeige 
möglich ... und auf die möchte ich nicht verzichten :)

Beste Grüße.

von Enrico F. (Gast)


Lesenswert?

Frank K. schrieb:
> Enrico F. schrieb:
>> und dem Rasp.Pi
>> traue ich auch einen langen live-cycle zu.
>
> Ich nicht. Der Broadcom-SOC ist ein Consumerprodukt, und ich glaube
> nicht, dass der mehr als 5 Jahre verfügbar ist (und er hat ja schon
> einige Jahre rum).

Deine Argument klingen plausibel und "erschlagend" - es ist aber weniger 
der Chip (CPU) selbst auf den ich setzte, sondern vielmehr das Format 
(Größe, Pinheader usw.). Falls Rasp irgendwann die CPU gegen eine andere 
austauscht aber die Sourcen von meiner Software 1:1 portierbar sind, bin 
ich zufrieden.

von Frank K. (fchk)


Lesenswert?

Enrico F. schrieb:

> Deine Argument klingen plausibel und "erschlagend" - es ist aber weniger
> der Chip (CPU) selbst auf den ich setzte, sondern vielmehr das Format
> (Größe, Pinheader usw.).

Das wird dann Dein geringstes Problem sein, denn das lässt sich per 
Adapterkabel innerhalb weniger Minuten anpassen.

fchk

von old man (Gast)


Lesenswert?

Ein Rasperry wäre mir für den Kleckerkram schon zu viel. Nimm ein Board 
mit einem Cortex M3 was Ethernet und SD-Karte an Bord hat. So was oder 
was ähnliches:

http://www.embeddedartists.com/products/app/aoa_kit.php

Die Messdaten werden erst mal auf SD geschrieben und parallel versucht 
eine weitere Task die Daten an den Server los zu werden. Da kann auch 
mal länger die Verbindung fehlen. Das ganze braucht dann deutlich 
weniger Strom und ist zuverlässiger. Mir wird immer warm ums Herz wenn 
man liest wieviele Zeilen Quellcode (Linux + Treiber + ...) verballert 
werden um so eine relativ triviale Aufgabe zu lösen. Nicht das man die 
selber schreiben müßte, aber in 10Mil. Zeilen Quellcoden stecken 
garantiert mehr Fehler als in 10000.

von Christian (Gast)


Lesenswert?

Hallo Enrico,

ich komme vermutlich etwas spät, aber ich bin einen ähnlichen Weg 
gegangen wie Du das willst (oder wolltest). Ich verarbeite die 
S0-Impulse auf einem Arduino und sende sie per USB an einen Logger (bei 
mir eine Fritz!Box mit der Software FHEM). Mir war es auch wichtig, 
keine Signale durch Polling zu verlieren. Als ich die Implementierung 
dann fertig hatte, habe ich aber gesehen, dass die Signaldauer meiner 
Zähler ca. 70ms beträgt - das ist eine Menge Zeit. Heute sehe ich 
deshalb keine Vorteile mehr für die Interrupt-getriebene Verarbeitung - 
die Software dafür habe ich trotzdem geschrieben. Die ganze Geschichte 
und den Arduino-Code findest Du bei Bedarf unter 
http://forum.fhem.de/index.php?t=msg&th=13155

von Berthold (Gast)


Lesenswert?

Link zu FHEM hat sich geändert:
http://forum.fhem.de/index.php/topic,13155.60.html

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.