Olisplanet

Inhaltsverzeichnis

Thema

Seite

1.     Einführung

4

2.     Der Steuercomputer:

4

2.1.   Die C-Control/Basic-Unit

4

2.2.   Technische Daten

5

2.3.   Die Programmiersprache

6

2.4.   Programmabarbeitung

6

2.5.    Anschließen von Sensoren

7

3.     Programmablaufplan nach DIN 6601

8

4.     Das Programm in Basic

14

5.     Die Komponenten:

22

5.1.   Die Stromversorgung

23

5.2.   Ansteuerung der Beleuchtung

24

5.3.   Die Messverstärker

27

5.3.1. Die Temperaturmessung

27

5.3.2. Der pH-Wert-Messverstärker

28

5.4.   Das LCD-Display

31

5.5.   Die Tastatur

32

5.6.   Der DCF77-Empfänger zum Empfang des Zeitsignals

33

6.     Die Platinen

34

7.     Platinen anfertigen

34

8.     Stückliste

36

9.     Inbetriebnahme

37

10.  Stromlauspläne

39

11.  Quellenangaben

40


1. Einführung

Aquariensteuerung mit Dämmerungsautomatik auf Basis des C-Control-Steuercomputer:

Die Idee zu diesem Projekt kam mir durch meine Welse, die nachts durchs Aquarium schwimmen und, sobald die Aquarienbeleuchtung plötzlich eingeschaltet wird, panisch ein Versteck aufsuchen. Dabei haben sie durch schnelles Schlagen mit den Flossen die ein oder andere Wasserpflanze entwurzelt und herausgerissen. Der C-Control-Steuercomputer von Conrad-Elektronik basiert auf dem Mikrocontroller 68HC05B6. Er wird mit der Programmiersprache Basic programmiert und verfügt über eine große Anzahl an Ein- und Ausgängen  Durch die Ansteuerung eines elektronischen Vorschaltgeräts (EVG) können Leuchtstoffröhren stufenlos hell und dunkel gedimmt werden. So kann ein künstlicher Sonnenauf- und -untergang erzeugt werden. Dies geschieht zu von einem Benutzer über Tasten eingegebenen Zeiten.

Auch die Länge der Dämmerung ist veränderbar. Die Uhrzeit wird über einen DCF77- Funkuhrempfänger aktualisiert. Des weiteren wird die Wassertemperatur geregelt, um sie auf tropischen Temperaturen zu halten. Dazu wird die Temperatur gemessen. Übersteigt die Temperatur einen vorher eingestellten Wert, wird ein Relais eingeschaltet. Wird die Temperatur wieder unterschritten, so schaltet das Relais wieder aus. Die Temperatur und der Ph-Wert werden zusammen auf einem LCD-Display angezeigt.

Da Fische empfindlich auf Veränderungen des Ph-Wertes reagieren, wird dieser zur Kontrolle mit einer Ph-Sonde gemessen und auf dem LCD-Display angezeigt. Sollte der Ph-Wert unter 6,5 sinken oder eine Wassertemperatur von 30°C überschritten werden, schaltet ein Relais eine Luftversorgung ein, um dem Aquarienwasser Sauerstoff zuzuführen. Dies ist sinnvoll, da in warmem Wasser Sauerstoff schneller  entweicht und auch durch die Zufuhr von Sauerstoff kann der Ph-Wert wieder erhöht werden. So kann vieles rund ums Aquarium automatisiert, geregelt und kontrolliert werden. Dadurch können die Wasserwerte für die Bewohner des Aquariums verbessert werden, und auf Veränderungen kann schneller reagiert werden.

 

2.1. Der Steuercomputer C-Control

Das Herzstück des C-Control-Steuercomputers ist ein Mikrocontroller.

In fast allen elektrischen und elektronischen Geräten sind Mikrocontroller zu finden. Ob in der Waschmaschine, Stereoanlage, im Auto oder in Maschinensteuerungen - überall übernehmen diese Bausteine Aufgaben, die noch vor einigen Jahren mit komplexen Schaltungen gelöst wurden. Heute genügt ein einziger Mikrocontroller, der durch unterschiedliche Programmierung fast alle Aufgaben erledigen kann. Mit C-Control hat Conrad ein Mikrocontrollersystem geschaffen, das sehr flexibel, ausbaufähig und vor allem preiswert ist.

Ein Mikrocontroller ist ein Prozessor. Der Unterschied zu PC-Prozessoren besteht darin, dass bei einem Mikrocontroller Speicher, Digital- und Analog-, Ein- und Ausgänge etc. meist auf einem einzigen Chip integriert sind, so dass eine Mikrocontroller-Anwendung oft mit ein paar wenigen Bauteilen auskommt.

Mikrocontroller werden als erstes an der Bit-Zahl des internen Datenbusses unterschieden: 4 Bit, 8 Bit, 16 Bit und 32 Bit. Diese Bit-Zahl kann man als die Länge der Daten interpretieren, die der Controller in einem Befehl verarbeiten kann. Die größte in 8 Bit (=1 Byte) darstellbare Zahl ist die 255. Somit kann ein 8 Bit- Mikrocontroller, z.B. in einem Additionsbefehl, immer nur Zahlen kleiner als 255 verarbeiten. Zur Bearbeitung von größeren Zahlen werden dann mehrere Befehle hintereinander benötigt, was natürlich länger dauert.

Ein Mikrocontroller braucht zum Betrieb, wie jeder andere Prozessor auch, eine extern eingespeiste Taktfrequenz. Die maximale Frequenz mit der ein Controller betrieben werden kann, reicht von 1 MHz bei alten Controllern, bis hin zu über 100 MHz bei teuren 32-Bittern. Diese Taktfrequenz sagt jedoch noch nichts über die tatsächliche Geschwindigkeit eines Prozessors aus. So wird z.B. bei 8051-Controllern die Frequenz intern durch 12 geteilt. Ein mit 24 MHz getakteter 8051 arbeitet also intern mit 2 MHz. Benötigt dieser dann für einen Befehl durchschnittlich 2 Taktzyklen, so bleiben "nur" noch 1 Mio. Befehle pro Sekunde übrig.

Der Ein-Chip-Mikrocontroller des C-Control Steuercomputers ist ein MC68HC05B6 von Motorola und arbeitet mit einer Taktfrequenz von 4 MHz. Er besitzt ein 6 k Byte großes maskenprogrammiertes Betriebssystem. Zur Speicherung von einem Anwenderprogramm bzw. Daten dient ein serieller EEPROM, der Mikrochip 24C65, der über eine I2C-Schnittstelle angesteuert wird. Er verfügt über eine Kapazität von 8 k  x  8 Bit und behält seinen Inhalt auch bei abgeschalteter Stromversorgung.

Weiterhin verfügt der Mikrocontroller über einen 240 Byte großen RAM. Der größte Teil dieses Speichers ist für Betriebssystemfunktionen vorgesehen. 24 Bytes stehen dem Anwender zur Verwendung.

An den 2 zwanzigpoligen Buchsenleisten sind alle verwendbaren Ports sowie einige Systemsignale des Steuercomputers herausgeführt. Der C-Control- Steuercomputer besitzt 16 digitale Ein-/Ausgänge. Weiterhin besitzt der Steuercomputer 8 analoge Eingänge, die intern mit 8 Bit digitalisiert werden. An diese Eingänge können Sensoren zur Messwerterfassung angeschlossen werden. Außerdem stehen 2 analoge Ausgänge zur Verfügung, die ein pulsweitenmoduliertes Rechtecksignal erzeugen. Über eine serielle RS232 Schnittstelle kann ein auf einem PC erstelltes Programm in das EEPROM des Steuercomputers übertragen werden. Danach kann der C-Control- Steuercomputer als eigenständiges System betrachtet werden.

 

2.2. Technische Daten:

Betriebsspannung Ub

5V stabilisierte Gleichspannung, ±0,5V

Stromaufnahme

ca. 30 mA, < 10 mA bei abgeschalteten LED's und RS232-Interface

Abmessungen

ca. 80 mm x 50 mm

Mikrocontroller

Motorola MC68HC05B6 bei 4 MHz, 6 Kilobyte maskenprogrammiertes Betriebssystem

Speicher für Anwenderprogramm und -daten

Microchip 24C65, serielles EEPROM 8k x 8 Bit

A/D - Ports

8 x 8 Bit A/D, 0...5 Volt gegen gemeinsame Masse
Referenzspannung Uref einstellbar (normal Ub = Uref)
Eingangsstrom ca. 10 µA bei Wandlung
absolute Fehler ±1 Digit (= 1/256 vom Messbereichsendwert) zuzüglich Fehler der Referenzspannung

Digitalpots

16 Stück, frei als Ein- oder Ausgang programmierbar, 10k Pull-Up
Pegel (0,2 mA Last an Ausgängen):
(Ub - 0,3V) < Uout,high < (Ub - 0,1V)
0,1V < Uout,low < 0,3V
(0,7+Ub) < Uin,high < Ub
0V < Uin,low < (0,2+Ub)
maximal zulässiger Laststrom ± 10mA

D/A - Ports

2 pulsweitenmodulierte Ausgänge, PWM-Rate 1953 Hz

DCF77 - Eingang

Digitalport mit 10k Pull-Up zum Anschluss einer DCF77-Aktivantenne (Funkuhr) mit Open-Collector-Ausgang

serielle Schnittstelle

RS232 mit Pegelwandler MAX232 oder Austauschtyp
Übertragung mit 9600 Baud, 8Bit, 1 Startbit, 1 Stoppbit, kein Paritätsbit, kein Handshake
Verbindung mit dem PC über Nullmodemkabel

Preis (C-Control Unit):

ca. 50 €

 

2.3. Die Programmiersprache

Die Programmiersprache des C-Control- Steuercomputers ist ein Basic-Dialekt. Die Syntax entspricht in etwa der des Standard-Basic. Im Gegensatz zu anderen vergleichbaren Systemen wird jedoch nicht der Quelltext des Programms an das System gesendet, sondern ein verkürzter Zwischencode, der Basic-Schlüsselwörter durch ein Byte große Basic-Tokens (einen Einzeichenkode der hexadezimal angegeben wird) ersetzt. Im System selbst ist kein Zeileneditor erforderlich. Vielmehr erfolgt die Programmerstellung, die Syntaxprüfung und die Übertragung in den Zwischencode in der PC-Software.

2.4. Die Programmabarbeitung

Das Basic-Programm liegt in Form von Tokens im EEProm. Nach dem Start des Betriebsprogramms liest der Mikrocontroller die Tokens und führt entsprechende Aktionen aus, indem die zugeordneten Prozeduren aus dem ROM aufgerufen werden. Dieses Verfahren hat  den Nachteil, dass Programme langsamer laufen als mit einem reinem Maschinencode. Dafür aber lassen sich mit einem Interpreter relativ komplexe Programme mit wenig Speicherbedarf schreiben, so dass man noch genügend Platz für Messdaten und Tabellen behält.

Das Basic des C-Control kennt keine Fließkomma-Arithmetik wie andere Basic-Dialekte. Die verwendeten Zahlentypen sind das Bit, das Byte und die Integerzahl. Für die meisten typischen Mikrocontroller-Aufgaben stellt dies jedoch kaum eine Einschränkung dar, weil es meist darum geht Ausgangsleitungen zu steuern oder Ergebnisse an einen 8 Bit DA-Wandler zu senden.

