Vor allem bei batteriebetrieben Projekte ist ein vollständiges Arduino-Uno-Board ein oft viel zu hoher Stromverbraucher. Jedoch kann man ein paar Einschränkungen auch einen Stand-alone Arduino, d.h. einen einzelnen ATMega328-Chip verwenden, um dieselbe Peripherie anzusprechen. Es gibt auch anderen Konfigurationen, z.B. mit externen Quarze, die hier aber nicht besprochen werden.
In diesem Beitrag habe ich einen ATmega328P-PU verwendet, dies ist eine von verschiedenen
ATmega-Varianten. PU
bedeutet hier, dass die Bauform 28 PDIP entspricht; dies ist
von Vorteil, wenn man ein Breadboard verwenden will. Wählt man eine SMD-Bauform, so müsste man sich einen
Adapter kaufen/bauen. P
steht für Picopower, d.h. es handelt sich sowohl um eine
Variante mit verbessertem Powermanagement. Es wird an einigen Stellen beschrieben, dass andere Varianten
als der ATmega328P-PU nicht mit der Arduino-IDE beim Hochladen von Sketches bzw. Brennen des
Bootloaders zurecht kommen. Da ich bisher keinen anderen Chip verwendet habe, kann ich dies nicht nachprüfen.
Betriebsspannung: | 2,7V bis 5,5V |
---|---|
Taktfrequenzen: |
<=8MHz bei 2,7V bis 5,5V <=16MHz bei 4,5V bis 5,5V |
Stromverbrauch: |
Aktiv: 1,5mA (3V; 4MHz) Power-Down: 1μA (3V) |
Wie in obigem Schaltplan gezeigt werden die Anschlüsse des Arduino-Uno-Boards mit dem ATmega328 folgendermaßen verbunden:
Arduino Uno | ATmega328 |
---|---|
D13 | Pin #19 |
D12 | Pin #18 |
D11 | Pin #17 |
D10 | Pin #1 (RESET) |
GND | Pin #8 (GND) |
5V | Pin #7 (VCC) |
- | Pin #7 (VCC) zu Pin #20 (AVCC) |
Da der ATmega328 über keine direkte Schnittstelle zur Programmierung über den PC besteht, muss eine Schnittstelle geschaffen werden.
Zunächst wird der Arduino Uno von allen Verbindungen an seinen GPIOs gelöst und per USB mit dem PC verbunden.
Nun lädt man in der Arduino-IDE über den Menüpunkt Datei » Beispiele » 11.ArduinoISP den Sketch
ArduinoISP. Dieser wird kompiliert und auf den Arduino hochgeladen. (Darauf achten, dass im Menüpunkt
Werkzeuge » Programmer "AVRISP mkII" ausgwählt ist
Den Sketch gibt es hier auch noch alternativ zum Herunterladen:
Nun werden die Anschlüsse mit dem ATmega328 so verdraht, wie oben angegeben.
Zunächst muss die Hardware-Erweiterung für den ATmega328P in die Arduino-IDE geladen werden. Dazu lädt man sich zunächst die Folgende Datei herunter und entpackt sie.
Nun navigiert man zu dem Sketchbook-Speicherort auf dem PC, auf dem die Einstellungen für die Arduino-IDE gespeichert sind. Diese findet man im Menupunkt Datei » Voreinstellungen.
In diesem Ordner sollte ein Unterordner "hardware" liegen. Falls nicht, dann wird dieser einfach
manuell erstellt. Dorthin wird nun der Ordner "breadboard" aus dem entpackten ZIP-Archiv gelegt
und die Arduino-IDE neugestartet.
Es sollte nun im Menupunkt Werkzeuge » Board » ... ein neuer Punkt mit "ATMega 8MHz" o.ä.
auftauchen. Diese wird nun ausgewählt.
Nun wird im Menüpunkt Werkzeuge » Programmer noch von "AVRISP mkII" zu "Arduino as ISP" umgeschaltet, damit nicht der Arduino selbst beschrieben wird, sondern der ATmega328P-Chip.
Nun muss der Bootloader noch mit dem Aufruf des Menüpunktes Werkzeuge » Bootloader brennen auf den ATmega328P gebrannt werden.
#define PIN_LED 11 // any PWM-capable pin
void setup()
{
pinMode(PIN_LED, OUTPUT);
}
void loop()
{
for(byte i=0; i<20; i++) {
digitalWrite(PIN_LED, !digitalRead(PIN_LED));
delay(100);
}
for(byte i=0; i<4; i++) {
digitalWrite(PIN_LED, !digitalRead(PIN_LED));
delay(1000);
}
for(byte i=0; i<255; i++) {
analogWrite(PIN_LED, i);
delay(30);
}
digitalWrite(PIN_LED, LOW);
delay(5000);
}
Nach dem Hochladen des kompilierten Sketches werden die Verbindungen zum Arduino-Board gelöst und der ATmega328P mit einer 5V-Spannungsquelle sowie einer LED+Vorwiderstand folgendermaßen verdrahtet:
Als Resultat sollte nun die LED einige Male schnell dann langsam blinken und dann über eine gewisse Zeit langsam ihre Leuchtintensität erhöhen.
zurück