Skip to main content.

Hardware (Elektronica)

Uit de reacties die ik van vele college brouwers krijg, begrijp ik dat, voor de meesten van hen, het elektronica deel iets te lastig na te bouwen is. Toch zijn er brouwers die hun installatie ook (willen) automatiseren. Voor een deel gebruiken ze kant en klare componenten, zoals een PID regelaar, een PC IO kaart of een solid-state-relais.

Met zo'n opzet is natuurlijk niets mis, maar mijn insteek is toch iets anders geweest. Als afgestudeerd elektrotechnicus (TU Eindhoven) vind ik het stoeien met elektronica nog steeds een van de leukste dingen om te doen. Ik heb er dan ook bewust voor gekozen om zowel de hardware als de software zo professioneel mogelijk te ontwerpen en te realiseren. De beschrijving die ik hieronder geef, moet voor iemand die thuis is in elektronica, voldoende zijn om dit na te kunnen bouwen.

En ben je niet echt thuis in elektronica, dan haal je hier misschien nog wel wat ideeën uit. En anders sla je deze pagina maar over :-)

Deze pagina bestaat uit de volgende onderdelen:

1. Overzicht / Architectuur

Hardware Architectuur Het plaatje hiernaast geeft een overzicht van de hardware en de diverse interfaces tussen de deelcomponenten (klik erop om een vergroting te zien).

Het plaatje ziet er ingewikkeld uit, maar ik zal proberen een beschrijving hiervan te geven:
De eerste belangrijke component is de PC zelf. Deze wordt aangesloten via een Centronics (printer) kabel op de PC-Interface. Die PC-interface wordt aangestuurd door het brouwprogramma dat op de PC draait.

De PC-Interface genereert de signalen die nodig zijn voor de I2C bus. De I2C bus is een veelgebruikte verbinding tussen ICs en is oorspronkelijk bedacht door Philips. Het voordeel van deze I2C bus is dat er slechts twee signalen nodig zijn, een clock lijn (SCL) en een DATA lijn (SDA).
Ieder IC dat op de I2C bus aangesloten is, heeft zijn eigen unieke adres. Een even adres betekent altijd schrijven, een oneven adres betekent altijd lezen. Voorbeeld: een IC heeft als basisadres 0x90 (hexadecimaal, oftewel 144 decimaal). Als je naar dit IC wilt schrijven, dan moet je adres 0x90 gebruiken. Wil je echter lezen van ditzelfde IC, dan moet je adres 0x91 gebruiken.
Op deze I2C bus zijn de meeste componenten dan ook aangesloten, bijv. de twee temperatuursensoren. Dit betekent dus dat de I2C lijnen ook naar de warmwaterketel en de maischketel lopen (samen met de +5 Volt en de GND lijn).
Verder is er nog een 8-bit IO IC aangesloten (de PCF8574) op de I2C bus. Deze genereert diverse binaire signalen (Heater_ON, Alive LED, Pump_ON en non_modulating_gas_valve_on). Ook is er een tweede PCF8574 aangesloten, die uitsluitend bestemd is voor het aan en uit zetten van de magneetkleppen (dit zijn nu nog kleppen die met de hand bediend worden, maar in de toekomst moet ook dit geautomatiseerd worden).

Naast dit IC is er ook nog een 12-bit 12-kanaals AD-converter (Analoog naar Digitaal omzetter) aangesloten (de MAX1238). Deze zet de diverse analoge signalen, zoals de gemeten temperatuur van de vermogenselektronica en de waarden van de druksensoren) om naar digitale waarden die door het brouwprogramma weer verder verwerkt worden.

Verder is er ook nog een 8-bit AD-DA converter aangesloten (de PCF8591). Hiervan wordt echter alleen de DA-converter gebruikt om een modulerende gasklep mee aan te sturen.

Ondanks de complexiteit van het schema, is de achterliggende gedachte een eenvoudige. Namelijk het uitlezen van sensoren (temperatuur en volume) en het aansturen van actuatoren (verwarmingselement, kleppen, gasbranders). En hiervoor is wat elektronica nodig!

2. PC-Interface

Interface met de PC Het schema hiernaast bevat het ontwerp voor de PC-Interface. De Centronics connector wordt ook wel de parallelle poort adapter of printerpoort genoemd.

Belangrijkste IC is hier de PCF8584 I2C Bus Controller. Deze krijgt data aangeboden vanuit de PC op de datalijnen D0..D7. Data (8-bit) afkomstig van ICs op de I2C-bus, wordt als 2 keer 4 bit terug gegeven aan de PC. Hiervoor dient met name IC3 (een multiplexer IC). Dit in verband met het beperkte aantal vrij te programmeren IO lijnen van de Centronics connector.