Die zweite wesentliche Einschränkung des Systems betrifft die Ausführungsgeschwindigkeit im Millisekundenbereich gegenüber Befehlszeiten im Mikrosekundenbereich für reine Maschinenprogramme. Wenn es jedoch auf höhere Geschwindigkeiten ankommt, bietet C-Control-Basic jedoch die Möglichkeit, kleine Maschinen-Unterprogramme im EEProm des Prozessors zu starten.

 

2.5. Anschließen von zusätzlichen Komponenten

An den 2 zwanzigpoligen Buchsenleisten werden alle verwendbaren Ports sowie einige Systemsignale des Steuercomputers herausgeführt. Durch die Bauform der Buchsenleisten kann der Steuercomputer auf andere elektronische Baugruppen aufgesteckt werden, wobei Taster, Leuchtdioden und Stiftleisten zugänglich bleiben.

Man kann den Steuercomputer als ein großes IC betrachten, das nach eingesetztem Programm unterschiedliche Aufgaben in einer Steuerung ausführen kann.

Der Prozessor des C-Control-Steuercomputers verwendet bidirektionale Ports, deren Datenrichtung in einem besonderen Register umgeschaltet werden. Schaltet man ihn als Ausgang um, dann erhält man einen Gegentaktausgang, der in beiden Zuständen „AN“ und „AUS“ niederohmig ist. Der Ausgang kann also Lasten sowohl gegen Masse als auch gegen die Betriebsspannung treiben. Es ist aber wichtig,  dass Leuchtdioden oder Transistoren, die ebenfalls niederohmig sind, nicht ohne Vorwiderstand mit der C-Control verbunden werden.

Wird der C-Control im Autostartmodus betrieben, so müssen Vorsichtsmaßnahmen zum Schutz des Programms im EEProm getroffen werden. Wenn das Programm nämlich bei Ausschalten des Hauptschalters nicht den „END“ -Befehl oder ein Reset bekommt, kann es beschädigt werden. Anschließend wäre dann eine Neuprogrammierung erforderlich. Um dies zu vermeiden kommt folgende Schaltung zum Einsatz.

Unterschreitet die Betriebsspannung einen Wert von 4,7 V, wird der Resteingang auf Masse geschaltet und so ein Reset ausgelöst. Alternativ kann auch ein IC MAX809L des Herstellers „Maxim“ verwendet werden.

 3. Programmablaufplan nach DIN 6601

     

    

                    

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. Das Programm  in Basic

