ATmega16/32 Protoboard

Experimentierboard für ATmega 16 und ATmega32 Mikrocontroller mit vielen nützlichen Komponenten, die andere Boards nicht haben.

Damals, als es noch keine Arduinos gab …

… gab es natürlich auch eine große Anzahl Mikrocontroller von verschiedenen Herstellern. Eigentlich ist ein Arduino ja auch nur ein Mikrocontroller-Chip, der mit einiger Peripherie auf einer Platine sitzt und sozusagen ohne Lötkolben einsatzbereit ist. Die Arduinos verbindet auch eine einheitliche Programmiersyntax in einer einheitlichen Entwicklungsumgebung und meist das bequeme Einspielen der Firmware über USB. Ein Bootloader, der im Arduino-Modul schon bei der Auslieferung vorhanden ist, startet dann die Firmware nach dem Einschalten oder nach einem Reset.

Es gibt einige 8 Bit Mikrocontroller, die bis heute nicht nur ihre Daseinsberechtigung haben, sondern auch noch oft und gern eingesetzt werden. Dazu zählen die Mega- und Tiny Controller, in diesem Projekt der ATmega32 und seine kleinere Schwester ATmega16.

Als Hard- und Softwareplattform ist das STK500 Board sehr verbreitet

Das STK500 bediente alle gebräuchlichen 8 Bit Mikrocontroller von ATMEL/Microchip. Bis heute kann das STK500 als Neuware gekauft werden! Nicht immer ergibt es Sinn, z.B. eine Rakete wie den Teensy 4.x zu benutzen, ein sehr günstiger 8 Bit Controller reicht in vielen Fällen aus und kann auch im Stromverbrauch zu einem kompletten Arduino-Modul punkten.

Wer etwas auf sich hielt, programmierte die 8 Bit Mikrocontroller in Assembler oder C. Die knappen Ressourcen dieser Controller machten es nötig, effizient zu programmieren und sich ausgiebig mit den Datenblättern der verwendeten Controller zu beschäftigen. Um so erstaunlicher waren die erzielbaren Ergebnisse der im Vergleich zu modernen Mikrocontrollern recht schwachbrüstigen Artgenossen. Natürlich gab es auch alternative Programmiersprachen wie z.B. Basic. Der Basic-Compiler Bascom der Firma MCS-Electronics war ein würdiger Vertreter dieser Sparte und ist immer noch weit verbreitet. Obwohl Basic in manchen Kreisen ein leicht anrüchiges Image genießt, hat es durchaus seine Vorteile. Mit Basic kann schnell entwickelt werden! Das ist für einige Anwendungsbereiche gewünscht und die Resultate, zusammen mit einer vergleichsweise simplen Syntax, haben Basic und speziell Bascom sehr beliebt gemacht. Der Compiler kann beim Hersteller immer noch gekauft und auch als kostenlose Version heruntergeladen werden! Für kleinere Programme ist Bascom komplett kostenlos benutzbar und in vielen Fällen reicht das schon aus.

Ich will ein bisschen mehr

Das STK500 Board in meinem Besitz war schon hervorragend, aber ich hatte den Wunsch, oft benutze Komponenten gemeinsam mit dem Mikrocontroller auf einer Platine zu haben. So entstand das ATmega16/32 Protoboard. Hier ein paar Eindrücke:

Für mich war diese Kombination von Komponenten zum Entwickeln sehr gut geeignet. Es gab großflächige, praktisch angeordnete Taster, LEDs, einen Inkrementalgeber, eine serielle Schnittstelle, IR Sender und Empfänger, einen Temperatursensor DS18S20, 7-Segment Anzeigen, ein I2C-EEPROM, Uhrenquarz, Piezo-Summer und einen Zählereingang mit schnellem Vorteiler. Ein beliebiger Quarz für die Takterzeugung war optional steckbar und die Spannungsversorgung war verpolungssicher und geregelt. Alle Ports des Controllers waren herausgeführt und die Komponenten durch Schalter dazu schaltbar.

Und ein wenig Zubehör

Selbst gequetschte Flachbandleitungen sorgten für die Verbindung der Ports mit den Komponenten, ein Steckernetzteil für die Betriebsspannung. LCDs konnten auch über Flachbandleitungen angeschlossen werden. Sogar ein kleines Programmiergerät hatte ich dafür gebaut. Das wäre allerdings nicht nötig gewesen, denn das Protoboard verfügt über eine standardisierte Programmierschnittstelle und kann über das STK500 oder mit anderen Programmiergeräten verbunden werden.

Das Interesse an meinen Protoboards war recht groß und ich bekam auch Anfragen von Bildungseinrichtungen. Daraus entstand eine Kleinserie und auch ein kostenloser Nachbau war auf Anfrage möglich. Ich erstellte eine CD mit Beispielprogrammen, die mit dem Bascom-Compiler übersetzt werden konnten. Im Download ZIP-Archiv zu diesem Projekt sind die Beispiele auch vorhanden. Damals konnte ich noch kein C/C++ und ich gebe euch die Beispiele ohne Änderung so weiter, wie sie vorlagen und meinem damaligen Kenntnisstand entsprachen.

Wer dieses Board nachbauen möchte, kann das im Download enthaltene Layout verwenden.

Ich wollte die Platine so einfach wie möglich machen, darum ist sie in einem Standardformat von 100x160mm entstanden und einseitig. Für einen geübten Bastler ist somit eine Herstellung recht einfach möglich. Meine Protoplatinen sind immer mit einem PIXMA IP4000 Tintenstrahldrucker auf transparenter Folie entstanden und als Basismaterial verwendete ich die Fotoplatinen von Bungard (100×160 einseitig), mit guten Ergebnissen.

