Een ander issue, wat meer technisch van aard, is de keuze van de microcontroller (uC). Iedereen heeft zijn voorkeuren, en daarom levert zoiets altijd veel discussie op, maar uitgaande van de specificaties zal zo'n uC toch het volgende moeten hebben:
- Voldoende input en output lijnen (IO) om zaken aan en uit te schakelen (gasklep, verwarmingselement, I2C en 1-wire interface, lampjes e.d.)
- AD-converters, 10 bit is echt wel minimaal. Bij voorkeur min. 4 kanalen (i.v.m. onze thermokoppels, PT100, PT1000 e.d.)
- Voldoende rekenkracht (thermokoppels kennen een 3e tot 9e orde regressiekromme, dus flink rekenen)
- Goede ontwikkelomgeving beschikbaar (geïntegreerde ontwikkelomgeving, IDE)
1) Beginnen we aan de onderkant (8-bit uC), dan is een optie de PIC16F877:
- Heeft 8 keer een 10 bit AD aan boord, 8 kB Flash, klein beetje RAM. Komt wel in 40 pins DIL behuizing, dus makkelijk te solderen (en neemt dus ook veel ruimte in beslag). Kost 10,34 euro bij Farnell
- Nadeel is zelf een programmertje maken (niet moeilijk, maar wel extra werk). Gratis programmer software
- Heeft geen USB e.d. aan boord.
- Diverse C programmers beschikbaar, zoals CC5x die in combinatie met MPLAB gebruikt kan worden
- Voor onze doeleinden gaat dit denk ik te krap worden. Het zal passen en meten worden qua geheugen en rekencapaciteit
2) Dan het middensegment (16-bit uC). Daar zijn m.n. de uC van Texas Instruments interessant, de MSP430 familie. Een optie hier is:
- Insteekbordje van Olimex kopen (zie
http://www.olimex.com/dev/msp-h1232.html). Hoef je geen SMD te solderen. Bordje kost 11.66 euro bij Antratek (
www.antratek.nl).
- uC kent maar 1 AD-converter. Dus waarschijnlijk toch extra AD-converters bijzetten
- Programmeren via gratis IAR embedded workbench in C
Dan het wat meer serieuze werk (de 32 bit uC). Hier zijn de ARM processoren heel erg interessant. Nadeel is dat het allemaal SMD werk is, je moet dus wel een beetje kunnen solderen (hetelucht is ideaal). Niet voor de beginner dus, maar prima te doen met wat oefening. Programmeren kun je via open-source tools doen (ARM-GNU compiler), maar veel beter werkt de Crossworks omgeving van Rowley. Programmeren en debuggen in C doe je via de JTAG connector (heb je dat eenmaal zo gedaan, wil je echt niet anders meer). JTAG adapter kost ongeveer 20 euro (heb je alleen nodig als je wilt programmeren en debuggen).
OF je koopt een opsteekprintje waar de uC en al het andere moeilijke SMD soldeerwerk al op zit. Opties hier zijn:
3a) Van Atmel, de AT91SAM7Sxxx reeks. Bij Farnell te koop voor 8 (64 kB Flash) tot 10 euro (256 kB Flash). Kent 32 IO pennen, 2 UARTS, geïntegreerde USB, diverse timers (PWM controller), 8 kanaals 10-bit AD converter, JTAG emulatie.
Ideale processor, heeft zo'n beetje alles aan boord wat we willen hebben (USB, JTAG, seriële poort, alles zit er al op). We kunnen bij Olimex een kant en klare opsteekprint kopen. Deze is in Nederland via Antratek te krijgen (31 euro voor de SAM7H64 print). Dan hoef je qua hardware alleen nog maar wat dingen er omheen te bouwen . Het is gezien deze prijs bijna niet meer interessant om dit zelf te bouwen (maar dat is nog steeds een optie natuurlijk).
3b) Wederom van Olimex (bij Antratek te verkrijgen) de LPC-H2124 (54 euro) met een Philips ARM uC erop. Qua prijs dus minder interessant dan optie 3A). Ruwweg dezelfde eigenschappen.
Mijn voorkeur is duidelijk, ik zou zo'n bordje kopen met een AT91SAM7S uC erop. Een variant hierop kan zijn om zelf een bordje te ontwikkelen, maar dat wordt dan veel SMD solderen (en dat doe je niet meer met een standaard soldeerbout). Misschien moeten we 2 varianten ontwikkelen, eentje o.b.v. dat kant en klare bordje, de andere variant helemaal zelf ontwikkelen.
Het grote voordeel van die ARM / JTAG processoren (maar ook bij de MSPs) is dat je eenvoudig een bordje kunt voorzien van nieuwe software. Kwestie van aansluiten dus en erin laden (zodat dit dus makkelijk door een technisch iemand voor een niet technisch iemand gedaan kan worden). Bij een PIC heb je weer een aparte programmer e.d. nodig en moet je hem uit het board halen.
Waarschijnlijk hebben jullie nog andere voorkeuren? Laat ze maar horen. En geef direct maar commentaar op bovenstaande voorzet.