Lackis

Lasaros logo Goumas


Startseite


Anwendungen mit Microcontrollern


Bei allen nachfolgend beschriebenen Schaltungen handelt es sich um in Hardware ausgeführte und getestete Anwendungen, wobei als Microcontroller ausschließlich Chips der Firma Microship verwendet werden. Für die bei den beschriebenen Anwendungen verwendete Peripherieelemente, wie diskrete AD-Wandler, 7 Segment Anzeigen oder LCD-Displays, gibt es- soweit nicht explizit angegeben- keinen Typenzwang.


Inhaltsverzeichnis

1. Peripherie Elemente

2. Microcontroller Kommunikationsschnittstellen

3. Ausgeführte Schaltungen


1. Peripherie Elemente

1.1 Standard DOT Matrix LCD-Displays

Um die Hardware Kommunikation zwischen einem Microcontroller und ein Display zu ermöglichen, gibt es mehrere Alternativen. Die einfachste und schnellste Ansteuerung erfolgt über einen 8 Bit breiten Datenbus und 3 Steuersignale. Diese Lösung beansprucht aber zu viele PIC Ausgänge, und wird in der Regel kaum verwendet.

Im vorliegenden Fall wird die im Bild Dokument mit dem Titel „LCD 4 bit Ansteuerung“„LCD 4 bit Ansteuerung“ verwendet, bei der vom PIC lediglich 4 Datenleitungen und weitere 2 Steuerleitungen (wenn im Display nur Zeichen geschrieben werden sollen) benötigt werden. Für die Übertragung eines 8 Bit Befehls werden demnach zweimal 4 Bit übertragen, womit sich eine doppelt so lange Übertragungsdauer ergibt.

Der Befehlssatz des LCD Displays unter verwendung der HD 44780 Display controllers, als auch der ASCII Zeichensatz sind im PDF-Dokument unter dem titel "Display_Befehle"niedergelegt. Die hierzu notwendige XC8 Software Datei, kann dem PDF-Dokument "LCD_4Bit"entnommen werden

Bild Dokument: "LCD 4 Bit Ansteuerung"

PDF Dokument: "Display_Befehle"

PDF Dokument: "LCD_4Bit"


1.2 SPI (Serial Peripheral Interface) DOT Matrix LCD-Displays

Der Vorteil dieser Ansteuerungsart liegt darin, dass hier lediglich 4 Ansteuerungsleitungen benötigt werden, was allerdings dazu führt, dass die Datenbits nacheinander zum Display übertragen werden müssen.

Im vorliegenden Fall wird ein Display EA DOG M126E-A der Firma Electronic Assembly verwendet, das auch den Vorteil hat, dass der Beleuchtungskörper separat ausgesucht und gekauft werden kann.

Der Schaltungsaufbau ist im Bild-Dokument mit dem Titel „Stromlaufplan SPI“ beschrieben, während die Assembler Software für die Display Initialisierung, für die Befehlsübertragung und die Datenübertragung im PDF-Dokument mit dem Titel "SPI_Hello World" niedergelegt ist.

Bild Dokument: "Stromlaufplan SPI"

PDF Dokument: "SPI_Hello World"


1.3 RTC (Real time clock)

Nachfolgend wird die Realisierung einer Echtzeituhr beschrieben, welche für eine Menge elektronischer Steuerungsanwendungen benötigt wird, wie zB. für die Ermittlung des Azimuts und der Elevation von Solarpanels, damit sie optimal ausgerichtet werden können.

Die hierzu im Bilddokument "Stromlaufplan_RTC“ verwendete Schaltung basiert auf einem Quarz mit einer Resonanz von 4.096Mhz, weil dieser Quarz sich hervorragend zur Erzeugung von Ganzen Bruchteilen von Sekunden Zeiteinheiten eignet. Im vorliegenden Fall wird mit Hilfe des 16 Bit TMR0 Timers des Kontrollers PIC 18F522 der Firma Mikrochip, welcher einen 1/8 Prescaler nutzt und einen Interrupt aller 32.000 Instruktion Stepps erzeugt, eine Pulsbreite von 250ms erzeug, welche anschließend über einfache arithmetische Manipulationen in Sekunden, Minuten oder Stunden in einem Display zur Anzeige gebracht werden.

Die Einstellung der aktuellen Zeit erfolgt im Display über einen Umschalter und zwei Drucktaster. Der Umschalter wird benötigt, um Änderungen im der Minuten- bzw. Stundenanzeige vorwählen zu können. Mit jedem Drucktaster wird ein Interrupt ausgelöst, welcher eine Erhöhung bzw. Erniedrigung der gewählten Zeiteinheit um „Eins“ verursacht.