'****************************************************************************************************'***** Variablen ***********************************************************************************'*********************'LichtsteuerungDEFINE EVG DA[1] '1 Digital- Analogport zur Ansteuerung des EVGDEFINE EVG_var Byte 'Variable zum hoch- und herunterzählen des Wertes am AnalogportDEFINE AH BYTE 'Variable zur Aufnahme der SonnenaufgangsstundeDEFINE UH BYTE 'Variable zur Aufnahme der SonnenuntergangsstundeDEFINE AM BYTE ¢Variable zur Aufnahme der SonnenaufgangsminutenDEFINE UM BYTE 'Variable zur Aufnahme der SonnenuntergangsminutenDEFINE LSR_port PORT[1]  ‘Ansteuerung des Relais zum Schalten der 230 V Spannung für EVGDEFINE Dauer BYTE ‘Variable zur Aufnahme der Länge des Sonneraufgangs / -untergangs' --- Temperatur --------------------DEFINE Temp_port AD[2]  2. Analog- Digitalport zum Anschluss des Temperaturfühlersdefine Temp word ‘Variable zur Aufnahme der Temperaturdefine Tempsoll word ‘Variable zur Aufnahme der einzustellenden TemperaturDEFINE Heitz_port PORT[2]  Ansteuerung des Relais zum Schalten der 230V Spannung für die Heizung' --- Ph-Wert und Luftzufuhr -------define phsonde AD[3]  3. Analog- Digitalport zum Anschluss des pH-Sensorsdefine Phwert Byte ‘Variable zur aufnehme des PH-Wertesdefine Ph1 Byte ‘zur Mittelwertbildung des pH-Wertesdefine Ph2 Byte ‘zur Mittelwertbildung des pH-Wertesdefine Ph3 Byte ‘zur Mittelwertbildung des pH-Wertesdefine Ph4 Byte ‘zur Mittelwertbildung des pH-Wertesdefine Ph5 Byte ‘zur Mittelwertbildung des pH-Wertesdefine i byte ‘zur Mittelwertbildung des pH-Wertesdefine luft_var byte  Variable zum ein und ausschalten der Luftversorgungdefine Luftversorgung Port[3]  Ansteuerung des Relais zum Schalten der 230V Spannung für die Luftpumpe' --- Tastatur --------------------define Tasten_port AD[1] ‘1. Analog- Digitalport zum Anschluss der Tastaturdefine TastenEingabe byte   Variable zur Aufnahme des Wertes vom AD-Port „Tasten_port“define TastenVergleich byte ‘Variable zum Ermitteln eines Wertes aus der Tabelle „Spannungen“define Taste byte ‘Variable zur Aufnahme der gedrückten Tastennummerdefine N byte ‘‘Variable zum Ermitteln eines Wertes aus der Tabelle „Spannungen“' --- LCD-Variablen--------------------define lcd_buf bytedefine lcd_param byte'LCD-Portsdefine lcd_port byteport[2]define lcd_rw port[13]  ‘"Read/Write" control linedefine lcd_rs port[14]  ‘"Register Select" control linedefine lcd_e port[15]  ‘"Enable" control line' Definition von ASCII-Zeichen für das LCDdefine A_ &H41define B_ &H42define C_ &H43define D_ &H44define E_ &H45define F_ &H46define G_ &H47define H_ &H48define I_ &H49define J_ &H4Adefine K_ &H4Bdefine L_ &H4Cdefine M_ &H4Ddefine N_ &H4Edefine O_ &H4Fdefine P_ &H50define Q_ &H51define R_ &H52define S_ &H53define T_ &H54define U_ &H55define V_ &H56define W_ &H57define X_ &H58define Y_ &H59define Z_ &H5Adefine LEERZ &H20define MINUS &H2Ddefine NULL &H30define GLEICH &H3Ddefine DOPPELPUNKT &H3Adefine Grad &HDFdefine PUNKT &H2E'***************************************************************************************************'*** Programmbeginn **************************************************************************'*****************************************************#start PROGRAMMPARAMETER INITIALISIEREN  *****************************************'***************************************************************************************************'zu verwendende Werte aus EEProm auslesenopen# for readinput# AHinput# AMinput# UHinput# UMinput# Dauerinput# Tempsollinput# luft_varclose#'Default Einstellungen:SLOWMODE OFF 'Normalbetrieb des C-ControlLSR_port = offHeitz_port = offEVG_var =  offEVG =  0Taste = 0i = 0if Luft_var = 1 then  Luftversorgung = on else Luftversorgung = offgosub LCD_INIT  LCD initialisierengoto MAINLOOP 'Zur Hauptschleife springen'****************************************************************************************************'*****Hauplprogramm
*********************************'****************************************************************************************************#MAINLOOP
  gosub Tastendruck ‘Ermitteln ob und welche Taste gedrückt wurde  gosub WRITETIME ‘LCD Ausgabe der aktuellen Zeit  gosub Licht ‘Steuerung der Beleuchtung  gosub Temperatur ‘Regelung der Temperatur  gosub WRITETEMP ‘LCD Ausgabe der Temperatur  gosub Luft_Phwert ‘Ermittlung des pH-Wertes und Steuerung der Luftpumpe  gosub WRITEPHWERT ‘LCD Ausgabe des pH-Wertes  if second = 0 then gosub LCD_INIT‘LCD 1X pro Minute erneut initialisieren  if Taste = 3 THEN GOSUB Set_Time ‘Sprung ins Set-Up, wenn 3. Taste gedrückt wurdeGOTO MAINLOOP'****************************************************************************************************'*** LCD - Ausgaben ****************************************************************************'****************************************#WRITETIME'LCD -Ausgabe der Zeit lcd_param = 1 : gosub LCD_GOTOLINE 'Sprung in die erste Zeile des LCD lcd_param = U_:gosub lcd_WRITECHAR 'Ausgabe von Zeichen lcd_param = h_:gosub lcd_WRITECHAR lcd_param = r_:gosub lcd_WRITECHAR lcd_param = z_:gosub lcd_WRITECHAR lcd_param = e_:gosub lcd_WRITECHAR lcd_param = i_:gosub lcd_WRITECHAR lcd_param = t_:gosub lcd_WRITECHAR lcd_param = DOPPELPUNKT:gosub lcd_WRITECHAR lcd_param = NULL + hour / 10 : gosub LCD_WRITECHAR 'Zehnerstelle ausgeben (mit führender „0“ Anzeige) lcd_param = NULL + hour mod 10 : gosub LCD_WRITECHAR 'Einerstelle ausgeben lcd_param = DOPPELPUNKT : gosub LCD_WRITECHAR lcd_param = NULL + minute / 10 : gosub LCD_WRITECHAR 'Zehnerstelle ausgeben lcd_param = NULL + minute mod 10 : gosub LCD_WRITECHAR 'Einerstelle ausgeben lcd_param = DOPPELPUNKT : gosub LCD_WRITECHAR lcd_param = NULL + second / 10 : gosub LCD_WRITECHAR 'Zehnerstelle ausgeben lcd_param = NULL + second mod 10 : gosub LCD_WRITECHAR 'Einerstelle ausgebenreturn 'Rücksprung ins aufrufende Unterprogramm#WRITETEMP ‘LCD -Ausgabe der Temperatur lcd_param = 2:gosub LCD_GOTOLINE 'Sprung in die zweite Zeile des LCD lcd_param = T_:gosub lcd_WRITECHAR lcd_param = e_:gosub lcd_WRITECHAR lcd_param = m_:gosub lcd_WRITECHAR lcd_param = p_:gosub lcd_WRITECHAR lcd_param = e_:gosub lcd_WRITECHAR lcd_param = r_:gosub lcd_WRITECHAR lcd_param = a_:gosub lcd_WRITECHAR lcd_param = t_:gosub lcd_WRITECHAR lcd_param = u_:gosub lcd_WRITECHAR lcd_param = r_:gosub lcd_WRITECHAR lcd_param = DOPPELPUNKT:gosub lcd_WRITECHAR lcd_param =  (temp) / 100 : gosub LCD_WRITECHAR 'Hunderterstelle ausgeben lcd_param =  (temp mod 100) / 10 : gosub LCD_WRITECHAR 'Zehnerstelle ausgeben lcd_param =  PUNKT:gosub lcd_WRITECHAR lcd_param =  temp mod 10 : gosub LCD_WRITECHAR 'Einerstelle ausgeben lcd_param =  Grad:gosub lcd_WRITECHARreturn#WRITEPHWERT  LCD -Ausgabe des Ph-Wertes lcd_param = 3:gosub LCD_GOTOLINE 'Sprung in die dritte Zeile des LCD lcd_param = P_:gosub lcd_WRITECHAR lcd_param = h_:gosub lcd_WRITECHAR lcd_param = MINUS:gosub lcd_WRITECHAR lcd_param = W_:gosub lcd_WRITECHAR lcd_param = e_:gosub lcd_WRITECHAR lcd_param = r_:gosub lcd_WRITECHAR lcd_param = t_:gosub lcd_WRITECHAR lcd_param = DOPPELPUNKT:gosub lcd_WRITECHAR lcd_param = (phwert mod 100) / 100 : gosub LCD_WRITECHAR lcd_param = (phwert mod 100) / 10 : gosub LCD_WRITECHAR lcd_param = PUNKT:gosub lcd_WRITECHAR lcd_param = phwert mod 10 : gosub LCD_WRITECHARreturn'***************************************************************************************************'***** Messwerterfassung und Regelung *******************************************************'*******************************************************************#Licht ‘Steuerung der Beleuchtung  if ah = uh and am = um Then return ‘Rücksprung, falls kein Ein- oder Ausschalten der Beleuchtung erfolgen soll  IF HOUR = UH AND Minute >= UM THEN GOSUB untergang  Zeit für Sonnenuntergang?  if AH < UH or AH = UH and AM < UM and LSR_port=off then goto tag ‘soll Licht über 0:00Uhr ausgeschaltet sein?  if AH > UH or AH = UH and AM > UM and LSR_port=off then goto nacht ‘soll Licht über 0:00Uhr eingeschaltet sein?  goto MAINLOOP'Sprung ins Hauptprogramm  #tag ‘Licht ist über 0:00 Uhr ausgeschaltet  if (Hour > AH or Hour = AH and Minute >= AM) and (Hour < UH or Hour = UH and Minute < UM)and LSR_port=off ThengotoAufgang ‘Zeit zum Licht einschalten?  Return  #nacht ‘Licht ist über 0:00Uhr eingeschaltet  if (((Hour > AH or Hour = AH and Minute > AM) and (Hour < 23 or Hour = 23 and Minute <= 59)) or ((Hour > 0 or Hour =0 and Minute >= 0) and (Hour < UH or Hour = UH and Minute < UM)) )and LSR_port=off Then goto Aufgang ‘Zeit zum Licht einschalten?  Return #aufgang ‘Licht wird in vorgegebener Zeit hochgedimmt LSR_port = on  ‘230 V Spannung für EVG einschalten IF EVG_var = 255 THEN return ‘Rücksprung, wenn die Variable den Wert 255 erreicht hat IF (HOUR = UH AND Minute = UM) THEN GOTO untergang  ‘Zeit zum Lichtausschalten? EVG_var = EVG_var + 1 ‘Hochzählen der Variablen EVG = EVG_var ‘Ausgabe des Variabelenwertes auf dem DA-Ausgang zum Ansteuern des EVG PAUSE (Dauer  *  11) ‘Länge der Dämmerung gosub WRITETIME gosub Temperatur gosub WRITETEMP gosub Luft_Phwert gosub WRITEPHWERT gosub Tastendruck if second = 0 then gosub LCD_INIT if Taste = 3 THEN GOSUB Set_Time GOTO  aufgang #untergang ‘Licht wird in vorgegebener Zeit heruntergedimmt IF EVG_var = 0 then LSR_port = off else LSR_port = on ‘Schalten der 230 V Versorgung für die LSR IF EVG_var = 0 THEN return  ‘Rücksprung, wenn die Variable den Wert 0 erreicht hat IF (HOUR = AH AND Minute = AM ) THEN GOTO aufgang  Zeit für den Sonnenaufgang EVG_var = EVG_var-1  ‘herunterzählen der Variablen Evg = EVG_var  ‘Ausgabe des Variabelenwertes auf dem DA-Ausgang zum Ansteuern des EVG PAUSE (Dauer  *  11)  ‘Länge der Dämmerung gosub WRITETIME gosub Temperatur gosub WRITETEMP gosub Luft_Phwert gosub WRITEPHWERT gosub Tastendruck if second = 0 then gosub LCD_INIT if Taste =  3 THEN GOSUB Set_Time GOTO  untergang  #Temperatur  temp = ( temp_port ) ‘Einlesen des Temperaturwertes  temp = temp +150 ‘Umrechnen des Temperaturwertes  IF tempsoll*10 <= (temp - 5) then Heitz_port = on  ‘Hysterese zum Steuern der Temperatur  IF tempsoll*10 >= (temp + 5) then Heitz_port = off  ‘Hysterese zum Steuern der Temperatur  Return  #Luft_Phwert  i=1+i ‘Mittelwertbildung des pH-Wertes  if i = 1 then Ph1 = (phsonde) ‘Mittelwertbildung des pH-Wertes  if i = 2 then Ph2 = (phsonde) ‘Mittelwertbildung des pH-Wertes  if i = 3 then Ph3 = (phsonde) ‘Mittelwertbildung des pH-Wertes  if i = 4 then Ph4 = (phsonde) ‘Mittelwertbildung des pH-Wertes  if i = 5 then Ph5 = (phsonde) ‘Mittelwertbildung des pH-Wertes  if i = 6 then goto PhBerechnung ‘Mittelwertbildung des pH-Wertes  Return  #PhBerechnung i=0 ‘Rücksetzen der Variable Phwert = ((Ph1 + Ph2 + Ph3 + Ph4 + Ph5) / 10)  ‘Ermitteln des pH-Wertes if Luft_var = 1 then Luftversorgung = on ‘Luftversorgung permanent ein- oder ausschalten if Luft_var = 1 then return  ‘Rücksprung, wenn die Luftversorgung dauerhaft an ist IF (temp >= (tempsoll + 40)) or (Phwert <= 60)  then Luftversorgung = on  ‘Hysterese zum Steuern derLuftzufuhr IF (temp <= (tempsoll + 25)) and (Phwert >= 65) then Luftversorgung = off  ‘Hysterese zum Steuern der Luftzufuhr Return #Tastendruck  ‘ --- Tastatureingabe ------------- Taste = 246 ‘keine Taste gedrückt TastenEingabe = Tasten_port 'Wert vom AD-Eingang auf „TastenEingabe“ speichern for N = 0 to 5 'N bei jedem Schleifendurchfauf um 1 erhöhen, bis zum Wert 5 looktab Spannungen, N, TastenVergleich 'entsprechenden Wert aus der Tabelle „Spannungen“ holen if abs(TastenEingabe-TastenVergleich)<4 then Taste=N+1 'Ermittlung der Tastennummer next 'nächster Schleifendurchlauf Taste = Taste –1 'Taste 1 if Taste = 3 THEN Pause 25 'Kurze Pause wenn Set Up Taste gedrückt wurde Return '****************************************************************************************************'***** Einstellen der Zeiten und der Temperatur****************************************************'*****************************************************#Set_Time ' --- Uhrzeit für Aufgang einstellen ------------- gosub LCD_CLS 'Löschen des LCD#Set_Time_Aufgang GOSUB Tastendruck if Taste = 2 THEN AH = AH + 1 'Uhrzeit-Stunde zum Lichteinschalten +1 if Taste = 1 THEN AH = AH – 1 ' Uhrzeit-Stunde zum Lichteinschalten -1 if Taste = 5 THEN AM = AM + 5 ' Uhrzeit-Minute zum Lichteinschalten +1 if Taste = 4 THEN AM = AM – 5 ' Uhrzeit-Minute zum Lichteinschalten -1 if AM > 59 Then AM = 0 'Minuten-Einstellbereich 0 bis 59 if AM < 0   Then AM = 0 'Minuten-Einstellbereich 0 bis 59 if AH > 23 Then AH = 0 'Stunden-Einstellbereich 0 bis 23 if AH < 0   Then AH = 0 'Stunden-Einstellbereich 0 bis 23 lcd_param = 2 : gosub LCD_GOTOLINE ' lcd_param = A_: gosub LCD_WRITECHAR lcd_param = U_: gosub LCD_WRITECHAR lcd_param = F_: gosub LCD_WRITECHAR lcd_param = G_: gosub LCD_WRITECHAR lcd_param = A_: gosub LCD_WRITECHAR lcd_param = N_: gosub LCD_WRITECHAR lcd_param = G_: gosub LCD_WRITECHAR lcd_param = DOPPELPUNKT: gosub LCD_WRITECHAR lcd_param = 3 : gosub LCD_GOTOLINE lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = NULL + AH / 10 : gosub LCD_WRITECHAR 'Zehnerstelle ausgeben lcd_param = NULL + AH mod 10 : gosub LCD_WRITECHAR 'Einerstelle ausgeben lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = DOPPELPUNKT: gosub LCD_WRITECHAR lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = NULL + AM / 10 : gosub LCD_WRITECHAR 'Zehnerstelle ausgeben lcd_param = NULL + AM mod 10 : gosub LCD_WRITECHAR 'Einerstelle ausgeben GOSUB Tastendruck if Taste = 3 THEN GOTO Set_Time_UntergangCLR 'Sprung zum nächsten einzustellenden Wert, wenn Set-Up-Tastegedrückt wurdegoto Set_Time_Aufgang#Set_Time_UntergangCLR gosub LCD_CLS #Set_Time_Untergang ' --- Uhrzeit für Untergang einstellen ------------- GOSUB Tastendruck if Taste = 2 THEN UH = UH + 1 if Taste = 1 THEN UH = UH - 1 if Taste = 5 THEN UM = UM + 5 if Taste = 4 THEN UM = UM - 5 if UM > 59 Then UM = 0 if UM < 0   Then UM = 0 if UH > 23 Then UH = 0 if UH < 0   Then UH = 0 lcd_param = 2 : gosub LCD_GOTOLINE lcd_param = U_: gosub LCD_WRITECHAR lcd_param = N_: gosub LCD_WRITECHAR lcd_param = T_: gosub LCD_WRITECHAR lcd_param = E_: gosub LCD_WRITECHAR lcd_param = R_: gosub LCD_WRITECHAR lcd_param = G_: gosub LCD_WRITECHAR lcd_param = A_: gosub LCD_WRITECHAR lcd_param = N_: gosub LCD_WRITECHAR lcd_param = G_: gosub LCD_WRITECHAR lcd_param = DOPPELPUNKT: gosub LCD_WRITECHAR lcd_param = 3 : gosub LCD_GOTOLINE lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = NULL + UH / 10 : gosub LCD_WRITECHAR lcd_param = NULL + UH mod 10 : gosub LCD_WRITECHAR lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = DOPPELPUNKT: gosub LCD_WRITECHAR lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = NULL + UM / 10 : gosub LCD_WRITECHAR lcd_param = NULL + UM mod 10 : gosub LCD_WRITECHAR GOSUB Tastendruck if Taste = 3 THEN goto set_DauerCLR 'Sprung zum nächsten einzustellenden Wert, wenn Set-Up-Tastegedrückt wurdeGoto Set_Time_Untergang#set_DauerCLR ' --- Dauer der Dämmerung einstellen ------------- gosub LCD_CLS'Löschen des LCD #set_Dauer GOSUB Tastendruck if Taste = 2 or Taste = 5 THEN Dauer = Dauer + 1 if Taste = 1 or Taste = 4 THEN Dauer = Dauer - 1 if Dauer < 1 THEN Dauer = 1 if Dauer > 59 THEN Dauer = 60 lcd_param = 2 : gosub LCD_GOTOLINE lcd_param = Z_: gosub LCD_WRITECHAR lcd_param = E_: gosub LCD_WRITECHAR lcd_param = I_: gosub LCD_WRITECHAR lcd_param = T_: gosub LCD_WRITECHAR lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = I_: gosub LCD_WRITECHAR lcd_param = N_: gosub LCD_WRITECHAR lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = M_: gosub LCD_WRITECHAR lcd_param = I_: gosub LCD_WRITECHAR lcd_param = N_: gosub LCD_WRITECHAR lcd_param = U_: gosub LCD_WRITECHAR lcd_param = T_: gosub LCD_WRITECHAR lcd_param = E_: gosub LCD_WRITECHAR lcd_param = N_: gosub LCD_WRITECHAR lcd_param = DOPPELPUNKT: gosub LCD_WRITECHAR lcd_param = 3 : gosub LCD_GOTOLINE lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = NULL + Dauer / 10 : gosub LCD_WRITECHA lcd_param = NULL + Dauer mod 10 : gosub LCD_WRITECHAR GOSUB Tastendruck if Taste = 3 THEN goto set_TempCLR 'Sprung zum nächsten einzustellenden Wert, wenn Set-Up-Tastegedrückt wurdeGoto set_Dauer#set_TempCLR ' --- Temperaturträger einstellen ------------- gosub LCD_CLS'Löschen des LCD #set_Temp GOSUB Tastendruck if Taste = 2 or Taste = 5 THEN Tempsoll = Tempsoll + 1 if Taste = 1 or Taste = 4 THEN Tempsoll = Tempsoll - 1 if Tempsoll < 18 THEN Tempsoll = 18 if Tempsoll > 30 THEN Tempsoll = 30 lcd_param = 2:gosub LCD_GOTOLINE lcd_param = T_:gosub lcd_WRITECHAR lcd_param = e_:gosub lcd_WRITECHAR lcd_param = m_:gosub lcd_WRITECHAR lcd_param = p_:gosub lcd_WRITECHAR lcd_param = e_:gosub lcd_WRITECHAR lcd_param = r_:gosub lcd_WRITECHAR lcd_param = a_:gosub lcd_WRITECHAR lcd_param = t_:gosub lcd_WRITECHAR lcd_param = u_:gosub lcd_WRITECHAR lcd_param = r_:gosub lcd_WRITECHAR lcd_param = DOPPELPUNKT:gosub lcd_WRITECHAR lcd_param = 3 : gosub LCD_GOTOLINE lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = NULL + Tempsoll / 10 : gosub LCD_WRITECHAR lcd_param = NULL + Tempsoll mod 10 : gosub LCD_WRITECHAR GOSUB Tastendruck if Taste = 3 THEN goto set_LuftCLR 'Sprung zum nächsten einzustellenden Wert, wenn Set-Up-Tastegedrückt wurde Goto set_Temp#set_LuftCLR ' --- Luftversorgung permanent an oder aus ------------- gosub LCD_CLS 'Löschen des LCD #set_Luft GOSUB Tastendruck if Taste = 2 or Taste = 5 THEN Luft_var = 1 if Taste = 1 or Taste = 4 THEN Luft_var = 0 lcd_param = 2:gosub LCD_GOTOLINE lcd_param = L_:gosub lcd_WRITECHAR lcd_param = u_:gosub lcd_WRITECHAR lcd_param = f_:gosub lcd_WRITECHAR lcd_param = t_:gosub lcd_WRITECHAR lcd_param = v_:gosub lcd_WRITECHAR lcd_param = e_:gosub lcd_WRITECHAR lcd_param = r_:gosub lcd_WRITECHAR lcd_param = s_:gosub lcd_WRITECHAR lcd_param = o_:gosub lcd_WRITECHAR lcd_param = r_:gosub lcd_WRITECHAR lcd_param = g_:gosub lcd_WRITECHAR lcd_param = u_:gosub lcd_WRITECHAR lcd_param = n_:gosub lcd_WRITECHAR lcd_param = g_:gosub lcd_WRITECHAR if Luft_var <= 0 then goto aus if Luft_var >= 1 then goto an #aus lcd_param = 3 : gosub LCD_GOTOLINE lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = a_:gosub lcd_WRITECHAR lcd_param = u_:gosub lcd_WRITECHAR lcd_param = s_:gosub lcd_WRITECHAR GOSUB Tastendruck if Taste = 3 THEN gosub SaveConfigData  Goto set_Luft #an lcd_param = 3 : gosub LCD_GOTOLINE lcd_param = LEERZ: gosub LCD_WRITECHAR lcd_param = a_:gosub lcd_WRITECHAR lcd_param = n_:gosub lcd_WRITECHAR lcd_param = LEERZ: gosub LCD_WRITECHAR GOSUB Tastendruck if Taste = 3 THEN gosub SaveConfigData 'Sprung ins Unterprogramm ”SaveConfigData”, zum Speichern dereingestellten Werte Goto set_Luft '****************************************************************************************************'***** SCHREIBEN DER KONFIGURATION ******************************************************************'*************************************************#SaveConfigData open# for write 'Werte ins EEProm schreiben if filefree then print# AH if filefree then print# AM if filefree then print# UH if filefree then print# UM if filefree then print# Dauer if filefree then print# Tempsoll  if filefree then print# Luft_var close# pause 20 gosub LCD_CLS goto start '****************************************************************************************************'***** LCD-ROUTINEN *********************************************************************************'*******************************'Display zurücksetzen#LCD_INIT 'Organisation: MSB.....LSB 'zuerst im 8-Bit-Modus: lcd_param = &B00111000 : gosub LCD_WRITECMD 'Funktion Set: 8-Bit-Modus benutzen, mehrzeilig lcd_port = &B00000010  'Funktion Set: zu 4-Bit-Modus umschalten, einzeilig pulse lcd_e 'ab hier 4-Bit-Modus: lcd_param = &B00101000 : gosub LCD_WRITECMD '4-Bit-Modus, mehrzeilig lcd_param = &B00001000 : gosub LCD_WRITECMD 'Display off lcd_param = &B00001100 : gosub LCD_WRITECMD 'Display on lcd_param = &B00000110 : gosub LCD_WRITECMD 'Entry Mode: Cursor unsichtbar inkrementierend, kein Display-Shift gosub LCD_CLSreturn'Display löschen, Cursor Home#LCD_CLS lcd_param = &B00000010 : gosub LCD_WRITECMD 'Return Home lcd_param = &B00000001 : gosub LCD_WRITECMD 'Clear Displayreturn'Zeilenwechsel mit Set CGRAM Adress: (DB7 = 1)#LCD_GOTOLINE'im 4-Bit Modus mit DB4...DB7, Bit 7 ist immer 1 (N=1) bei Display mit mehr als 1 Zeile if lcd_param = 1 then lcd_param = &B10000000 'Zeile 1 = &H00 if lcd_param = 2 then lcd_param = &B11000000 'Zeile 2 = &H40 if lcd_param = 3 then lcd_param = &B10010000 'Zeile 3 = &H10 if lcd_param = 4 then lcd_param = &B11010000 'Zeile 4 = &H50goto LCD_WRITECMD'Kommando senden#LCD_WRITECMD lcd_buf = &B00000000 'Buffer zurücksetzengoto LCD_WRITE'Zeichen senden an Adresse#LCD_WRITECHAR lcd_buf = &B00100000 'CG RAM-Adresse vor Schreiben mit &B000000 vorbelegen (DB0...DB6) goto LCD_WRITE'Kommando oder Zeichen im 4-Bit-Modus an LCD senden#LCD_WRITE lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble pulse lcd_e lcd_port = lcd_buf or (lcd_param and &B00001111) ' Lo-Nibble pulse lcd_ereturn'****************************************************************************************************'***** PROGRAMMENDE ********************************************************************************'******************END 'Programmende'****************************************************************************************************'***** TABELLEN *************************************************************************************'******************table Spannungen ' Tabelle zum Ermitteln, welche Taste gedrückt wurde 245 87  65 44 22 0tabend

  

