Server » Verwarming » Eigen installatie» 2020 » Printen
Verwarmingsinstallatie 2020
Printen van de temperaturen en werkingparameters
Evolutie
-

-

Het is mogelijk verschillende funkties bij te voegen aan een arduino uno. Een van de mogelijkheden is bijvoorbeeld een webserver.

De bedoeling van de webserver is om de parameters van de installatie te kunnen controleren en instellingen op afstand te kunnen wijzigen. Wegens de beperkte mogelijkheden van de arduino is het niet mogelijk tabellen aan te leggen (temperaturen van de voorbije week met een nauwkeurigheid van 1 minuut). Maar het zou bijvoorbeeld wel mogelijk zijn de huidige temperaturen en instellingen te tonen, en een mogelijkheid voorzien om de gevraagde temperatuur te kunnen wijzigen.

De beperkingen van de arduino zijn hier wel opvallend, en er is een tweede webserver nodig om voor de "verpakking" te zorgen, dat wil zeggen de grafische elementen en de bladschikking. De tweede webserver heb ik al, dat is de server die deze pagina's levert. De webserver van de arduino zou enkel gebruikt worden om de ruwe cijfers zonder formatering te leveren, deze gegevens zouden dan ingebed worden in een normale webpagina.

Ik mis eigenlijk de internet funkties niet zoveel. Het programmeren ervan was redelijk complex, want de sturing van de verwarming gebeurde met een windows-98 computer die ik niet teveel wou belasten. Hier ook leverde de server enkel de ruwe gegevens, die ingepakt werden in een pagina die door een andere server geleverd werd. Maar wat de windows-98 computer wel kon doen, dat was tabellen aanleggen van de evolutie van de temperaturen. Met een PATA SSD-schijf van 32GB had ik voldoende ruimte om één jaar terug in de tijd te kunnen gaan.

De stijging van de temperatuur met de huidige gaskachel is voldoende snel als ik thuis kom, zodat ik de verwarming niet een half uur vroeger moet inschakelen, zoals wel het geval was met de centrale verwarming. De besturing op afstand, die mogelijk was met de vorige installatie is dus niet meer nodig.

En er komt een praktisch probleem: de arduino uno heeft te weinig beschikbare poorten om een webserver te sturen. Maar wat ik wel zou willen, dat is dat ik de evolutie van de temperaturen zou kunnen zien, zoals het geval was met mijn vorige installatie. Ik wil zien of de gevraagde temperatuur snel genoeg bereikt wordt zonder overshoot, en ik wil weten hoe de temperatuur evolueert als de installatie in manuele modus werkt (dus met de mechanische thermostaat van de gaskachel).

Eigenschappen van de printer

Wat betreft de mogelijke printers is er niet zoveel keuze. Men moet een printer kiezen met seriële ingang (het is bijna onmogelijk om een parallelle printer aan te sturen via de arduino). De meest gebruikte seriële verbinding is de RS-232 verbinding die gebruikt werd om modems en bepaalde printers met de computer te verbinden.

Men heeft ook een DOS-printer nodig. Dit is een printer die de ASCII tekens direct kan uitprinten. De kodes 32 tot 127 zijn de standaard letters en tekens, de lagere kodes worden gebruikt voor de sturing en de kodes boven 127 zijn symbolen (niet gestandardiseerd). De eerste printers op de markt konden zonder probleem deze ASCII tekens uitprinten.

Windows printers hebben echter geen tekensets meer. Deze printers ontvangen een beeld van wat er uitgeprint moet worden (GDI of Graphical Device Interface). Deze printers zijn "windows only", want ze kunnen gewone tekens niet meer direct weergeven. Het is duidelijk dat arduino te weinig geheugen heeft om grafisch te printen.

De eerste printers waren impact printers met een inktlint en kunnen direct printen (ASCII tekenset ingebouwd). Men kan dergelijke printers nog op ebay vinden, maar men moet goed nazien dat de printer serieel aangestuurd kan worden. De meeste printers hadden toen al een parallele (Centronics) interface die hier niet gebruikt kan worden.

Recentere printers gebruiken thermisch papier. Deze printers maken minder lawaai en printen doorgaans sneller, maar men moet nagaan of de printer wel ASCII tekens kan printen. De meeste ticket en labelprinters zijn enkel grafische printers die geen ingebouwde tekenset hebben. We hebben het hier vooral over de veel voorkomende Zebra-printers.