Zur Anzeige der Daten wird das Display EA DOG M126E-A der Firma Display Vision verwendet, währent die hierzu verwendete Software im PDF-Dokument „Sekunde“ nieder gelegft ist.


Bild Dokument: "Stromlaufplan_RTC"

PDF Dokument: "Sekunde"


1.4 PWM (Pulsweitenmodulation)

PWM

Bei der Pulsweitenmodulation (engl. Pulse Width Modulation, abgekürzt PWM) wird das Verhältnis zwischen der Einschaltzeit und der Periodendauer eines Rechtecksignals bei fester Grundfrequenz variiert. Das Verhältnis zwischen der Einschaltzeit "tein" und der Periodendauer"T=tein+taus" wird als das Tastverhältnis "dc" (duty cycle) bezeichnet.

Die Beschreibung des Verfahrens, die Berechnung des arithmetischen Mittelwertes welcher bei der Pulsweitenmodulation entsteht, sowie die Ermittlung der aus dem Netz entnommenen Leistung, sind im PDF-Dokument "PWM_Beschreibung" niedergelegt.

Im PDF-Dokument "PWM_10K20%" ist der Ablauf der Steuerung für die Erzeugung einer Pulsweitenmodulation bei einer Periodendauer von 10KHz und ein Tastverhältnis von 20% mit Hilfe eines PIC 18F25K22 Mictocontrollers der Firma Microchip dargestellt.

Im PDF-Dokument "PWM_variable<"/strong> ist der Ablauf der Steuerung für die Erzeugung einer Pulsweitenmodulation bei einer Periodendauer von 10KHz und einem variablen Tastverhältnis von 0% bis 100% ebenfalls mit Hilfe des PIC 18F25K22 Mictocontrollers dargestellt.

PDF Dokument: "PWM_Beschreibung"

PDF Dokument: "PWM_10K20%"

PDF Dokument: "PWM_variable"


2. Microcontroller Kommunikationsschnittstellen

2.1 Asynchrone, serielle Schnittstelle RS 232

2.1.1 Arbeitsweise der RS 232 Schnittstelle

Für die Kommunikation mit der Außenwelt stellen moderne PCs ausschließlich leistungsfähige USB-Schnittstellen zur Verfügung. Da jedoch USB-Schnittstellen für Microcontroller Anwendungen außerordentlich komplex sind, kann die Kommunikation zwischen Microcontroller und PC nur über eine asynchrone, serielle Schnittstelle erfolgen, welche mit wenig Aufwand zu erstellen ist, wie zB der RS 232; vorausgesetzt, der Ausgang der RS 232 Schnittstelle des Microcontrollers wird über einen USB/Seriellen Wandler - der für wenig Geld erhältlich ist- an einem USB Port des PC angeschlossen, welches damit dem Benutzer einen „virtuellen COM-Port“ zur Verfügung stellt.

RS 232_Buchstabe K

Eine RS 232 Schnittstelle ist hardwaremäßig leicht zu realisieren, da sie nur eine Sende, eine Empfangs- und eine Massenleitung benötig, und bei einseitigen Übertragungen sogar mit nur zwei Leitungen auskommt. Ein Nachteil dieser Schnittstelle ist allerdings die Tatsache, dass sie Daten nicht in TTL-Pegel überträgt, und stattdessen in der Regel Übertragungspegel von +12 (Low) und -12V (High) verwendet, was den Einsatz von geeigneten Pegelumsätzern wie den Transceiver 323A von Maxim erfordert. Die Übertragungsleistung der RS 232 Schnittstelle (üblicherweise zwischen 10 und 100kbaud) ist für Microcontroller Anwendungen in der Regel jedoch völlig ausreichend.

Das Protokoll der RS 232 Schnittstelle ist relativ einfach. Sie beginnt mit einem Start-bit, gefolgt von den 8 zu übertragenden Bits eines Datenwortes, einem Stopp-bit und schließlich von einem zu Absicherung des Übertragungsweges verwendetem Parity-bit. Das Parity-bit gibt an, ob die Summe der „Einsen“ in einem Datenwort gerade oder ungerade ist. Das zur Absicherung des Übertragungsweges verwendete Parity-bit, muss, damit es vom Empfänger überprüft werden kann, sendeseitig für jedes zu übertragende Datenwort neu errechnet und dem Datenwort beigefügt werden. Da dieses Verfahren einerseits aufwendig ist und andererseits nur bei Korrumpierung eines einzelnen Datenbits erfolgversprechend ist, wird auf die Verwendung eines Parity-bits bei der hier beschriebenen Schaltung verzichtet.

