Betriebsstundenzähler
Idee
Für einen Elektrowerkzeugverleih soll perspektivisch ein kostengünstiger Betriebsstundenzähler auf der Basis eines Attiny84A zum Einbau in einen Schukostecker entwickelt werden, der seine gesammelten Daten über 2.4GHz-Funk mit einem nRF24L01+ übermittelt.
Die Stromversorgung übernimmt ein Kondensatornetzteil. Die Stromaufnahme des Geräts wird grob mit Hilfe eines Magnetometers HMC5883L gemessen und die Betriebszeiten in verschiedenen Verbrauchszuständen aufsummiert. Auch der Gesamtverbrauch wird aufsummiert.
Da Flash und Eeprom nur eine gewisse Anzahl von Schreibvorgängen aushalten, und ein zyklisches Schreiben etwa alle fünf Minuten bei einem dauernd angeschlossenen Gerät schon zu über 100.000 Schreibvorgängen pro Jahr führen würde, werden die Betriebszeiten und -verbräuche nur beim Fall der Versorgungsspannung mit dem Rest der Pufferkondensatorenergie permanent gespeichert.
Die Daten werden an einer Basisstation gesammelt und an einen Server im Internet weitergereicht, der die Daten in einer Datenbank speichert und dann verschiedene Arten der Auswertung anbietet. Die Basisstation soll natürlich über 2.4GHz-Funk sowie über einen Ethernet-Anschluss verfügen. Eine Tonsignalmöglichkeit ist ebenfalls sinnvoll. Dabei wird auf ein früheres Design einer IOT-Basisstation zurückgegriffen.
Wichtig ist dabei die Möglichkeit, die Software nicht nur der Basisstation, sondern insbesonders der Betriebsstundenzähler aktualisieren zu können. Es muss also für einen Funkbootloader ein Protokoll und Software entworfen werden; zudem muss eine Bootserver-Software für die IOT-Basisstation geschrieben werden, die ihrerseits die zu ladende Software aus dem Internet bezieht.
Aktueller Status
Die Prototypen funktionieren. Das Projekt ruht jedoch, weil das „Inverkehrbringen“ eines Funkgeräts eine recht teure Zertifizierung benötigen würde. Zur Zeit denke ich alternativ über ein Auslesegerät nach, in das der Schuko-Stecker gesteckt wird. Dazu müsste der Mikrocontroller diese Situation erkennen können und würde dann die gespeicherten Verbrauchsdaten auf der 230V-Zuleitung übertragen.
Hardware-Design Version 05
Das Board wird mit Plastik 70 Super o.ä. behandelt und/oder in eine Silikonhülle verbaut. So kann dann eine der zwei Gerätezuleitungen mit einem dünnen Kabelbinder definiert über oder unter dem Magnetometer entlang geführt werden.
Platinenfertiger-Shootout
Übersicht | Oben links Oshpark, oben rechts Itead Unten links Seeed, unten rechts Elecrow Erstaunlicherweise haben alle Hersteller die nötigen Schlitze ohne Aufpreis gefräst. | |||
Oshpark | Bestellt am 25.März, verschickt am 2.April, erhalten am 12.April Beste Lötstoppmaske, keinerlei Ausfransen bei 7 mil Abstand. Feiner Bestückungsdruck. Bohrungen>=13mil, Viaringe>=7mil → 12/24 Vias werden knapp. Saubere Bohrungen (man kann durch alle durchsehen). Bohrversatz ca. 3-4mil. Schlitzbreite 1mm nicht ganz eingehalten. Sollbruchstellen müssen nachgearbeitet werden. 2.46€ pro 3, 0.82€ pro Stück, kostenloser Versand. | |||
Seeed | Bestellt am 25.März, verschickt am 2.April, erhalten am 16.April Lackgefüllte Bohrlöcher. Bohrversatz ca. 2-3mil. Kein Lötstop unter ca. 7mil Abstand. Grob gerasterter Bestückungsdruck. 13.48€ pro 10 (inkl. 6.08€ Versand), 1.35€ pro Stück. |
|||
Itead | Bestellt am 26.März, verschickt am 31.März, erhalten am 10.April Lackgefüllte Bohrlöcher. Bohrversatz ca. 1-3mil. Kein Lötstop unter ca. 7mil Abstand. Grob gerasterter Bestückungsdruck. 10.33€ pro 10 (inkl. 2.92€ Versand), 1.03€ pro Stück. |
|||
Elecrow | Bestellt am 25.März, verschickt am 1.April, erhalten am 14.April Farbe ohne Aufpreis. Lackgefüllte Bohrlöcher. Bohrversatz ca. 1-3mil. Kein Lötstop unter ca. 12mil Abstand. Grob gerasterter Bestückungsdruck, zum Teil recht weit vom Lötstopprand schon beschnitten. 10.84€ pro 10 (incl. 3.53€ Versand), 1.08€ pro Stück. |
Verbesserungen und Korrekturen
- MISO/MOSI. Die Benennung der Attiny84a-Pins ist, gelinde gesagt, etwas unglücklich. Benutzt man USI für die SPI-Kommunikation, so werden mitnichten die MISO/MOSI-Pins benutzt, sondern die DI/DO-Pins, und diese sind so genial belegt, dass man Attiny-MISO/DO mit nRF24L01+-MOSI und Attiny-MOSI/DI mit nRF24L01+-MISO verbinden muss. Warum nur, Atmel? Dies Problem liess sich auf dem Prototyp-Board allerdings noch recht einfach beheben:
- nRF24L01+-Probleme.
- Der nRF24L01+ hat keine interne Brownout-Erkennung, sondern bleibt öfters bei 1.7V im TX- oder RX-Modus hängen und verbraucht dabei dann fröhlich weiter >10mA Strom. Die Lösung ist eine Spannungsversorgung über einen Attiny-Port.
- Ursprünglich wurde der Takt für den nRF24L01+ vom CKOUT des Attiny84a gespeist. Dies hat jedoch zwei Nachteile. Zum einen beeinflusst der interne Prescaler des Attiny84a den CKOUT-Takt, zum anderer (und gravierender) wird der nRF24L01+ dann über den XT1-Eingang mit Strom versorgt. Die Lösung ist die Verwendung von Attiny-XTAL2 als Takt für den nRF24L01+. Dies macht ausserdem einen weiteren Pin verfügbar.
- Nordic empfiehlt das zentrale Pad unter dem nRF24L01+ (das mit dem Substrat verbunden ist) /nicht/ mit GND zu verbinden.
- Das zentrale nRF24L01+Pad ist größer als das SMD-Pad im Eagle-Paket. Neben dem SMD-Pad war darum noch Platz fur ein VCC-Via, zwar glücklicherweise mit Lötstopp abgedeckt aber trotzdem unschön.
- Netzkondensatoren in Reihe. Zwar wird die Spannung halbiert, und beim Durchschlagen von einem der beiden Kondensatoren funktioniert der BSZ noch. Allerdings sinkt die gelieferte Stromstärke von 14mA auf 7mA im Vergleich zur Parallelschaltung, und das wird dann doch etwas sehr knapp. In der neuen Version sind daher zwei Netzkondensatoren parallelgeschaltet.
- 4.7V-Zenerdiode. Als Spannungsregler ist ein günstiger AAT3220 gewählt, der 6V Eingangsspannung verträgt. Die Pufferkondensatoren sind ebenfalls für 6.3V spezifiziert. Eine 5.6V-Zenerdiode ist daher günstiger.
- Brückengleichrichter. Anstelle der einfachen Schottky-Diode wird ein Brückengleichrichter eingebaut, um beide Halbwellen zu nutzen. Die Stromstärke verdoppelt sich dadurch beinahe.
- Abschalterkennung über internen ADC.
- Kein Debug-Ausgang.
- Keine Programmierschnittstelle. Zum Programmieren müssen Kabel angelötet werden, was schon bei kleiner Stückzahl unmöglich wird. Stattdessen wird am Rand der Platine mit Pads und Löchern eine Schnittstelle für einen Narrow-SOIC-Testclip von 3M (www.digikey.com/product-detail/en/923655-08/923655-08-ND/) angebracht.
Hardware-Design Version 07
Verbesserungen und Korrekturen zwischen Version 07 und Version 09
- Die 1/4W 1206-Widerstände (100Ω und 470kΩ) müssen mindestens für 500V Nennspannung ausgelegt sein.
- Der Abstand vom unteren 230V-Eingang (mit R0 verbunden) zur Eingangsfläche von C1, C2 und R1 ist sehr klein. Normalerweise fallen über R0 nur ±4V ab. Beim Einschalten auf dem Scheitelpunkt fällt dagegen kurzzeitig eine Spannung von ca. 280V ab (die Spannung fällt nach 100μs auf ca. 40V und erreicht nach weiteren 100μs Normalwerte). Diese hohe Spannung könnte über den kleinen Abstand schlagen.
- Die Leitungsführung ist verbessert: Quarz und Regler tauschen die Plätze, um die Oszillatorzuleitung zum nRF24L01+ zu verkürzen, und die rückseitigen Bahnen zum Programmieranschluss und zur Spannungsversorgung sind noch einmal optimiert.
- Nach IPC-2221 reichen anscheinend intern 0.25mm Abstand zwischen Spannungen von 300-500V aus, die Schlitze sind danach also unnötig.
- Wo immer möglich sind nun europäische Standard-Eagle-Komponenten verwendet.
- Keepout-Bereiche um die RCL-Komponenten werden besser berücksichtigt.
Hardware-Design Version 09
Kosten
Ident | Spez | Größe | Nr | Einzel | Summe | |
Version V05 | ||||||
C1,C2 | 220nF, 450V | 1210 | 2 | 0.384 | 0.768 | |
C3,C4 | 100μF | 1206 | 2 | 0.600 | 1.200 | |
C5 | 1μF | 0402 | 1 | 0.019 | ||
C6,C16 | 100nF | 0402 | 2 | 0.005 | 0.010 | |
C7,C8 | 18pF | 0402 | 2 | 0.064 | 0.128 | |
C9 | 10nF | 0402 | 1 | 0.006 | ||
C10 | 1nF | 0402 | 1 | 0.006 | ||
C11 | 33nF | 0402 | 1 | 0.018 | ||
C12 | 2.2nF | 0402 | 1 | 0.008 | ||
C13 | 4.7pF | 0402 | 1 | 0.168 | ||
C14 | 1.5pF | 0402 | 1 | 0.064 | ||
C15 | 1.0pF | 0402 | 1 | 0.064 | ||
C17 | 4.7μF, 16V | 0805 | 1 | 0.137 | ||
C18 | 220nF | 0402 | 1 | 0.036 | ||
D1 | Zener 4.7V | MINIMELF | 1 | 0.026 | ||
D2 | Schottky | MICROMELF | 1 | 0.060 | ||
L1 | 3.9nH | 0402 | 1 | 0.017 | ||
L2 | 2.7nH | 0402 | 1 | 0.017 | ||
L3 | 8.2nH | 0402 | 1 | 0.036 | ||
Q1 | 16MHz, 10ppm | 1210 | 1 | 0.758 | ||
R0 | 100Ω | 1206 | 1 | 0.014 | ||
R1,R2 | 220kΩ | 1206 | 2 | 0.014 | 0.028 | |
R3,R4 | 22kΩ, 1% | 0402 | 2 | 0.016 | 0.032 | |
R5,R6 | 2.2kΩ | 0402 | 2 | 0.010 | 0.020 | |
U1 | ATTINY84A-MU | MLF20 | 1 | 1.010 | ||
U4 | ANTENNA | ANTENNA | 1 | 0.403 | ||
V1 | AAT3220 | SOT23 | 1 | 0.136 | ||
Preis ohne/mit MwSt | 5.189 | 6.175 | ||||
U2 | NRF24L01+ | QFN20 | 1 | ebay - China-Modul | 0.860 | |
U3 | HMC5883L | LPCC16 | 1 | ebay - China-Modul | 1.590 | |
PCB Oshpark | 0.820 | |||||
Preis aller Komponenten | 9.445 | |||||
Version V07 | ||||||
D1 | Zener 5.6V | MINIMELF | 1 | 0.026 | unverändert | |
D2' | Brückengleichrichter DLPA006 160mA | SOT-363 | 1 | 0.408 | statt 0.060 | |
R1/2' | 470kΩ | 1206 | 1 | 0.014 | statt 0.028 | |
R7 | 27kΩ, 1% | 0402 | 1 | 0.016 | zusätzlich | |
Zusatzkosten | 0.350 | 0.417 | ||||
Preis aller Komponenten | 9.862 |
Software
Eine erste Version einer Betriebsstundensoftware findet sich unter http://github.com/wangnick/bsz. Die entsprechende Internet-Gateway-Software für die Basisstation ist noch in Arbeit. Auch eine Kalibrierfunktion für den Stromverbrauch fehlt noch.
Ein erster Versuch eines Bootloaders findet sich unter https://github.com/wangnick/mirfboot. Der dazugehörige Bootserver ist noch in Arbeit.