TGM - Kolleg für Berufstätige
Abteilung Elektronik

Zusammenfassung Deutsch Abstract Englisch Resumen Español Abstract Portuguese نبذة تعريفية
Diplomarbeit
Überwachung des CO-Anteils bei CO2 Supplementierung
im Gewächshaus
eingereicht von:
Simon Fowler
E-Mail: sales@madur.com
Usman Malik
E-Mail: usman.malik@chello.at
Betreuer:
Dipl.- Ing. Thomas Wimmer
E-Mail: thomas.wimmer@tgm.ac.at
Dipl.- Ing. Latif KaisiE-Mail: latif.kaisi@tgm.ac.at
Vorwort
Die vorliegende Diplomarbeit wurde im Kollege für Berufstätige des Technologischen
Gewerbe Museums TGM Jägerstr.71 1200 Wien durchgeführt.
Sie wurde durch Herrn Prof. Dipl. Ing. Latif Kaisi, Herrn Prof. Dipl. Ing. Thomas Wimmer und Herrn Prof. Dipl. Ing. Steinmetz vom Kollege für Elektronik am TGM betreut.
Herrn Prof. Dipl. Ing. Latif Kaisi und Herrn Prof. Dipl. Ing. Thomas Wimmer möchten wir an dieser Stelle für die sehr gute und engagierte Betreuung der Diplomarbeit recht herzlich danken. Und an Herrn Steinmetz möchten wir für die Printfertigung (Ätzen) recht herzlich danken.
Wien, am 14.04.2005
INHALTSVERZEICHNIS
3.1.2 Gültigkeit des Dokumentes. 8
3.2 Allgemeine Beschreibung des Projektes. 8
3.2.2 Abgrenzung des Produktes. 8
3.2.3 Überblick über die Funktionalität. 8
3.2.4 Allgemeine Einschränkungen. 8
3.2.5 Benutzer des Produktes. 9
3.3 Vorgaben an die Projektabwicklung. 9
3.3.1 Anforderung an die Realisierung. 9
3.3.2 Fertige und zugekaufte Komponenten. 9
5. Theoretische Grundlagen. 15
5.3 Kurzbeschreibung Mikrokontroller Board. 17
5.3.2 Features des ATMega 128 Prozessors. 20
5.3.4 Allgemeines zu AD-Konvertierung. 21
5.3.5 AD-Konvertierung des ATmega128. 23
5.3.6 Sukzessive Approximation (Wägeverfahren) 24
5.3.7 Programmierung des ATmega128 Wandlers. 26
5.4.2 Amplitudenmodulation. 30
5.5 Allgemeines zu Easy Radio Funkmodul 35
6.1.1 Kurzbeschreibung des Blockschalbild. 39
6.1.3 Print der Heizschaltung. 41
6.1.6 Versorgungsschaltung. 43
6.1.7 Die Fertige- Schaltung. 43
6.1.8 Layout der Steuerplatine. 45
6.1.9 Print der Steuerplatine (Bild) 48
6.1.10 Detailblockschaltbild der Funkübertragung. 49
6.1.12 Layout der Funkmodulschaltung. 51
6.1.13 Print der Funkmodulplatine. 53
Supplementierung von CO2 (Kohlenstoffdioxid) ist zunehmend beliebt, um die landwirtschaftlichen
Erträge von Gewächshäusern zu steigern. Vorteilhaft ist nicht nur, dass die Pflanzen mehr
und größere Früchte tragen, sondern auch schneller wachsen. Somit kann man als erster einheimische
Produkte auf den Markt bringen, was einen Preisvorteil bringen kann. Konventionelle Supplementierungsanlagen sind
auch in Ländern beliebt, wo das Heizen von Gewächshäusern entweder nicht notwendig oder
nicht üblich ist. In unseren Breiten geht es einfach nicht ohne einen gewissen Grad an Heizung, um die
zarteren Pflanzen über den Winter zu helfen. Noch dazu werden ausländisches Obst und Gemüse
immer früher und billiger angeboten, also müssen die einheimischen Betriebe Möglichkeiten finden,
ihre Produkte auch früher und billiger auf den Markt zu bringen.
Konventionelle Supplementierungsanlagen verwenden meistens Flüssiggas mit fixen Düse,
um tagsüber eine erhöhte CO2-Konzentration zu erzeugen. Einige Anlagen verwenden
atmosphärische Propanbrenner, um die CO2-Konzentration zu erhöhen. Hier ist dann die
Heizwirkung ein nützlicher Nebeneffekt. Natürlich wäre ein Butanbrenner etwas effizienter,
aber Butan ist schon bei -1 °C flüssig, was sein Einsatzgebiet etwas einschränkt. Erdgas hingegen
produziert mehr Wasserdampf und weniger CO2, somit ist es für eine Supplementierung schlecht geeignet,
obwohl es für Heizzwecke natürlich als umweltfreundlich gilt.
Besonders in Kanada ist diese Technologie beliebt, mit ungefähr 40%iger Steigerung des Ertrags in den meisten Fällen. Wegen den geringeren Investitionskosten wird hauptsächlich eine Supplementierung mit CO2 von Flüssiggastankanlagen verwendet, obwohl die Möglichkeit, einen Propanbrenner zu verwenden auch propagiert und genutzt wird. Zum Teil liegt es an den Kosten, aber es liegt auch daran, dass (man von klein auf eingetrichtert bekommt) Abgase giftig und gefährlich sind. Niemand will wegen einer möglichen Ertragssteigerung sterben, also wird solche Technologie mit einem gewissen Unmut begutachtet. Und tatsächlich ist diese Einstellung nicht unbedingt von der Hand zu weisen, da die existierenden Systeme einfach auf empirischen Erfahrungswerten basieren. Die Anlage wird bei Tageslicht eingeschaltet und nach einer geschätzte Zeit wieder ausgeschaltet. Tabellenwerte geben Auskunft darüber, wie viel CO2 oder Brennstoff pro Quadratmeter Gewächshaus notwendig sind, und der Brenner wird tagsüber einfach zeitweise eingeschaltet, oder die CO2-Düse wird für einige Zeit geöffnet, bis die gewünschte Menge Brennstoff oder CO2 verbraucht sind.
Für mitteleuropäische Verhältnisse, in denen die Versorgung mit Erdgas ziemlich flächendeckend ist, und eine Heizung von Gewächshäusern üblich ist, wäre es natürlich nahe liegend, die Abgase vom Brenner zu verwenden. Wegen der vorher besprochenen Ablehnung von Verbrennungsabgasen in der Atemluft, die nicht als grundlos gesehen werden kann, sollten solche Anlagen jedoch nicht einfach entstehen und ohne Kontrolle einfach rennen. Ein Erdgasbrenner ist heutzutage ziemlich effizient, aber kein Brenner kann Luft und Brennstoff mit hundertprozentigem Wirkungsgrad in Wasser und Kohlendioxid verwandeln.
Solche Brenner werden auch länger eingeschaltet, und Pannen oder Defekte können nie ausgeschlossen werden. Daher sollten die Abgase ständig überprüft werden, um sicher zu gehen, dass keine gefährlichen Stoffe am Arbeitsplatz der Landwirtschaft freigesetzt werden. Die Daumenregeln bei der Supplementierung sind kaum zeitgemäß für eine Gesellschaft im Schatten der KyotoProtokolle, also sollte hier auch langsam genauere Methoden Einzug halten.
Vorgestellt wird eine Anlage, die sowohl die Kohlenmonoxid-Konzentration in den Abgasen überwacht, als auch die Kohlendioxid-Konzentration im Gewächshaus misst. Diese Anlage wird dann sicherstellen, dass gefährlich gewordene Abgase sicher in die Außenluft transportiert werden, und zusätzlich dafür sorgen, dass jederzeit eine förderliche Konzentration von Kohlenmonoxid in Gewächshaus herrscht, auch zu Zeiten, wann der Brenner nicht in Betrieb ist. Diese Messung von CO2 kann natürlich auch dafür verwendet werden, extreme Konzentrationen von CO2 zu vermeiden, die sowohl für das Personal gefährlich werden könnten, als auch das Wachstum hindern. Ab eine gewisse Konzentration können nämlich Probleme auftreten, die den Stoffwechsel der Pflanzen aus dem Gleichgewichtig bringen.
Moderne Umweltschutzgedanken kommen auch dabei nicht zu kurz. Kohlendioxid, das vom Brenner erzeugt wird, wird normalerweise direkt in die Atmosphäre ausgestoßen, und somit wird es wenigstens zum Teil in den Pflanzen gebunden, was eine Reduzierung der CO2-Emissionen gleichkommt. Die Obergrenze für Kohlenmonoxid in den Abgasen wird so gewählt, dass die Umschaltung bei einer Konzentration erfolgt, die noch weit innerhalb der gesetzlichen Grenze für solche Brenneranlagen liegt. Somit ist gewährleistet, dass eine Störung des Brenners auch rechtzeitig erkannt wird und gleich behoben werden kann, ohne unnötige Umweltbelastungen zu erzeugen.
Die Überwachung wird auch noch wichtiger, wenn Alternativbrennstoffe verwendet werden. Ins Besondere ist es denkbar, dass ein Gewächshaus mit Biogas beheizt wird. Biogas kann sehr leicht und effizient von einer Kompostanlage, die die Abfälle aus den Gewächshäusern aufnimmt, erzeugt werden. Idealerweise braucht man auch tierische Abfallprodukte, um die Biogasanlage zusätzlich Stickstoff zu liefern, aber mit nur Grünabfall können auch sehr gute Erfolge erzielt werden. Die Zusammensetzung von Biogas ist nicht sicher voraussagbar, also sind die Produkte der Verbrennung auch nicht berechenbar, sondern müssen gemessen werden. Eine gute Biogasanlage erzeugt Biogas mit zirka 80 % Methan und 20 % Kohlendioxid, aber das operative Wort ist "zirka".
Hier wird aus wirtschaftlichen Gründen davon ausgegangen, dass das System aus einem Hauptbrenner, der Erd- oder Biogas (oder eine Mischung) als Brennstoff verwendet, mit einem Zusatzbrenner, der hauptsächlich Biogas verwendet, besteht. Normalerweise ist in der Kalten Jahreszeit weniger Biogas verfügbar, aber gerade zu solchen Zeiten brauchen die Pflanzen zusätzliche Wärmezufuhr, also muss eben Erdgas verbrannt werden. Natürlich ist eine Beimengung von Biogas jederzeit möglich und wünschenswert, nicht nur aus Gründen der Kosteneinsparung sondern auch, weil somit eine Freisetzung von Kohlendioxid aus der Dekomposition vermieden wird. Das Heizen eines Gewächshauses ist natürlich in der Nacht auch notwendig, aber eine Supplementierung mit CO2 ist zu dieser Zeit nicht wirtschaftlich sinnvoll, da Photosynthese bekanntlich nur bei Tageslicht stattfindet, und die Pflanzen brauchen bei Dunkelheit Sauerstoff, wobei Kohlendioxid erzeugt wird. Somit ist es ganz normal, dass in der Früh erhöhte CO2-Werte vorherrschen. Da wir nur von kleineren Erhöhungen reden bei der CO2-Supplementierung, stellt es in der Nacht auch kein Problem dar, aber der Einsatz eines Zusatzbrenners ist zu dieser Zeit nicht sinnvoll. Umgebungsluft enthält ungefähr 350 ppm CO2, abhängig von den Umweltbedingungen. In einem Gewächshaus in Bodenhöhe kann die Konzentration sehr rapide auf 200 ppm abfallen, was eine deutliche Verlangsamung des Wachstums mit sich bringt. Geplant ist eine Erhöhung zu einem Maximalwert von 4000 ppm. Diese Erhöhung sollte eine merkbare Beschleunigung des Wachstums bringen ohne unerwünschte Nebenwirkungen oder Gefahr für das Personal zu erzeugen. Die Abgase von dem Brenner werden überwacht, damit keine Möglichkeit von einer Vergiftung besteht, auch bei längerem Aufenthalt in dem Gewächshaus. Obwohl die gesetzte Obergrenze von 60 ppm in den Abgasen durchaus gefährlich klingt, wird dieses Gas sehr stark verdünnt in dem Gewächshaus, somit kann die Erhöhung der CO-Konzentration nie über einstellige ppm-Werte steigen.
Ziel der Diplomarbeit war es, ein Mess- und Regelgerät für ein Gewächshaus zu entwickeln.
Die Aufgabe des Geräts ist es, die Kohlenmonoxid und Kohlendioxid Werte zu Kontrollieren und Steuern bzw. Regeln.
Das Gerät muss die Kohlendioxid- und Kohlenmonoxid- (CO2 und CO) Werte im Gewächshäusern Überwachen. Im Falle eines erhöhten CO2 Wertes muss eine Umschaltung der Zugeführten Abgase des Heizbrenners wieder nach Außen erfolgen. Dasselbe gilt für CO Wert, jedoch muss dieser durch eine Visuelle und Akustische Warnstufe vorgewarnt werden.
Diese Warnstufe ist mittels eines Tasters Manuell zu resetieren.
3.1 Allgemeines
Es soll definiert werden, was das Projekt bei Fertigstellung können muss und wie die Ziele erreicht werden.
3.1.2 Gültigkeit des Dokumentes
Die Gültigkeit dieses Dokumentes erstreckt sich über die gesamte Dauer des Projektes.
3.2 Allgemeine Beschreibung des Projektes
Durch Supplementierung von CO2 (Kohlenstoffdioxid) die landwirtschaftlichen Erträge von Gewächshäusern zu steigern. Und gleichzeitige Kontrolle der CO (Kohlenmonoxid) Gehaltes.
3.2.2 Abgrenzung des Produktes
Anlage nur bei Tageslicht in Betrieb (Prinzip der Photosynthese).
Alarm wird nur ausgelöst bei zu hohem CO- Wert (Angezeigt durch Warnleuchte).
3.2.3 Überblick über die Funktionalität
Der CO und CO2 Wert wird mit dem Sensoren der Firma City Technology und der Firma Madur Electronics gemessen.
In bestimmten Zeitintervallen werden die CO2 Messdaten abgefragt.
Der Alarm wird bei einen zu hohen CO- Wertes ausgelöst, dabei wird die Anlage blockiert, und muss manuell rückgesetzt werden.
3.2.4 Allgemeine Einschränkungen
Begrenzte Funkweite für die CO2 Übertragung.
Anlage nur bei Tageslicht in Betrieb.
Jedes Gewächshaus , um die Steigerung des Pflanzenwachstums zu ermöglichen.
3.3 Vorgaben an die Projektabwicklung
3.3.1 Anforderung an die Realisierung
Hardware
Wasserdichtes Gehäuse (IP65 IP67) für CO2-Sensor.
Software
3.3.2 Fertige und zugekaufte Komponenten
CO Sensor
CO2 Sensor
Funk-Module
µC-Controller(Atmega128)
Durch dieses Produkt sollen die landwirtschaftlichen Erträge der Gewächshäuser gesteigert werden.
der CO2 Wert wird mit einen Infrarot Prinzip Sensor gemessen.
der CO Wert wird mittels einen Halbleitersensors gemessen.
der µC wertet die Messdaten aus.
die Steuerplatine leitet die entsprechenden Maßnahmen ein.
Das Funkmodul empfängt die Anforderung und sendet die Messdaten.
Beginn : 13.09.2004
Projektdefinition : 20.09.2004
Pflichtenheft : 04.10.2004
Ziel der
funktionstüchtigen Hardware und Software Solution : 25.04.2004
Ziel der kompletten
Dokumentation : 09.05.2005
Projektabschluss ( Präsentation der Diplomarbeit ) :13.06.2005