2.1.2 Anbindung eines PC an die Übertragungsstrecke

Um Daten vom Microcontroller an einen PC zu senden oder Daten von ihm empfangen zu können, wird im vorliegenden Fall der PC, mit Hilfe des open source Programms PuTTY, zu einen Terminal konfiguriert. Nach Öffnen des genannten Terminalprogramms ist es notwendig die Betriebsart „Serial“ anzuwählen und unter Connection ebenfalls die Page „Serial“ zu öffnen. Unter der Überschrift: „Select a Serial line“ wird man aufgefordert, den COM Port zu definieren, an dem der USB/Serielle Wandler angeschlossen ist. Unter der Aufforderung „configure the serial line“ sind im vorliegenden Beispiel folgende Informationen einzutragen:

  • Speed (Baud) 19.200

  • Data bits 8

  • Stopp bits 1

  • Parity None

  • Flow control None

Damit können im geöffneten PC- Fenster die empfangenen Daten angezeigt werde. Befehle, eingegeben durch die Tastatur des PC, werden nicht mehr am PC angezeigt, sie lösen aber stattdessen Aktionen beim Microcontroller aus.

2.1.3 Beschreibung der Microcontroller Schaltung

Die Schaltung basiert auf den PIC 16F876A Controller der Firma Microship, weil er über einen „Universal Synchronous Asynchronous Receiver Transmitter-Modul“ (USART-Modul) verfügt, mit dem man bidirektionale synchrone wie auch Asynchrone Übertragungen realisieren kann, und zwar mit Hilfe der Register TXSTA, RCSTA und RCREG. Darüber hinaus verfügt er auch zur Einstellung der Übertragungsgeschwindigkeit noch über das Register SPBRG (Baud Rate Generator). Die Struktur der Register TXSTA, RXSTA und des Baud Rate Generators ist als PDF-Dokument unter dem Titel „USART Register PIC16F876A“ niedergelegt. Die Gesamtschaltung, welche im Bild Dokument „RS 232“ dargestellt ist, beinhaltet unabhängig von der für den Betrieb des Microcontrollers notwendigen Peripherie, wie Z.B. eine 5V PSU, einen 4MHz Oszillator und einen MAX323A Transceiver, sowie 4 Taster, um Informationen an den PC liefern zu können, als auch noch 4 LED´s um den Empfang von Informationen welche vom PC gesendet werden bestätigen, zu können.

2.1.4 Initialisierung des Microcontroller Interfaces

Damit die bidirektionale asynchrone Daten Übertragung (UART) zwischen PC und Microcontroller korrekt erfolgt, müssen beide Seiten mit einer möglichst gleichen Übertragungsgeschwindigkeit arbeiten. Da unter §2.1.2 für den Terminal eine Baud Rate von 19.200 Baud gewählt wurde, muss der Microcontroller ebenfalls mit einer möglichst ähnlichen Baud Rate operieren. Aus Table 10-1 (§ 10.1) des Dokuments „USART Register PIC16F876A“ ergibt sich, dass, wenn ein asynchroner High Speed Betrieb gewählt wird, die Baud Rate aus der Formel Fosc/(16(X+1)) errechnet werden kann. Einen passenden wert nämlich X=12 findet man dann in Table 10-4 desselben Dokuments. Trägt man diesen X Wert ins Register SPBRG ein, dann ist sichergestellt, dass der Controller mit einer Baud Rate von 19.231 Baud arbeitet, was sehr nahe an der Baud Rate des PC (19.200 Baud) liegt.

Wie die einzelnen Bits der Register RXSTA und RCSTA für das vorliegende Beispiel auszufüllen sind, kann ohne Schwierigkeiten aus den Abschnitten „REGISTER 10-1“ und „REGISTER 20-2“ des PDF- Dokuments „USART Register PIC16F876A“ entnommen werden. Für den Benutzer der Schnittstelle empfiehlt sich dennoch folgende Vorgehensweise:

  • Bit SPEN im RCSTA Register auf „Eins“ setzen, damit die RC6 (TX) und RC7 (RX) Pins des Microcontrollers als Serial Port Pins benutzt werden können.

  • Bit SYNC im TXSTA Register auf „Null“ setzen, damit die Schnittstelle im Asynchronous Mode betrieben werden kann.

  • Bit TX9 im TXSTA Register auf „Null“ setzen, damit bei der Übertragung nur 8 Bit Worte (kein Parity Bit) gesendet werden.

  • Bit TXEN im TXSTA Register auf „Eins“ setzen, um über die Schnittstelle überhaupt Daten senden zu können.

  • Bit TRMT im TXSTA Register abfragen und warten bis dieses Bit auf „Eins“ wechselt, .h. bis das Daten Register TXREG leer ist und damit mit neuen Daten beschrieben werden kann.

  • Bit CREN im RCSTA Register auf „Eins“ setzen, damit über die Schnittstelle im Asynchronous Mode Daten kontinuierlich empfangen werden und im Empfangsregister RCREG gespeichert werden können.

  • Bit RCIF im PIR1 Register abfragen, um festzustellen ob der Receiver Buffer voll (Eins) oder Leer (0) ist.

  • Bit OERR im RCSTA Register abfragen, um sicher zu stellen, dass es keinen Datenüberlauf am RCREG Register gegeben hat, verursacht durch das hinein nehmen von neuen Daten, obwohl die alten Daten noch nicht abgenommen wurden. Wird ein Overrun Error (OERR Bit auf „Eins“) gemeldet, so kann dies durch das kurzzeitige Unterbrechen gelöscht werden, und wieder Einschalten des kontinuierlichen Empfangs durch Löschen und Wiedereinschalten von Bit CREN im RCSTA Register. Danach können wieder Daten vom RCREG abgeholt werden.

Die Assembler Software für die Initialisierung der RS 232 Schnittstelle, und für die Datenübertragung ist im PDF-Dokument mit dem Titel "RS 232_ASM" niedergelegt.

Bild Dokument: "RS 232"

PDF Dokument: "USART Register PIC16F876A"

PDF Dokument: "RS 232-ASM"


3. Ausgeführte Schaltungen

3.1 Spannungsmessung

Zur Messung einer Spannung Umax<16V mit einer Genauigkeit von 10mV wird der Microship Controller PIC 16F876A verwendet, der einen 10 Bit AD Wandler besitzt, während zu deren Anzeige der SPI DOT Matrix-Display EA DOG M126E-A der Firma Electronic Assembly herangezogen wird. Die verwendete Schaltung ist identisch mit der im PDF-Dokument „Stromlaufplan SPI“ im Kapitel 1.2 gezeigten Konfiguration.

Da der Controller eine maximale Eingangsspannung von 5V verarbeiten kann, muss die an dem analogen Input anzulegende Messspannung vorher mit dem Faktor 0,25 multipliziert werden. Um die gemessene Spannung in Volt mit zwei Stellen hinder dem Komma anzeigen zu können, muss der vom AD Wandler in [Bit] ausgegebene Registerwert mit 500 multipliziert und anschließend durch 1.024 dividiert werden. Da Multiplikationen und Divisionen mit Microcontrollern sehr aufwendig sind, müssen solche Operationen hier mit entsprechenden Umrechnungen wie folgt vermieden werden.

Registerwert*(500/1.024)=Registerwert*[400/1.024+100/1024)=Registerwert*(100/256+100/1.024)=Registerwert*(25/64+25/256) =Registerwert*25(1/64+1/256)

Registerwert*(25/64+25/256)=Registerwert*25(1/64+1/256)

Eine Multiplikation mit 2 erreicht man durch Verschieben der Bits nach links, während man eine Division durch 2 durch eine Verschiebung der Bits nach rechts erreichen kann. Demnach gilt:

Registerwert*[2*2*2*(2+1)+1]/64+Registerwert*[2*2*2*(2+1)+1]/256

Der so gemessene und um den Faktor 100 vergrößerter Wert muss nun mit 4 multipliziert werden, damit man den am Display anzuzeigenden Binärwert erhält.

Um den gemessenen Wert am Display anzeigen zu können, muss man die in Binärform angegebene Zahl in eine Dezimalzahl umwandeln. Im vorliegenden Beispiel erhält man bei einem Eingangsspannungsbereich von 0 bis 16V einen Binärwert von 0 bis 1600, also eine Zahl mit bis zu 4 Dezimalstellen. Um zum Beispiel die tausender Dezimalstelle zu erhalten, müsste man die gemessene Zahl durch 1.000 dividieren. Da eine solche Division sehr umständlich ist, greift man lieber zu einer mehrfachen Subtraktion durch 1.000, und zwar so lange, bis das Ergebnis negativ wird. Die Anzahl der Subtraktionen, bei der das Ergebnis negativ wird, gibt dann die Wertigkeit der tausender Stelle.

Die beschriebene Vorgehensweise für die Tausender und hunderter Stelle ist in Pseudoassembler als PDF-Dokument unter dem Titel „Wandlung Binär auf Dezimal“ niedergelegt. Die gesamte Assemblersoftware ist im PDF-Dokument „Vmessung_ASM“ zu finden

PDF Dokument: "Wandlung Binär auf Dezimal"

PDF Dokument: "Vmessung_ASM"


3.2 Temperaturmessung

Hiermit soll mit Hilfe des Temperatursensors „LM35 DZ“ und des Mikrokontrollers „PIC 18F25K22“ die Umgebungstemperatur gemessen und auf einem „LCD-Display (GE_1602 B_T)“ angezeigt werden (Siehe: Bild Dokument:„Thermo“).

Der Sensor liefert eine analoge Spannung von 10mV/°C, welche über den 10 Bit AD-Wandler des Mikrokontrollers erfasst und anschließend in Dezimalform für das Display aufbereitet wird. Der verwendeter Mikrokontroller wird zwar mit einem auf Fosc = 8MHz eingestellten stabilen internen Oszillator betrieben (OSCCON = 0b01100100), aber die update rate des AD-Wandlers soll auf Fosc/16 = 500kHz begrenzt werden. Laut Datenblatt des Kontrollers (EQUATION 17-1) beträgt die minimale Acquisitions Zeit des AD-Wandlers z.B. bei einer Temperatur von 50°C, einen externen Widerstand von 10kOhm und eine Betriebsspannung von 3V ,TACQ = 7.45µs. Bei der Betriebsfrequenz von 0,5MHz (TAD = 2 µs), muss man demnach dem AD-Wandler eine Acquisitions Zeit von mindesten 4TAD zugestehen. Will man schließlich das Ergebnis des AD-Wandlers in Right justified format erhalten, so muss das entsprechende Register wie folgt eingestellt werden: ADCON2 = 0b10010101.

Bei einer maximalen Umgebungstemperatur von Tmax=99,9°C am Sensor erhält man am Ausgang des AD-Wandlers einen Binärwert von:

Tmax = 999mV*1.024/5.000 = 205Bit

Um die anzuzeigende Spannung in Dezimalform zu erhalten, wird wie folgt vorgegangen:

Vmax = Tmax*(4.000/1.024+1.000/1.024) = 205*125(1/32+1/128)

Damit das Display die so erhaltenen Hunderter-, Zehner-, und Einer- Dezimalwertigkeiten anzeigen kann, müssen sie in „ASCII Format“ umgerechnet werden, d.h. man muss zu allen diesen Dezimalwerten den Hexadezimalwert (0x30) dazu addieren. Die gesamte XC8 Software ist im PDF-Dokument „Thermo_XC8“ zu finden

Bild Dokument: "Thermo"

PDF Dokument: "Thermo_XC8"


3.3 Kapazitätsmessung

Die Kapazitätstoleranzen – speziell bei Elektrolytkondensatoren- sind im Allgemeinen groß. Wenn man aber die Kapazität eines Kondensators genauer wissen möchte, muss man ihn mit Hilfe einer geeigneten Schaltung messen. Eine solche Schaltung ist im Bild „Captest_XC8“ wiedergegeben.

Im vorliegenden Fall wird die Entladezeit des zu messenden, auf 5V vollgeladenen Kondensators mit Hilfe eines Mikrokontrollers (PIC 18F25K22) ermittelt, in µF umgerechnet und in einem im SPI-Betrieb arbeitenden 16-Zeichen/2-Zeilen LCD (EA DOC M162E-A) angezeigt.

Für die Entladung des Kondensators im Zeitbereich gilt:

U(t)=Uo*e^(-t/RC)=Uo*e^(-t/t)=5*e^(-2)=0,68V

Misst man die Entladezeit des Kondensators nach Ablauf von zwei Zeitkonstanten (t=2t), so muss die Schwelle des LM393 Komparators (Com1) 0,68V betragen. Der Entladewiderstand bestehend aus R6 und dem Einschaltwiderstand des Analogschalters CD4066 CE, beträgt näherungsweise 1kOhm. Durch die Wahl der Entladezeit t=2t, und des Enladewiderstandes R=1kOhm erhält man demnach pro Messzyklus den doppelten Wert des Kondensators in µF.

Nach dem Einschalten und der Initialisierung des LCDs, geht der Mikroprozessor im den Wartezustand und sendet an das Display die Information „PRESS START“. Nachdem START gedrückt wurde, erscheint im Display der Kapazitätswert des Kondensators in Mikrofarad (µF) mit einer Stelle hinter dem Komma.