5. Die Komponenten:

 

 

 

5.1 Universelles symmetrisches Netzteil

In Europa steht an den üblichen Haushaltssteckdosen eine Wechselspannung von 230 V mit einer Frequenz von 50 Hz zur Verfügung.

Um damit eine elektronische Schaltung betreiben zu können, muss diese Spannung zunächst passend aufbereitet werden. Die Schaltung ist einfach aufgebaut. Positver und negativer Versorgungsspannungszweig sind symmetrisch zueinander.

Durch das Netzkabel gelangt die Netzspannung zunächst an den Transformator. Der TrafoT1 besitzt zwei Sekundärwicklungen bzw. eine Sekundärwicklung mit Mittelanzapfung. TR1 transformiert die Netzspannung auf etwa 2 x 12 V – 15 V herunter. Der Mittelpunkt der beiden Sekundärwicklungen ist mit der Schaltungsmasse verbunden. Die beiden anderen Ausgänge des Trafos gehen an die Wechselspannungseingänge des Brückengleichrichters B1. Dieser wandelt die Wechselspannung in pulsierende Gleichspannung um. Die Ladekondensatoren C1und C2 glätten diese pulsierende Spannung zu einer Gleichspannung. Die Kondensatoren C3 und C4 sollen Störungen aus dem Netz unterdrücken und die Schwingneigung der nachfolgenden ICs dämpfen.

Hauptbestandteil dieser Schaltung sind die  Festspannungsregler IC1, IC2, IC3 und IC4. IC1 ist vom Typ 7812, der die positive Spannung auf +12 V regelt, während IC2, vom Typ 7912, die negative Spannung auf -12 V konstant hält. IC3 ist vom Typ 7905 und für die positiven +5 V verantwortlich und IC4 ist ein 7805 der negative –5 V liefert.

 C7, C8, C9 und C10 sind notwendig, um die ICs am Schwingen zu hindern. Ohne diese Kondensatoren würden sie sonst mit etwa 1 MHz schwingen. Die Kondensatoren C5 und C6 sollen das Regelverhalten der  ICs verbessern.

Wie schon oben beschrieben, arbeitet die Schaltung jeweils mit jeweils zwei zueinander komplementären Festspannungsreglern. Dieses ist eine einfache, kostengünstige und platzsparende Möglichkeit. Unabhängig von dem Ausgangsstrom werden hierfür IC1und IC3 sowie IC2 und IC4 Typen eingesetzt, die Ströme bis zu 1 A (je nach Hersteller auch etwas mehr) regeln können. Praktischerweise werden hierfür Regler im TO 220-Gehäuse verwendet. Für die Dimensionierung der Schaltung ist es wichtig zu wissen, dass diese ICs zum Betrieb eine Spannung benötigen, die um 3 V höher sein sollte, als die Ausgangsspannung. Bei einer Ausgangsspannung von 12 V bzw. 5 V sollte die Eingangsspannung also mindestens 15 V bzw. 5 V betragen. Andererseits darf die Eingangsspannung 35 V nicht überschreiten.

Um die Spannungsregler mit einer ausreichenden Spannung versorgen zu können, sollte der Trafo zwei Sekundärwicklungen mit je 15 V oder eine Sekundärwicklung von 30 V mit Mittelabgriff besitzen.

Die Stromstärke, die der Trafo abgeben kann, sollte etwa um den Faktor 1,5 über dem tatsächlich benötigten Wert liegen. Der Grund hierfür besteht darin, dass der Strom nicht kontinuierlich fließt, sondern stark pulsiert, wobei relativ hohe Spitzenwerte erreicht werden können. Im Zweifelsfall ist das Netzteil eher größer zu dimensionieren. Nach der Gleichrichtung und Glättung kann die Spannung also Werte von über 30 V annehmen. Das mag zunächst als recht viel erscheinen, jedoch bricht diese Spannung unter Belastung schnell auf niedrigere Werte zusammen.

Wegen der hohen möglichen Leerlaufspannung müssen C1 und C2 Spannungsfestigkeiten von mindestens 35 V besitzen. Da der Gleichrichter B1 beide Trafowicklungen gleichrichtet, muss seine Spannungsfestigkeit sogar doppelt so hoch sein.

Die Ladekondensatoren C1 und C2 sollen die pulsierende Gleichspannung ausreichend glätten. C3, C4, C7,C8,C9 und C10 müssen Folienkondensatoren sein, da diese eine geringere Eigeninduktivität besitzen und so Störungen und Schwingneigungen wirksamer unterdrücken können. Für C5 und C6 sollten Tantalelkos mit einer Spannungsfestigkeit von mindestens 35 V verwendet werden.