De PCF8584 verzorgt alle signalen voor de I2C bus, inclusief timing e.d. De uiteindelijke SDA en SCL lijnen worden naar de verschillende printen gestuurd.



Terug naar boven

3. Temperatuursensoren

Mijn eerste ontwerp voor temperatuursensoren ging uit van een LM35, die voor iedere °C 10 mV aan spanning afgeeft. Deze waarde heb ik versterkt, waarna deze op een AD-converter ingelezen wordt. Het nadeel van deze aanpak is het relatief grote aantal ICs dat benodigd is.

Mijn huidige ontwerp gaat uit van een 12-bit + tekenbit digitale temperatuursensor, de LM92. Deze sensor heeft alle benodigde elektronica al aan boord. Het enige dat nodig is, is een aansluiting op de I2C bus. De 12-bit code die uitgelezen wordt, is de weergave van de actuele temperatuur. Dit IC is tot op 0.33 °C nauwkeurig.

Het grootste probleem is om deze sensor betrouwbaar in je ketels te monteren. Dit heb ik opgelost door de temperatuursensor op een klein printje te monteren en deze in te gieten in een koperen pijp. Dat ingieten doe ik met giethars (met dan aan Marco Mantel voor het idee!).

Op de foto ziet je de LM92 op een klein printje gemonteerd. Die plak ik onderin een 22 mm koperen buis (uiteraard met de kabel er al aan gesoldeerd), waarna ik het pijpje vol laat lopen met giethars. Na een paar weken uitharden is een waterdichte constructie ontstaan, die vervolgens in de ketels gemonteerd kan worden.
Het adres van de LM92 op de I2C bus kan ingesteld worden door de pinnen A0 en A1 op 0 V (logische 0) of 5 V (logische 1) te leggen. Voor de sensor in de HLT gebruik ik adres 0x92/0x93 (A1=0, A0=1) en voor de sensor in de MLT gebruik ik adres 0x94/0x95 (A1=1, A0=0).

Ik heb lang lopen zoeken naar temperatuursensoren, maar deze zijn helemaal perfect. Ik krijg direct een digitale code binnen, ik hoef geen aparte conversie/calibratie meer te doen (zoals bij een PT100 element), er is vrijwel geen elektronica meer nodig, ze zijn super nauwkeurig en ze werken altijd!

Terug naar boven

4. Volume-metingen (druksensor)

Het meten van volumes in een ketel kan op verschillende manieren: Na wat berekeningen aan de capacitieve manier, leek me dit geen goed idee. De verandering van capaciteit is erg klein, waardoor het lastig wordt om hier een betrouwbare aflezing uit te krijgen.
De ultrasone manier is zeker interessant, maar ook een complexe. Er is redelijk wat signaalbewerking nodig om dit goed te krijgen. Ik heb recentelijk een goed zelfbouw project hierover gevonden. Dus zeker de moeite waard om hier eens over na te denken.

De derde manier, via drukmeting, heb ik gekozen omdat deze het makkelijkste leek. Ik ben begonnen met een eenvoudige drukmeter, de MPX12 druksensor van Motorola. Dit is een, voor temperatuur, ongecompenseerde druksensor. In de praktijk bleek al snel dat dit wel werkt, maar de afgegeven spanning varieerde te veel om een betrouwbare aflezing te krijgen.

Hierna ben ik overgestapt op de druksensor MET temperatuurcompensatie, de MPX2010. Deze kan maximaal een druk aan van 10 kPa (10 kPa is gelijk aan 0.1 bar en dit komt overeen met de druk die een waterkolom van 102 cm geeft). De gevoeligheid van deze druksensor is zodanig dat deze 5.5 mV afgeeft per kPa. Dat betekent dus bij 102 cm waterhoogte een maximale uitgangsspanning van 25 mV. Dat is te weinig om direct door een AD-converter ingelezen te worden en vandaar dat ik een speciale instrumentatieversterker gebruik (de AD620), om deze spanning groot genoeg te krijgen.
Deze spanning wordt vervolgens door een 12-bit AD-converter ingelezen (de MAX1238).

