,.-+678re lkjh Seite 8 von Lasaros Goumas

Lackis

Lasaros logo Goumas


Startseite


Anwendungen mit Microcontrollern


Bei allen nachfolgend beschriebenen Schaltungen handelt es sich um in Hardware ausgefuehrte und getestete Anwendungen, wobei als Microcontroller ausschlie lich Chips der Firma Microship verwendet werden. Fuer 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 Loesung beansprucht aber zu viele PIC Ausgaenge, 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 Batterieladegeraet

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 Akerkettenzaehlwerk_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: "Ankerkettenzaehlwerk_XC8"

PDF Dokument: "XC8_Kettenzaehlwerk Beschreibung"

PDF Dokument: "Chain_counter"


3.8 Rotationsencoder

Nachfolgend wird die Software beschrieben welche notwendig ist, um einen handelsueblichen KY 040 Rotationsencoder mit Hilfe des Micro Controllers PIC 18F25k22 der Firma Microchip zu betreiben. Die hierzu verwendete Schaltung ist im Bilddokument "Rotary Encoder" niedergelegt.

Der vorliegender Encoder wird mit 5V betrieben und liefert im Ruhezustand bei seinen drei Ausgaengen die Signale CLK;DT und SW 5V (high). Der Ausgang SW ist unabhaengig von der Drehrichtung der Achse, wird nur fuer Schaltvorgaengen benutzt, und zwar als ein Schalter in NO Betriebsart betrieben. Die Ausgaenge CLK und DT werden abhaengig vom Zustand von zwei raeumlich leicht versetzt angebrachte LEDs gesteuert, und liefern demnach pro Encoder CLICK zeitlich versetzte und auf NULL gerichtete Signale an die genannten Ausgaenge.

Zu Erlaeuterung der Funktionsweise des Encoders wird auf das PDF Dokument "Encoder basics" verwiesen. Dem genannten Dokument kann unschwer entnommen werden, dass die Drehrichtung des Encoders "Clockwise" oder "Counterclockwise" zunaechst einmal aus der Reihenfolge des Auftretens der Nulldurchgaenge an den Ausgaengen CLK und DT abhaengig ist. Durch die Vermessung des Timing eines handelsueblichen KY 040 Encoders hat sich herausgestellt, dass der Mindestabstand zwischen den Nulldurchgaengen der LEDs von CLK und DT ca. 30ms beträgt und damit keinerlei Kollisionen bei der Auslesung der Signale durch den Microconroller zu erwarten sind.

Das Herzstueck der hierfuer verwendete Software zur Ermittlung der Drehrichtung, des Encoders, der Anzahl der Detents (KLCKs), und der Feststellung, ob die Encoderachse gedrueckt wurde, ist ihre Interrupt Steuerung. Durch diese Steuerung wird ein externes Interrupt INT0 durch den Eingang RB0 und zwei weiter externe Interrupts INT1 und INT2 durch die Eingaenge RB1 und RB2 ausgeloest. Die Initialisierung der genannten Interrupts, erfolgt durch Setzen der Interrupt Control Register INTCONbits.INT0IE = 1; INTCON3bits.INT1IE = 1 und INTCON3bits.INT2IE = 1, und selbstverstaendlich durch das Loeschen der zugehoerigen externen Interrupt flags. Bei der Initialisierung muessen außerdem alle drei INTEDG0;1 und 2 Bits des INTCON2 Registers geloescht werden, damit sichergestellt wird, dass Interrupts nur durch Aenderungen der Control Signale von "High" auf "LOW" (Falling Edge) erfolgen.

Ein Interrupt, erzeugt durch den Eingang RB0 und entdeckt durch das Bit INT0IF des Registers INTCON, fuehrt zu einer Aenderung am Ausgang von RB3, was wiederum darauf hinweist, dass die Achse des Encoders gedrueckt wurde. Wird beim Auftritt eines Interrupts festgestellt, dass die Bedingung "INTCON3bits.INT1IF>INTCON3bits.INT2IF" erfuellt ist, so deutet dies darauf hin, dass der Uebergang von "High" auf "LOW" des Encoderausgangs CLK dem Ausgang DTvorauseilt, d.h. dass der Encoder um einem Klick nach rechts gedreht wurde. Als Reaktion wird dann im Display die Angabe "Clockwise", begleitet von der Anzahl der aktuellen Klicks (Detents), erscheinen. Wird dagegen festgestellt, dass die Bedingung "INTCON3bits.INT2IF>INTCON3bits.INT1IF" erfuellt ist, so deutet dies darauf hin, dass der Uebergang von "High" auf "LOW" des Encoderausgangs DT dem Ausgang CLK vorauseilt, d.h. dass der Encoder um einem Klick nach links gedreht wurde. Als Reaktion wird dann im Display die Angabe "Counterclockwise", begleitet von der Anzahl der aktuellen Klicks (Detents), erscheinen. Wenn keine der zuletzt genannten Bedingungen zutreffen, so deutet dies darauf hin, dass der Encoder zu seiner urspruenglichen "Idle Position" zurueckgedreht wurde, und im Display erscheinen die Angaben "Encoder Zero Position".

Zur Anzeige der Daten wird das display EA DOC M126E-A der firma Display vision verwendet, waehrend die hiezu verwendete Software im PDF Dokument "Encoder" niedergelegt ist

Bild Dokument: "Rotary Encoder"

PDF Dokument: "Encoder basics"

PDF Dokument: "Encoder"


Seitenanfang