Der CO2 Sensor ist ein Fertigmodul, der die Messdaten digital als Hex-Wert über die RS232 Schnittstelle zur Verfügung stellt.

Die Funkmodule sind in zweifacher Ausführung, da eine bidirektionale Verbindung benötigt wird.




Kohlenmonoxid ist ein farb- und geruchloses, brennbares, schlecht wasserlösliches Gas. Es entsteht hauptsächlich bei der unvollständigen Verbrennung fossiler Brennstoffe. Dabei ist das Verhältnis von Kohlenmonoxid zu Kohlendioxid, das sich gleichzeitig als Produkt der vollständigen Verbrennung von Kohlenstoff bildet, stark von den Randbedingungen des Verbrennungsprozesses wie z. B. dem Sauerstoffangebot abhängig. Als anthropogene Quelle für CO ist vor allem der Kfz-Verkehr zu nennen, der den größten Beitrag zu den CO-Emissionen liefert.
In der freien Atmosphäre wird Kohlenmonoxid nur langsam zu Kohlendioxid oxidiert; die Reaktion wird durch UV-Strahlung und Wärme begünstigt. Die mittlere Verweilzeit von CO wird auf einige Monate geschätzt.
Die Giftigkeit von Kohlenmonoxid beruht darauf, dass über die Lunge aufgenommenes CO an das Hämoglobin des Blutes angelagert wird und dadurch den Mechanismus des Sauerstofftransports stört.
In der Verordnung über Immissionswerte (22. BImSchV) wird für Kohlenmonoxid folgender Grenzwert zum Schutz vor Gesundheitsgefahren angegeben:
Es gibt für diesen Grenzwert Toleranzmargen, die von Jahr zu Jahr abgesenkt werden.
Immissionsgrenzwerte Toleranzmargen, d. h. in einer Übergangszeit wird der jeweilige Grenzwert mit einer Toleranzspanne versehen, die von Jahr zu Jahr abgesenkt wird. Die folgende Tabelle zeigt die Summenwerte aus Grenzwert und jeweils erlaubter Toleranzmarge.
| Grenzwerte inklusive Toleranzmargen | |||||||
| Jahr | SO2 | NO2 | NO2 | PM10 | PM10 | Benzol | CO |
| 1-h-Wert | 1-h-Wert | Jahresmittel | 24-h-Wert | Jahresmittel | Jahresmittel | 8-h-Wert | |
| [µg/m³] | [µg/m³] | [µg/m³] | [µg/m³] | [µg/m³] | [µg/m³] | [mg/m³] | |
| 2000 | 500 | 300 | 60 | 75 | 48 | 10 | 16 |
| 2001 | 470 | 290 | 58 | 70 | 46,4 | 10 | 16 |
| 2002 | 440 | 280 | 56 | 65 | 44,8 | 10 | 16 |
| 2003 | 410 | 270 | 54 | 60 | 43,2 | 10 | 14 |
| 2004 | 380 | 260 | 52 | 55 | 41,6 | 10 | 12 |
| 2005 | 350 | 250 | 50 | 50 | 40 | 10 | 10 |
| 2006 | 240 | 48 | 9 | ||||
| 2007 | 230 | 46 | 8 | ||||
| 2008 | 220 | 44 | 7 | ||||
| 2009 | 210 | 42 | 6 | ||||
| 2010 | 200 | 40 | 5 | ||||
1) Revision der Grenzwerte PM10 durch die EU-Kommission vorgesehen
Kohlenmonoxid (CO) kann mit mehreren Methoden gemessen werden. In den üblichen Gasmessgeräten wird Kohlenmonoxid mit elektrochemischen Sensoren gemessen. Diese bestehen aus einem dünnen Membran und einem Elektrolyt. Diffusion des Gases durch den Membran erlaubt die Flüssigkeit, eine Spannung zu erzeugen, die an den Sensorelektroden abgenommen werden kann. Diese Methode erlaubt die Messung von Kohlenmonoxid-Konzentrationen mit einer Auflösung von 1 ppm bei einer relativ kurzen Reaktionszeit. Elektrochemische Sensoren haben jedoch große Nachteile. Sie benötigen eine regelmäßige Nullpunktsetzung, weil sie sonst ganz leicht driften. Eine Kalibrierung ist auch in bestimmten Abständen notwendig, weil die Sensoren einem Alterungsprozess unterliegen. Die Sensoren haben im Allgemeinen eine Lebenserwartung von ungefähr 3 Jahren. Natürlich ist es auch möglich, Kohlenmonoxid mit Infrarot-Sensoren zu messen, jedoch wird diese Methode nur bei teueren Geräten eingesetzt, obwohl die Preise für Infrarot-Technologie momentan im Sinken sind. Die anderen Nachteile von Infrarotmessungen sind relativ lange Aufwärmzeit, Empfindlichkeit gegen Feuchtigkeit und Erschütterungen, sowie die Größe der Sensoren.
Bei Geräten, die Langzeit-Überwachung oder Warnzwecke dienen, kommen oft die Halbleitersensoren zum Einsatz. Diese Sensoren bestehen aus einer kleinen Scheibe eines Halbleiters, der sein elektrischer Widerstand in Abhängigkeit von der CO-Konzentration ändert. Einige solche Halbleiter sind bekannt und geben gute Ergebnisse in Verbindung mit einem Kohlenstofffilter für organische Stoffe.
Der Halbleitersensor hat normalerweise eine lange Lebensdauer und benötigt keine Kalibrierung in dieser Zeit. Natürlich gibt es Nachteile auch. In diesem Fall ist es die verhältnismäßig lange Reaktionszeit. Ein elektrochemischer Sensor hat normalerweise eine T90 von ungefähr 45 Sekunden, aber dieser Halbleitersensor weist eine T90 von 150 Sekunden auf. Da solche stabile Verbrennungssystem eigentlich ziemlich träge reagieren, ist dieser Sensor durchaus für diese Anwendung geeignet.
Kohlenstoffdioxid (CO2) ist ein farbloses, nicht brennbares,
geruchloses und ungiftiges Gas, das mit ca. 0,03 % natürlicher Bestandteil der
Erdatmosphäre ist. CO2 ist für langwellige Wärmestrahlen
"undurchlässig" und verhindert so eine gleichgewichtige Abstrahlung der auf die Erde treffenden
Sonnenstrahlen. Dadurch werden auf der Erdoberfläche die zum Leben notwendigen Temperaturen
eingestellt.
Durch Assimilation wird es zusammen mit Wasser von Pflanzen mit Hilfe der Sonnenenergie bei der
Photosynthese in energiereichere Kohlenhydrate überführt, wobei Sauerstoff frei wird. CO2 dient damit
als Grundsubstanz zum Aufbau aller organischen Verbindungen.
Von tierischen Organismen werden Kohlenhydrate
als Energieliefernde Substrate für deren Stoffwechsel aufgenommen, zu CO2 und Wasser abgebaut und
durch Atmung an die Außenluft abgegeben bzw. in Biomasse umgewandelt.
Absterbende tierische und pflanzliche Organismen
liefern beim aeroben Abbau ebenfalls CO2, das entweder in die Atmosphäre abgegeben oder in Wasser gelöst wird.
CO2-neutraler Brennstoff = Holz
Beim Verbrennen von Holz wird nur soviel
CO2 abgegeben, wie zuvor beim Wachsen aufgenommen worden ist (wobei als Nebenprodukt Sauerstoff
entsteht). Durch die nachhaltige Bewirtschaftung unserer Wälder entsteht also ein Kreislauf, der
kein zusätzliches CO2 entstehen lässt. Ist es von Bedeutung, ob das Holz verbrannt wird
oder aber verrottet? - Nein, die dabei frei werdende Menge CO2 ist immer die gleiche.
Im Gegensatz zum Holz sind Öl, Gas und Kohle keine CO2-neutralen
Brennstoffe.>
Richtwerte für CO2-Konzentration:
Ø ~ 40.000 ppm Anteil in ausgeatmeter menschlicher Atemluft (20 l CO2/h)
Ø 5.000 ppm Grenzwert für CO2-Konzentration am
Arbeitsplatz
Ø > 1.000 ppm Müdigkeit und Konzentrationsschwäche machen sich bemerkbar
Ø 1.000 ppm empfohlener Grenzwert für Raumluft
Ø 400 ppm frische, natürliche Umgebungsluft. Vor 10.000 Jahren war der Wert bei ungefähr 150 ppm, wie Eisproben aus der Arktis gezeigt haben.
Es hat viele Versuche gegeben, Kohlendioxid mit elektrochemischen Sensoren zu messen, jedoch war kein solcher Sensor wirklich erfolgreich. In den meisten Fällen war die Reaktionszeit sehr lang und die Genauigkeit nicht gerade umwerfend. Zusätzlich war der Sensor sehr querempfindlich für andere saure Gase. Bei vielen Verbrennungsprozessen - beispielsweise bei der Zement- und Kalkherstellung, Glas- oder Stahlschmelzen -ist der CO2-Gehalt sehr wichtig für die optimale Einstellung und Verbrennungsbeurteilung.
Bei Standardbrennstoffen und bekanntem maximalem CO2-Wert kann dieser Wert über die O2-Messung berechnet werden.
Bei Brennstoffen mit wechselnder Qualität wie Kohle oder Müll stimmt diese Berechnung nicht mit den tatsächlichen Konzentrationen überein. Ebenso bei Prozessanlagen wie Zement- oder Kalkproduktion, in denen zusätzlich CO2 vom Material ausgast, ist eine direkte CO2-Messung notwendig.
Eine weitere Anwendung der direkten CO2-Messung sind Einstellungen von Motoren, die mit nicht genormten Brennstoffen arbeiten (z. B. Faulgasmotoren, Schiffsdiesel usw.). Ebenso wichtig ist diese CO2-Messung bei Glas- und Stahlschmelzen, die mit flüssigem Sauerstoff als Verbrennungsluft betrieben werden. Hierbei wird die Genauigkeit der O2-Betimmung über eine CO2-Kompensation deutlich verbessert.
Die neuesten Normen über Messung von Verbrennungen (EN50379) erlauben nach wie vor die Berechnung der CO2-Konzentration von der Sauerstoffkonzentration angenommen, der Brennstoff ist bekannt. Jedoch kann dieses Verfahren in der Landwirtschaft nicht eingesetzt werden, und oft wird eine tatsächliche Messung von CO2 wegen den Kyoto-Bestimmungen verlangt. Die einzige sinnvolle Methode für industrielle Zwecke ist die Infrarot-Messung. Genauer gesagt wird ein nicht-dispersiver Infrarot-Sensor zu diesem Zweck meistens verwendet. Dieser Sensor misst die Infrarotstrahlung, die durch einen mit dem Prüfgas gefüllten Kammer durchdringen kann. Ein Infrarotfilter erlaubt nur die spezifische Wellenlänge für Kohlendioxid (4,24 µm) in den Kammer hinein. Messung der Strahlenintensität am Ende des Kammers ergibt die Absorption der Strahlung durch Kohlendioxidgas. Da diese Wellenlänge nur durch CO2 absorbiert wird, ist diese Messmethode frei von Querempfindlichkeiten. Nachteile bestehen natürlich in der Druck- und Temperaturabhängigkeit, aber diese Effekte sind linear und relativ leicht zum Kompensieren.
NDIR-Sensoren sind erhältlich als 1-Kanal-Sensoren oder 2-Kanal-Sensoren. Der Unterschied besteht darin, dass die 2-kanälige Sensoren einen zweiten Detektor und Filtersystem besitzen. Dieser Filter lässt ein viel breiteres Spektrum durch, also wird nicht von der Kohlendioxidkonzentration beeinflusst. Dieser Referenzkanal dient dem Ausgleich von Verschmutzungseffekten und Langzeitdrift der Lichtquelle. Natürlich sind die 2-Kanalsensoren etwas stabiler und dementsprechend teurer als andere Sensoren, und längere Zeit waren sie Industriestandard für alle Messungen. Jedoch haben inzwischen Verbesserungen im Sensorbereich dazu geführt, dass die 1-Kanal-Sensoren durchaus eine vergleichbare Genauigkeit und Stabilität aufweisen können, also wurde für diese Anwendung ein einfacher 1-Kanal-Sensor gewählt.
5.3 Kurzbeschreibung Mikrokontroller Board
Einführung zu Atmega
Die ATmega - Mikrocontroller sind ein Teil der AVR-Controllerfamilie. Zusammen mit den ATTiny lösen die ATmega die AT90S-Serie schrittweise ab, wobei es in den meisten Fällen weitgehend pin- und funktionskompatiblen Ersatz für die Abgekündigten Controller gibt (ATmega8 statt AT90S4433, ATmega8515 statt AT90S8515 usw.).
ATMEL ATmega AVRs werden mit aktiviertem internem Taktgeber ausgeliefert. Schließt man eine andere externe Taktquelle an (Quarz, Quarzoszillator o.ä.), wird diese nicht automatisch genutzt. Zum Aktivieren müssen die Fuse-Bits des Controllers entsprechend einstellt werden (siehe Datenblatt).
Manche C-Compiler so wie z.b: CODEVISION AVR nehmen einen durch den Wizard solche Einstellungen ab.
Harvard-Architektur
Das Hauptmerkmal der Harvard-Architektur ist, dass Programm- und Datenspeicher über getrennte Busse angesteuert werden. Daraus ergibt sich der Vorteil, dass auf Daten- und Programmspeicher gleichzeitig zugegriffen werden kann. Es bedeutet aber auch, dass im Gegensatz zur Von Neumann-Architektur - echter Code im Datenspeicher nicht ausgeführt werden kann. Dazu muss er erst in den Codespeicher übertragen werden.
Register
Die Register eines Prozessors sind Speicher mit geringer Kapazität und kurzer Zugriffszeit. Sie dienen zur vorübergehenden Speicherung von Informationen. Viele Befehle funktionieren nur mit Registern. Will man z.B. zwei Zahlen addieren, dann müssen sich die beiden Summanden bei den meisten Controllern in Registern befinden. Befinden sie die Summanden einfach nur irgendwo im RAM, aber nicht in Registern, dann müssen sie vor der Addition in Register kopiert werden.
RAM
RAM ist die Abkürzung für Random Access Memory, d.h. "Speicher mit wahlfreiem Zugriff." Damit ist gemeint, daß man beim Zugriff keine Reihenfolge einhalten muss und jederzeit auf alle Daten zugreifen kann (lesen und schreiben).
Allerdings trifft diese Eigenschaft mittlerweile auf viele Speichertypen zu. Spricht man heutzutage von RAM, dann meint man damit meistens Speicher, den man beliebig oft lesen und beschreiben kann und der zum Datenerhalt Strom benötigt.
FLASH ROM
Flash-ROMs sind nichtflüchtige Datenspeicher, d.h. sie können sich die in ihnen gespeicherten Daten auch ohne Strom merken. Man kann sie beliebig oft auslesen, aber nicht beliebig oft beschreiben. Wie oft genau ist unterschiedlich und steht normalerweise im Datenblatt.
Ein Flash-ROM kann im Gegensatz zum EEPROM nur sektorweise gelöscht werden, außerdem ist die Anzahl der erlaubten Lösch-/Schreibzyklen meist deutlich niedriger.
Flash-ROMs sind als Programmspeicher in Mikrocontrollern sehr weit verbreitet
EEPROM
Das EEPROM ist ein elektrisch löschbarer Speicher ("Electrically Erasable Programmable Read Only Memory"). Im Gegensatz zu Flash-ROMs muss man bei EEPROMs nicht immer nur einen ganzen Block auf einmal löschen, sondern kann auch einzelne Bytes löschen und neu beschreiben.
Die meisten AVR-Controller haben ein integriertes EEPROM als Datenspeicher, es gibt jedoch auch externe EEPROMs die über den I2C- oder SPI-Bus angeschlossen werden können.
Wie oft ein EEPROM beschrieben werden kann steht im Datenblatt. Typische Werte sind 100.000 oder 1 Million Schreibzugriffe. Danach kann es zu Datenverlusten kommen. Wer regelmäßig in ein EEPROM schreiben will, der sollte unbedingt nachrechnen wieviele Schreibzugriffe er denn konkret machen will. Schreibt man z.B. jede Sekunde auf die gleiche Stelle, dann macht man in zwei Tagen 172.800 Schreibzugriffe und damit kann das EEPROM schon kaputt sein.
SRAM
Statischer RAM
Schneller Speicher, wird bei Microcontrollern gerne als RAM benutzt. Auch die Register sind meist als SRAM realisiert.
Hat man SRAM als einzelne Chips, dann liegt ihr Vorteil darin, daß sie zum Datenerhalt einfach nur Strom brauchen und keinen Refresh.
SRAM-Zellen benutzen als Grundprinzip der Speicherung FlipFlops. Technisch gesehen besteht ein SRAM-Bit meist aus 4 oder 6 Transistoren, wodurch wodurch relativ viel Platz verbraucht wird.
AD-Wandler (ADC-Converter)
Ein Analog-Digital-Wandler wandelt eine analoge Spannung in einen digitalen Wert um.
Die Stufenauflösung beträgt zwischen 4 und 32 Bit. Den durch die Wandlung entstehenden Fehler zwischen dem tatsächlichen Wert und dem ausgegebenen (gewandelten) Wert nennt man Quantisierungsfehler.
Bekannte Verfahren:
Serial Peripheral Interface - SPI
I2C - BUS
I2C ist ein synchroner serieller Zweidraht-Bus (eine Daten- und eine Taktleitung), der für die Kommunikation zwischen ICs über kleine Distanzen geeignet ist. Entwickelt wurde er vor ca. 20 Jahren von Philips. Gesprochen "I quadrat C" steht für IIC = Inter IC Bus. Aus Lizenzgünden heißt der I²C Bus bei manchen Herstellern auch TWI, two wire interface.
In einem I2C-Bus gibt es mindestens einen Master und eine beliebige Anzahl Slaves (max. 128). Ein I2C-Bus mit mehreren Mastern wird als "Multi-Master-Bus" bezeichnet. Der (oder die) Master sprechen die Slaves an; ein Slave kann NIE selbstständig Daten senden. Dazu übernimmt der Master, der Daten senden oder empfangen möchte, den Bus und gibt die (7-bit-)Adresse des Slaves aus, mit dem er kommunizieren möchte. Nach der Adresse teilt der Master dem entsprechenden Slave mit, ob er Daten senden oder empfangen möchte. Danach werden die eigentlichen Daten (entweder vom Master oder Slave) auf den Bus gelegt. Hat der Master den Lese- oder Schreibvorgang abgeschlossen, so gibt er den Bus wieder frei. Sofern mehrere Master vorhanden sind, stellt ein Protokoll sicher, dass sich diese nicht gegenseitig stören.
Die Übertragungsrate beträgt beim Standard mode bis zu 100 kbit/s, beim Fast mode bis zu 400 kbit/s und beim High-speed mode bis zu 3,4 MBit/s. Falls die Taktrate für einen Slave zu hoch ist, kann er die Clock-Leitung auf Null ziehen und die Übertragung damit verlangsamen. Dies ist auf Bit- wie auf Byte-Ebene möglich, Ersteres allerdings nicht im High-speed mode.
5.3.2 Features des ATMega 128 Prozessors
- 133 Befehle : wovon die meisten 1 Takt-Befehle sind
- 32 x 8 Bit Arbeitsregister
- Befehlsabarbeitung in ca. 60 nsec
- Multipliziereinheit die in 2 Taktzyklen eine Multiplikation durchführt
- 8 Single-ended Kanäle
- 7 Differenz Kanäle
- 2 Differenz- Kanäle mit programmierbarer Verstärkung von 1x,10x oder 200x
- Boundary Scan - Funktion
- Vollständige Programmiermöglichkeit (Flash, EEPROM, Fuses, Lock Bits)
- On-Chip Debugging ist möglich
AVR Prozessoren sind in Harvard-Architektur (getrennter Befehls- und Datenspeicher) aufgebaut.