Platine (Lötseite), Layout, Beschriftung

Anschlüsse, Jumper und Schalter

BezeichnungBeschreibung
JP1Mit diesem Jumper wird festgelegt, ob auf der Stiftleiste ST1 der Timer0-Pin oder der Timer1-Pin liegen soll. Dadurch ist es möglich diesen Pin als Zähleingang zu benutzen, z.B. für den RC-Modellbau zum Erfassen der Impulslängen einer Fernsteuerung.
JP2Dieser Jumper verbindet AREF des Controllers mit +5V. Wenn die ADC-Referenz benutzt werden soll, kann der Jumper auch offen bleiben. Über diesen Anschluss kann ebenfalls eine externe Referenzspannung zugeführt werden.
ST1Stiftleiste für den Zugriff auf Timer0 oder Timer1 (je nach gestecktem Jumper JP1). Weiterhin sind an diesem Anschluss GND und +5V zu finden. Der Anschluss entspricht der Graupner-Norm aus dem RC-Modellbau. Der Anschluss ST1 ist nicht über die DIP-Schalter abschaltbar.
ST2Stiftleiste für die Pins PD0, PD4 & PD5. Davon sind PD4 & PD5 für Exklusivzugriff vorgesehen. Alle 3 Pins sind über den DIP-Schalter SW1 schaltbar.
ST3Stiftleiste für externe Interrupts INT0 & INT1. GND ist vorhanden.
ST4Stiftleiste nach Graupner-Norm (außerdem GND und +5V. Zugriff auf PD6 (ICP1). Dort kann ein RC-Modellbau Servo angeschlossen werden.
Schalter
SW1
1 – PB0, (Timer0) auf ST2 AN/AUS
2 – PB1, Frequenzmessereingang mit 10:1 Teiler AN/AUS
3 – PB2, Temperaturfühler DS18S20 AN/AUS
4 – PB3, IR-Empfänger AN/AUS
5 – PB4, PB4 an ST2 AN/AUS
6 – PB5, PB5 an ST2 AN/AUS
Schalter
SW2
1 – PD0, RS232-RX AN/AUS
2 – PD1, RS232-TX AN/AUS
3 – PD2, Inkrementalgeber Spur-A AN/AUS
4 – PD3, Inkrementalgeber Spur-B AN/AUS
5 – nicht angeschlossen
6 – PD5, IR-Sender AN/AUS
7 – PD6, RC-Modellbau Servo an ST4 AN/AUS
8 – PD7, Piezo-Signalgeber AN/AUS
Schalter
SW3
LED1 bis LED8 einzeln schaltbar.
Schalter
SW4
Stellen 1 bis 6 der 7-Segment Anzeige einzeln schaltbar.
Wannenstecker 8xLEDÜber diesen Wannenstecker kannst Du die 8 LEDs auf einen Port Deiner Wahl legen. Der dazugehörende DIP-Schalter SW3 dient dazu, einzelne LEDs AN oder AUS zu schalten. Damit belegen nicht benötigte LEDs keine Anschlüsse am Controller. Die LEDs belegen in der Reihenfolge 1 bis 8 die Anschlüsse Deines Ports von 0 bis 7. Die LEDs sind mit Vorwiderständen an GND geschaltet.
Wannenstecker Taster & 3xLEDWannenstecker für die 5 Taster und die 3 kleinen LEDs. Die Taster und LEDs sind nicht auf DIP-Schalter gelegt. Die Taster belegen in der Reihenfolge 1 bis 5 die Anschlüsse Deines Ports von 0 bis 4 und die LEDs 9, 10 & 11 die Anschlüsse Deines Ports von 5 bis 7. Die LEDs sind mit Vorwiderständen an GND geschaltet. Die Taster gehen direkt nach GND (ohne Pull-Up Widerstände).
Wannenstecker SegmenteWannenstecker für die einzelnen Segmente der 7-Segment Anzeige. Die Segmente tragen die Bezeichnung „A“ bis „G“, zusätzlich ist der Dezimalpunkt angeschlossen. Die Segmente gehen in alphabetischer Reihenfolge auf die Anschlüsse 0 bis 6 und der Dezimalpunkt auf die 7. Die Segmente sind nicht via DIP-Schalter schaltbar.
Wannenstecker StellenWannenstecker für die Stellen der 7-Segment Anzeige. Die Stellen sind mittels DIP-Schalter SW4 einzeln AN/AUS schaltbar. Die Stellen belegen in der Reihenfolge 1 bis 6 die Anschlüsse Deines Ports von 0 bis 5. Die Stellen sind mit NPN-Transistoren als Treiber versehen. Zum Aktivieren eine Stelle ist ein positiver Signalpegel aus dem Controller erforderlich.
Wannenstecker ProggerProgrammieranschluss
Anschluss
Zähler
Die Cinch-Buchse ist ein Eingang für die Zählung einer Frequenz. Der Eingang hat einen HF-Transistor Vorverstärker und einen 10:1 Teiler-IC. Die Eingangsempfindlichkeit beträgt ca. 40mV.
Anschluss
RS232
Serieller Anschluss mit MAX232.

Die Version 1.4 ist die aktuellste Version. DIYLAB gab es damals noch nicht, ich hatte die Domain hydroworld.de. Deswegen habe ich im Download-Paket den Schriftzug bereits durch www.diylab.de ersetzt.