Hier zie je het schema van de twee druksensoren met de bijbehorende instrumentatieversterkers (en hier de print lay-out). Op de foto hiernaast zie je de twee druksensoren in een kastje gemonteerd zitten (nog niet met de echte print, maar met een proto-versie ervan). Om het signaal zo goed mogelijk te krijgen, is ervoor gekozen om de versterking zo dicht mogelijk bij de druksensor te doen en dus niet pas in de kast met elektronica. Het signaaltje uit de druksensor wordt nu 184 keer versterkt. Dit versterkte signaal wordt naar de elektronicakast gestuurd (via de kabel op de foto)
Ook zie je op de foto duidelijk de twee slangetjes, eentje voor de HLT en eentje voor de MLT.
Het signaal dat, via de kabel, bij de elektronica kast binnenkomt, wordt softwarematig nog gefilterd (met een instelbaar laagdoorlaatfilter). Hierna is het redelijk betrouwbaar geworden. Wel is het zo dat zaken als luchtdruk hun invloed hebben op de uitlezing. Er is dus bij het opstarten van de software een automatisch calibratiemechanisme nodig.

Terug naar boven

5. Aansturing Pomp en verwarmingselement 3 kW (triac print)


Het aansturen van de onderdelen die op 220 V werken, gebeurt door een aparte triac print in de elektronica kast. Deze print krijgt twee binaire signalen binnen (Heater_ON en Pump_ON). Voor de triac print volstaat het om een 3.3 V of 5 V signaal aan te bieden, waarmee deze print dus direct op een microcontroller aangesloten kan worden. Op basis hiervan worden het verwarmingselement en de brouwpomp dus in/uitgeschakeld.

De meest gebruikte oplossing bij collega brouwers is om gebruik te maken van een Solid-State-Relais (SSR). Nu is het niet al te moeilijk om zelf je eigen SSR te bouwen, want er zijn speciale vermogenselektronica componenten op de markt, die hier uitermate geschikt voor zijn. Zoals bijv. een Triac. In eerste instantie gebruikte ik de TIC263M Triac. Deze kan tot 600 V schakelen bij een stroom van 25 A. Meer dan voldoende dus. Nadeel van deze triac is dat de behuizing ook onder spanning staat! Bij montage op een koelblok moet je deze dus elektrisch isoleren. Ik ben dan ook overgestapt naar de TMG25CQ60F (in het schema staat echter nog steeds TIC263M).


De triac voor het verwarmingselement is voorzien van een koelplaat, waarop een LM35 temperatuursensor geplakt wordt. De temperatuur van de triac kan op deze manier door het brouwprogramma continu gecontroleerd worden. Indien de temperatuur te hoog dreigt te worden, dan zal de triac uitgezet worden. LET OP: op de foto hierboven is een kleine koelplaat te zien (zonder de LM35). Deze is afdoende om een pomp te schakelen. Wanneer daadwerkelijk een 3 kW verwarmingselement geschakeld gaat worden, is een grotere koelplaat nodig!

Het merendeel van de intelligentie van het schakelen gebeurt door een speciaal IC, de MOC3043. Dit IC is voorzien van een nuldoorgangsdetectie. Dat betekent dat de triac wordt ingeschakeld wanneer de wisselspanning "door de 0 V gaat". Hiermee wordt een rustige inschakeling gegarandeerd, met weinig tot geen storing. Ook is het IC voorzien van een galvanische scheiding, zodat bij problemen aan de 220 V kant, er geen direct contact is met de overige elektronica (en de PC!).

Als laatste wordt hieronder nog de print lay-out van deze schakeling gegeven:


Terug naar boven

6. Aansturing gaskleppen / branders

Sinds 2005 ben ik overgegaan op branders uit oude CV-ketels, zie Brouwinstallatie->Gasbranders, mede doordat mijn buurman, die loodgieter is, mij regelmatig voorziet van CV-ketels die ik mag slopen.
In zo'n CV-ketel zit, naast een flinke brander, ook een gasklep. Zo'n gasklep is er ruwweg in een tweetal varianten:

6.1 Niet modulerende gasklep

Een niet modulerende gasklep hoeft dus alleen maar wel of geen 24 V wisselspanning aangeboden te krijgen.
Op het schema zie je hoe dit gerealiseerd is. Op de connector 24V_INT wordt een 24V wisselspanning aangeboden, de connector TO_BURNER gaat naar de gasklep.
Het makkelijkste werkt die aansturing van zo'n niet modulerende gasklep met een relais. De aansturing van zo'n relais gebeurt d.m.v. een transistor. Die transistor op zijn beurt wordt weer aangestuurd door een IO-pin van de PCF8574 I2C IO-chip.

Uit de PID regelaar in het brouwprogramma komt een percentage (tussen 0% en 100%). Dit is de hoeveelheid warmtevraag. Dit signaal kan niet rechtstreeks gebruikt worden om dit relais aan te sturen. Als de warmtevraag groter wordt dan een vooraf ingestelde waarde (bijv. 40%), dan wordt het relais aan gezet. Het relais wordt pas weer uitgezet wanneer de warmtevraag onder een andere ingestelde waarde komt (bijv. 35%). Door deze hysterese wordt tevens voorkomen dat de brander gaat staan klapperen.

6.2 Modulerende gasklep

Bij een modulerende gasklep wordt de gasklep dus aangestuurd met behulp van een PWM signaal, zoals hiervoor al gemeld.

Het plaatje laat een PWM signaal zien. Kenmerkend voor een PWM signaal is dat de frequentie van het signaal vast is. De meeste gaskleppen werken op een PWM signaal met een frequentie f van 20 kHz (de periodetijd T is dan 50 microseconden). De amplitude (hoogte van het signaal) ligt meestal tussen de 24 en de 28 Volt.

Bij een pulsbreedte van 50 % is het signaal dus net zo lang hoog als dat het laag is, bij een pulsbreedte van 20 % is het dus 20% van de periodetijd hoog en 80% van de periodetijd laag.
Een PWM signaal van 100% is continu hoog, terwijl een PWM signaal van 0% continu laag is.

Om een modulerende gasklep aan te sturen hebben we dus het volgende nodig: De PWM print Het schema hiernaast voorziet in al deze zaken. Zo wordt een 28 Vdc signaal opgewekt, er is een 20 kHz signaalgenerator aanwezig, die zowel een driehoekvormig signaal als een blokvormig signaal opwekt. Het driehoekvormige signaal gaat naar IC3C die dit signaal vergelijkt met de gelijkspanning die, via de AD-converter, uit het brouwprogramma komt. Een kleine gelijkspanning resulteert in een PWM signaal met een grote pulsbreedte, terwijl een grote gelijkspanning resulteert in een kleine pulsbreedte.

Door gebruik te maken van de open collector uitgang van de LM339, kan deze direct op de 28 Vdc aangesloten worden. De transistor BC640 zorgt uiteindelijk voor de aansturing van de gasklep zelf.

De print lay-out van de totale schakeling is hier te vinden.

Terug naar boven

7. LED-Displays (4-digit)

Schema van LED Display print De LED-displays zijn op de behuizing voor de elektronica gemonteerd. Er zijn in totaal vier LED-displays gemonteerd. Ieder LED-display bestaat uit vier 7-segment displays. Iedere LED-display kan dus maximaal een getal van vier decimalen laten zien. Ook kan er op iedere plaats een decimale punt getoond worden. De LED-displays kunnen gebruikt worden om de verschillende meetwaarden (temperaturen, volumes) te laten zien.

Het hart van ieder LED-display is de SAA1064. Dit is een 4-digit LED-driver met I2C-interface. Het schema zelf is afkomstig van Elektuur en heb ik ongewijzigd overgenomen.

Terug naar boven

8. Behuizing voor de elektronica

Voorkant van de behuizing voor de elektronica
Alle elektronica is ondergebracht in 1 behuizing. Op de voorkant zitten de volgende aansluitingen:
- Aan/uit schakelaar. Om alle elektronica in en uit te schakelen.
- Groene LED: de ALIVE indicator, knippert 1 keer per seconde. Hiermee is direct te zien of de software / hardware nog werkt en niet uitgevallen is (dat komt natuurlijk nooit voor, hooguit kan Windows eens vastlopen :-)
- Bovenste rode LED: als deze brandt, dan is het verwarmingselement ingeschakeld.
- Onderste rode LED: als deze brandt, dan is de pomp ingeschakeld.
- LED displays: hier kunnen in totaal vier verschillende signalen op afgelezen worden. Op de foto staat links de HLT temperatuur, dan de MLT temperatuur, dan de temperatuur in de elektronica kast en als laatste het volume van de MLT.

Achterzijde van de electronica kast
Aan de achterkant van de behuizing zitten de volgende aansluitingen:
- Drie RJ45 pluggen (linksboven) voor de twee temperatuursensoren en de MPX2010 druksensoren. De kabel voor de druksensor moet op de meest rechtse plug aangesloten worden.
- Twee wandcontactdozen: de linker is voor het verwarmingselement, de rechter is voor de pomp.
- Interface voor de parallelle poort (Centronics connector).
- 220 Volt aansluiting.
- Aansluiting (rood) voor een niet modulerende gasklep.
- Aansluiting (wit) voor een modulerende gasklep.

Terug naar boven

9. Datasheets van componenten

Hier volgt nog een overzicht van de belangrijkste ICs die gebruikt zijn. Terug naar boven