5.3.4 Allgemeines zu AD-Konvertierung
Ein ADC misst das Verhältnis eines analogen Eingangssignals a zu einer Referenzgröße ar und gibt dieses Verhältnis in Form eines digitalen Worts an.
ADCs finden in der Signalverarbeitung Verwendung. Müssen elektrische Signale (Spannung oder Strom), die physikalische Größen wie Druck, Temperatur, Feuchte, Längenänderung usw. darstellen mittels Computer weiterverarbeitet werden, so wird der ADC benötigt, die analoge Eingangsgröße in eine digitale Bitfolge umzusetzen.
Der mögliche Eingangsspannungsbereich wird dazu in n gleich große Teile zerlegt. Es wird festgestellt, in welchem dieser Intervalle die Eingangsgröße liegt.
Den Intervallen kann ein beliebiger Kode zugeordnet werden. Sinnvollerweise wird
zumeist der duale Kode verwendet.
Die AD Wandlung besteht also aus zwei grundlegenden Schritten:
1. Quantisieren
2. Kodieren
Durch die Quantisierung (Zuordnung zu den Teilintervallen) erfolgt ein Informationsverlust, der nicht rückgängig gemacht werden kann!
Dieser Verlust an Information kommt dadurch zustande, daß die Unterteilung in Intervalle nur endlich klein werden kann, und so bei der Zuordnung zu dem "am besten passenden Intervall" ein Fehler entsteht.
Beispiel: ADU mit 3 Bit Auflösung ergibt 8 Teilintervalle (23 = 8)