Die maximale Anzeige lautet 99,9 uF. Überschreitet die Kapazität des Kondensators 100µF, so erscheint am Display die Anzeige „OVERFLOW Press RESTART“. Durch das Drücken der Taste RESTART wird die Messung wiede

Bild Dokument: "Captest_XC8"

PDF Dokument: "Captestr"


3.4 Frequensmessung

Im vorliegenden Projekt wird mit Hilfe des Mikrokontrollers PIC 18F45K22, die Frequenz einer externen Quelle gemessen und das Ergebnis an einen 16-Zeichen, 2-Zeilen Display des Typs GE_1602 B_T angezeigt. Die Schaltung ist im Bild „Frequency counter“ gezeigt. Der in dem genannten Bild gezeigte Zusatz, bestehend aus 3 NAND-Gatter, einem 10nF Kondensator und einem 1Kohm Widerstand, simuliert einen mit etwa 9KHz laufenden externen Testoszillator.

In der gezeichneten Schaltung, ein Timer (Timer0), welcher in einem 16-bit Mode betrieben wird, zählt die Anzahl der Impulse des am Clock Eingangs TOCK1 (RA4) des Mikrokontrollers angeschlossenen externen Signals, welche innerhalb eines definierten Zeitfensters erscheinen. Das Ergebnis der Messung wird über eine 4-bit Ansteuerung am LCD-Display, welches an PORTB des Mikrokontrollers angeschlossen ist, angezeigt.

Beträgt die Länge des Zweitfensters eine Sekunde, so erscheint am Display die Frequenz des zu messenden Signals in Herz. Durch die Benutzung des 16-bit Zählers ist es demnach möglich, Frequenzen bis zu 65.535 [Hz} zu messen. Multipliziert man jedoch die genannte Variable 65535 mit der Anzahl der Überläufe des TMR0 Zählers, so kann man auch wesentlich höhere Frequenzen messen. Im vorliegenden Fall ist die maximale Frequenz auf 50[KH) eingestellt. Überschreitet das Messsignal diesen Wert, so bleibt der Mikrokontroller stehen, und gibt über das Display die Anweisung "Overflow/Press Reset" heraus.

Das Zeitfenster von einer Sekunde soll mit Hilfe des ebenfalls im 16-bit Mode betriebenen Timer1 erzeugt werden. Jedoch ist auf Grund der Tatsache, dass der Mikrokontroller mit 8[MHz] betrieben wird, nicht möglich, mit dem Timer1 direkt das genannte Zeitfenster zu erzeugen. Stattdessen wird der Timer1 so konfiguriert, dass er alle 250ms ein Interrupt erzeugt, so dass man nach vier Interrupts annehmen darf, dass danach 1 Sekunde vergangen ist. Hierzu wird zunächst mit Hilfe eines „Prescalers“ von 1/8 für den Timer1 ein „instuction cyrcle“ von Ic=4µs eingestellt. Um die Dauer eines jeden Überlaufs von Timer1 auf 250ms einstellen zu können, muss die Voreinstellung des Timers lauten:

TMR1 = 65536 – 250.000/4 = 3.036 d.h. TMR1L = 0xDC / TMR1H = 0x0B

Der Programmablauf ist im PDF Dokument "Fr_counter" niedergelegt.

Bild Dokument: "Frequency counter"

PDF Dokument: "Fr_counter"


3.5 Stroboscope


3.5.1 Beschreibung des Vorhabens

Um die Drehzahl schnell drehenden Maschinen messen zu können, bedient man sich eines Stroboskops. Die Bezeichnung Stroboskop ist eine Zusammensetzung aus dem griechischen „Stróßilos“ (Wirbel) und „skopeín??“ (Beobachten) und bezeichnet ein Blitzgerät, das Lichtblitze in konstanten zeitlichen Abständen abgibt, wodurch bei dunkler Umgebung Bewegungen als eine Abfolge von stehenden Bildern erscheinen (Stroboskopischer Effekt).Dieser Effekt verursacht eine opptische Täuschung, welche auf die Nachbildwirkung auf die menschliche Netzhaut zurückzuführen ist.

Timer NE555

Mit Hilfe einer von einem spannungsgesteuerten Oszillator (VCO) kontrollierten LED- Leuchte sollen nun Drehzahlen im Bereich 69 bis etwa 12.000 RPM (1 bis 200 Hz) gemessen werden. Die Auswertung der Oszillationsfrequenz der Leuchte soll mit Hilfe des Mikrokontrollers PIC 18F25K22 erfolgen. Die Drehzahl soll dann mit an einem, in SPI-Mode (Serial Parallel Interface) betriebenen LCD-Display (EA DOG M162E-A) angezeigt werden.

3.5.2 Spannungsgesteuerter Oszillator (VCO)

Der spannungsgesteuerte Oszillator wird mit Hilfe des Präzisions-Timers NE555, der als astabiler Multivibrator (Ref. Fig. 3.5.1) geschaltet wird, realisiert. Seine Trigger-Referenz wird über drei gleich große Widerstände R von jeweils 5k eingestellt und beträgt demnach 1/3 bzw. 2/3 der Versorgungsspannung (hier 5V).

Die Spannungsverläufe Vc und y können der Fig. 3.5 2 entnommen werden.

Für eine festeingestellte Frequenz des Multivibrators können der Fig. 3.5.1 folgende Beziehungen entnommen werden:

Spannungsverläufe_NE555

Aufladung des Kondensators: (3,333-1,667)=(5-1,667)*(1-e^(-t1/tau1)) bzw. t1 = -tau1*ln0,5 = (R1+R2)*C*0,693

Entladung des Kondensators: 1,667=3,333*e^(-t2/tau2) bzw. t2 = -tau2*ln0,5 = R2*C*0,693

Die Periodendauer der Schwingung ergibt sich aus: T = t1 + t2 = (R1+2R2)*C*0,693

Für die Frequenz erhält man dann: f=1,44/((R1+2R2)*C)

Das Tastverhältnis errechnet sich aus: t2/t1=1/(1+R1/R2)

Da für die vorliegende Aufgabe die Frequenz des Multivibrators über eine externe Spannung variiert werden soll, wird der Timer von Pin 5 aus mit einer Steuerspannung zwischen 2 und 4V angesteuert. Bei einer Steuerspannung von 2V ergeben sich Trigger-Spannungen von 1 bzw. 2V, während bei einer Steuerspannung von 4V betragen die Trigger-Spannungen 2 bzw. 4V. Der Trigger-Kondensator wird über zwei 120k Widerstände (R1/R2) auf- bzw. entladen. Der hier beschriebene Oszillator lässt sich auch so konfigurieren, dass er eine Frequenz mit dem Tastverhältnis 1:1 erzeugt. Da dies jedoch für den vorliegenden Anwendungsfall irrelevant ist, wurde darauf verzichtet. Die Kondensatorwerte zur Einstellung der unterschiedlichen Frequenzbereiche sind im PDF-Dokument "Stroboscope_Skalierung" dargestellt, und die Gesamtschaltung ist im Bild "Stroboscope_VCO" niedergelegt.

3.5.3 Mikrokontroller Programm

In der gezeichneten Schaltung, ein Timer, welcher in einem 16-bit Mode betrieben wird, zählt die Anzahl der Impulse des am Clock-Eingang TOCK1 (RA4) des Mikrokontrollers PIC 18F25K22 angeschlossenen Ausgangs des Präzisionstimers (VCO), welche innerhalb eines definierten Zeitfensters erscheinen. Beträgt die Länge des Zweitfensters eine Sekunde, so erhält man als Ergebnis die Frequenz des als spannungsgesteuerter Oszillator betriebener Präzisionstimers in Herz.

Das Zeitfenster von einer Sekunde soll mit Hilfe des ebenfalls im 16-bit Mode betriebenen Timer1 erzeugt werden. Jedoch ist es auf Grund der Tatsache, dass der Mikrokontroller mit 8 [MHz) betrieben wird, nicht möglich, mit dem Timer1 direkt das genannte Zeitfenster zu erzeugen. Stattdessen wird der Timer1 so konfiguriert, dass er alle 250msec ein Interrupt erzeugt, so dass man nach vier Interrupts annehmen darf, dass danach 1 Sekunde vergangen ist. Hierzu wird zunächst mit Hilfe eines "Prescalers von 1/8 für den Timer1 ein "instruction cyrcle" von Ic=4µs eingestellt. Um die Dauer eines jeden Überlaufs von Timer1 auf 250ms einstellen zu können, muss jedoch die Voreinstellung des Timers lauten:

TMR1 = 65536 – 250.000/4 = 3.036 d.h. TMR1L = 0xDC / TMR1H = 0x0B

Die so ermittelte Frequenz des Oszillators, multipliziert mit dem Faktor 60, ergibt dann die Frequenz, mit der die LED-Blitzlampe angesteuert wird.

