Controller Board V1.0

Entwicklung eines Controller Boards

Controller Board V1.0

Beschreibung des Controllerboards
Anschluss des Keyboards an den PIC
Anschluss des Tastenfelds an den PIC
Anschluss des MAX232 an den PIC
Anschluss des DS1302 an den PIC
Anschluss des ULN2803 an den PIC
Anschluss des EEPROMS an den PIC

SCHALTPLAN

Beschreibung des Controllerboards


Datum 20.01.2009

Ich habe ein neues Projekt begonnen.
Ziel des Projektes ist es, ein Controller Board zu entwickeln.
Das Board soll folgendes beinhalten:

-         LCD-Display
-         4x3 Matrixtastatur
-         Zusätzliches Tastenfeld bestehend aus 10 einzeln Tasten
-         Kontroll-LED
-         Lautsprecher
-         RS232 Schnittstelle mit Pegelwandler
-         IIC-Bus
-         Relais mit Treiber

Das Board selbst besteht aus zwei Europlatinen mit Längsraster.

Dieses Controller Board basiert auf einem 40 pol. PIC 16F877.

    

BILD1

PIC16F877 Getaktet wird der PIC mit einem 4 MHz Quarz. Ein 5 Volt Stabilisierungs-IC mit 220 uF Kondensator sekundärseitig dient zur Spannungsstabilisierung. Auf diesem Board habe ich bisher ein 4 Zeilen 20 Zeichen LCD-Modul installiert. Das Modul wird über den Port B mit 4 Bit-Initialisierung angesteuert. Hierbei werden die die Ports PB4-PB7 des PIC16F877 mit den Ports DB4-DB7 des Displays verbunden. Port PB3 des PICs wird mit dem RS PIN des Displays verbunden. Port PB2 des PICs wird mit dem EN PIN des Displays verbunden. Der R/W PIN des Displays wird auf Masse gelegt, da ich nur in das Display schreiben und nichts daraus lesen will. Zur Kontrastregelung verwende ich ein 10K Poti. Ein Pin des Potis wird mit Masse, der andere Pin mit 5 Volt verbunden. Der Schleifkontakt des Potis wird mit dem Vo des Displays verbunden. Zusätzlich habe ich zur Kontrolle eine rote LED an den PB0 des PICs über einen 270 Ohm Widerstand mit Masse verbunden. Das Board sieht dann so aus:

BILD2

Controllerboard V1.0 Das Keyboard wurde noch nicht angeschlossen. _________________________________________________________________________________________________________

Anschluss des Keyboards an den PIC


Datum 31.03.2009

Anschluss des Keyboards an den PIC

Ich habe das Keyboard angeschlossen.
Dazu habe ich mir folgendes überlegt,
man kann eine 3x4 Matrix Tastatur (Keyboard) auf verschiedene Arten an den PIC anschliessen.
Z.B. kann man es über Widerstände an einen Digitalport anschliessen und die Ports einzeln
abfragen, um festzustellen, ob eine Taste gedrückt ist.
Hierbei werden allerdings 7 Ports verschwendet. 3 für die Spaltenabfrage und 4 für die Reihenabfrage.
Da mir das garnicht zusagte, 7 wertvolle Ports zu verschwenden, habe ich mich dazu entschlossen,
die Tastatur über Widerstandsteiler an einen Analogport anzuschliessen und zwar den Port AN0, der
über den PIN 2 des PICs rausgeführt wird.
Die Matrixtastatur hat 7 Anschlusspins.
Es werden jeweils die Anschlusspins für die 3 seknrechten Spalten einzeln rausgeführt.
Ebenso werden werden die Anschlusspins für die 4 waagerechten Reihen einzeln rausgeführt.
Die Schaltung mit den Widerständen sieht dann so aus:


    

BILD3

Controllerboard V1.0 Bei nicht gedrückter Taste kann man einen Wert von 1023 auslesen. Dieser Wert ändert sich in Abhängigkeit des Widerstandsteilers und der jeweils gedrückten Taste. Ich habe diese Werte für jede Taste ermittelt, s. Tabelle: Taste Wert 1 = 502 2 = 332 3 = 2 4 = 527 5 = 377 6 = 96 7 = 551 8 = 415 9 = 173 0 = 451 * = 573 # = 241 Um festzustellen, welche Taste gedrückt wurde, muss man nur noch die Werte mit der Tabelle vergleichen. Hierbei kann es jedoch zu leichten Schwankungen kommen. Manchmal z.B. kann bei gedrückter Taste "1", welche ja den Wert 502 haben sollte, ein Wert von 501 ausgelesen werden. Dies führe ich auf Bauteiltoleranzen und Temperaturschwankungen zurück. Um diese Fehler zu kompensieren, habe ich in der Abfrageschleife des Programms einen Wertebereich von +-5 zugelassen. D.h. Die Taste "1" wird abgefragt, in dem ich Werte von 497 bis 507 abfrage. Die Abfrage für Taste "1" sollte dann so lauten: Wenn Analogwert an AN0 größer oder gleich 497 und Analogwert an AN0 kleiner oder gleich 507 dann ist Taste "1" gedrückt. Ich habe heute ausserdem einen Piezolautsprecher an den Port C0 des PICs angeschlossen. C0 ist der PIN 15. Datum 01.04.2009 Schaltplan für Controllerboard V1.0:

BILD4

Controllerboard V1.0 Datum 14.01.2010 Zwischenzeitlich habe ich das Controllerboard um einige Elemente erweitert. Hinzugekommen sind: - zusätzliches Tastenfeld mit 10 Funktionstasten - IC MAX232N serieller Schnittstellenkonverter - 9 polige D-SUB-Buchse zum Anschluss eines seriellen Schnittstellenkabels - IC DS1302 Trickle Charge Timekeeping Chip (Uhren-IC) - IC ULN2803 Treiber-IC für Relais - 12 Volt Relais + LED + Vorwiderstand als Statusanzeige des Relais Das Schaltbild sieht jetzt so aus:

BILD5

Controllerboard V1.0_10Controllerboard V1.0 Schaltplan 07.01.2010

______________________________________________________________________________________________________


Anschluss des Tastenfelds an den PIC



Das Tastenfeld wurde nach dem gleichen Prinzip angeschlossen, wie die Matrixtastatur.
Ich habe das Tastenfeld an den PIN3 des PICs, welcher dem Analogeingang AN1 entspricht, angeschlossen.


    

BILD6

Funktionstastenfeld ______________________________________________________________________________________________________

Anschluss des MAX232 an den PIC



Damit der PIC mit dem PC oder anderen Geräten kommunizieren kann, benötigt dieser eine RS232 Schnittstelle.
Diese ist bereits in den PIC 16F877 integriert und zwar PIN26 = RX und PIN25 = TX.
Der PIC arbeitet mit 5V TTL-Pegel.
Viele Geräte jedoch, wie zum Beispiel ein PC, liefern an der RS232-Schnittstelle +12V/-12V.
Um Geräte mit TTL-Pegel, mit Geräten mit +12V/-12V Pegel verbinden zu können, benötigt man einen
RS232-Schnittstellenpegelkonverter, den MAX232. Damit der MAX232 die Spannung umwandeln kann
benötigt dieser zum Betrieb 4 Elkos.


    

BILD7

RS232 ______________________________________________________________________________________________________

Anschluss des DS1302 an den PIC




Da ich das Controllerboard später auch zur Langzeitdatenaufzeichnung verwenden möchte,
benötige ich eine Uhrzeit, die sehr genau geht und, die auch nach Stromausfall noch vorhanden ist.
Hierzu ist der DS1302 bestens geeignet.
Als Versorgungsspannung benötigt der IC 5VDC und als Batteriepufferung, bei Stromausfall,
reichen 3VDC aus. Als Pufferung habe ich eine CR2032 Knopfzelle verwendet.
Der IC benötigt zur Funktion noch einen Quarz mit 32,768 KHz.
Man kann Uhrzeit und Datum in den IC vom PIC aus per Datenleitung einprogrammieren.
Die Uhrzeit und Datum sind dann jederzeit per Datenlaitung abrufbar.
Auch, wenn die Hauptspannungsversorgung von 5VDC ausfällt, läuft die Uhrzeit weiter und
ist später wieder abrufbar.


    

BILD8

DS1302 ______________________________________________________________________________________________________

Anschluss des ULN2803 an den PIC




Da das Controllerboard später auch etwas steuern soll, benötigt es Relais.
Der PIC16F877 kann direkt keine herkömmlichen Relais ansteuern.
Erstens sind die Ausgangsströme zu gering und zweitens würde die rückläufige
Induktionsspannung, wenn das Relais abfällt, den PIC zerstören.
Hierzu kann man einen Treiber-IC, den ULN2803 verwenden.
Dieser eignet sich bestens dafür, um zwischen Controller-ICs und Relais, als
Treiberstufe eingesetzt zu werden.
In dem Treiber-IC sind acht Darlington Transistor Arrays integriert.
D.h. man kann bis zu acht Relais damit schalten.
Die notwendigen Freilaufdioden, zur Vernichtung der Induktionsspannung, sind
ebenfalls schon vorhanden.


    

BILD9

ULN2803
_______________________________________________________________________________________________________

Anschluss des EEPROMS an den PIC


Datum 10.02.2009

Anschluss des EEPROMS an den PIC

Ich habe das EEPROM angeschlossen.

SDA wurde mit Port C4 verbunden
SCL wurde mit Port C3 verbunden
Als Pullups für die Datenleitungen habe ich 10K Widerstände verwendet.

Die Schaltung mit den Widerständen sieht dann so aus:


    

BILD10

EEPROM Ausserdem habe ich die 4 Relais inklusive LEDs angeschlossen. Datum 13.11.2009 Als letztes habe ich einen Transistor Q2 Bc337, zur Beleuchtungssteuerung des Displays an den Port RB.1 angeschlossen. ________________________________________________________________________________________________________ Das Controllerboard ist nun fertig. Schaltplan für Controllerboard V1.0: Das endgültige Schaltbild sieht jetzt so aus:

BILD11


SCHALTPLAN


<Controllerboard V1.2_11_02Controllerboard V1.2 Schaltplan 11.02.2015



______________________________________________________________________________________________________

E-Mail Kontakt


Aktuelle Projekte


Zurück zur Hauptseite