Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-basierter Geburtstags-Erinnerer: 50 Jahre Laufzeit mit einer Knopfzelle

Komponenten und Zubehör

KomponenteMengeHinweis
Arduino Nano R3 (ATmega168P-AU)1Chinesische Klone von Nano/Mini mit ATmega168P-AU
Intersil ISL1208 RTC1
Renata CR2450N Knopfzelle1
CP2102 USB-zu-Serial Modul1
USBasp Programmer1
32,768 kHz Quarz1
SPST Schalter1
SMD LEDs1
Klare LED-Kuppel1
4″ x 4″ Schalterdose (oder 3D-gedrucktes Gehäuse)1
Lochrasterplatine1
Berg-Stecker (M & F)1
Widerstand 4,75 kΩ3
Widerstand 10 kΩ2

Benötigte Werkzeuge

Apps und Online-Dienste

Projektbeschreibung

Haben Sie je Ihren eigenen Geburtstag vergessen? Oder möchten Sie einem geliebten Menschen ein Gerät schenken, das ihn 50 Jahre lang jedes Jahr zum Geburtstag gratuliert? Dieser einfache, Arduino-basierte Geburtsalarm läuft mit einer einzigen CR2450-Knopfzelle und erinnert zuverlässig für über 50 Jahre.

Das Projekt entstand für den Hackaday Coin Cell Challenge. Der ATmega168P (auf einem modifizierten Arduino Nano) wird in den Deep-Sleep-Modus versetzt und nur einmal jährlich durch den RTC-Alarm geweckt. Der durchschnittliche Stromverbrauch beträgt ca. 1,22 µAh (inkl. Selbstentladung), was bei 540 mAh Kapazität > 50 Jahre Betriebszeit ermöglicht.

Merkmale

Schritt 1: Arduino Nano modifizieren

Entfernen vom Nano-Board: CH340G USB-Serial-Chip, Schottky-Diode an USB 5V, zwei 1k-Widerstände an TX/RX, RX/TX/PWR-LEDs, AMS1117 5V-Regler. Danach die Regler-Pads überbrücken. Quarz vorerst belassen (zum Fuse-Programmieren).

Schritt 2: Fuse-Bits des ATmega168P ändern

Ziel: Interner 1 MHz Takt (8 MHz / 8), Brown-Out-Detection deaktivieren, Watchdog deaktivieren, alle ungenutzten Peripherien (ADC, Timer) in Software abschalten, I/O-Pins auf Input/Low (außer Pins 13, 2, 3). Programmierer: USBasp mit ProgISP-Software. Fuse-Einstellungen: Low=0x62, High=0xDF, Extended=0xF9 (für ATmega168P-AU, Signature 1E940B).

Schritt 3: Kompilieren und Hochladen

In boards.txt (Arduino-Installationsverzeichnis) neuen Board-Eintrag „Arduino Pro Mini (3.3V, 1 MHz) w/ ATmega168“ hinzufügen. Arduino IDE neu starten, Board auswählen, Sketch kompilieren, „Export compiled binary“ (Strg+Alt+S) → HEX-Datei ohne Bootloader. Mit USBasp/ProgISP flashen.

Schritt 4: Intersil ISL1208 I2C RTC

Extrem stromsparender RTC (400 nA im VBAT-Betrieb, max 1,2 µA bei VDD). Besitzt Monats-/Datums-Alarmregister (wichtig für jährlichen Geburtstag). Interrupt-Ausgang (250 ms Low-Puls) weckt MCU aus Sleep. Breakout-Platine für SMD-Version selbst gebaut.

Schritt 5: CR2450N Knopfzelle

Li/MnO2, 3 V, 540 mAh, Selbstentladung <1 %/Jahr, Haltbarkeit bis 10 Jahre (Lagerfähigkeit).

Schritt 6: Schaltplan

I2C-Pull-ups (4,7 kΩ) an A4/A5 (SDA/SCL). Pull-ups (10 kΩ) an Interrupt-Pins D2 (RTC-Alarm) und D3 (Zeiteinstell-Schalter). CP2102 USB-Serial: RX/TX an Arduino RX/TX, nicht +5V an VCC anschließen.