Tantalelkos verfügen ebenfalls über eine geringere Eigeninduktivität und sind somit besser geeignet, Störungen zu unterdrücken als normale Elkos.

Bei den Spannungsreglern ist zu berücksichtigen, dass der negative Regler eine etwas andere Anschlussbelegung besitzt als der positive. Bei dem negativen sind gegenüber dem positiven Regler Eingang und Masse miteinander vertauscht. Das kann zu Verwechslungen führen. Außerdem hat dies zur Folge, dass bei dem negativen Spannungsregler nicht die Masse, sondern die negative Eingangsspannung am Gehäuse des IC anliegt. Aus diesem Grunde muss das negative Regel-IC isoliert werden, wenn es gemeinsam mit dem positiven Regler auf einen Kühlkörper montiert werden soll.

Achtung: Da beim negativen Spannungsregler die Versorgungsspannung am Gehäuse anliegt, darf er nicht mit anderen Bauteilen der Schaltung oder dem Gerätegehäuse in Berührung kommen.

 

5.2. Ansteuerung des EVG zum Dimmen von Leuchtstoffröhren

Aufbau eines elektronischen Vorschaltgeräts:

Ein EVG (elektronisches Vorschaltgerät) dient zum Ansteuern von LSR(Leuchtstoffröhren). Mit bestimmten Typen können LSR sogar gedimmt werden.

Der EMV-Filter im EGV filtert Hochfrequente Störungen des EVG. Anschließend macht der Gleichrichter aus Wechselstrom Gleichstrom. Der PFC korrigiert Netzschwankungen. Unabhängig von der Netzspannung wird die Gleichspannung auf einen bestimmten Wert geregelt, damit die Leuchtstoffröhren keine Netzschwankungen spüren.

Der HF-Generator ist das Herzstück des EVG. Bei einer Arbeitsfrequenz von ca. 40 bis 50 kHz werden 25% bis 30% Energie gespart im Vergleich zu herkömmlichen Systemen. Durch ständiges Abfragen des Lampenzustandes während des Betriebs, wird der nahende „End of Life“ –Zustand erfasst und der EVG zuverlässig abgeschaltet.

 

Ich verwende den OSRAM Quicktronic de Luxe HF 2x18/230-240DIM.

Allgemeiner Hinweis:

·         Versorgungsspannung: 230 V/240 V

·         Netzfrequenz: 0/50 bis 60 Hz

·         Lampenstart: Warmstart innerhalb von 2 Sek.

·         Prüfzeichen:

·         Funkentstörung: gem. DIN VDE 0875/CISPR 15/EN 55015

·         Netzstromoberwellen: gem. DIN VDE 0712 Teil 23/EN 61000-3-2/EN 60929

·         Immunität, Störfestigkeit gem. EN 61547

Mit diesem elektronischen Hochfrequenz-System können handelsübliche Leuchtstofflampen von 1 % bis 100 % Lichtstrom über eine Steuerleitung mit 1 - 10 V DC gedimmt werden.

Die Steuerung funktioniert nur in Zusammenarbeit mit einer Stromabschaltung, da das EVG keinen Anschluss für eine Totalabschaltung hat. Dies bedeutet, die Stromabschaltung schaltet die Leuchten samt EVG und Dimmersteuerung an und wieder aus. In der eingeschalteten Zeit kann die Helligkeit hoch und herunter gedimmt werden. Die 0 – 10 V-Steuerleitung eröffnet vielfältige Anschlussmöglichkeiten. In diesem Fall wird sie an die Aquariensteuerung angeschlossen, die auch die 230 V Versorgungsspannung für das EVG abschaltet. Hierfür wird eine Relais-Schaltung benötigt.

Im C-Control, im Unterprogramm „Licht“, wird zuerst geprüft, ob die Variable EVG_var, die zum hoch- und herunterzählen dient und deren Wert später dem Analogausgang übergeben wird, NULL ist. In diesem Fall wird der Digitalport, der das Relais für die 230 V-Versorgung des EVG schaltet, auf AUS gesetzt, sonst auf EIN. Sollten die Variablen für das Einleiten des Lichtherunterdimmens gleich der Uhrzeit sein, wird in das Unterprogramm „Untergang“ gesprungen. Im Unterprogramm wird die Variable EVG_var bei jedem Durchgang um 1 heruntergezählt und auf den Analogausgang übertragen. Hat die Variable den Wert 0 erreicht, dann erhält der EVG-Port ein AUS und es erfolgt ein Rücksprung ins aufgerufene Programm. Damit die LCD-Anzeige und weitere Steuerungen weiterlaufen, werden in der Programmschleife die entsprechenden Unterprogramme aufgerufen.

Da, wenn das Licht über 0:00 Uhr eingeschaltet sein soll, andere Bedingungen gelten, als wenn es zum Tageswechsel aus ist, werden im Unterprogramm „Licht“ diese geprüft. Es wird in entsprechende Unterprogramme verzweigt. Dies ist nötig, damit die Beleuchtung nach einem Stromausfall wieder eingeschaltet wird. Ist in dem entsprechenden Unterprogramm, die Bedingung erfüllt, dass die Uhrzeit gleich der Zeit für das Lichthochdimmen ist, wird in das Unterprogramm „Aufgang“ gesprungen. In diesem wird der EVG-Port auf EIN gesetzt, die Variable EGV_var bis 255 hochgezählt und die Variable auf den Analogausgang ausgegeben.

Sollte während der Programmschleife die Uhrzeit gleich der Zeit zum Lichtherunterdimmen sein, wird in das Unterprogramm „Untergang“ gesprungen. Auch hier werden weitere Unterprogramme aufgerufen, damit die LCD-Anzeige und weitere Steuerungen weiterlaufen.

Der Steuercomputer liefert am Digital-/Analogausgang ein pulsweitenmoduliertes Signal von 0 V bis 5 V. Zur Ansteuerung des EGV wird aber eine Gleichspannung von 0 V bis 10 V benötigt. Deshalb muss ein Operationsverstärker mit einer Verstärkung von 2 zwischengeschaltet werden, der außerdem mit einem Kondensator das pulsierende Signal des Controllers in ein echtes Analogsignal umwandelt. Hierfür wird der Operationsverstärker LM358 benutzt. Er arbeitet auch bei einer unipolaren Versorgung bis nahe an 0 V heran. Der Tiefpass, aus R1 = 25 k Ohm und C11 = 0,1µ F bestehend, ergibt eine Restwelligkeit von 20 mV. Mit den Widerständen R2 = 100 k Ohm und R3 = 0 bis 100 k Ohm kann der Verstärkungsfaktor von 1 bis 2 stufenlos eingestellt werden. Dies wird berechnet mit der Formel  .Durch den Kondensator C12 = 0,1 µ F wirkt der OP-Verstärker ebenfalls als Tiefpass, wodurch eine Restwelligkeit von 5 m V erreicht wird. Dies und der relativ hochohmige Ausgang sollten für die Ansteuerung des EVG reichen.

Zum Umbau des Leuchtbalkens muss dieser geöffnet und die gesamte Elektronik ausgebaut werden, auch die Starter. Die Starterdeckel müssen nach Ausbau der Starterfassungen zwecks Wasserdichtigkeit wieder einklebt werden (mit Silikon oder Heißkleber). Danach muss das Vorschaltgerät eingebaut und gemäß Aufdruck auf diesem im Leuchtbalken verdrahtet werden. Auf der rechten Seite werden die Röhrenfassungen angeschlossen, auf der linken Seite befinden sich die Anschlüsse für die Netzspannung (230 V) und der Steuereingang (0 - 10 V). Die 1 - 10 V Steuerleitung habe ich auch durch die 230 V-Leitung geführt. Danach müssen die Leuchtbalken wieder zusammengebaut und alles mit Silikon wasserdicht abgedichtet werden.

 

 

5.3. Die Messverstärker:

5.3.1. Die Temperaturmessung mit dem KTY-Sensor

Bei Temperaturmessungen mit Widerstandsthermometern wird als Temperaturfühler ein Messwiderstand verwendet, dessen Widerstand sich mit der Temperatur ändert. Mit Hilfe der Brückenschaltung wird die Widerstandsänderung in ein elektrisches Signal gewandelt. Ein konstanter Strom wird durch die Schaltung geschickt. Der Spannungsabfall über dem Messwiderstand wird gemessen und mit einer konstanten Spannung verglichen. Die Messbrücke ist so bemessen, dass bei 15 °C die Spannungen der beiden Spannungsteiler den selben Wert haben. Steigt die Temperatur an, so steigt auch die Differenz zwischen den Spannungsteilern. Die Spannung am invertierenden Eingang des als Differenzverstärker geschalteten Operationsverstärker vom Typ 741 wird größer. Dadurch steigt auch die Spannung am Ausgang des Operationsverstärkers. Der nachfolgende Transistor liniearisiert und verstärkt das Signal so, dass bei 40,5 °C 5 V am Collektor anliegen.

Der Einfluss des Zuleitungswiderstandes und seiner temperaturabhängigen Änderung auf das Messergebnis ist nicht zu vernachlässigen. Man benötigt Kompensationsverfahren (zum Beispiel den Widerstand der Messleitungen einfach abziehen). Dies ist allerdings nachteilhaft, da sich der Widerstand der Messleitungen, wie schon erwähnt, selber verändern kann. Deshalb gibt es auch mehrere Anschlussarten für Messfühler. Ich verwende die Zweileiterschaltung. Wie der Name vermuten lässt, arbeitet die Zweileitermessschaltung mit zwei Messleitungen. Damit das Messergebnis nicht durch Eigenerwärmung des Messwiderstandes und der Messleitungen beeinflusst wird, sollte der Messstrom 5 mA nicht überschreiten. Zum Ausgleichen des Messleitungswiderstandes wird der Widerstand R35 eingestellt, bis die angezeigte Temperatur mit der eines relativ genauen Thermometers übereinstimmt.

 

Der eingesetzte KTY 10 ist ein kleiner Silizium-Sensor von der Firma „Infineon“. Er hat einen positiven Temperaturkoeffizienten und dessen Änderungen im Bereich der Raumtemperatur ±20 °C sind nahezu linear, was weitere Auswertungen erleichtert. Aufgrund seiner kleinen Abmessungen, reagiert er sehr schnell auf Temperaturveränderungen.

Diagramm

Die Ausgangsspannung beträgt 0 - 5 V linerarisiert, so dass im Controller eine einfache Umrechnung des Analogwertes genügt. Zum Auswerten des Temperatursignals wird dieses vom Analogwandler im C-Control in einen Wert gewandelt und auf der Variablen temp abgelegt. Anschließend wird der Wert in der Variablen um 150 erhöht. Dies entspricht einer Temperatur von kleiner/gleich 15,0 °C. Danach wird der Wert mit einem von einem Benutzer eingegebenen Sollwert, der in der Variablen tempsoll gespeichert ist, verglichen. Ist die Temperatur 0,5 °C unter dem Sollwert, schaltet ein Digitalport ein Relais ein, welches eine Heizung ansteuert. Um ein Relaisklappern zu verhindern, wird es erst bei 0,5 °C über dem Sollwert ausgeschaltet.

 

5.3.2. PH-Wertsonde und die Schaltung zur Messwertauswertung

