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

Arduinos interne Timer meistern für präzises Timing

Komponenten und Zubehör

Komponente Menge
Arduino UNO 1
LED (beliebig) 1
Widerstand 220 Ω 1

Über dieses Projekt

Überblick

Wenn man präzise Zeitmessung braucht, sind Hardware-Timer unverzichtbar. Die Arduino-Funktion delay() blockiert den Prozessor – mit Timern läuft der Hauptcode weiter, und ein Interrupt signalisiert das Ablaufen der Zeit.

Dieses Tutorial erklärt die Nutzung von Timer0 (8-Bit) im CTC-Modus („Clear Timer on Compare Match“) am Beispiel des ATmega328P (Arduino UNO).

Funktionsweise

Der Zählerblock (siehe Datenblatt ATmega328P) besteht aus:

Wichtige Register:

Berechnung von OCR0A für 1 ms bei 16 MHz und Prescaler 64:

Taktfrequenz nach Vorteiler: 16 MHz / 64 = 250 kHz → Periodendauer 4 µs.

Für 1 ms (1000 µs) benötigt man 1000 / 4 = 250 Zyklen. Da der Zähler bei 0 startet und bei Match zurückgesetzt wird: OCR0A = 250 - 1 = 249 = 0xF9.

Beispiel: LED jede Sekunde blinken lassen


/* Blinkt LED an Pin 13 jede Sekunde mittels Timer0-Interrupt */
volatile int timer = 0;
bool state = false;

void setup() {
  pinMode(13, OUTPUT);
  TCCR0A = (1 << WGM01);        // CTC-Modus
  OCR0A  = 0xF9;                // 249 → 1 ms bei Prescaler 64
  TIMSK0 = (1 << OCIE0A);       // Compare Match A Interrupt aktivieren
  sei();                        // Globale Interrupts freigeben
  TCCR0B = (1 << CS01) | (1 << CS00); // Prescaler 64 (Bit CS01 + CS00)
}

void loop() {
  if (timer >= 1000) {          // 1000 × 1 ms = 1 s
    state = !state;
    timer = 0;
  }
  digitalWrite(13, state);
}

ISR(TIMER0_COMPA_vect) {
  timer++;                      // Wird alle 1 ms aufgerufen
}

Wichtig: Den Prescaler (TCCR0B) erst am Ende setzen, da der Timer dann sofort läuft. Zum Stoppen alle Bits in TCCR0B löschen.

Schaltplan

Arduinos interne Timer meistern für präzises Timing

Herstellungsprozess

  1. Bluetooth-gesteuerter Arduino-Spybot bauen – Überwachungsroboter mit IP-Kamera
  2. FlickMote: Gestensteuerung per Ultraschall & IR für Smart Home (Arduino 101)
  3. DIY Arduino TV-B-Gone: Universelle TV-Aus-Fernbedienung
  4. Einen eigenen LED-Master-Clock mit Alarm bauen – aus 12 Metern Entfernung ablesbar
  5. Find Me: Smarter Gegenstands-Finder mit Arduino und Bluetooth
  6. Optimierte Stromversorgungslösungen für Arduino-Projekte
  7. Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
  8. Intelligenten Arduino-Vierbeiner-Roboter bauen: Schritt-für-Schritt-Anleitung
  9. DIY Arduino Lenkrad / Joystick für Rennspiele – USB-HID-Umbau
  10. Eine voll funktionsfähige CNC-Maschine mit Arduino Nano R3 bauen