Die Eingangsgröße a0 a a1 wird durch eines der 8 möglichen Kodewörter abgebildet.
Kenngrößen des ADC :
Auflösung:
Beschreibt die kleinste Änderung der Eingangsspannung, die zu einem Wechsel des niederwertigsten Bit (LSB = Least Significant Bit) des Ausgangskodes führt.
Die Auflösung kann nun entweder als Stellenzahl in Bit oder in Prozent des Eingangsspannungsbereichs angegeben werden.
Der 3 Bit ADU aus unserem vorigen Beispiel hat also eine Auflösung von 8. Entsprechend hat ein 10 Bit ADC eine Auflösung von 210 (= 1024 Intervalle) bzw. 0,097% des Eingangsspannungsbereichs.
Die kleinste Spannungsauflösung beträgt bei 10 Bit Auflösung und 5V Eingangsspannungsbereich also 5V / 210 = 5V / 1024 SYMBOL 187 \f "Symbol"5mV.
Bezogen auf unser Beispiel des 3 Bit ADU ergibt sich bei einem Eingangsspannungsbereich von 5V die Spannungsauflösung von 5V / 23 = 625 mV.
Das bedeutet, daß sich die Eingangsspannung um 625 mV ändern muß, um eine Änderung des LSB zu erreichen.
Die Auflösung entspricht nicht automatisch der Genauigkeit, denn in die Genauigkeit des ADU gehen Kenngrößen ein, wie:
Quantisierungsfehler:
entsteht durch die treppenförmige Umsetzfunktion zwischen analogem Signal und digitalem Wert.
Quantisierungsgeräusch (auch Quantisierungsrauschen)
entsteht durch die sägezahnförmige Fehlerspannung bei der Umsetzung.
Linearitätsfehler:
Maximale Abweichung der realen Kennlinie von der idealen Kennlinie.
Nullpunktsfehler (und Meßbereichsendwertfehler):
Kennlinie verläuft nicht genau durch den Nullpunkt bzw. Aussteuerbereichsendwert.
Umsetzzeiten:
Die für die Umsetzung der analogen Eingangsgröße in ein digitales Wort benötigte Zeit.
5.3.5 AD-Konvertierung des ATmega128
Der ATmega128 verfügt über 8 Kanäle zum Konvertieren analoger Spannungen in entsprechende digitale Werte. ADC0 bis ADC7 arbeiten mit 10Bit Auflösung. Praktisch bedeuten 10Bit Auflösung, dass der Controller in der Lage ist, einen analogen Wert in 1024 Teilstufen zu zerlegen. Bei einer Spannung von 5V bedeutet dies, dass die am Pin anliegende Spannung auf ca. 5mV genau bestimmt werden kann.
Der interne AVR AD-wandler arbeitet mit der Sukzessive Approximation .Prinzipiell funktioniert der Wandler
nach dem Sample&Hold Prinzip.
Die am separat ausgeführten Analog-Spannungs-Pin AVCC anliegende
Spannung sollte nicht um mehr als 0,3V von Vcc abweichen. Interne Referenzspannungen von 2,56 bzw. Vcc werden
on-chip zur Verfügung gestellt
Zur Rauschunterdrückung wird der Anschluss eines Kondensators an
AREF laut Datenblatt empfohlen.

5.3.6 Sukzessive Approximation (Wägeverfahren)
Das sukzessive Approximation-Verfahren benötigt einen Digital-Analogumsetzer DAU, einen Komparator und das SAR (Sukzessives Approximationsregister).

Das Wandelverfahren arbeitet nach folgender Strategie:
Zuerst wird im SAR das MSB gesetzt, d.h. es wird eine Zahl Z ausgegeben, die der halben Aussteuerung entspricht. Dieses Bit erzeugt im DAU die Hälfte der max. Vergleichsspannung U(Z). Der Komparator prüft, ob der Vergleichsspannung größer oder kleiner als die Messspannung U ist. Ist U(Z)> U wird das MSB wieder auf Null gesetzt, anderenfalls bleibt es gesetzt. Nun wird das nächstniederwertige Bit gesetzt, wobei die zuvor bewerteten Bit's als 0 oder 1 gesetzt bleiben. Wiederum entscheidet der Komparator ob U(Z) > U oder U(Z)< U
ist, was über 1 oder 0 im SAR entscheidet. So werden Schritt für Schritt alle Bit's bis zum LSB im SAR ein- oder ausgeschaltet. Bei einem 8 Bit-Wandler z.B. sind das 8 Schritte.
Nach dem letzten Schritt ist

Der Name Wägeverfahren verdeutlicht das Prinzip: wie auf einer Waage werden die SAR-Bit's "gewogen", d.h. bewertet.
Das sukzessive Approximationsverfahren ist mittelschnell (1...20µs) und wird universell verwendet. Nachteilig sind Störspannungen auf der Messspannung während des Wandelvorganges, sie machen das Ergebnis unbrauchbar. Die Messspannung U muss während der Wandlung mit einem Abtast-Halteverstärker (S&H) konstant gehalten werden.
5.3.7 Programmierung des ATmega128 Wandlers
Bei Verwendung der internen Referenzspannungen beziehungsweise Anschluss von AVCC an AREF müssen folgende Bits gesetzt werden: REFSn Bits in ADMUX.
| REFS1 | REFS0 | Auswahl von Vref |
| 0 | 0 | AREF, interne Vref ausgeschaltet |
| 0 | 1 | AVCC mit externer Kapazität an AREF |
| 1 | 0 | Reserviert |
| 1 | 1 | Interne 2,56V Spannung mit Kapazität an AREF |
Die Einstellung des Prescalers erfolgt über die ADPSn Bits (ADC Prescaler) in ADCSRA (ADC Control and Status Register A). Über ihn definiert man den Takt des AD-Wandlers. Hier gilt: Je genauer die Messung erfolgen soll, desto geringer sollte der Takt sein (also ein hoher Prescaler). Dem Datenblatt kann entnommen werden, dass eine gute Arbeitsweise des Wandlers bis etwa 200kHz möglich ist. Wählt man den Takt des Wandlers höher, muss man Abstriche bei der Genauigkeit machen. Im Endeffekt definiert soundso immer die Applikation, mit welcher Geschwindigkeit die Wandlung ausgeführt werden muss.
| ADPS2 | ADPS1 | ADPS0 | Divisor |
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 2 |
| 0 | 1 | 0 | 4 |
| 0 | 1 | 1 | 8 |
| 1 | 0 | 0 | 16 |
| 1 | 0 | 1 | 32 |
| 1 | 1 | 0 | 64 |
| 1 | 1 | 1 | 128 |
Die Auswahl des Eingabekanals erfolgt mittels der MUX Bits (Analog Channel Selection Bits) in ADMUX (ADC Multiplexer Selection Register). Es gilt zu beachten, dass der ATMega immer nur eine Wandlung zu einem Zeitpunkt durchführen kann. Es ist nicht möglich, an verschiedenen Pins zur selben Zeit die Spannungen zu wandeln.
| MUX3 | Single Ended Input |
| 0000 | ADC0 |
| 0001 | ADC1 |
| 0010 | ADC2 |
| 0011 | ADC3 |
| 0100 | ADC4 |
| 0101 | ADC5 |
| 0110 | ADC6 |
| 0111 | ADC7 |
Die Aktivierung des AD-Wandlers erfolgt durch setzen von ADEN (ADC Enable) in ADCSRA. In ADCH
und ADCL steht dann das Ergebnis der Konvertierung und ADIF (ADC Interrupt Flag) wird gesetzt.
Normalerweise
ist das Ergebnis rechtsbündig dargestellt, eine linksbündige Darstellung erfolgt nur, wenn ADLAR
(ADC Left Adjust Result) in ADMUX gesetzt ist.
Starten einer Konvertierung:
Das Auslösen einer Konvertierung erfolgt durch das Schreiben einer '1' in ADSC (ADC Start Conversion
Bit). Nach Abschluss der Konvertierung wird dieses Bit automatisch zurückgesetzt.
Für eine
Dauerkonvertierung (free running mode) muss ADFR (ADC Free Running) in ADCSRA gesetzt werden. Der Start
erfolgt analog zu einer Einzelkonvertierung durch setzen von ADSC in ADCSRA.
Im Normalfall erfordert die
Konvertierung eine Frequenz von 50kHz bis 200kHz. Diese wird über den bereits oben erklärten Prescaler
eingestellt.
Eine Änderung des Kanals bzw. der Referenzspannung ist während einer laufenden
Konvertierung nicht möglich. Dies ist nur möglich, wenn:
a.) ADFR und ADEN gelöscht sind
b.)
während Konvertierung, einen Takt nach Trigger-Event
c.) während Konvertierung, bevor Interrupt Flag
gelöscht wird
Im Single Mode sollte man vor Beginn der Konvertierung Änderungen vornehmen oder direkt nach Abschluss einer
Konvertierung. Selbiges gilt für den Running Mode.
Ist die Konvertierung abgeschlossen, kann man den erhaltenen Wert aus ADC übernehmen. Der erhaltene Wert ergibt sich nach der folgenden Formel:
![]()
Diese Formel gilt nur für den Single-Mode bei 10 Bit.
Interrupts:
Der ADC stellt einen eigenen Interrupt zur Verfügung. Um ihn zu Verwenden muss das ADIE-Bit (ADC Interrupt Enable) in ADCSRA gesetzt werden. Er wird ausgelöst, sobald eine Konvertierung analog -> digital abgeschlossen ist, d.h. das ADIF-Flag in ADCSRA gesetzt wird. Dieses wird bei Aufruf einer ISR hardwaremäßig wieder gelöscht.
Der USART stellt eine Schnittstelle im MC dar, mit welcher es möglich ist, zwischen ihm und einem über zwei entsprechende Ports angeschlossenen PC (COM-Schnittstelle) Daten auszutauschen. Diese Schnittstelle kann natürlich auch zum Anschluss bzw. dem Aufbau eines Bus-Systems genutzt werden.
Um den USART technisch nutzbar zu machen, d.h. um den Controller per Modem-Kabel an den Rechner anzuschließen, sollte ein MAX232 zwischengeschaltet werden. Dieser dient dazu, die Pegel zwischen der COM-Schnittstelle des Rechners an die des Mikrocontrollers anzupassen (Spannungspegel und Signalinvertierung).
Um den USART zum Senden bzw. Empfangen von Daten zu Verwenden, müssen in bestimmten Registern des Controllers bestimmte
Bits gesetzt werden.
Zuerst ist hier UBRR (USART Baud Rate Register) anzuführen. Dessen Inhalt legt fest, mit welcher
Baudrate die Übertragung stattfinden soll.
Bei ATmegas sind die Register in UBRRH und UBRRL geteilt. Für niedrige Baudraten ist
allerdings alleine UBBRL von Bedeutung. Der Wert, welcher in dieses Register zu schreiben ist
berechnet sich wie folgt:
UBRR = fosz/(16*Baudrate)-1 Dieser Wert ermöglicht eine Übertragung im
asynchronen Betrieb. (asynchronous normal mode)

Examples of UBRR Settings for Commonly Used Oscillator Frequencies
Durch Setzen von U2X in UCSRA (USART Control and Status Register A) ist es
möglich, in den Asynchronous Double Speed Mode zu wechseln. In diesem ist allerdings auf
genaue Einhaltung der Baudrateneinstellungen und der Taktfrequenz des Systems zu achten, es ist
somit fehleranfälliger.
Für normale Experimente und Programme reicht der zuerst genannte
Modus vollkommen aus.
Zuletzt gilt es noch den synchronen Modus zu erwähnen. Dieser
wird z. B. zum Aufbau von Multiprozessorsystemen verwendet. Dazu muss UMSEL (USART Modus
Select) auf '1' gesetzt werden. Hierbei kann der XCK-Pin als Ausgang (Master) oder Eingang (Slave)
für das Taktsignal genutzt werden.
Der USART-Transmitter wird durch das Setzen von TXEN (Transmit Enable) in UCSRB (USART Control and Status Register) aktiviert. Durch Schreiben eines Bytes in UDR (USART Data Register) wird der Controller veranlasst, dieses Byte über den USART auszugeben. Dieses sollte allerdings erst dann stattfinden, wenn das Register bereit ist, d.h. wenn das Bit UDRE (USART Data Register Empty) in UCSRA gelöscht ist. Das Ausschalten des Transmitters erfolgt durch das Löschen von TXEN.
Der USART-Receiver funktioniert analog zum Transmitter. Er wird durch das Setzen von RXEN (Receive Enable) in UCSRB eingeschaltet. Sobald der USART Daten empfangen hat, wird das RXC-Flag gesetzt. Das Ausschalten erfolgt durch das Löschen von RXEN.
Interrupts:
Der USART stellt 3 separate Interrupts zur Verfügung.
a.) TX Complete (eine Transmission
(Sendung) wurde abgeschlossen)
b.) TX Data Register Empty (Transmissionsregister ist nicht bereit)
c.) RX Complete (es wurde ein Datenpaket erhalten)
zu a.) Es muss TXCIE in UCSRB gesetzt werden. Der Interrupt wird ausgelöst, wenn
das TXC-Flag gesetzt wird. Der Interrupt löscht automatisch das TXC-Flag.
zu b.) Es muss das UDRIE-Bit in UCSRB gesetzt werden. Der Interrupt wird sofort ausgelöst, sobald UDRE gesetzt ist. Die Interrupt-Routine muss, wenn der Interrupt ausgelöst wurde, neue Daten in UDR schreiben um UDRE zu löschen oder den Interrupt ausschalten. Sonst wird sofort nach Beendigung der Interrupt-Routine ein neuer Interrupt ausgelöst werden.
zu c.) Es muss das RXCIE-Bit in UCSRB gesetzt werden. Sobald das RXC-Flag gesetzt ist, wird dieser Interrupt ausgelöst. Die ISR (Interrupt-Service-Routine) sollte die empfangenen Daten in UDR lesen um RXC zu löschen, andernfalls würde sofort nach Beendigung der ISR ein erneuter Interrupt ausgelöst werden.
Der USART eignet sich sehr gut zum debuggen eventuell fehlerhaft arbeitender Programme, da der
Controller ständig Statusmeldungen an den Rechner schicken kann. Dieses muss natürlich
dann je nach laufendem Programm zusätzlich in die Software implementiert werden.
Auch kann
man mit seiner Hilfe sehr gut beispielsweise die Daten angeschlossener Sensoren in bestimmten
Intervallen an einen PC senden, mit dem diese dann aufbereitet werden können.
Die Funktechnik ist Bestandteil unseres modernen Lebens. Es gibt kaum Bereiche, wo wir auf die Übertragung von Sprache und Daten über die Luft verzichten können. Egal ob Fernsehen, Radio, Telefon oder sogar Netzwerk, überall hält die Funktechnik Einzug in unser Leben.
Was uns so alltäglich erscheint, ist mit verschiedenen physikalischen Effekten und Hochkomplizierter und empfindlicher Technik verbunden.
Folgend werden die physikalischen Hintergründe der Funktechnik, sowie die von uns gewählte Übertragungsmethode genauer erklärt.
Funkwellen sind elektromagnetische Wellen mit einer Wellenlänge von vielen Kilometern bis zu Millimeterbruchteilen, was Frequenzen von wenigen Hertz bis über ein Terahertz entspricht. Funkwellen werden technisch verwendet, um Nutzinhalte wie Sprach- und Fernsehsendungen sowie digitale Datenströme drahtlos zu versenden. Dazu teilt man sie in diverse Frequenzbänder auf. Die von uns verwendeten 869 MHz fallen in den UHF Bereich.
Jeder Sender enthält einen Schwingungserzeuger, z.B. einen Oszillator, der die Trägerfrequenz, eine Wechselspannung mit einer bestimmten Frequenz erzeugt. Erst ab 16000 Schwingungen in der Sekunde, also 16 kHz, neigen Signale dazu, in den freien Raum abzustrahlen. Der Wellenwiderstand des freien Raumes ist dann geringer als der Wellenwiderstand der Antenne bzw. der Leitung. Dem elektromagnetischen Feld ist es dabei nicht mehr möglich in den Leiter zurück zu kehren, da es den Weg des geringsten Widerstandes wählt. Dadurch strahlt das elektromagnetische Feld von der Antenne ab.
Die Trägerfrequenz, die vom Oszillator erzeugt wird, ist eine Elektromagnetische Welle, die nicht hörbar ist. Die Trägerfrequenz alleine ist noch keine Information. Diese muss in Form einer anderen Frequenz auf die Trägerfrequenz im Huckepackverfahren aufgesetzt werden. Erst dann können unterschiedliche Zustände in codierter Form übertragen werden. Dieses Verfahren nennt sich Modulation. Die bekanntesten Modulationsverfahren sind die Amplitudenmodulation (AM), die Phasenmodulation (PM) und die Frequenzmodulation (FM), die bei unserem Projekt verwendet wird.
Hierbei wird die Amplitude des Trägersignals durch das zu übertragende Signal beeinflusst. Die Amplitudenmodulation ist gegenüber Störungen relativ anfällig. Treten Schwankungen der Empfangsfeldstärke auf, äußert sich das in Lautstärkeänderungen beim Empfänger. Gegenüber der Frequenzmodulation wird der Träger bei leisen Stellen nicht mit voller Amplitude übertragen, dadurch kann ist diese Methode leistungssparend.

