Aus Raspberry Pi Geek 06/2020

Mikrocontroller ATtiny85 programmieren (Seite 2)

Installation der IDE

Die Arduino-IDE dürfen Sie frei von der Homepage des Projekts herunterladen [4]. Wählen Sie hier die zum Betriebssystem passende Version aus und installieren Sie sie entsprechend der Anleitung [5].

Bevor Sie die Arduino-IDE verwenden, passen Sie diese zunächst für den ATtiny85 an, indem Sie den entsprechenden Board-Verwalter installieren. Als Erstes tragen Sie dazu unter dem Menüpunkt Datei | Voreinstellungen die zusätzliche Bordverwalter-URL ein. Dort geben Sie unter Zusätzliche Boardverwalter URLs: folgende URL ein:

http://drazzy.com/package_drazzy.com_index.json

Anschließend laden Sie den entsprechenden Code herunter und installieren ihn. Das erledigen Sie unter dem Menüpunkt Werkzeuge | Board | Boardverwalter…. Geben Sie dort in die Suchmaske “attiny” ein und installieren Sie den Manager ATTinyCore by Spence Konde in der neuesten Version. Dieser Vorgang nimmt etwas Zeit in Anspruch.

Nach dem Abschluss der Installation wählen Sie in der Arduino-IDE den Boardmanager für den ATtiny85 aus. Das geschieht unter dem Menüpunkt Werkzeuge | Boardmanager | ATtiny25/45/85. Als Prozessor verwenden Sie den ATtiny85. Beim Programmer handelt es sich um ein Atmel-STK500-Development-Board. Als Port wählen Sie denjenigen, an den Sie den Programmer angeschlossen haben (also etwa /dev/ttyACM0).

Um zu überprüfen, ob die IDE sauber funktioniert, laden Sie ein Beispielprogramm in den Controller. Listing 1 zeigt dessen Struktur. Es sorgt dafür, dass die LED am Pin 3 blinkt. Um das Programm zu bauen und in den Baustein zu laden, drücken Sie den Upload-Button (zweite Schaltfläche von links in der Leiste). Nach dem Übertragen des Programms beginnt die LED zu blinken.

Listing 1

void setup() {
  pinMode(PB4, OUTPUT);
}
void loop() {
  digitalWrite(PB4, HIGH);
  delay(500);
  digitalWrite(PB4, LOW);
  delay(500);
}

Servotester

Um einen Servomotor anzusteuern, benötigen Sie ein PWM-Signal mit einer Periodendauer von 20 Millisekunden (50 Hz). Den Winkel, den der Arm des Motors annimmt, bestimmen Sie über die Zeit, die das Signal innerhalb der 20 Millisekunden auf 5 Volt (logisch 1) bleibt. Bei einer Dauer der logischen 1 von 1 Millisekunde bewegt sich der Servomotor in die Position -90 Grad, bei einer Dauer von 2 Millisekunden beträgt der Winkel +90 Grad.

Um die Mittelposition zu erreichen (0 Grad), benötigen Sie eine Dauer von 1,5 Millisekunden. So lautet zumindest die Theorie; allerdings arbeiten Servos in der Praxis nicht so genau, wie es wünschenswert wäre. Oft erreichen sie die Winkelpositionen nicht.

Es gibt nun zwei Wege, um ein PWM-Signal zu erzeugen: rein über Programmcode oder mit dem internen PWM-Generator des ATtiny85. Ein per Software erzeugtes Signal ist etwas unzuverlässig, weil Sie sich nicht darauf verlassen dürfen, dass es immer das exakt gleiche Timing hat.

Beim Ansteuern einer LED macht das nichts aus. Ein Servo aber reagiert auf solche Schwankungen im Timing mit nervösen Zuckungen. Die Hersteller von Mikrocontrollern wissen das und bauen daher einen Hardware-Timer ein, um präzise Signale zu erzeugen.

Das Erzeugen des Signals erfordert eine Basisfrequenz. Eine Periode dieser Frequenz teilt sich dann in gleich große Teile auf. Über einen Zähler legen Sie fest, für wie viele dieser Teile das Signal logisch 1 sein soll. Je mehr Bits (8 oder 16) der Zähler hat, umso präziser fällt das Signal aus.

Im vorliegenden Fall erzeugt der interne Generator eine Frequenz von 62,5 Hz (16 ms Periodendauer, nahe genug an 50 Hz). Ein 8-Bit-Zähler unterteilt dieses Signal in 256 Stücke mit einer Dauer von je 0,0625 Millisekunden. Nun genügt ein einfacher Dreisatz, um zu errechnen, welche Werte einer Dauer von 1, 1,5 und 2 Millisekunden entsprechen. Interessanterweise geht die Rechnung genau auf (siehe Tabelle “Zähler-Umsetzung”).

Zähler

Periode

Winkel

15

1,0 ms

-90 Grad

23

1,5 ms

0 Grad (Mitte)

31

2,0 ms

90 Grad

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben