Server » Verwarming » Multiplex
Zelf aan de slag:
Analoge multiplexer voor de K8055
Multiplexer
Als interface met de buitenwereld is een K8055 van Velleman ideaal. Deze kaart heeft echter wat weinig analoge ingangen voor onze toepassing. Per kaart kunnen er maar twee temperaturen gemeten worden, en dit is te weinig. Met een printje bij is dit gemakkelijk aan te passen.
-

-

K8055

De K8055 heeft slechts twee analoge ingangen per kaart, en 8 digitale uitgangen. Veronderstel dat we de temperatuur van 5 ruimtes moeten meten + de boiler en de buitentemperatuur (we hebben dus 8 analoge ingangen nodig). We moeten de kleppen van de radiatoren van de 5 kamers sturen + de brander en de circulateur (3 snelheden, dus 2 uitgangen). Daarmee zijn onze 8 digitale uitgangen in gebruik.

De eenvoudigste oplossing is meerdere kaarten gebruiken. We zitten echter direkt aan 4 kaarten (het maximum) terwijl het eigenlijk met één enkele kaart had gekund. We gaan namelijk de twee analoge ingangen multiplexen. Als multiplex-signaal (stuursignaal) gebruiken we de twee analoge uitgangen dat we op nul of 255 zetten. (Gebruik je twee van de digitale uitgangen van de K8055, in plaats van de twee analoge uitgangen, dan mag je de pull-up weerstanden niet vergeten). Met die twee uitgangen kunnen we 4 bit-waarden produceren (00, 01, 10, 11), die naar een multiplexer gestuurd worden. Als multiplexer gebruiken we de bekende 4066 (een quad bilateral switch), ideaal voor deze toepassing. Dit IC is echter niet bedoelt als multiplexer, maar als 4 enkelvoudige schakelaars die individueel te bedienen zijn.

Binair naar decimaal omzetting met een 4028

De twee uitgangen produceren een binair getal, we moeten echter een decimale waarde hebben om de juiste switch van de 4066 met de uitgang te verbinden. Daarvoor gebruiken we een 4028 (binary coded decimal to decimal). Deze kan ook nog gebruikt worden indien we nog meer ingangen zouden willen multiplexen (maar in deze toepassing hebben we echter uitgangslijnen tekort: ze zijn al allemaal in gebruik voor de verwarming zelf).

4028

4028 naar twee 4066

We gebruiken de blauwe, binnenste waardetabel van de 4028 (DCD to decimal). De twee uitgangen van de K8055 verbinden we met de ingang van het IC, en op de uitgang hebben we iedere keer één van de vier uitgangen dat hoog staat. De vier uitgangen laten we naar twee 4066 lopen (voor de twee analoge ingangen op de K8055), de schakelingangen van beide 4066 worden doorverbonden.

4066 als eenvoudige multiplexer gebruikt

Voor deze toepassing is de 4066 heel goed bruikbaar, met zijn open weerstand hoger dan 10MΩ en zijn gesloten weerstand lager dan 100Ω. De 4066 zal een heel kleine fout produceren (maximum een paar milivolt). De analoge ingang met zijn 256 bit-waarden en zijn sweep van bijna 5 volt zal daar niets van merken (de resolutie van de omzetter is 15mV).

Als je een current loop zou gebruiken (Velleman kit K8067), dan moet je de afsluitweerstand echter op de ingang van de 4066 aansluiten, niet op de ingang van de K8055 zelf. Dan loopt de stroom namelijk niet door de 4066. De 4066 gedraadgt zich als een niet-perfekte schakelaar en heeft een relatief hoge "contactweerstand". Bepaalde stroomlussen, en met name de industrie-standaard 4-20mA current loop gebruikt de stroom in de lus om het meettoestel te voeden (fantomvoeding). Als de stroomlus constant onderbroken wordt, dan kan er geen correcte uitlezing plaatsvinden (settle time na het inschakelen van de stroom).

Op het plannetje gebruik je enkel de blauwe delen: twee 4066 als multiplexer voor iedere analoge ingang van de K8055 en één 4028 waarvan we twee ingangen en vier uitgangen gebruiken (niet gebruikte ingangen met massa verbinden). De uitgangen van de 4028 gaan naar beide 4066.

Nog meer analoge ingangen

Door één extra uitgang van de K8055 te gebruiken kan je 16 analoge ingangen op de K8055 aansluiten (in plaats van 8). De waardetabel (zie hoger) is nu de licht-blauwe vierkant, en we gebruiken de volledige schakeling rechts. Meer dan 16 analoge ingangen per kaart zou ik niet gaan. Dit is meer een programmatorisch probleem dan een electronisch probleem, want we werken nog altijd zeer laagfrekwent en de meetfout die door de talrijke 4066 ontstaat is onbeduidend.

Programmatorisch moeten we de juiste bit-waarde op de uitgang zetten, 100 ms wachten, en dan de waarde van beide omzetters inlezen. In de praktijk betekent dit dat je 2 metingen per seconde kan uitvoeren (als je zoals ik met een cyclus-tijd van 1 seconde werkt). Omdat je met 16 ingangen zit zijn alle ingangen na 8 seconden gedigitaliseerd.

Werken met meerdere K8055-kaarten

Je kan natuurlijk nog altijd werken met meer dan één K8055, zodat je maximaal 64 analoge ingangen hebt! Daarvoor gebruik je echter maar drie digitale uitgangen in totaal, want de uitgangen die 100mA kunnen sinken kunnen probleemloos naar 4 4028 gestuurd worden. Zo werk je met 4 identieke multiplex-kaartjes. Niet vergeten een pull-up weerstand (1kΩ) te gebruiken want de digitale uitgangen van de K8055 zijn open collector.

Als je toch met meerdere K8055 interfaces werkt, en je hebt genoeg digitale uitgangen, dan kan je de 8 digitale uitgangen van één kaart gebruiken om de multiplex-schakelaars te bedienen (zonder de binair-naar-decimaal omzetting). De 4028 op iedere multiplex-kaart komt daardoor te vervallen.

Arduino

De Arduino heeft genoeg analoge ingangen voor een klein project, het probleem is hier het beperkt aantam binaire in- en uitgangen. We kunnen dit oplossen door een soort "poort expander" die gebruikt maakt van 4099. Dit zijn ook BCD naar decimaal omzetters, maar met een geheugenfunktie. Eenmaal de data naar de 4099 geschreven blijft die bewaard in het IC.

De Arduino wordt hier besproken.

Publicités - Reklame

-