Wie in der Abbildung zu sehen ist, erzeugt ein HF-Generator beziehungsweise Oszillator die Trägerfrequenz. Im Falle der Mittelwelle wären das zum Beispiel 1600 KHz. Die HF-Trägerfrequenz wird einem AM-Modulator zugeführt. An diesem Modulator ist auch ein NF-Verstärker samt Mikrofon oder ähnliches angeschlossen. Der Modulator addiert die beiden Frequenzen, verzerrt das Ergebnis an einem Bauelement mit nichtlinearer Kennlinie, wie zum Beispiel eine Diode, Triode oder Transistor und gibt wiederum dieses Ergebnis an einen Bandpass weiter. Das dadurch entstandene AM-Signal geht zu einem HF-Verstärker und dann zur Senderendstufe wo die AM an einer Antenne abgestrahlt wird.
Die Frequenzmodulation (FM) ist ein Modulationsverfahren, bei welchem die Trägerfrequenz durch das zu übertragende Signal beeinflusst wird. Es wird zusätzlich der Phasenwinkel beeinflusst. Die Frequenzmodulation ist eine Winkelmodulation und verwandt mit der Phasenmodulation. Die Frequenzmodulation ermöglicht gegenüber der Amplitudenmodulation einen höheren Dynamikumfang des Informationssignals. Weiterhin ist sie unanfälliger gegenüber Störungen. Die Frequenzmodulation kann mit einem abstimmbaren Schwingkreis erzeugt werden, der zum Beispiel anstelle eines Kondensators eine Kapazitätsdiode enthält. An die Kathode dieser Diode fährt man die Signalspannung, die Diode ändert ihre Kapazität durch diese Spannung und der Schwingkreis damit seine Resonanzfrequenz. Vor der Demodulation muss die FM amplitudenbegrenzt werden, um etwaige Amplitudenänderungen, welche durch Störungen auf dem Übertragungsweg entstehen können, zu beseitigen. Dies ist möglich da in der Amplitude keine Informationen enthalten sind. Die Demodulation der FM muss in zwei Schritten erfolgen. Beim Flanken- bzw. Gegentaktflankendemodulator werden die Flanken eines bzw. zweier Schwingkreise genutzt, um aus der FM ein amplitudenmoduliertes Signal zu machen. Beim Koinzidenzdemodulator wird aus dem frequenzmodulierten Signal ein pulsdauermoduliertes Signal gemacht, welches dann demoduliert werden kann. Eine weitere Möglichkeit ist der PLL-Demodulator. Durch Phasenvergleich des modulierten Signals mit dem unmodulierten Träger erhält man eine Regelspannung anhand der Abweichung.
Mit dieser Regelspannung stimmt man gleichzeitig den Oszillator ab, der die Trägerfrequenz im Empfänger generiert, andererseits entspricht diese Regelspannung der Signalspannung.
Das erste Diagramm zeigt ein frequenzmoduliertes Signal sowie gestrichelt das Informationssignal. Der Träger hat im Beispiel die 15-fache Frequenz des Signals, das Signal ist ein einfacher Kosinus. Man erkennt, dass dort, wo der Momentanwert der Spannung des Signals am niedrigsten ist, die Frequenz des modulierten Signals gleichfalls am niedrigsten ist. Während des Nullpunktdurchlaufs des Informationssignals hat der modulierte Träger die selbe Frequenz wie der unmodulierte Träger. Die Frequenz des Informationssignals ist davon abhängig, wie oft es pro Sekunde zu einer Frequenzänderung des Trägers kommt. Die Amplitude des Trägers ist abhängig davon wie groß die Frequenzänderung (Hub) ist. Je öfter pro Sekunde sich die Frequenz des Trägers ändert, desto größer ist die Frequenz des Informationssignals. Je größer der Hub, desto größer ist die Amplitude des Informationssignals. Je größer die Amplitude und/oder Frequenz des Informationssignals, desto größer ist die benötigte Bandbreite.
Im zweiten Diagramm ist die Änderung der Frequenz des Trägers in Abhängigkeit von obigem Signal dargestellt, gestrichelt der unmodulierte Träger. Das dritte Diagramm zeigt den Phasenwinkel des Trägers in rad. Gestrichelt ist der unmodulierte Träger dargestellt. Der Phasenzeiger des Trägers dreht sich fortlaufend, deswegen steigt der Graph auch bei unmoduliertem Signal. Die durchgezogene Linie stellt den Phasenwinkel des modulierten Signals dar. ∆φT ist jedoch nicht proportional zum Momentanwert der Signalspannung. ∆φT und ∆fT sind um 90° verschoben.

Bei einem frequenzmodulierten Signal entstehen Seitenschwingungen im Abstand der Signalfrequenz von der Trägerfrequenz. Theoretisch entstehen unendlich viele Seitenschwingungen. Praktisch werden Seitenschwingungen kleiner 10% der Amplitude des unmodulierten Trägers vernachlässigt, daraus ergibt sich die Carson-Formel für die Bandbreite. Die Höhe der einzelnen Seitenschwingungen und damit die Leistungsverteilung in Abhängigkeit von ∆φT ermittelt man anhand eines Besselfunktionsdiagramms mit den Modulationsindizes.

Die Faktoren Jn >(∆φ) müssen dabei aus dem Besseldiagramm bei einem gegebenen ∆φ abgelesen werden. Bei bestimmten ∆φ können der Träger oder Seitenschwingungspaare verschwinden.
Anhand dessen ist auch zu sehen, dass bei ∆φ<1 das Leistungsverhältnis zwischen Träger und Seitenschwingungen ungünstig wird.
Da bei Frequenzmodulation aufgrund ∆φT=∆fT/fS bei steigender Signalfrequenz ∆φ kleiner wird, lassen sich hohe Frequenzen mit Frequenzmodulation im Gegensatz zur Phasenmodulation schlechter übertragen, da die Seitenschwingungsanteile immer kleiner werden. Häufig wendet man bei FM deshalb vor der Modulation eine Preemphasis auf das Signal an, um die hohen Frequenzen anzuheben, was mit einer Deemphasis im Empfänger wieder rückgängig gemacht wird.
Die Frequenzumtastung (engl.: Frequency Shift Keying) ist die digitale Form der Frequenzmodulation. Dabei wird die Frequenz einer periodischen sinusförmigen Schwingung zwischen einem Set unterschiedlicher diskreter Werte verändert. Jeder Frequenzwert entspricht dabei einem bestimmten digitalen Level. Ist das digitale Signal binäres Signal, also {0,1}, so werden zwei Frequenzwerte verwendet, bei einem ternären Signal drei Werte, etc. Erfolgt die Umschaltung zwischen den Frequenzen ohne Phasensprung so spricht man von eine "weichen" FSK, geschieht dies mit Phasensprung, so spricht man von einer "harten" FSK. Gewöhnlich wird die phasenkontinuierliche Frequenzmodulation, also die weiche FSK verwendet.
Die wichtigsten Parameter der FSK sind der Frequenzhub und der Modulationsindex. Der Hub gibt an wie viel Abstand zwischen den diskreten Frequenzwerten besteht. Der Modulationsindex ist das Verhältnis zwischen Hub und Bitrate.
Dieses Modulationsverfahren wird in der Telekommunikation vielfältig eingesetzt sowohl bei der Datenübertragung über Leitungen als auch im Funk. Die wohl älteste Anwendung ist die drahtlose Telegraphie.

5.5 Allgemeines zu Easy Radio Funkmodul
Nach dem Durchstöbern diverser Foreneinträge sowie dem Lesen einiger auf Homepages veröffentlichter Informationen und Erfahrungsberichte sind wir bei den "Easy-Radio" Modulen von LPRS (Low Power Radio Solutions Ltd.) gelandet. Entschieden habe wir uns für Transceiver im 868MHz Band, um eine bidirektionale Kommunikation zu ermöglichen. Diese sind allerdings nicht unbedingt die günstigste Lösung.

Die wesentlichen Vorteile dieser Module sind schnell beschrieben. Zuerst sei hier der kompakte
Aufbau erwähnt. Mit 38*14*4mm (B*H*T) sollten sie in jedes Gehäuse passen. Ihr
SIL-Gehäuse (Single Inline) mit einem Rastermaß von 2,54mm gewährleistet eine
einfache Integration. Das Modul ist komplett fertig aufgebaut, einzige fehlende Komponente ist
eine Antenne. Hier empfiehlt sich die Verwendung eines λ/4 Drahtes. Berechnet wird dessen
Länge mittels der Formel: c = f*λ, also Lichtgeschwindigkeit = Wellenlänge * Frequenz.
Stellt man diese Formel nach λ um, um die Wellenlänge einer 868 MHz-Welle auszurechnen, so
ergibt sich: λ = c/f = 299.792.458/868.000.000 = 0,3454 m. Da die Antenne nur eine Länge von
einem Viertel der Wellenlänge haben muss, ergibt sich ihre Länge zu 8,6cm. In der berechneten Länge
ist die Zuleitung zur Antenne (Stiftleiste, Leiterbahn, ...) bereits enthalten. Wer die Antenne nicht direkt
anschließen möchte, der muss Koaxialkabel zum Überbrücken der Distanz zwischen Modul und
Antenne verwenden. Als Antennenmaterial kann man bspw. Kupferlackdraht oder auch normale Litze verwenden.
Das
eigentliche geniale an diesem Modul ist der Fakt, dass man direkt vom USART auf den Sende- bzw. Empfangseingang
gehen kann. Es sind Datenraten bis maximal 38400 Baud möglich. Die Logik kann mit 5V betrieben werden. Soll
vom µC in Richtung PC gefunkt werden, so bleibt einem jedoch die Integration eines MAX232 nicht erspart,
zu den Pegeln der PC-Schnittstelle (+/- 12V) ist sie eigentlich logischerweise nicht kompatibel.
Die Easy Radio Module verwenden zwar zu Kommunikation untereinander die Manchester Codierung, allerdings bleibt dies durch die auf den Modulen integrierte Logik dem Anwender verborgen. Er muss sich darüber nicht den Kopf zerbrechen.
Gesendet bzw. empfangen können immer maximal 128 Byte mit einem mal, danach muss der Puffer geleert werden.
Für Konsistenz der Daten hat der Anwender allerdings selbst zu sorgen, beispielsweise durch Senden von ACK,
Bilden von Checksummen oder auch dem Festlegen eines bestimmten Sendeprotokolls.
Empfangene Daten werden max.
2,5 s im Puffer behalten. Sind sie dann nicht abgeholt worden, so verwirft das Modul sie. Aus diesem Grund sollte
der RDY-Pin standardmäßig auf Masse gelegt und die empfangenen Daten mittels eines Interrupts verarbeitet
werden. So reicht das Modul empfangene Daten sofort an den µC weiter. Alternativ kann natürlich auch
die Software des Anwenders ein regelmäßiges Abholen der Daten initiieren.
Der Transceiver kann nur
ihm übergebene Daten senden, wenn sein Puffer zuvor von eventuell empfangenen Daten geleert wurde. Ansonsten
verwirft er automatisch die zu sendenden Daten.
Der Vollständigkeit halber möchte ich hier noch die Pinbelegung unseres Moduls (Transceiver) veröffentlichen.