Das Ergebnis der Messung wird über eine serielle (SPI) Ansteuerung an dem 16-Zeichen, 2-Zeilen LCD-Display angezeigt, und zwar so, dass in Zeile 1 die erzeugte Frequenz, und in Zeile 2 die Anzahl der Umdrehungen der Prüflings erscheinen.

Im vorliegenden Fall ist die maximale Frequenz auf 200 [Hz] (12.-000 [RPM]) eingestellt. Überschreitet das Messsignal diesen Wert, so bleibt der Mikrokontroller stehen, und gibt über das Display die Anweisung"Overflow/Press Reset".

Der Programmablauf ist im PDF Dokument "Stroboscope_XC8" niedergelegt.

Bild Dokument: "Stroboscope_VCO"

PDF Dokument: "Stroboscope_Skalierung"

PDF Dokument: "Stroboscope_XC8"


3.6 MOSFET Batterieladegerät

Nachfolgend wird eine Schaltung zur Aufladung von GEL-Batterien über eine Solaranlage unter Verwendung von MOSFET-Transistoren anstelle von elektromechanischen Trennelementen beschrieben. Für die Steuerung der Ladungsbetriebsarten "Bulk" (Aufladung mit maximalen Ladestrom bis auf eine Batteriespannung von 14,25V) und "Float" Einstellung der Erhaltungsladung der Batterie bei einer Spannung von 13,7V) wird der Mikrokontroller PIC 18F25K22 der Firma Micrpochip verwendet.

Die Gesamtschaltung der Anlage ist im Bild "MOSFET Stromlaufplan" wiedergegeben. Eine Besonderheit der Schaltung besteht darin, dass hierbei als Operationsverstärker vorwiegend NORTON-Amplifier verwendet werden, welche bekanntlich mit eine hochohmige Beschaltung ausgeführt werden können. Durch die hochohmige Beschaltung ist es möglich, unangenehme Auswirkungen der Variation der Ein-bzw. Auschaltwiderständen des verwendeten Analogschalterbausteins CD4066BE auf die Übertragungscharakteristiken der Verstärker auf ein Minimum zu beschränken. Ausführungsdetails der Schaltung sind im PDF-Dokument "MOSFET Batterieladeregler Beschreibung" wieder gegeben.

Zur Anzeige der Batteriespannung und des Ladestroms wird ein Display EA DOGM 162E-A der Firma Electronic Assembly betrieben in 4Bit Mod. verwendet.

Die Spezifikation der Software wird im PDF-Dokument "MOSFET Batterieladeregler Pseudo Assembler"gezeigt, während der Code selbst in PDF-Dokument "MOSFET Batterieladeregler C-Datei" niedergelegt ist.

Bild Dokument: "MOSFET Stromlaufplan"

PDF Dokument: "MOSFET Batterieladeregler Beschreibung"

PDF Dokument: "MOSFET Batterieladeregler Pseudo Assembler"

PDF Dokument: "MOSFET Batterieladeregler C-Datei"


3.7 Akerkettenzählwerk_XC8

Zur Anzeige der Länge einer abgewickelten bzw. aufgewickelten Kette in Metern bis zu einer Größe von 999m wird eine 3-stellige 7-Segment anzeige verwendet.

Die Messung erfolgt mit Hilfe eines an der Antriebstrommel der Kette befestigten Reed Sensors, dessen Impulse über einen Mikrokontroller PIC 18F25k22 der Firma Mikrochip erfasst werden. Die Messung beginnt beim Einschalten des Kontrollers mit der Anzeige “0“, und die Anzeige wächst um jeweils ein Meter, sowohl beim Abwickeln als auch beim Aufwickeln der Kette, wobei die gewählte Bewegungsrichtung der Kette (Up/Down) mit Hilfe des 7-Segment „Dot“ jeder Anzeigeeinheit signalisiert wird. Dabei leuchten alle „Dot´s“, wenn die LED´s die Länge der abgewickelten Kette anzeigen und bleiben dunkel, wenn die Kette aufgewickelt wird.

Der Schaltungsaufbau kann dem Bild "Ankerkettenzählwerk_XC8" entnommen werden. Ausführungsspezifische Details der Schaltung sind im PDF Dokument „XC8_Kettenzählwerk Beschreibung“ niedergelegt, und der Programmablauf ist im PDF Dokument „Chain_counter“ zu finden.


Bild Dokument: "Ankerkettenzählwerk_XC8"

PDF Dokument: "XC8_Kettenzählwerk Beschreibung"

PDF Dokument: "Chain_counter"


Seitenanfang