Iedere keer wanneer ik iets wil bouwen, wil ik eerst een prototype bouwen. Dat hield in dat ik minstens 2 aparte boardjes ontwierp : 1 met de microcontroller en 1 printje met electronica die aangestuurd moest worden (en vooral ge-finetuned).
Vorige week wou ik het zoveelste experimenteerboardje bouwen, dat ik -na zoveel jaar- eindelijk op het idee kwam om een algemeen aanstuurboardje met een ATMEGA128 ging ontwerpen met daarop de volgende zaken :

- POWER-aansluiting
Er zitten 2 aansluitingen op voor de voeding. Een normale aansluitstekker, maar ook een simpele 2 pins-aansluiting. Die 2 pins aansluiting is bedoeld om even snel een 9V blokje erop aan te sluiten. De voeding mag AC maar ook DC zijn, vanwege de bruggelijkrichter erachter. Uiteindelijk zorgt de LM117-5.0 dat er netjes 5V op het printje beschikbaar is.
Achteraf kan ik me voor m'n kop slaan, dat ik zo dom ben geweest om een algemene POWER-LED op het boardje te verwerken. Was wel zo handig geweest.
- STK500 programmer
Het boardje is voorzien van ingebouwde USB STK500 programmer (Atmega8), maar heeft ook een ISP-header. Door een schakelaar (de blauwe linksboven) worden 4 micro switches geopend met de 5V van de USB-poort), zodat geprogrammeerd kan worden via USB. Deze schakelaar zorgt er voor dat ik de USB-kabel niet telkens los moet trekken, wanneer ik het geprogrammeerde wil testen.
Voordeel : Dit is voor het geval ik ook iets via de MISO, MOSI, SCK-pinnen wil aansturen.
- XTal
Er zitten 3 verschillende externe kristallen op : 7.372 MHz, 12 MHz en 16 MHz (die laatste ontbreekt nog). Met 2 (blauwe) jumpers kan ik het gewenste XTal selecteren.
Voordeel : De 7.372 is handig bij serieele communicatie, 12 MHz voor USB1.0 experimenten en 16 MHz voor snelle toepassingen.
- Instelbare VRef
Wil ik met ADC stoeien, dan is het prettig om de Vref van de uC in te kunnen stellen. D.m.v. een 10 slagen 1K potmetertje valt de Vref vrij nauwkeurig in te stellen. Daarnaast is er een aansluitpin bij gezet, zodat ik met een multimeter de ingestelde Vref kan controleren. Eigenlijk had ik uit voorzorg nog een extra weerstandje voor de potmeter moeten zetten, zodat automatisch rekening wordt gehouden met de minimale Vref waarmee een uC nog kan werken.
- 16 indicatie LEDs
Een STK500 board heeft 8 LEDs. Dat leek mij te weinig, vandaar dat ik er 16 stuks van heb gemaakt. Allen worden aangestuurd via een BC847 met een 10K weerstand ervoor.
Voordeel : De LEDs kunnen makkelijk aangestuurd worden, zonder dat de uC alle stroom moet leveren. Zo kan ik eventueel meekijken of een bepaalde pin ook daadwerkelijk doet wat ie moet doen, zonder dat de uC alle stroom moet leveren.
- LCD-aansluiting
Op het printje kan ik nu diverse karakter LCDs aansluiten. Zowel de 14 pins-versie, maar ook de 16-pins (met backlight). En er zit nog een SMD 10K potmetertje op om het contrast in te kunnen stellen. (Ik gebruikte dat nooit en zie het eerder als een "voor-de-heb" gimmick)
Voordeel : moet ik dat uitleggen ?
- Poort-sloten
Elke aanstuurbare pin van de ATMega128 is aangesloten op een poortslot. In totaal 7 poort-sloten (A t/m G). Bij elk slot is ook te zien welke pin waar zit aangesloten. Op de PCB staat bij elk slot een 1 en een 8 vermeld. Maar het werkt vrij eenvoudig : links zit altijd pin 1, rechts altijd pin 8.
- Extra Powerblok
Eenvoudig aftappen van 5V voor externe aanstuurprintjes.
- 12 bit counter
De 74HC4040 is domweg bedoeld om op hoge snelheids iets te kunnen tellen / meten.
- Serial Input naar Parallel Output (SIPO)
De HEF4094 is voor het geval ik aansturingspinnen te kort kom.
- Serial Output van Parallel Input (SOPI)
De HEF4021 is voor het geval ik 8 signalen wil inlezen, maar het met minder pinnen wil oplossen.
- 2x USB
Op de print zitten 2 USB-poorten (CP2102). De Atmega128 heeft 2 UARTs en die kan ik nu handig gebruiken, indien nodig. Dat kon over de seriele poort, maar elke moderne PC heeft wel USB aan boord. De keuze was dus erg snel gemaakt.
- 3 potmeters
Voor analoge experimenten met ADC, heb ik drie (blauwe) 10K potmetertjes op de print gezet. De aansluiting van de spanning is in te stellen, zodat het juist linksom of rechtsom werkt (met de gele jumpertjes). Natuurlijk zitten hier indicatie-LEDs op, zodat ik kan zien hoe de spanning is aangesloten.
Voordeel : Analoge metingen zijn mogelijk.
- 16Kb EEPROM
Op de print zit een 16 KB EEPROM die via TWI werkt.
Voordeel : tijdelijk opslag van gegevens en ik kan eindelijk eens gaan experimenteren met TWI-protocol.
- Comparator
Het leek me erg makkelijk om eens een comparator (LM311) on-board te hebben. De referentiespanning is in te stellen met een 10-slags 1K potmetertje tussen 0 en 5V.
- Navigatieswitch
Ik kon 8 schakelaartjes op het boardje zetten, of het compacter maken, door er 2 navigatieswitches op te zetten (5 standen). De spanning is ook weer in te stellen. Dus dat het als pull-up of juist als pull-down ingesteld kan worden (met gele jumpertjes). En dat is natuurlijk ook weer zichtbaar met LEDs.
Voordeel : 10 drukknoppen tot mijn beschikking, terwijl het de ruimte vreet van 2 schakelaartjes.
- Analoge temperatuurmeting
Temperatuurmeting via de LM45 verloopt niet heel betrouwbaar, maar geeft toch een aardige indicatie van de omgevingstemperatuur.
Voordeel : makkelijk om standaard ook eens temperatuurmetingen met het boardje te kunnen doen.
- 7 Segment LED
Ik gebruik het haast nooit, maar bedacht me opeens dat het best wel eens handig kan zijn, voor het geval ik nu geen LCD wil gebruiken.
- IRDA transciever
Ik wou altijd al een keertje experimenteren met IRDA. Draadloos gegevens oversturen via Infra Rood heb ik een tijd lang op de lange baan geschoven, maar nu is het een stapje dichterbij met de RPM851.
- Alles apart in te stellen
Elk onderdeel kan ingeschakeld worden via een rode jumper. Daarmee schakel ik de spanning in over het betreffende onderdeel. Ter verduidelijkiing heb ik bij elk onderdeel ook een "Power ON" LED gezet, zodat ik kan controleren of er ook echt 5V op staat.
En dan de foto's die aanklikbaar zijn voor een vergroting. Nu hoop ik maar dat uploadarchief meewerkt, want die is / was vandaag down.
De bovenkant van de print :