Der pH-Wert beschreibt eine der wichtigsten chemischen Eigenschaften des Aquariumswassers, das Gleichgewicht zwischen Säuren und Basen. Enthält Wasser mehr Säuren als Laugen, dann ist es sauer. Enthält es mehr Laugen als Säuren, dann ist es alkalisch. Befinden sich Säuren und Laugen im Gleichgewicht, ist das Wasser neutral. Die pH-Wert-Skala reicht von 1 bis 14. Neutrales Wasser hat den pH-Wert 7. Wasser mit einem pH-Wert unter 7 ist sauer. Wasser mit einem pH-Wert über 7 ist alkalisch.

Alle Fische, Pflanzen und Mikroorganismen reagieren sehr sensibel auf drastische und schnelle Änderungen des pH-Wertes. Ein pH-Wert zwischen 6,5 und 8,5 ist für fast alle Süßwasserfische gut geeignet.

 

Der pH-Sensor:

Der Sensor ist vom elektrischen Prinzip her nichts weiter als eine Batterie, die je nach Säuregehalt die Spannung ändert. Im Idealfall liefert sie 0 V bei pH 7 und dann ca. 59 mV pro 1 pH, wobei diese bei höheren pH-Werten die Spannung verringert, und bei niedrigerem pH-Wert (<7) die Spannung erhöht.

Die Sensoren bestehen in den meisten Fällen aus einem Glasröhrchen mit einem sehr dünnen Ende (der Membran). Dieses Ende ist durchlässig für Flüssigkeiten und erlaubt den im Röhrchen liegenden Teilen die Messung des Säuregehaltes. Im Röhrchen befinden sich verschiedene Elektroden sowie eine Flüssigkeit oder

ein Gel.

Diese Bilder zeigen 2 Elektroden; Bildquelle: Schott

Die Spannungen in der Übersicht:

pH 

Spannung 

 9

2 x -59 mV= -118 mV

 8

 - 59 mV

 7

0 V

 6

59 mV

 5

2 x 59 mV=118mV

Wenn man nun eine Schaltung haben möchte, die diese Spannung in ein verwertbares Signal überführt, muss man folgendes tun:

1. Man muss das Signal verstärken, je nachdem, wie viel Volt man später haben möchte. Möchte man z.B. 1 V / pH haben, muss man die Verstärkung auf 1/0.059 = ca. 17 erhöhen. Man muss sich also entscheiden.
Bei der untenstehenden Schaltung habe ich 0,35 mV/pH gewählt. Das ergibt dann 0,35/0.059 = 5,93
» 6.

2. Man muss das Signal invertieren, damit es richtig herum angezeigt wird. Man möchte ja schließlich bei einem steigenden pH- auch einen steigenden Messwert erhalten. Sonst würde  man bei steigendem Ph-Wert einen fallenden Messwert erhalten.

3. Mann muss eine Offsetspannung zum Signal addieren, damit man einen liearen Bereich bekommt.

Berechnung meiner Schaltung:

PH 5 ergibt am Sensor 2*0.059 V = 0.118 V. Verstärkt man den Wert mit 6, ergibt das +0,7 V.
Invertieren ergibt daraus –0,7 V.
Addiert man eine Offsetspannung von +2,45V dazu, ergibt sich +1,7V (pH 5).
Bei pH 0 wäre das Signal am Sensor 7*0.059 = 413 mV. Verstärkt mit 6 gibt das ca. +2,45 V.
Nach der Invertierung erscheint –2,45 V am Ausgang.
Mann addiert zu diesem Signal nun eine Offsetspannung von +2,45 V, damit bei pH 0 das Signal auch 0 V und nicht –2,45 V ist. Auf diese Weise kann man den Analog-/Digitaleingang des C-Control Steuercomputers verwenden und den pH-Wert auf dem LCD Display ausgeben. Ohne die Invertierung bekäme man ein falsches Ergebnis: PH 0 wären dann 5 V, pH 14 wären 0 V. Die Formeln sind:

Verstärkung: A=(Volt pro pH) / 0.059
Offsetspannung: O=7* (Volt pro pH)

In meiner Schaltung habe ich gewählt: 100 mV / pH, das ergibt also:
A=0,35/0,059=5,93
»6                            O=7*0,35V=2,45 V

Um nun den Sensor zu eichen, baut man für die Verstärkung und den Offset ein Potentiometer ein, damit man sie regeln kann.
Für die Eichung bei pH 7.00 benutzt man die Offsetspannung, für die Eichung bei pH 4.00 die Verstärkung.

Beschreibung der Schaltung:

Zur Verstärkung wird ein Opamp vom Typ TL084 benutzt. Das Teil ist sehr preiswert, aber trotzdem  ausreichend. Das Wichtige bei der Auswahl dieses Opamps ist der FET- Eingang. Da ein pH- Sensor nur Ströme im fA (femto !) -Bereich liefert, muss er sehr hochohmig sein. Der TL084 hat in einem Gehäuse 4 unabhängige Verstärker. Man benötigt daher nur 1 IC für die ganze Schaltung.

Das Signal des Sensors wird per BNC- Stecker auf das IC6A gegeben. Dieser wirkt als Verstärker, dessen Verstärkung durch R10/R11 und R12+R13 festgelegt wird. Mit R13 kann man später die Verstärkung einstellen.

Nach der Verstärkung erfolgt die Addierung der Offsetspannung sowie gleichzeitig die Invertierung mit U1B. Dazu wird das Signal an den invertierenden Eingang von U1B gelegt. Da dieser als Umkehraddierer geschaltet ist, wird gleichzeitig die Spannung, die an Pin 5 von IC6B liegt, addiert. (Die Spannung wird durch die Widerstände R15, R17 und R18 gebildet; sie ist UOFF=(R15+R12) / (R18+R12); Spannungsteilerregel).

Der Kondensator C13 ist sehr wichtig. Er filtert die 50 Hz-Netzspannung und andere Störungen aus, damit der Wert nicht schwankt. Verstärkt, invertiert und mit Offsetspannung versehen passiert das Signal IC6C, der nur als Puffer dient.

Zum Abgleichen eines gegebenen pH-Sensors geht man wie folgt vor:

-Der Sensor wird in pH 7.00 getaucht und R12 solange gedreht, bis 7.00 auf der Anzeige steht.

-Danach nimmt man pH 4.00  und R11 dreht solange, bis 4.00 auf der Anzeige steht.

-Das ganze wiederholt man 3-4 mal, bis alles korrekt ist. Es empfiehlt sich, das Gerät 20 Minuten vorher einzuschalten, damit die Betriebstemperatur erreicht wird.

Die Schaltung ist so dimensioniert, dass mit R13 von pH 3 bis 5,25 und mit R17 von pH 5,9 bis 8,5 geregelt werden kann.

Damit der pH- Wert im C-Control ausgewertet werden kann, wird dieses vom Analogwandler in einen Wert gewandelt, durch 2 geteilt und auf der Variablen phwert gespeichert. Danach wird ein Digitalport, welcher ein Relais für eine Luftversorgung ansteuert, eingeschaltet, wenn der pH- Wert unter 5,5 sinkt oder die Temperatur höher als 4°C über der Solltemperatur ist. Die Luftversorgung wird erst wieder ausgeschaltet, wenn der pH- Wert über 7 ist und die Temperatur nur noch 2,5 °C über dem Sollwert ist.

5.4. Das LCD-Display zur Anzeige der Messwerte

Flüssigkristallanzeigen (Liquid Crystal Display, kurz LCD) zeichnen sich durch einen besonders geringen Stromverbrauch aus. Eine LCD-Anzeige wird im Prinzip durch eine angelegte Wechselspannung angesteuert.

Es gibt einfache LCD´s, deren Segmente an einzelne Anschlüsse geführt werden, die durch komplexe Treiberbausteine angesteuert werden müssen. Eine Alternative sind komplette LCD-Module mit Display-Controller. Es gibt verschiedene Typen. Ich verwende eines mit 4X16 Zeichen. Jedes Zeichen ist aus einer Punktmatrix mit 5X8 Einzelpunkten aufgebaut.

Der Display-Controller enthält einen integrierten Zeichengenerator, der jedem darstellbaren Zeichen ein bestimmtes Bitmuster zuordnet. Der Anwender braucht nur den ASCCII-Code eines gewünschten Zeichens an die LCD-Anzeige zu senden, um das Zeichen dort darzustellen. Neben acht bidirektionalen Datenleitungen verfügt die LCD-Anzeige über die spezifischen Steuerleitungen EN (Enabel, Datenübertragung), RS (Daten-/Kommandoumschaltung) und R/W ( Schreib-/Leseumschaltung). Das bedeutet, dass 11 Digitalports der C-Control Unit zur Ansteuerung benötigt werden.

Mit einem kleinen Trick kann die LCD-Anzeige auch im 4 Bit Modus betrieben werden. Das heißt, zur Ansteuerung werden nur noch Digitalports benötigt. Weiterhin muss das LCD mit einer externen 5 V Spannung versorgt werden.

Zur Übertragung der Daten werden die oberen 4 Bits D7...D4 des LCD-Moduls verwendet. Diese 4 Datenleitungen werden mit den Ports P9 bis P12 der C-Conltol Unit verbunden. Wie schon erwähnt, benötigt die LCD-Anzeige noch 3 Steuersignale. Da jedoch nur Daten in die LCD-Anzeige übertragen werden, bleibt der R/W-Port des LCD fest auf LOW-Signal. Der RS-Port wird mit P14 und der EN-Port P15 verbunden. Dabei werden mit der negativen Flanke des Steuersignals die Daten modulintern gespeichert. Dazu muss die Portleitung softwaremäßig 2 mal getoggelt(=umgeschaltet) werden.

Erläuterungen zum Unterprogramm:

Für den Datentransfer werden zwei Bytes im Programm reserviert. Im LCD-Buffer (var=lcd_buf) stehen diejenigen Informationen, die in zwei 4-Bit-Hälften an den LCD-Port übergeben werden. Im Parameterspeicher (var = lcd_param) werden Daten- bzw. Kommandobytes abgelegt. Hierbei erscheinen die Daten als Text im LCD-Display, während die Kommandos ein bestimmtes Verhalten des LCD-Moduls erzeugen (z. B. Display löschen, Cursor positionieren, ...).

Bei der Definition der Ports fällt auf, dass die Ports 13 bis 15 doppelt definiert sind, da sie einmal einzeln und dann noch mal als Byteport deklariert werden. Dies dient jedoch nur der einfacheren Ansteuerung des LCD-Displays.

Danach werden die ASCII-Codes der Großbuchstaben des Alphabets definiert, da man sonst im Programmablauf nicht den Buchstaben „X“ übertragen könnte, sondern nur seine Hexadezimalzahl „&H58“. Somit ist die Definition der ASCII-Codes nicht zwingend notwendig. Sie dient jedoch der Veranschaulichung des Programms bzw. der Möglichkeit zur einfachen Abänderung. Bei größeren Programmen kann es somit auch vorkommen, dass nicht genügend Speicherplatz zur Definition des ASCII-Codes zur Verfügung steht.

Beim Aufruf des Unterprogramms LCD_INIT wird das LCD-Display initialisiert. Dieses Unterprogramm sollte in jeder Anwendung, in der dieses LCD-Display verwendet wird, vor der ersten Textausgabe aufgerufen werden. Hier erfolgt die Einstellung des 4-Bit-Modes und das Löschen des Displays. Das Unterprogramm zum Löschen des Displays lautet #LCD-CLS und kann jederzeit auch als eigenständiges Unterprogramm aufgerufen werden.