Schritt 7: Funktionsweise

  1. Aktuelle Uhrzeit und Alarm (Geburtstag) per Serial Monitor auf RTC schreiben.
  2. MCU geht in Deep Sleep (Power Down), deaktiviert ADC, Timer etc.
  3. Bei Alarm (MM, DD, hh, mm, ss) generiert RTC Interrupt → MCU wacht auf.
  4. MCU aktiviert Peripherien, sendet „Happy Birthday“-Nachricht an Serial Monitor, blinkt LED in Kuppel.
  5. Danach wieder Sleep bis nächstes Jahr.
  6. Zeiteinstell-Schalter ON → MCU wacht auf, ermöglicht Uhrzeit-Prüfung/Änderung per Serial.

Befehle im Serial Monitor: t = aktuelle Zeit anzeigen, a = Alarmzeit anzeigen, c = abbrechen & Sleep. Zeit setzen: TYYMMDDhhmmssp# (p=0 AM, 1 PM). Alarm setzen: AMMDDhhmmssp# (kein Jahr).

Schritt 8: Code-Struktur

13 Funktionen: setup(), loop(), sleepNow() (Deep Sleep), alarmInterrupt() (INT0, Pin 2), timeUpdateInterrupt() (INT1, Pin 3), fetchTime(), blinkLED(), establishSerial(), endSerial(), bcdToDec(), decToBcd(), printTime(), printAlarmTime(). Vollständiger Code auf GitHub.

Schritt 9: Test & Stromverbrauch

Prototyp auf Breadboard, Strommessung mit Fluke 87 (0,1 µA Auflösung). Sleep-Strom ATmega168P @1 MHz: ~0,2 µA. ISL1208 im VBAT-only-Modus (VDD getrennt, LPMOD=0): 400 nA. Gesamtschlafstrom: 0,6 µA. Aktive Phasen: Zeiteinstellung (~60 s), Geburtstagsblinken (~19 s), Pre-Sleep-Delay (6 s) = ~85 s/Jahr bei 3 mA (eine LED). Durchschnittsstrom: 608 nA (ohne Selbstentladung). Mit 1 % Selbstentladung (5,4 mAh/Jahr = 616 nA) → 1,22 µA Gesamt → 50 Jahre + 131 Tage bei CR2450N.

Schritt 10: Bau & Gehäuse

Lochrasterplatine, Berg-Stecker für Batterie/Schalter/LED. Gehäuse: 4″x4″ Schalterdose, zwei Ausschnitte für Schalter und USB, LED-Kuppel von Billig-Lampe, silber lackiert. Dekoration nach Geschmack.

Schritt 11: Verbesserungsideen

Code

Vollständiger Quellcode: GitHub Repository

Schaltplan

Schaltplan des Arduino-Klons im Projekt enthalten.

Herstellungsprozess

  1. Industrie 4.0 & IoT: Wichtige Markttrends für die nächsten zwei Jahre
  2. 10 Schlüsselfaktoren für die Auswahl des perfekten Schalters für Ihre Applikation
  3. NVIDIA Jetson Nano: 5-W, 472 GFLOPS KI-Computer für Maker und Enterprises
  4. Kontron bringt CP6940: Rugged 40 GbE Switch für Extreme Environments
  5. Kaltmontage Ihrer Lager: Expertentipps für sichere, präzise Installation
  6. Wie COVID-19 Cyberkriminalität weiter anheizt: Remote Work, Impfstoff-Lieferketten & Spionage
  7. 7 Schlüsselindikatoren: Zeit für ein Generator-Upgrade
  8. Drei Warnsignale: Ihr Motor braucht Wicklungsreparatur
  9. Fehlerfreie PCB-Bestückung meistern: Wesentliche Praktiken
  10. Von Fabriken zu Laboren: Die vielseitige Kraft industrieller Roboter