| Pin-Nummer | Bezeichnung | Beschreibung |
| 1 | Antenne | Hier muss eine 50 Ω Antenne angeschlossen werden, also beispielsweise ein 8,6 cm langer Draht. |
| 2 | RF GND | Masseleitung der Antenne. Anschluss an GND sowie falls verwendet an die Schirmung des Koaxialkabels. |
| 3 | RSSI | Analoger Ausgang, welcher als Indikator für die Signalstärke dienen kann. Es kann bspw. an einen AD-Pin des MC angeschlossen werden. |
| 4 | BSY | Ausgang: Low = Sender ist bereit, Daten vom MC entgegen zu nehmen; High = Sender ist beschäftigt |
| 5 | Data Out | Ausgabe der empfangenen Daten |
| 6 | Data In | Eingabe der zu sendenden Daten |
| 7 | RDY | Eingang: Low = MC ist bereit, die Daten zu empfangen, High = MC ist beschäftigt |
| 8 | Vcc | Versorgungsspannung von 3,6-5,5 V; Die Spannung sollte frei von Störungen sein (<25 mV Restwelligkeit) |
| 9 | GND | Masseanschluss |
Wie man sieht, ist nicht viel beim Anschluss zu beachten. Wichtig ist allerdings: Der Transceiver und die Antenne sollten soweit wie möglich von sonstigen HF-Störquellen (µC und Co) entfernt platziert werden. Zur Not kann man mit Schirmung arbeiten.
Die folgenden Punkte sollten bei der Verwendung der Module beachtet werden:
Zur Hardware:
Wenn die Module aufgebaut sind und es funktioniert wie immer erst einmal gar nichts, so kann
man auch noch das vom Hersteller bereit gestellte Programm LPRS Easy Radio Development Software zum
Debuggen nutzen (Download auf der Herstellerseite). Nachdem man in diesem Programm den COM-Port
ordnungsgemäß konfiguriert hat, kann man eine erste Kommunikation mit den Modulen starten.
Zwischengeschaltet werden muss allerdings ein Baustein MAX232 samt obligatorischer Elko-Beschaltung.
Hat man
die Module korrekt angeschlossen, so liefert die Einstellung der korrekten Frequenz bspw. den folgenden Output:
ER_CMD#C0 (Sent)
ER_CMD#C0 (Received)
ACK (Sent)
Alle im Programm getroffenen Einstellungen werden in einem nichtflüchtigen Speicher gesichert, so dass man die Module nach einem Unterbrechen der Spannungsversorgung nicht wieder erneut konfigurieren muss.
Anmerkungen:
Zum Testen sind wir folgenderweise vorgegangen:
Ein Transceiver wurde direkt über eine Stiftleiste mit einem MAX232 verbunden. Auf dem PC lief ein Terminalprogramm, welcher einkommende Daten abholen soll. Der zweite Transceiver wurde einfach direkt an die serielle Schnittstelle eines AVR angeschlossen. Über diese habe ich in einer gleichmäßigen Taktung das Zeichen 'x' hinausgeschickt. Hat man alles korrekt angeschlossen (also wie hier beschrieben), so sieht man im Terminalprogramm auf dem PC die ankommenden Zeichen. Allein schon das berühren der Datenpins mit dem Finger führte bei mir zum Senden ganzer Ketten von Nullen (<00><00><00> usw.). Als Programm kam "Terminal" von Bray zum Einsatz.

6.1.1 Kurzbeschreibung des Blockschalbild
In den Gewächshaus ist der CO2 Sensor untergebracht und der eine Teil der Funkmoduls.
Die CO2 Messdaten werden über die RS232 Schnittstelle des Sensors auf die Schnittstelle des Funkmodultransceiver verkabelt und anschließend über Funk zum Heizraum übertragen.
Im Heizraum ist der andere Teil der Hardware untergebracht. Die CO2-Daten werden dann vom anderen Funkmodultransceiver empfangen und weiter über die RS232 Schnittstelle des Mikrokontroller, für die Einleitung der weitern bzw. entsprechenden Maßnahmen, zur Steuerplatine weitergeleitet. Bei einem CO2-Wert über 4000 ppm erfolgt eine Umschaltung durch die Steuerplatine d.h. die Abgaszufuhr zum Gewächshaus wird abgeschaltet. Die Umschaltung wird wieder aktiv, wenn der CO2-Wert sich unter 4000 ppm abgesenkt hat.
Ist der CO2 Wert unter 500 ppm so wird durch dazuschalten eines Zusatzbrenners die CO Zufuhr gefördert bis der Wert sich wieder in den Normalzustand befindet.
Die CO Sensor Hardware befindet sich ebenfalls in den Heizraum, die CO Messwerte werden über den AD-Wandler des Mikrokontroller digitalisiert und dann zur weiter Einleitung der Maßnahmen der Steuerplatine zugeführt.
Bei einen CO Wert größer 40 ppm wird ein optischer Alarm ausgelöst und bei einen CO Wert größer 60 ppm wird noch ein akustischer Alarm eingeleitet und es erfolgt dann eine Sperre der Abgaszufuhr. Die Anlage muss in diesem Fall manuell durch betätigen eines Tasters rückgesetzt werden.
Der CO Sensor braucht eine konstante Temperatur um den CO-Wert zu messen, deshalb zuerst zu der Heizschaltung des Sensors.
Heizschaltung:

Schaltungsbeschreibung:
Die Heizschaltung braucht 5 V oder höhere Versorgungsspannung um die benötigte Temperatur für den CO-Sensor zu regeln.
Die Sensorheizung stellt eine Form von einer Wheatstone Messbrücke dar. Die Leistung wird durch eine Regelstrecke kontrolliert um eine konstante Temperatur an den Widerstand zu erhalten. Der Wert von dem Sensorwiderstand wird bestimmt durch das Einstellen des Potentiometer R2. Das ganze wird durch einen OPV und einen MosFET geregelt. Schon bei einer Änderung um die +-1 °C wird die Regelung aktiv.


Schaltungsbeschreibung:
Die 6 V Versorgungsspannung sind für die Sensorheizung. Der CO Sensor selber braucht aber so um die 50 mV um den Sensorwiderstand zu messen. Die 6 V werden durch einen Spannungsteiler auf 50 mV heruntergeregelt. Der Sensorwiderstand stellt dann mit R8 wiederum einen Spannungsteiler dar, diese Spannungsänderung wird den nichtinvertierenden Eingang des OPV zugeführt. Diese Spannung wird dann durch einen Nichtinvertierenden Verstärkerschaltung verstärkt, und den AD-Wandlereingang des µC zugeführt. Der C1 stellt lediglich einen Koppelkondensator dar.
Die ganze Schaltung ist mit den Versorgungspannungen und der Steuerschaltung auf einen Layout untergebracht.
6.1.5 Steuerplatine

Schaltungsbeschreibung:
JP3 stellt die Eingänge bzw. die Ausgänge dar. Die Spannungsversorgung wird im nächsten Punkt noch genauer erläutert, sie ist aber auf derselben Platine gelayoutet.
Pin 2 des JP3 stellt den Anschluss für den CO-Sensoreingang dar, diese wird wie oben in der CO-Messschaltung verstärkt und auf den Pin 6 des JP3 zugeführt. Pin 6 ist dann mit dem AD-Wandler des µC verbunden. Am Pin 3, 5, 9 oder 12 des JP3 werden die Ausgänge (Ports) des µC verbunden. Sobald am jeweiligen Ausgang des µC 5 V anliegen, wird durch den Transistor das jeweilige Relais geschaltet. Die Relais-Ausgange sind zur weiteren Verwendung den Stecker J4 zugeführt. An JP2 wird die Pumpe angesteckt diese wird durch Pin 11 des JP3 aktiv. J1, J2, J3 und J5 stellen Leds dar, um das aktivieren eines Relais anzuzeigen.

Schaltungsbeschreibung:
Der Eingang des 12 V Spannungsregler wird mit 15 V-24 V Gleichspannung versorgt. Der Ausgang wird dem Header JP3 auf Pin 10 zugeführt und mit dem Eingang 6 V Spannungsreglers verbunden. Mit diesem 12 V werden die Relais und der OPV versorgt. Der Ausgang des 6 V Spannungsreglers wir dem Pin 6 des Header JP3 zugeführt. Die 6 V sind für die Heizschaltung des CO-Sensors.

6.1 Stückliste
| Schaltplanbezeichnung | Bauteil | Wert | Anmerkung |
| JH1 bis JH6 | 1 pol. Stiftleiste | Testpoint | RS-Components |
| J1 bis J4 | Einreihige Buchsengeäuse 2 pol. | Led | RS-Components |
| J5 | Printklemmblöcke 3pol.(4x) | Ausgänge | RS-Components |
| JP3 | Stiftleiste 6x2 pol. | RS-Components | |
| JP2 | Mini Combicon Vertikal 2pol. | Pumpe | RS-Components |
| U1 bis U4 | DS Printrelais | DS2E-M-DC12V | RS-Components |
| U5 | Spannungsregler 12 V | LM7812 | RS-Components |
| U6 | Spannungsregler 6 V | LM7806 | RS-Components |
| U8A | OPV | TLO64C | RS-Components |
| C1 bis C4 | Kondensator MKT | 100n | RS-Components |
| C8 bis C11 | Kondensator MKT | 100n | RS-Components |
| C5, C6 und C7 | Elektrolytkondensator | 10µF/16V | RS-Components |
| R1 | Widerstand | 1k | RS-Components |
| R2 | Widerstand | 1k | RS-Components |
| R3 | Widerstand | 1k | RS-Components |
| R4 | Widerstand | 1k | RS-Components |
| R5 | Widerstand | 33k | RS-Components |
| R6 | Widerstand | 1k | RS-Components |
| R7 | Widerstand | 1k | RS-Components |
| R8 | Widerstand | 100k | RS-Components |
| R9 | Widerstand | 10k | RS-Components |
| R10 | Widerstand | 100 Ohm | RS-Components |
| R11 | Widerstand | 270 Ohm | RS-Components |
| R12 | Widerstand | 270 Ohm | RS-Components |
| R13 | Widerstand | 270 Ohm | RS-Components |
| R14 | Widerstand | 270 Ohm | RS-Components |
| R15 | Widerstand | 270 Ohm | RS-Components |
Die Masseflächen der Platine wurden großflächig ausgeführt, um die Funkübertragung einen guten Anschluss zu bieten.
6.1.8 Layout der Steuerplatine

Das Layout ist auf den XXX Material beidseitig geätzt.
6.1.8.1 Bestückplan
>
6.1.8.2 Bohrplan

6.1.9 Print der Steuerplatine (Bild)

