Ratgeber
Er gehört zweifellos zu den erfolgreichsten Mikrocontrollern der vergangenen Jahre. Der ATmega328 wurde und wird noch immer millionenfach beispielsweise in der Automatisierungstechnik eingesetzt. Lesen Sie hier, wie Mikrocontroller funktionieren, was den ATmega so populär machte und welche Rolle dabei die Arduino-Entwicklungsplattform spielt.
Der ATmega328 ist ein sogenannter „Advanced Virtual RISC“-Mikrocontroller, abgekürzt AVR. Entwickelt und zur Serienreife gebracht wurde er 2013 vom US-amerikanischen Unternehmen Atmel, das 2016 von Microchip Technology übernommen wurde.
Er unterstützt eine Datenbearbeitung von bis zu acht Bit, besitzt einen 32 Kilobyte großen internen Flash-Speicher und ein zwei Kilobyte großes RAM. Kontaktiert wird er über 28 Stifte.
Im Chip enthalten sind außerdem ein EEPROM mit einem Kilobyte Speicherkapazität, ein Analog-Digital-Wandler mit sechs Kanälen und einer Auflösung von zehn Bit, ein Oszillator für bis zu 20 Megahertz sowie verschiedene Schnittstellen.
23 Ein- und Ausgabeleitungen und 32 Allzweck-Arbeitsregister machen ihn fit für unterschiedlichste Aufgaben.
Der ATmega328 wird häufig in Projekten und autonomen Systemen eingesetzt, in denen ein einfacher, stromsparender und preiswerter Mikrocontroller benötigt wird.
Mikrocontroller wie der ATmega328 sind prinzipiell kleine Computer auf einem einzelnen Metall-Oxid-Halbleiter-Chip. Sie enthalten eine oder mehrere CPUs, Datenspeicher und programmierbarer Eingangs- und Ausgangsperipherie. Mikrocontroller sind für eingebettete Anwendungen konzipiert, im Gegensatz zu den in PCs verwendeten Mikroprozessoren, die aus verschiedenen diskreten Chips bestehen.
Mikrocontroller – oder MCU für „Micro Controller Unit“ – finden sich überwiegend in automatisch gesteuerten Produkten und Geräten, zum Beispiel in Motorsteuerungssystemen von Autos, implantierbaren medizinischen Geräten, Fernbedienungen, Büromaschinen, Haushaltsgeräten, Elektrowerkzeugen, Spielzeugen und anderen eingebetteten Systemen.
Üblich sind Mixed-Signal-MCUs, die analoge Komponenten integrieren, die zur Steuerung von nicht-digitalen elektronischen Systemen benötigt werden.
Im Zusammenhang mit dem „Internet der Dinge“ sind MCUs ein wirtschaftliches und beliebtes Mittel zur Datenerfassung, Erkennung und Steuerung der physikalischen Welt, beispielsweise im Smart Home.
Typische Ein- und Ausgabegeräte sind Schalter, Relais, Magnetventile, LEDs, kleine oder kundenspezifische Flüssigkristallanzeigen, Radiofrequenzgeräte und Sensoren für digitale oder analoge Werte wie Temperatur, Feuchtigkeit oder Lichtstärke.
Eingebettete Systeme verzichten in der Regel auf Tastatur, Bildschirm, Festplatten, Drucker oder andere typische Peripheriegeräte eines PCs. Programmierung und Tests erfolgen vielmehr über einen direkten USB-Anschluss oder spezieller Hardware, beispielsweise einem ISP-Programmierer. Läuft das Programm erwartungsgemäß, lässt sich der Controller vom PC trennen völlig autark betreiben.
Bei der Auswahl eines Controllers ist zunächst berücksichtigen, welche Peripheriegeräte Ihr Projekt benötigt.
Dazu gehören Kriterien wie vorhandene Kommunikationsschnittstellen oder die Anzahl der Ausgangs- und Eingangspins. Für den Programmablauf wichtig sind die Verarbeitungsgeschwindigkeit und der Speicherbedarf.
Der Kostenfaktor ist bei der Entwicklung eines Projekts oder eines eingebetteten Systems naturgemäß nicht zu vernachlässigen. Komplexe Funktionen und Vorgänge erhöhen die Entwicklungs- und Betriebskosten.
Wenn es sich um eine einfache Anwendung handelt, kann ein preiswerter Controller durchaus den gewünschten Zweck ebenso erfüllen.
Die einfachste Entwicklungsumgebung ist ein Steckbrett oder Breadboard mit genormten Löchern für diskrete elektronische Bauelemente und ICs.
Auf einem solchen Board lassen sich neben dem ATmega und einer Stromversorgung auch Sensoren, Kondensatoren und Widerstände sowie Steuerleitungen flexibel und lötfrei platzieren.
Zum Testen sind Streckenretter eine seit Jahrzehnten bewährte Methode. Schneller und einfacher vor allem hinsichtlich der Programmierung lässt es sich aber mit einer Entwicklungsplattform arbeiten, in deren Mittelpunkt der ATmega328 steht. Die Rede ist von Arduino.
Bei Arduino handelt es sich um eine Firma, die Hard- und Software nach dem Open-Source-Prinzip entwickelt: Sowohl das Design der Hardware als auch die Programme stehen jedermann kostenlos zur Verfügung.
Die Hardware-Produkte sind unter einer CC-BY-SA-Lizenz lizenziert, während die Software unter der GNU Lesser General Public License oder der GNU General Public License lizenziert ist. Das ermöglicht jedem die Herstellung von Arduino-Boards und die Verbreitung der Software.
Eine der populärsten Entwicklungsumgebungen ist zweifellos der Arduino Uno. Er basiert auf dem ATmega328P-Mikrocontroller und ist mit einer Reihe digitaler und analoger Eingangs- und Ausgangs-Pins ausgestattet, die sich mit verschiedenen Erweiterungsboards und anderen Schaltungen verbinden lassen. Der Uno besitzt 14 digitale Pins, 6 analoge Pins und kann mit der Arduino IDE (Integrated Development Environment) über ein USB-Kabel vom Typ B programmiert werden. Die Stromversorgung erfolgt über das USB-Kabel oder eine externe Quelle mit Spannungen zwischen 7 und 20 Volt. Er ähnelt den kleineren Ausführungen Nano und Leonardo.
Was ist der Unterschied zwischen einem Uno und einem Nano?
Der Nano ist ein kleines, komplettes und entwicklerfreundliches Board, das auf dem ATmega328P basiert und im Jahr 2008 veröffentlicht wurde. Es bietet die gleichen Anschlussmöglichkeiten und Spezifikationen wie das Uno-Board in einem kleineren Formfaktor. Vorhanden sind 30 männlichen Stecker für die Ein- und Ausgabe in einer Dip-30-ähnlichen Konfiguration. Mit der integrierten Entwicklungsumgebung IDE lässt sich der Nano ebenso bequem programmieren wie der Uno. Identisch ist auch die Stromversorgung über ein Mikro-USB-Kabel vom Typ B, über ein Netzteil oder über eine 9-Volt-Batterie.
Beim Leonardo handelt es sich ebenfalls um ein sehr kleines Board, das vom ATmega32u4 angetrieben wird.
Was bietet die Arduino-IDE?
Die Arduino Integrated Development Environment (IDE) ist eine plattformübergreifende Anwendung für Windows, macOS und Linux, die in Funktionen von C und C++ geschrieben ist. Sie wird zum Schreiben und Hochladen von Programmen auf kompatible Boards verwendet.
Der Quellcode für die IDE ist unter der GNU General Public License, Version 2, veröffentlicht Die IDE unterstützt die Sprachen C und C++ durch spezielle Regeln der Code-Strukturierung. Der vom Benutzer geschriebene Code benötigt nur zwei grundlegende Funktionen, zum Starten des „Sketch“ genannten Programms: Ein einmaliges „Setup“ sowie die Hauptprogrammschleife „Loop“, die ständig durchlaufen wird, bis ein Stop-Zustand eintritt.
Nachteil der Programmierung in einer C-Sprache: Der geschriebene Code muss vor Ausführung des Programms zunächst kompiliert werden, also in einen Code übersetzt, den der Prozessor versteht. Programmiersprachen, die auf einem Interpreter basieren – beispielsweise Python – lassen sich unmittelbar starten, die Ablaufgeschwindigkeit ist dafür etwas langsamer.