En ik weet het, er zijn mensen die ook meteen de onderkant willen zien. Alvast mijn excuses voor het belabberde soldeerwerk bij het Extra Power-blokje.

En hier dan een foto van het printje, waarbij ik alle onderdelen van 5V heb voorzien. (De rode LEDs laten zien dat er 5V op staat)

De beide USB-poorten zijn voorzien van een blauwe LED. Helaas had ik deze nog niet aangesloten toen ik bovenstaande foto maakte. Maar inmiddels kan ik zeggen dat de USB-poorten goed werken en de blauwe LEDs goed zichtbaar zijn.
Het boardje is in EUROkaart-formaat, maar ik kon niet de ruimte vinden voor een OpAmp (LM386) en een luidsprekertje. Evenzogoed had ik ook graag nog een IR-ontvanger (TSOP1736) er op willen zetten om afstandbedieningen eens uit te kunnen lezen. Maar ja, zelfs met SMD-spul kom ik op een EUROkaart soms wel eens ruimte te kort. Misschien dat ik nog eens een nieuwe PCB ga ontwerpen, waarbij ik al die kleine hiaten oplos. En anders zal ik enkele "add-ons" voor de poort-sloten gaan ontwerpen.
EDIT
O ja, een noodoscillator met een NE555 was ook wel leuk geweest, mocht ik ooit de verkeerde fuses voor de werkfrequentie hebben ingesteld. Daarmee had ik het systeem meer fool-proof kunnen maken.