6.1.10 Detailblockschaltbild der Funkübertragung

Das ganze wird zweimal Produziert.
1-mal für den CO2 Sensor und 1-mal für den µC.

Schaltungsbeschreibung:
J2 ist für das das Easy-Radio Funkmodul. J1 ist für anstecken einer Antenne. Über J4 wird die ganze Schaltung Versorgt mit 12V DC. Als Versorgung wurde ein Solarmodul (Technische Daten siehe 7.6) gewählt, da die Anlage nur bei Tageslicht in Betrieb ist. J3 ist zur Verbindung mit der RS232 Schnittstelle des PC gedacht. J5 wird mit der Seriellen Schnittstelle des CO2 - Sensors verbunden. U1 (MAX232) wandelt die Daten von der seriellen Schnittstelle in ein TTL-Signal um und sendet das Signal über J1 weg. Die Kondensatoren C7 bis C10 wurden laut Datenblatt des MAX 232 gewählt. Da der IC MAX232 für die Versorgung 5V braucht, wird diese durch den Spannungsregler U2 erzeugt. Die Kondensatoren C1 bis C6 wurden laut Datenblatt des 5 V Spannungsreglers gewählt. Diode D1 ist als Schutzdiode gedacht.
6.1.11.1 Stückliste
| Schaltplanbezeichnung | >Bauteil | Wert | Anmerkung |
| J1 | BNC-Buchse | Conrad | |
| J2 | Einreihige Buchsengehäuse 14pol. | RS-Components | |
| J3 | 5x2 pol. Stiftleiste | RS-Components | |
| J4 | 2 pol. Stiftleiste | RS-Components | |
| J5 | 5x2 pol. Stiftleiste | RS-Components | |
| C1 | Kondensator (MKT) | 100n | RS-Components |
| C2 | Kondensator (MKT) | 100n | RS-Components |
| C3 | Kondensator (MKT) | 100n | RS-Components |
| C4 | Kondensator (MKT) | 100n | RS-Components |
| C5 | Elektrolytkondensator | 10µF/16V | RS-Components |
| C6 | Elektrolytkondensator | 10µF/16V | RS-Components |
| C7 | Elektrolytkondensator | 1µF/16V | RS-Components |
| C8 | Elektrolytkondensator | 1µF/16V | RS-Components |
| C9 | Elektrolytkondensator | 1µF/16V | RS-Components |
| C10 | Elektrolytkondensator | 10µF/16V | RS-Components |
| U1 | Pegelwandler | MAX232 | RS-Components |
| U2 | Spannungsregler | LM7805 | RS-Components |
| D1 | Diode | 1N4148 | RS-Components |
| für J2 | Funkmodul | 896 MHz/ FM | Easy-Radio |
6.1.12 Layout der Funkmodulschaltung

6.1.12.1 Bestückplan

6.1.12.2 Bohrplan

6.1.13 Print der Funkmodulplatine

6.2 Software

/*****************************************************
This program was produced by the CodeWizardAVR V1.24.2c Standard Automatic Program Generator
© Copyright 1998-2004 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.ro
e-mail:office@hpinfotech.ro
Project :
Version :
Date : 03.05.2005
Author : tgm
Company :
Comments:
Chip type : ATmega128
Program type : Application
Clock frequency 16,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 1024
*****************************************************/
#include <mega128.h>
#include <GlobalVar.h>
#include <timer.c>
static char hlpTXT[20] ;
long int value;
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<OVR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
// Get a character from the USART1 Receiver
#pragma used+
char getchar1(void)
char status,data;
while (1)
while (((status=UCSR1A) & RX_COMPLETE)==0);
data=UDR1;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
return data;
};
#pragma used-
// Write a character to the USART1 Transmitter
#pragma used+
void putchar1(char c)
while ((UCSR1A & DATA_REGISTER_EMPTY)==0);
UDR1=c;
#pragma used-
// Standard Input/Output functions
#include <stdio.h>
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
timer();
}
#define ADC_VREF_TYPE 0x40
// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
ADMUX=adc_input|ADC_VREF_TYPE;
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P
PORTA=0xFF;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=Out Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=0 State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x10;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Port E initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTE=0x00;
DDRE=0x00
// Port F initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTF=0x00;
DDRF=0x00;
// Port G initialization
// Func4=In Func3=In Func2=In Func1=In Func0=In
// State4=T State3=T State2=T State1=T State0=T
PORTG=0x00;
DDRG=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Clear on compare match
ASSR=0x00;
TCCR0=0x0e;
TCNT0=0x00;
OCR0=0x3e;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// OC1C output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// Timer/Counter 3 initialization
// Clock source: System Clock
// Clock value: Timer 3 Stopped
// Mode: Normal top=FFFFh
// Noise Canceler: Off
// Input Capture on Falling Edge
// OC3A output: Discon.
// OC3B output: Discon.
// OC3C output: Discon.
TCCR3A=0x00;
TCCR3B=0x00;
TCNT3H=0x00;
TCNT3L=0x00;
ICR3H=0x00;
ICR3L=0x00;
OCR3AH=0x00;
OCR3AL=0x00;
OCR3BH=0x00;
OCR3BL=0x00;
OCR3CH=0x00;
OCR3CL=0x00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Low level
// INT1: On
// INT1 Mode: Low level
// INT2: Off
// INT3: Off
// INT4: Off
// INT5: Off
// INT6: Off
// INT7: Off
EICRA=0x00;
EICRB=0x00;
EIMSK=0x00; //03
EIFR=0x00; //03
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x03;
ETIMSK=0x00;
// USART0 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART0 Receiver: On
// USART0 Transmitter: On
// USART0 Mode: Asynchronous
// USART0 Baud rate: 4800
UCSR0A=0x00;
UCSR0B=0x18;
UCSR0C=0x06;
UBRR0H=0x00;
UBRR0L=0xCF;
// USART1 initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART1 Receiver: On
// USART1 Transmitter: On
// USART1 Mode: Asynchronous
// USART1 Baud rate: 9600
UCSR1A=0x00;
UCSR1B=0x18;
UCSR1C=0x06;
UBRR1H=0x00;
UBRR1L=0x67;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 125,000 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
ADMUX=ADC_VREF_TYPE;
ADCSRA=0x87;
SFIOR&=0xEF;
// Global enable interrupts
#asm("sei")
RELAY1 = OFF ;
RELAY2 = OFF ;
RELAY3 = OFF ;
RELAY4 = OFF ;
PUMPE = OFF ;
timer1_cnt = 1;
timer1_cnt = 1;
timer1_cnt = 1;
timer1_cnt = 1;
mess=0;
reset_flag = FALSE;
while (1)
{
PUMPE = ON ;
RELAY1 = ON ;
// Place your code here
if (mess)
{
value=read_adc(1);
//printf(1,"%d\r\n",value);
putchar1('g');
//putchar1(0x00);
// putchar1(0x20);
// putchar1(0x00);
// putchar1(0x00);
// putchar1(0x00);
//scanf(1,"%d%d", &CO2_Value1, &CO2_Value2);
printf("CO Wert ausgeben\r\n");
printf("%d\r\n",CO2_Value1);
printf("%d\r\n",CO2_Value2);
printf("******\r\n");
if (value >= 500)
{
RELAY2 = ON;
}
else
RELAY2 = OFF;
if (value >= 1000)
{
RELAY1 = OFF;
RELAY3 = ON;
PUMPE = OFF ;
reset_flag = TRUE;
while(1)
{ //ENDLOSSCHLEIFE !!! RESET NOTWENDIG !!!!!
};
}
mess=0;
}
};
}

Weitere Daten zum CO-Sensor sind auf der Webseite: www.citytech.com zu finden.

Weitere Technische Daten sind auf der Webseite madur.at zu finden.


Weiter Technische Daten zum Funkmodul sind auf der Webseite http://www.easy-radio.co.uk zu finden.
Das Datenblatt zu Mikrocontroller ist auf der Webseite www.atmel.com/literature herunterzuladen.
| Typ | F 5/12 |
| Max. Leistung | 5,16 Wp |
| Nennspannung | 16,8 V |
| Nennstrom | 0,307 A |
| Leeraufspannung | 22,8 V |
| Kurzschluss-Strom | 0,398 A |
| Gewicht | 1,2 kg |
| Abm. (L x B x T) mm | 293 x 330 x 21 |
Weiter Technische Daten zum Solarmodul sind auf der Webseite www.conrad.at oder auf der Webseite http://www.rweschottsolar.com zu finden.
ZU CO2
Gartenbauliche Nutzung von CO2 angereicherter Kompostierungsabluft
CO2 wird im Gartenbau zur Steigerung der pflanzenbaulichen Erträge, zur Ernteverfrühung,
zur Verbesserung des Gesundheitszustandes der Pflanzen (Überdruckdüngung) und zum Ausgleich eines CO2-Mangels (Kompensationsdüngung) eingesetzt (GLEU, 1987;. VOGEL, 1987; KTBL, 1984) . Bereits der CO2-Gehalt derAußenluft liegt mit durchschnittlich ca 340 vpm deutlich unter dem für Pflanzen optimalen Bereich von 600 bis 1200 vpm (s. Tab. 2). Im Gewächshaus kann die CO2-Konzentration aufgrund der Betonierung von Gewächshausflächen, der Umstellung auf synthetische bzw. biologisch inaktive Substrate und aufgrund des verringerten Luftwechsels infolge von Wärmedämmung erheblich unter die Werte für die Umgebungsluft fallen. Nachgewiesene quantitative Effekte einer CO2-Düngung liegen bei 20 - 30 % Mehrertrag.

Üblicherweise wird für die CO2-Anreicherung technisches CO2 (GRELLE und SEIDEL, 1984) oder CO2 aus Gasgeneratoren (z. B. HEGE 1984; DOMKE, 1984; RUHRGAS 1995) eingesetzt. Diese Option ist jedoch etwas teuer für gebräuchliche Pflanzenkulturen, und wird nur begrenzt eingesetzt in unserer Gegend.
Es kann durch das CO2 der Kompostierungsabgase vollständig ersetzt werden. Der jährliche pflanzenbauliche Bedarf liegt - abhängig von pflanzenbaulichen, klimatischen und konstruktiven Faktoren - bei etwa 100 Mg/ha. Bei einer mittleren CO2-Ausbeute der Kompostierung von 100-200 kg/Mg Input entspricht das dem CO2-Ausstoß bei der Verwertung von 500 bis 1000 Mg Bioabfall. Setzt man eine Kompostierungsanlage dezentraler Dimension von z.B. 5.000 Mg/a an, so lassen sich mit der erzeugten CO2-Menge 5-10 Hektar Gewächshausfläche versorgen. Dabei können etwa 5-10 % des zu verwertenden Abfalls aus dem Gartenbaubetrieb selbst gewonnen werden. Für die volle Versorgung der Gewächshausflächen ist also noch weiterer Abfall zu verwerten. Dafür bietet sich die Nutzung von Bioabfall aus der Getrenntsammlung.