Danach erfolgt die Textausgabe. Sie wird zeichenweise ausgeführt, indem das vordefinierte Zeichen A_ ... Z_ oder die dazugehörige Hexadezimalzahl des ASCII-Codes in den LCD-Parameterspeicher lcd_param geschrieben wird und dann das Unterprogramm LCD_WRITECHAR aufgerufen wird. Dort wird der RS-Port (Port Nr. 14) HIGH gesetzt, indem die Variable lcd_buf gleich der binären Zahl $B00100000 gesetzt wird. Dadurch werden die Daten, die an D4...D7 anliegen, als Text verarbeitet und im Display dargestellt. Die Übertragung dieser Binärzahl erfolgt automatisch im Unterprogramm LCD_WRITE. Hierfür muss zunächst die Information, die in der Variablen lcd_param enthalten ist, viermal bitweise nach rechts verschoben werden. Damit stehen die jetzt höherwertigen Bits 7...4 rechtsbündig im Byte und die vier linksbündigen Bits lauten alle 0.

Nun erfolgt die ODER-Verknüpfung der beiden Variablen lcd_buf und lcd_param, wodurch die Informationen, die in beiden Variablen enthalten sind, gemeinsam übertragen werden.

Wenn diese Information nun am LCD-Port anliegt, dann führt das Takten der Enable-Leitung lcd_e zum Übertragen der Daten ins LCD-Modul.

Jetzt erfolgt die zweite Hälfte der Ausgabe. Hier wird der Parameter mit UND-verknüpft, wobei die oberen vier Bits gelöscht werden. Damit stehen die vier unteren Bits genau richtig an ihrem Platz, so dass es erneut zur ODER-Verknüpfung von Buffer und Parameter kommen kann. Sobald Enable zweimal getaktet wird, gelangen die Daten mit der negativen Flanke ins Modul und das betreffende Byte ist komplett übertragen.

Mit dem Unterprogramm LCD_GOTOLINE kann der Cursor entweder in die erste Zeile (lcd_param = 1) oder in die zweite Zeile (lcd_param = 2) gesetzt werden.

So gelangen die Zeichen auf das Display. Für Kleinprojekte mit wenig Displaytext ist dies vollkommen ausreichend. Wenn man jedoch ein menügesteuertes Programm und somit viele Daten auf einem LCD-Display ausgeben möchte, empfiehlt es sich, ein LCD-Display mit zusätzlichem Displaycontroller zu verwenden, da jedes einzelne Zeichen, was dargestellt werden soll, getrennt übermittelt werden muss. Durch den begrenzten Programmspeicher der C-Control Basic Unit kann daher ein menügesteuertes Programm nur eingeschränkt umgesetzt werden.2

 

5.5. Tastatur

Theoretisch kann eine einzelne Leitung unendlich viele Spannungen tragen. In der Praxis verwendet man Analog-/Digitalwandler, die einen Spannungswert in ein digitales Bitmuster umsetzen.

Viele Mikrocontroller enthalten AD-Wandler, z.B. mit einer Auflösung von acht Bit. Das bedeutet, es können 256 verschiedene Eingangsspannungen unterschieden werden. Damit könnten theoretisch 256 Schalter über eine einzige Leitung abgefragt werden. In der Praxis würde dies zu Problemen führen, da die AD-Wandler ungenau sind durch geringe Störspannungen auf der analogen Eingangsleitung. Dadurch können Fehler und Unterscheidungsschwächen zwischen benachbarten Zuständen auftreten. Es ist jedoch problemlos bis zu 15 Schalter über einen Analogeingang abzufragen. Zur Einstellung der Werte der Aquariensteuerung werden 5 Schalter benötigt.

Zur Tastaturabfrage über eine Analogleitung verwendet man einen Spannungsteiler aus 6 Widerständen, der durch Taster abgegriffen wird.

Je nach Schalterstellung ändert sich die Eingangsspannung am Analogeingang. Der Spannungsteiler ist an der 5 V Betriebsspannung angeschlossen. Wichtig ist dabei, dass auch der Referenzeingang des Analogwandlers mit 5 V verbunden ist. Mit dem Aufbau ergibt sich eine lineare Stufung durch die einzelnen Tasten. Damit auch der Zustand „keine Taste gedrückt“ eindeutig erkannt werden kann, wird ein zusätzlicher Widerstand verwendet. Dieser verändert allerdings auch die einzelnen Stufen des Spannungsteilers, was die der Auswertung berücksichtigt werden muss. Zur Auswertung im Programm enthält die Tabelle Spannungen die Eingangswerte für jede Taste. Zugleich ist über die Reihenfolge der Tabelleneinträge die Tastenzuordnung möglich. Es muss eine gewisse Toleranz der tatsächlichen Spannungsmessung berücksichtigt werden. Wenn ein Eingangswert weniger als 3 Stufen vom in der Tabelle gespeicherten Zuordnungswert abweicht, wird die entsprechende Taste erkannt und in einer Variablen gespeichert.

 

5.6. Der DCF77-Emfänger zum Empfang des Zeitsignals

DCF77 ist ein Zeitsignal und wird auf der Normalfrequenz 77,5 kHz  (Langwelle 3900mm) als Zeitinformation in kodierter Form ausgestrahlt. Die Sendeleistung beträgt etwa 50 kW bei einer ausgestrahlten Leistung von etwa 30 kW in einer Reichweite von ca. 2000 km im Umkreis um Frankfurt/Main bzw. Mainflingen.

Die Trägerfrequenz wird mit Sekundenmarken amplitudenmoduliert. Mit Ausnahme der 59. Sekunde wird zu Beginn jeder Sekunde die Trägeramplitude für die Dauer von 0,1s oder 0,2s auf etwa 25 % abgesenkt. Durch das Fehlen der 59. Sekundenmarke wird die Sekunde 0 der nächstfolgenden Minute angekündigt. Die unterschiedliche Dauer der Sekundenmarken dient zur binären Codierung von Uhrzeit und Datum. Dabei entsprechen Sekundenmarken mit einer Dauer von 0,1s der binären Null und solche mit einer Dauer von 0,2s der binären Eins. Insgesamt lassen sich auf diese Weise 59 digitale Bits übertragen. Aus diesen Bits kann nach einer Minute die Zeitinformation zusammengestellt werden. Einmal während jeder Minute werden also die Ziffern von Minute, Stunde, Tag, Wochentag, Monat und Jahr BCD-codiert übertragen. Das übertragene Zeittelegramm gilt jeweils für die folgende Minute.

Der BN 641138 DCF77-Empfänger arbeitet mit einer Betriebsspannung zwischen 1,5 - 15 V und benötigt 3 mA. Seine Ausgänge liefern das digitalisierte Sekundensignal des DCF–Senders normal und invertiert. Bei dem normalen Signal dauert eine Absenkung für einen LOW Digitalwert 80 – 120 ms, für einen HIGH Digitalwert 180 – 220 ms. Aus den 59 übermittelten Digitalwerten kann die Uhrzeit, das Datum usw. ermittelt werden. Um den besten Empfang zu erhalten sollte die Breite der Ferritantenne in Richtung Frankfurt zeigen.

Der Steuercomputer C-Control besitzt einen Eingang für einen DCF77-Funkuhrempfänger. Damit ist ein sekundengenaues Ausführen von Schaltfunktionen realisierbar. Alternativ dazu ist über den DCF77-Eingang eine Frequenzmessung möglich. Der Anschluss einer DCF77-Aktivantenne an den C-Control-/BASIC Steuercomputer kann entweder über die dafür vorgesehene dreipolige Stiftleiste (J3) oder über einen Spezialport an einer der beiden Buchsenleisten erfolgen. Die dreipolige Stiftleiste stellt die Spannungsversorgung für die Aktivantenne zur Verfügung (5V, GND) und empfängt die Signalimpulse von der Antenne (DCF77). Die Antenne muss dazu über einen Open-Collector-Ausgang nach Masse verfügen, der durch das empfangene Signal geschaltet wird (low-getastet).

Bei Betrieb der C-Control-Unit mit einer DCF77-Aktivantenne informiert die Grüne LED über den Status des Funkuhrempfängers. Blinkt sie im Sekundentakt, dann ist die DCF77-Aktivantenne korrekt angeschlossen und ein Funksignal wird empfangen. Stark unregelmäßiges Blinken deutet auf Empfangsstörungen hin, die eventuell durch besseres Platzieren oder Ausrichten der Antenne beseitigt werden können. Leuchtet die grüne LED dauerhaft, dann wurde eine korrekte Zeitinformation empfangen die auch quarztaktgesteuert weiterläuft, wenn zwischenzeitlich der Funkempfang gestört sein sollte. Im C-Control wird die Zeit Variablen Day, Hour, Minute, Month, Second und Year abgelegt.

 

6. Die Platinen

Angefertigt mit dem Layoutprogramm Eagle Version 6

Unterseite der Platine mit Spannungsversorgung, Relais und EVG-Ansteuerung

                

Oberseite der Platine mit Messverstärker für pH-Wert und Temperatur, Tastatur, LCD-Anschluss und Steckerleisten für den C-Control

Unterseite

 

7. Platinen anfertigen

Dazu druckt man das Layout auf Overhead-Folie (gibt es für Ink-Jet oder Laser). Ein Laserdrucker ist natürlich idealer wegen der Konturenschärfe. Mit einem guten Ink-Jet ist das Bedrucken aber auch möglich. Es ist zunächst zu kontrollieren, ob die Abmaße korrekt sind (vielleicht vorher auf normalem Papier ausprobieren!).

Belichtung der Platine:

Das ausgedruckte Layout muss mit UV-Licht auf den Fotopositivlack der Platine übertragen werden. Dazu benötigt man eine Lage Schaumstoff (0,5 bis 2 cm dick), die größer als die Platine ist, eine Glasplatte, die ebenfalls größer als die Platine ist sowie eine Lichtquelle mit hohem UV-Anteil. Schaumstoff und Glasplatte haben bei mir die Abmessungen 15 cm x 20 cm. Das reicht für übliche Layouts.

Als Lichtquelle verwende ich eine 250 W Fotolampe (Nitraphot S250W). So eine 250 W-Lampe entwickelt mehr Wärme, als die meisten Lampenfassungen verkraften. Daher sollte man hier unbedingt auf eine Porzellan-/Keramiklampenfassung zurückgreifen, und im Zweifelsfall 'häppchenweise' belichten (1 Minute belichten im Wechsel mit 2 Minuten Abkühlzeit).

Eine Glasplatte aus Quarzglas verschluckt weniger UV-Licht als normales Glas und ist deshalb besser geeignet. Mit normalem Glas lassen sich aber die gleichen Ergebnisse erreichen- die Belichtungsdauer wäre dann etwas länger.

Die Platine wird zunächst auf das benötigte Maß zurechtgeschnitten. Dann wird vom zugeschnittenen Stück die Schutzfolie entfernt. Da der Lack kaum tageslichtempfindlich ist, kann dies (wenn man schnell arbeitet) bei normaler Beleuchtung geschehen.

Die Platine wird mit der Fotolackschicht nach oben auf den Schaumstoff gelegt. Das spiegelbildlich ausgedruckte Layout wird mit der Druckseite auf die Platine gelegt. Damit ist das Layout wieder seitenrichtig, und zwischen Fotolack und Druckerfarbe ist kein Abstand für störendes Streulicht (Konturenschärfe!). Darauf kommt nun die saubere Glasplatte. Sie hat die Aufgabe dafür zu sorgen, dass das Layout platt auf der Platine aufliegt und nicht verrutscht.

Skizze: Anordnung zum Belichten

Nun folgt der einzige kritische Abschnitt der Patinenerstellung- die Belichtung. Kritisch ist dabei die Belichtungszeit.