Maar om de zaken nog ingewikkelder te maken, bepaalde Zebra printers kunnen in DOS modus werken (Zebra noemt deze modus "Line Mode"), dit is bijvoorbeeld het geval met de Zebra LP 2824 Plus. Maar pas op, dit model is beschikbaar met verschillende ingangen: parallel, USB, RS-232 (en zelfs netwerk). Controleer dus of de printer wel een RS-232 ingang heeft. De printer werkt standaard in grafische modus, maar er kan van modus veranderd worden door een toetsencombinatie bij het inschakelen (de modus wordt gelukkig bewaard in een niet-vluchtig geheugen).

Voor onze toepassing zijn printers die gebruikt werden in industriële processen uitermate geschikt. Dit zijn printers die aan een PLC gekoppeld worden en regelmatig een printout geven. In de industrie moet er bij bepaalde processen een trace bechikbaar zijn. Dergelijke printers werken met kettingpapier en de lint is goed voor een miljoen tekens. Bij processturing gebruikt men doorgaans geen computer met grafische mogelijkheden. Een moderne printer kan hier niet gebruikt worden.

Het RS-232 protocol is goed gedefinieerd en wordt reeds meer dan 50 jaar gebruikt. Het protocol werkt echter met niet-gestandardiseerde spanningen (+5V en -5V in plaats van 0V en 5V). Een interface is nodig om de TTL spanningen die de arduino levert om te zetten naar RS-232 spanningen. Niet alléén zijn de spanningen verschillend, maar de polariteit is ook omgekeerd.

Het RS-232 protocol wordt hier verder uitgelegd, samen met het verschil TTL-serieel.

Er is een kleine schakeling (rechts boven) die de spanningen aanspast en de polariteit omkeert. De led licht zwakjes op als er tekens verstuurd worden. Ten opzichte van de eerste versie (schakeling hierboven rechts) heb ik een aan-uit schakelaar bijgevoegd (de printer werkt op 5V en trekt maximaal 250mA). Ik heb ook een zenerdiode bijgevoegd om de negatieve spanning te beperken tot -5V om zeker te zijn dat de printer niet beschadigd zou geraken. Uiteindelijk heb ik gemerkt dat de printer ook kan werken met TTL signalen: het volstaat een dipswitch te veranderen!


Indien je enkel over +5V beschikt kan de schakeling hierboven zorgen voor de negatieve spanning. De schakeling bestaat uit 6 CMOS inverters die de spanning van +5V omzet in een spanning van -3V, juist voldoende om geschikte RS-232 signalen te leveren. Er bestaan verschillende uitvoeringen van deze schakeling, die hier geöptimaliseerd is om de verliezen te beperken. We gebruiken een dubbele gelijkrichter in plaats van een enkelvoudige en schottky diodes in plaats van gewone diodes, dit allemaal om -3V te halen uit +5V. De ingang (RxD) op de printer wordt meestal via een weerstand van 5kΩ met de massa verbonden: de schakeling moet dus minstens -3mA kunnen leveren.

Een aantal apparaten kan met TTL-niveaus werken, maar dit is niet gegarandeerd, zeker als je wat ouder materiaal gebruikt. Daartegenover zijn er een aantal apparaten die verplicht met TTL niveaus aangestuurd moeten worden, zoals bepaalde LCD schermen.

De printer werkt goed, ik heb enkel de inktlint moeten vervangen. Voor de eerste tests heb ik gewoon stroken carbonpapier gebruikt. Uiteindelijk zal de impactprinter vervangen worden door een thermische printer. Iedere minuut wordt er een regel geprint, en dat maakt nogal wat geluid, vooral 's nachts.

En een finale aanpassing zal een real time clock zijn. De module kan gemakkelijk bijgeplaatst worden en er zijn twee arduino-poorten nodig (SDA en SCL: serial data en serial clock). Wat een geluk, ik heb precies twee poorten over op de arduino uno!

En om af te sluiten een korte video van de (nogal luidruchtige) printer.

Iedere minuut worden volgende gegevens uitgeprint:
Tijd (uren en minuten)
De huidige temperatuur
De gevraagde temperatuur en de werkingsmodus (A = automatisch)
De positie van de servomotor
De temperatuur van de uitlaatgassen (ruwe, niet genormaliseerde temperatuur).

De inktlint was toen nog niet binnen en ik gebruik een strook carbonpapier om de afdruk zichtbaar te maken.

Publicités - Reklame

-