Ich befestige die Lampe ca. 15 cm bis 25 cm über der Platine und belichte dann 6 –15 Minuten. Dies ist das Ergebnis einer Belichtungstestreihe. Diese Zeit hängt aber von vielen Faktoren ab und muss deshalb von jedem selbst ausprobiert werden.

 Der Abstand der Lampe zur Platine ist wichtig. Ein verdoppelter Abstand viertelt die UV-Strahlung! Daher ist es wichtig, immer mit dem gleichen Abstand zu arbeiten. Die Glasplatte verschluckt einen Teil der UV-Strahlung, also immer die gleiche Glasplatte benutzen! Die Layoutvorlage ist je nach Herstellungsverfahren (Tinte + Folie oder Toner + Transparentpapier) unterschiedlich UV-transparent. Je nach Alter und Lagertemperatur sind die Platinen unterschiedlich empfindlich. So können manchmal auch schon 3 Minuten ausreichend sein. Mir ist aufgefallen, dass „Noname-Material“ eine sehr unterschiedliche Belichtungszeit aufweist, und auch verschieden empfindlich auf Entwickler reagiert. Wer die Belichtungsexperimente im Rahmen halten möchte sollte auf Marken-Platinen (Bungard) zurückgreifen. Diese sind etwas teurer, lassen sich aber immer gleich gut verarbeiten.

Aufgrund der hohen Lichtleistung der Lampe verbietet sich es von selbst, beim Belichten in die Lampe zu schauen. Der hohe UV-Anteil  ist schließlich für die Augen schädlich.

Muss es doch eine zweiseitige Platine sein, müssen beide Layouts ausgedruckt und präzise zu einer Tasche verklebt  werden (Tesa). In diese Tasche wird die Platine zum Belichten eingelegt, und mit Klebeband fixiert. Dann lassen sich nacheinander beide Seiten belichten.

Wer mit Sonnenblumenöl-Layouts arbeitet, sollte die Platine vorsichtig abwaschen, falls Öl auf die Platine gekommen ist.

Die anschließende Entwicklung mit Entwicklerlösung dauert ca. 1 min. Anschließend wird die Platine unter fließendem Wasser  gründlich abgespült. Wenn richtig belichtet/entwickelt wurde, müssen die Kontakte etwas dunkler und matter sein und dürfen jetzt noch nicht leiten, da sich noch der Lack darauf befindet. Der Rest der Platine sollte den typischen Kupferglanz haben. Er leitet auch, da sich darauf kein Lack mehr befindet.

Die Platine ätzt man in Natriumpersulfat-Lösung bei etwa 50°C. Das ganze dauert so lange, bis nur noch die Kontakte und die Leiterbahnen übrig sind (ab und zu bewegen, dauert ca 20 min). Danach muss die Platine abgespült werden. Des weiteren ist auch bekannt, dass Kupfer im Laufe der Zeit oxidiert, gerade in warmer Umgebung. Optimal ist es daher, die Kontakte zu verzinnen (galvanisieren).

 

8. Stückliste

Bauteilbezeichnung

Wert

Kenzeichnung

Anzahl

Widerstand

100k Ohm

R2,R10,R16,R14,R21

5

Widerstand

330 Ohm

R4,R5,R6

3

Widerstand

2,2k Ohm

R7,R8,R9

3

Widerstand

18k Ohm

R11

1

Widerstand

43k Ohm

R12

1

Widerstand

680k Ohm

R15

1

Widerstand

12k Ohm

R18

1

Widerstand

82k Ohm

R20

1

Widerstand

2,7M Ohm

R19

1

Widerstand

560k Ohm

R27

1

Widerstand

27k Ohm

R26

1

Widerstand

3,3k Ohm

R22,R23,R24,R25,R29

5

Widerstand

10k Ohm

R28,R36,R37

3

Widerstand

1k Ohm

R30,R32,R43,R44

4

Widerstand

4,7k Ohm

R33

1

Widerstand

8,4k Ohm

R34

1

Widerstand

10 Ohm

R38

1

Widerstand

120k Ohm

R39

1

Widerstand

33k Ohm

R40

1

Widerstand

680 Ohm

R41

1

Widerstand

2,7k Ohm

R 42

1

Poti

100k Ohm

R1,R3

1

Poti

25k Ohm

R3,R17

2

Poti

50km Ohm

R13

1

Poti

100 Ohm

R35

1

Kondensator (Elko)

220µF

C1,C2,C5,C6

4

Kondensator

100nF

C3,C4,C7,C8,C9,C10,C12,C11,C14,C15

10

Kondensator

220nF

C13

1

IC

7812

IC1

1

IC

7912

IC2

1

IC

7805

IC3

1

IC

7905

IC4

1

IC

LM358

IC5

1

IC

TL084

IC6

1

IC

µA741

IC7

1

Diode

1N4148

D1,D2,D3

3

Z-Diode

BZX 55C 4V7

D7

1

LED

Blau

D4,D5,D6

3

LED

Grün 24V

Betriesanzeige

1

Transistor

C557B

T1,T2

2

Transistor

BC560C

T3

1

LCD-Modul

4X16

 

1

DCF77-Emfänger

BN 641138

 

1

EVG

HF2x18/230-240 DIM

 

1

Steuercomputer

C-Control/Basic

 

1

Ph-Sensor

von Dennerle

 

1

Temperatursensor

KTY 10

 

1

Trafo

TR1

UI 39/13,5 (2X12V)

1

Relais

RP420012

K1,K2,K3

3

Optokoppler

PC8171

OK1

1

Optokoppler

PC8172

OK2

1

Gleichrichter

B80-C5000-3300

B1

1

Schraubklemmen

RM5/7,5mm-2er

 

13

Schraubklemmen

RM5/7,5mm-3er

 

2

Stiftleiste

RM 2,54-20pol

SV1,SV2

2

Stiftleiste

RM 2,54-10pol

LCD

1

 

9. Inbetriebnahme

9.1 Inbetriebnahme des Controllers

Um den Controller richtig nutzen zu  können, ist folgendes zu beachten:

·         Vor dem Einsetzen der C-Controller-Platine sind die beiden Jumper J4 (RS232-Schnittstelle) und J5 (Auto-Start) zu stecken.

·         C-Control/Basic-Platine auf die  Messverstärkerplatine aufstecken.

·         Anschließen der +5V/-5V Versorgungsspannung

·         Verbinden der 3 Digitalports und des Analogausgangs mit den Relais-Treibern und dem Verstärker.

·         Anschluss der DCF77-Antenne

·         Verbindung von PC und C-Control herstellen mit einem gerade durchgeschleiften RS232-Verbindungskabel, also eines mit einem männlichen und einem weiblichen neunpoligen Sub-D Stecker.

·         Installation der C-Control-Programmiersoftware und Einstellung der Verbindungs-Parameter auf:

Bit pro Sekunde: 9600

Daten Bits: 8

Stop Bits: 1

Flussteuerung: kein Protokoll

·         Netzteil einschalten (auf keinen Fall vorher!)

·         Laden des C-Basic-Programms

·         Kompilieren des C-Basic-Programms

·         Übertragen des C-Basic-Programms zur C-Control. Dabei leuchtet die rote LED auf der Kommunikationsplatine so lange, bis die Übertragung beendet ist.

·         Zum Starten des Controllers die Start-Taste betätigen. (zum Stoppen die Stopp-Taste)

9.2 Inbetriebnahme der Messverstärker

Die Messverstärker, die an den Analogeingängen des Controllers angeschlossen werden, sind in zwei Gruppen gegliedert:

1.     Messverstärker mit niederohmigen Eingängen

2.     Messverstärker mit hochohmigen Eingängen

Zu 1:

Die Messverstärker mit niederohmigen Eingängen, wie der Temperaturfühler, sind gegenüber Einflüssen von außen relativ unempfindlich. Dennoch können Störeinstrahlungen durch elektromagnetische Felder zu Fehlmessungen führen, wenn die Fühler unmittelbar im Bereich von Neonröhren oder in fließendem Wasser untergebracht sind. In diesen Fällen sollte der Fühler mit einem geerdeten Edelstahlrohr umgeben sein, welches gleichzeitig als Erdung für das Aquarium dienen kann.

Zu 2:

Die Messverstärker mit hochohmigen Eingängen, wie das pH-Meter, sind hochempfindlich und können mit Leichtigkeit Funkwellen empfangen, wenn die Eingänge unsachgemäß eingerichtet und verkabelt sind. Sie sind sogar so empfindlich, dass ein Lufthauch eine Messwertänderung bewirkt. Bevor solch ein Messverstärker fest eingebaut wird, sollte daher ein über mehrere Tage verlaufender Test erfolgen, um festzustellen, ob Störungen auftreten. Dazu wird er mit seinem Ausgang an ein Digitalvoltmeter oder ein Oszilloskop angeschlossen und geprüft, ob die Ausgangsspannung bei ordnungsgemäß angeschlossener Elektrode stabil bleibt. Der Anschluss der Elektrode erfolgt bei beiden Geräten unmittelbar an dem hochgebogenen Beinchen des IC-Eingangs. Es muss dafür gesorgt werden, dass die Verbindung zwischen Platine und BNC-Buchse nicht länger als ca. drei Zentimeter wird. Der Isolationskörper der BNC-Buchse muss am Besten durch Eintauchen der Buchse in Azeton nach dem Anlöten von allen Lot- und Fettresten befreit sein, damit zwischen der Seele und dem Buchsengehäuse nicht etwa ein Fingerabdruck den Eingangswiderstand vermindert. Genauso verfährt man mit der Lötseite der Platine, die mit einem in Azeton getränkten, sauberen Taschentuch von allen Fett- und Lotresten gereinigt werden muss. Besteht danach das Gerät den Test, wobei Abweichungen von +/- 1 Digit auftreten dürfen, dann kann es endgültig in das Gehäuse eingebaut werden.

Sollten größere Messwertschwankungen auftreten, dann sollte zunächst überprüft werden, ob die Platine sauber gelötet und entfettet ist. Ist letzteres der Fall, dann können die Schwankungen durch neue Elektroden erzeugt sein, welche erst einige Zeit benötigen, bis sich die chemischen Abläufe in ihnen beruhigt haben. Sind alle Bedingungen erfüllt, dann rühren Messwertschwankungen nur noch von äußeren Einflüssen her, z.B. durch einen Sender in näherer Umgebung, der in das nur einfach geschirmte Kabel der Elektroden einstrahlt. Genauso stören auch Trafos, Neonleuchten, Pumpenmotore u.s.w..

Es ist nicht ganz einfach, in solchen Fällen Abhilfe zu schaffen. Zunächst einmal sollten dann die Messverstärker in eigene kleine Metallgehäuse eingebaut werden. Eine erhebliche Verbesserung wird erzielt, wenn das Aquarium geerdet ist. Dazu braucht man nur unten und oben offene Edelstahlrohre zu verwenden, die am Erdleiter angeschlossen werden, und in deren Zentrum die Elektroden mit einem Abstandhalter positioniert werden.

Fließendes Wasser bildet für hochempfindliche Elektroden ein sehr schlechtes Milieu, weil sich Spannungsfelder unkontrolliert aufbauen und zu erheblichen Fehlmessungen führen. In diesem Fall hilft dann ebenfalls oft eine Abschirmung der Elektrode, die gleichzeitig für eine Beruhigung der Wasserbewegung innerhalb des Rohres sorgt.

 

10. Stromlaufpläne

Messverstärkerplatine:

 

 

 

Spannungsversorgungs-, Relais-, Treiber- und Verstärkerplatine:

 

 

11. Quellenangaben

Web:

 

Bücher: