Drehzahlmessung mit Drehrichtungsanzeige
Drehzahlmessung mit Drehrichtungsanzeige Drehzahlmessung mit Drehrichtungsanzeige
Drehzahlmessung mit integrierter Richtungsanzeige Christian Radtke, Stefan Goerke -> G01 Bearbeitungszeitraum: 03.02.2009 - 30.06.2009
- Seite 2: Drehzahlmessung- und Richtungsanzei
- Seite 5 und 6: 4Quellenverzeichnis................
- Seite 7 und 8: Drehzahlmessung- und Richtungsanzei
- Seite 9 und 10: Drehzahlmessung- und Richtungsanzei
- Seite 11 und 12: Drehzahlmessung- und Richtungsanzei
- Seite 13 und 14: Drehzahlmessung- und Richtungsanzei
- Seite 15 und 16: Drehzahlmessung- und Richtungsanzei
- Seite 17 und 18: Drehzahlmessung- und Richtungsanzei
- Seite 19 und 20: Drehzahlmessung- und Richtungsanzei
- Seite 21 und 22: Drehzahlmessung- und Richtungsanzei
- Seite 23 und 24: Drehzahlmessung- und Richtungsanzei
- Seite 25 und 26: Drehzahlmessung- und Richtungsanzei
- Seite 27 und 28: Drehzahlmessung- und Richtungsanzei
- Seite 29 und 30: Drehzahlmessung- und Richtungsanzei
- Seite 31 und 32: Drehzahlmessung- und Richtungsanzei
- Seite 33 und 34: Drehzahlmessung- und Richtungsanzei
- Seite 35 und 36: Drehzahlmessung- und Richtungsanzei
- Seite 37 und 38: Drehzahlmessung- und Richtungsanzei
- Seite 39 und 40: Drehzahlmessung- und Richtungsanzei
- Seite 41 und 42: Drehzahlmessung- und Richtungsanzei
- Seite 43 und 44: Drehzahlmessung- und Richtungsanzei
- Seite 45 und 46: Drehzahlmessung- und Richtungsanzei
- Seite 47 und 48: Drehzahlmessung- und Richtungsanzei
<strong>Drehzahlmessung</strong><br />
<strong>mit</strong> integrierter Richtungsanzeige<br />
Christian Radtke, Stefan Goerke -> G01<br />
Bearbeitungszeitraum:<br />
03.02.2009 - 30.06.2009
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 2
Inhaltsverzeichnis<br />
1Information und Planung....................................................................................................................1<br />
1.1Lastenheft....................................................................................................................................1<br />
1.2Pflichtenheft................................................................................................................................2<br />
1.3Lösungsansatz.............................................................................................................................3<br />
1.3.1Beschreibung des Lösungsansatzes im Überblick..............................................................3<br />
1.3.2Technologieschema.............................................................................................................4<br />
1.3.3Blockschaltplan...................................................................................................................4<br />
1.4Arbeitsplanung............................................................................................................................5<br />
1.5Kostenplanung............................................................................................................................5<br />
1.5.1Entwicklungskosten............................................................................................................5<br />
1.5.2Fertigungskosten.................................................................................................................6<br />
2Durchführung.....................................................................................................................................7<br />
2.1Hardware.....................................................................................................................................7<br />
2.1.1Schaltungsbeschreibung......................................................................................................7<br />
2.1.2Schaltplan............................................................................................................................8<br />
2.1.3Bestückungsplan für Prototypen ........................................................................................8<br />
2.1.4Bauteilliste ........................................................................................................9<br />
2.1.5Platinenlayout für Serienfertigung ( <strong>mit</strong> EAGLE)..............................................................9<br />
2.1.6Bestückungsplan für Serienfertigung ( <strong>mit</strong> EAGLE)..........................................................9<br />
2.1.7Verdrahtungs- und Anschlussplan....................................................................................10<br />
2.2Software....................................................................................................................................11<br />
2.2.1Entwicklungsumgebung / Programmiersprache...............................................................11<br />
2.2.2Programmbeschreibung....................................................................................................11<br />
2.2.3Programmablaufplan / Struktogramm...............................................................................12<br />
2.2.4Quelltext............................................................................................................................13<br />
3Kontrolle und Dokumentation..........................................................................................................20<br />
3.1Inbetriebnahme, Mess- und Prüfprotokolle..............................................................................20<br />
3.2Bedienungsanleitung.................................................................................................................21<br />
3.3Fotos..........................................................................................................................................22<br />
3.3.1Gesamtaufbau....................................................................................................................22<br />
3.3.2Bestückungsseite der Platine (beschriftet)........................................................................22<br />
3.4Kritik der eigenen Projektplanung und – durchführung...........................................................23<br />
3.4.1Zeitplanung.......................................................................................................................23<br />
3.4.2Kostenplanung, tatsächliche Kosten.................................................................................23<br />
3.4.3Gewählter Lösungsansatz..................................................................................................23
4Quellenverzeichnis...........................................................................................................................24<br />
4.1Datenblätter...............................................................................................................................24<br />
4.2Beispielprojekte........................................................................................................................40<br />
4.3Fachliteratur..............................................................................................................................42<br />
5.0 Fehlersuche/Probleme.............................................................................................................42<br />
5.1 Überschreitung der Zeitplanung.............................................................................................43
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
1 Information und Planung<br />
1.1 Lastenheft<br />
Projektbezeichnung: Drehzahlmesser für Motor<br />
Projektleiter: Stefan Goerke, Christian Radtke<br />
Liefertermin: 30.06.2009<br />
Zielbestimmung:<br />
Es soll die Motordrehzahl über eine 7 Segment Anzeige wieder gegeben werden,<br />
sowie die Drehrichtung <strong>mit</strong>tels LED´s sichtbar gemacht werden soll.<br />
Produkteinsatz:<br />
Es findet Anwendung in unserer Lackierstrecke, um sicherzustellen, dass sie <strong>mit</strong> der richtigen<br />
Geschwindigkeit läuft. Die Anzeige der Drehzahl, sowie der Richtungsanzeige eines Rotors, ist für<br />
die Farbcodierung wichtig.<br />
Produktfunktion:<br />
Die neue Schaltung soll es unserer Mitarbeiter ermöglichen, die Drehzahl zu überwachen. Sie muss<br />
Benutzerfreundlich aufgebaut sein und so<strong>mit</strong> leicht ersichtlich sein. Für die Drehrichtung stellen wir<br />
uns ebenso eine optische Anzeige vor. Die neue Schaltung muss erweiterbar für eine eventuelle<br />
Motorsteuerung sein.<br />
Produktdaten:<br />
Der geplante Drehzahlmesser soll möglichst präzise und genau messen. Aufgrund unserer Initiative<br />
„Energiebewusster Betrieb“ soll die Steuerung einen sehr niedrigen Stromverbrauch haben und sich<br />
von unseren Maschinenfahrern leicht ausschalten lassen. Um Software – Updates vorzunehmen und<br />
in der Firma <strong>mit</strong> Mikrocontroller von Atmel vertraut sind, bitten wir diese zu verwenden.<br />
Technische Spezifikationen:<br />
- niedriger Energieverbrauch<br />
- Anzeigen des Wertes (in U/min) auf einer 7-Segment-Anzeige (4 Glieder)<br />
- Versorgungsspannung durch Batterie: 9V<br />
- Mikrocontroller: Atmel<br />
Kosten: max. 20€<br />
Garantie: 2 Jahre<br />
Seite 1
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Lieferumfang:<br />
- Dokumentation von Materialien etc.<br />
- Schaltplan<br />
- Bedienungsanleitung<br />
- Mikrocontroller Programm<br />
- Präsentation für Kunden<br />
Datum der Erstellung: 03.02.2009<br />
Auftraggeber:<br />
1.2 Pflichtenheft<br />
Projektbezeichnung: Drehzahlmesser für Motor<br />
Projektleiter: Stefan Goerke, Christian Radtke<br />
Liefertermin: 30.06.2009<br />
Kosten: 19,75€<br />
Garantie: 3 Jahre<br />
Zielbestimmung:<br />
Die Drehzahl eines Motors einer Lackstrecke wird auf einer 7-Segment-Anzeige wieder gegeben.<br />
Als zusätzliche Funktion wird die Richtung über zwei unterschiedlich farbige LED´s angegeben.<br />
Produktfunktion:<br />
Mittels einer Gabel – Lichtschranke, werden zwei Signale pro Umdrehung der Rotorscheibe an den<br />
Mikrocontroller über<strong>mit</strong>telt. Aufgrund von unterschiedlichen Zeitabständen er<strong>mit</strong>telt der<br />
Mikrocontroller ob eine linke oder rechte Drehrichtung vorliegt.<br />
Die Drehzahl wird über eine 7-Segment Anzeige ausgegeben. Eine grüne LED zeigt rechte und eine<br />
rote LED linke Drehrichtung an. Die Schaltung wird von einer 9V Batterie gespeist und ist <strong>mit</strong> 1A<br />
abgesichert. Für das komfortable Ein- und Ausschalten dient ein Schiebeschalter. Ein<br />
Mikrocontroller der Firma Atmel ist <strong>mit</strong> einem ISP Adapter versehen und kann so<strong>mit</strong> direkt auf der<br />
Platine programmiert, so wie Software Updates vorgenommen werden.<br />
Der Mikrocontroller ist zusätzlich durch einen externen 4 MHz Quarzoszillator getaktet.<br />
Seite 2
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Produktdaten:<br />
Technische Spezifikationen:<br />
- <strong>Drehzahlmessung</strong> über Gabellichtschranke<br />
- Batteriehalterung vormontiert<br />
- Einschalten <strong>mit</strong>tels Kippschalter<br />
- Messbereich: 300…5000 U/min<br />
- Versorgungsspannung durch Batterie: 9V<br />
- Spannungsstabilisierung durch 5V Festspannungsregler<br />
- Mikrocontroller: Atmel<br />
Lieferumfang:<br />
- Dokumentation von Materialien etc.<br />
- Schaltplan<br />
- Bedienungsanleitung<br />
- Mikrocontroller Programm<br />
- Präsentation für Kunden<br />
Datum der Erstellung: 10.02.2009<br />
Auftraggeber:<br />
1.3 Lösungsansatz<br />
1.3.1 Beschreibung des Lösungsansatzes im Überblick<br />
Die Aufgabe beinhaltet die Anforderungen der Drehrichtungserkennung sowie die dazugehörige<br />
<strong>Drehzahlmessung</strong>. Als Vorgabe wurde ein 24V Gleichstrommotor gestellt. Aufgrund dessen wurde<br />
eine Rotorscheibe gefertigt, die auf den Anker des Motors montiert wurde. Um ein Signal zu<br />
erzeugen, was von der Lichtschranke erfasst werden kann, wurde eine dreieckige Aussparung in die<br />
Rotorscheibe integriert. Für die Drehrichtungserkennung wurde eine zweite Lichtschranke benötigt.<br />
Diese stellt sicher, dass aufgrund von unterschiedlichen Zeitzyklen die Drehrichtung exakt erfasst<br />
werden kann.<br />
Seite 3
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
1.3.2 Technologieschema<br />
1. Im Programmablauf des<br />
Mikrocontrollers wird immer erst der<br />
Interrupt durch Lichtschranke1 ausgelöst.<br />
Diese startet den Timer12.<br />
2. Wenn nun Lichtschranke2 einen „High“<br />
Pegel ausgibt, wird der Wert aus Timer12<br />
in einem Interrupt zwischengespeichert<br />
und zurückgesetzt. Timer21 wird gestartet.<br />
3. Gibt nun Lichtschranke1 ein erneutes „High“ Signal aus, wird nun der Wert aus Timer21<br />
zwischengespeichert und zurückgesetzt. Timer12 wird gestartet.<br />
Ein Ablauf aus Schritt 2. und 3. wiederholt sich. Einmal pro Sekunde werden die<br />
zwischengespeicherten Werte <strong>mit</strong>einander verglichen und die Richtung durch die LED´s sichtbar<br />
gemacht.<br />
1.3.3 Blockschaltplan<br />
Seite 4
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
1.4 Arbeitsplanung<br />
Anhand dieser Tabelle wird ersichtlich, wann und über welche Zeitdauer einzelne Arbeitsschritte<br />
geplant worden sind und durchgeführt wurden.<br />
1.5 Kostenplanung<br />
Die Kostenplanung wurde durch eine Kombination aus den Entwicklungskosten, sowie den<br />
Fertigungskosten erstellt. Für das Material wurde ein Budget von maximal 20€ angesetzt.<br />
1.5.1 Entwicklungskosten<br />
Arbeitslohn: pro Person / Stunde = 8 * 20,00€ = 160,00€<br />
Dienstleistungskosten / Stunde: = 8 * 2,00€ = 16,00€<br />
Auflistung der Arbeitstage: 03.02.2009 10.02.2009 17.02.2009<br />
24.02.2009 03.03.2009 10.03.2009<br />
17.03.2009 24.03.2009 31.03.2009<br />
28.04.2009 05.05.2009 12.05.2009<br />
19.05.2009 26.05.2009 09.06.2009<br />
16.06.2009 23.06.2009 30.06.2009<br />
= 18 Tage * ((Arbeitslohn *2)+Dienstleistungskosten = 336,00€) = 6048,00€<br />
Seite 5
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
1.5.2 Fertigungskosten<br />
Die Fertigungskosten, bzw. Materialkosten belaufen sich auf 19,61€ und sind so<strong>mit</strong> im Soll-Bereich<br />
des Budgets. Die sonstigen anfallenden Kosten, wie Stromkosten für den PC etc., die Benutzung der<br />
Werkzeuge, Kleinmaterial wie Lötzinn und ähnliches wurde bereits bei den Entwicklungskosten<br />
unter Dienstleistungen berücksichtigt.<br />
Gesamtkosten: Entwicklungskosten + Fertigungskosten<br />
6048,00€ + 19,71€<br />
= 6067,71€<br />
Seite 6
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
2 Durchführung<br />
2.1 Hardware<br />
Nachdem die Art der Durchführung bekannt war, wurde der entsprechende Schaltplan dazu<br />
entworfen und die Bauteile daraufhin dimensioniert. Die Hardware wurde auf einer Europlatine<br />
untergebracht, auf der gleichzeitig auch der Motor <strong>mit</strong> der Rotorscheibe montiert ist. Um die<br />
Wartungs- und Reparaturarbeiten zu minimieren wurden die IC´s alle gesockelt, um ein schnelles<br />
Austauschen zu gewährleisten. Für die komfortablere Anschlussmöglichkeit des Motors wurden<br />
Buchsen in die Platine integriert. Der sichere Stand der Platine wird durch Aluminiumfüße <strong>mit</strong><br />
rutschfestem Kunststoffuntergrund gestellt. Als Schutzfunktion wurde eine Feinsicherung verbaut,<br />
die bei zu großem Strom auslöst. Zusätzlich dazu lässt sich die Schaltung durch einen<br />
Schiebeschalter ein- und ausschalten. Das Signal, das von den Lichtschranken an den<br />
Mikrocontroller weitergegeben wird, sieht folgendermaßen aus:<br />
Hier sieht man ganz deutlich, dass saubere Rechtecksignale herausgegeben werden.<br />
2.1.1 Schaltungsbeschreibung<br />
Unsere Schaltung besteht aus einer integrierten Spannungsversorgung, sowie dem eigentlichen<br />
Steuerstromkreis. Als Spannungsquelle dient eine 9 Volt Blockbatterie, die in eine Halterung<br />
eingefasst ist. Um die Schaltung komplett ausschalten zu können, wurde ein Schiebeschalter<br />
vorgesehen, der die Spannungsversorgung unterbricht. Der Überstromschutz wurde durch eine 1<br />
Ampere Feinsicherung realisiert. Da die integrierten Schaltkreise, sowie die meisten Bauteile eine<br />
Versorgungsspannung von 5 Volt benötigen, haben wir einen entsprechenden Festspannungsregler<br />
<strong>mit</strong> Beschaltung zur Spannungsglättung verwendet. Zur eigentlichen Funktion ist nun folgendes zu<br />
sagen: Das Signal der Rotorscheibe wird durch die beiden Gabellichtschranken abgegriffen und die<br />
Signale an den Mikrocontroller weitergegeben. Dort werden diese verarbeitet und als BCD - Code<br />
an die 7-Segment Treiber weitergeleitet. In diesen IC´s werden die Daten in den Zwischenspeicher<br />
abgelegt, umgewandelt in 7-Segment und an die 7-Segment Anzeigen ausgegeben. Für die<br />
<strong>Drehrichtungsanzeige</strong> sind 2 LED´s zuständig, welche durch den Mikrocontroller angesprochen<br />
werden. Für den Systemtakt wird ein 4 MHz Quarzoszillator verwendet. Um das Programmieren<br />
des Mikrocontrollers in der Schaltung zu ermöglichen, wurde der ISP Adapter <strong>mit</strong> in die Schaltung<br />
eingebunden.<br />
Seite 7
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
2.1.2 Schaltplan<br />
2.1.3 Bestückungsplan für Prototypen<br />
Der Bestückungsplan für den Prototypen gleicht dem der Stückliste der Bauteile. Hierbei wurden<br />
die gleichen Mengen verbaut, wie es auch später in der Serienfertigung erfolgen soll. Der Prototyp<br />
besitzt ein spezielles Platinenlayout, welches durch die „Wire-Wrap“ - Technik realisiert wurde.<br />
Dieses ist ein dünner Draht <strong>mit</strong> einer Kunststoffisolierung. Vorteil dieser Technik ist es, dass man<br />
beliebig viele Drähte übereinander verlegen kann, ohne das eine Gefahr des Überspringen der<br />
Signale auf einen anderen Leiter besteht. Das fixieren erfolgt durch Schlaufen auf der Platine, die<br />
jederzeit geöffnet werden können, um neue Hardwareerweiterungen vorzunehmen.<br />
Seite 8
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
2.1.4 Bauteilliste<br />
2.1.5 Platinenlayout für Serienfertigung ( <strong>mit</strong> EAGLE)<br />
Aufgrund unserer eingeschränkten Möglichkeiten beim Ätzen von Platinen, wird der Schaltplan<br />
inklusive des Bestückungsplanes an eine Fachkundige Firma weitergegeben. Diese fertigen daraus<br />
das Platinenlayout, sowie alle dazugehörigen Komponenten, wie beispielsweise den<br />
Bestückungsplan. Diese Maßnahme ist bereits in der Kostenauflistung <strong>mit</strong> vorgesehen, sodass für<br />
sie in dieser Hinsicht keinerlei Kosten anfallen werden.<br />
2.1.6 Bestückungsplan für Serienfertigung ( <strong>mit</strong> EAGLE)<br />
Wie schon in Punkt 2.1.5 beschrieben wird der Bestückungsplan durch eine Fremdfirma realisiert.<br />
Die entsprechenden Pläne etc. erhalten Sie, sobald der Vertrag für eine Serienfertigung Ihrerseits<br />
unterschrieben wurde.<br />
Seite 9
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
2.1.7 Verdrahtungs- und Anschlussplan<br />
Der Verdrahtungs- und Anschlussplan ist dem Schaltplan zu entnehmen. Dort sind alle Bauteile <strong>mit</strong><br />
den entsprechenden Pinbelegungen und Bezeichnungen aufgeführt. Um die Verdrahtung des<br />
Prototypen noch einmal zu verdeutlichen sind nachfolgend ein Paar Bilder aufgeführt, welche<br />
Aufschluss über die Verlegeweise und Bezeichnungen geben.<br />
Seite 10
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
2.2 Software<br />
2.2.1 Entwicklungsumgebung / Programmiersprache<br />
– Umgebung: AVR Studio 4.16 SP2<br />
– Programmiersprache: C<br />
2.2.2 Programmbeschreibung<br />
– Die Signale der Gabellichtschranken lösen jeweils einen Interupt aus.<br />
– Der Interupt von Lichtschranke1 inkrementiert den unsigned int „usec“. Außerdem wird der<br />
unsigned char „lichtschranke“ auf „1“ gesetzt, da<strong>mit</strong> festgelegt wird, dass Lichtschranke1 als<br />
letztes ausgelöst wurde. Der Wert vom long int „timer21“* wird in den long int „wert21“<br />
„zwischengespeichert“ und zurückgesetzt. Durch eine if-Anweisung werden diese Befehle nur<br />
ausgeführt, wenn „lichtschranke“ den Wert „0“ hat. Dadurch können die Interupts der<br />
Lichtschranken nur abwechselnd ausgelöst werden.<br />
– Im Interupt von Lichtschranke2 wird der unsigned char „lichtschranke“ auf „0“ gesetzt, da<strong>mit</strong><br />
festgelegt wird, dass Lichtschranke2 als letztes ausgelöst wurde. Der Wert vom long int<br />
„timer12“* wird in den long int „wert12“ „zwischengespeichert“ und zurückgesetzt. Durch eine<br />
if-Anweisung werden diese Befehle nur ausgeführt, wenn „lichtschranke“ den Wert „1“ hat.<br />
Dadurch können die Interupts der Lichtschranken nur abwechselnd ausgelöst werden.<br />
* „timer 12“ und „timer21“ werden im nächsten Abschnitt erläutert<br />
– Der Timer0 löst alle 5 Systemtakte eine ISR (Interupt Service Routine) aus, in der „timer12“<br />
oder „timer21“ (abhängig davon, welchen Wert „lichtschranke“ hat) inkrementiert wird.<br />
– Der Timer1 löst einmal in der Sekunde aus und hat 2 Funktionen:<br />
– Die long ints „wert12“ und „wert21“ werden verglichen:<br />
– Ist „wert12“ größer, wird LED2 (Rechtslauf) angesteuert.<br />
– Ist „wert21“ größer, wird LED1 (Linkslauf) angesteuert.<br />
– Aus dem unsigned int „usec“ wird eine Drehzahl errechnet, und rechnerisch auf 4 Ziffern<br />
aufgeteilt. Diese Ziffern werden über den Datenbus nacheinander ausgegeben, während über<br />
4 weitere Leitungen jeweils der „Latch Enable“-Eingang von einem der 7-Segment-Treiber<br />
angesteuert und die Ziffer dadurch zwischengespeichert wird.<br />
Seite 11
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
2.2.3 Programmablaufplan / Struktogramm<br />
Seite 12
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
2.2.4 Quelltext<br />
#include <br />
#include <br />
//Jede Änderung an PIN C0 (Lichtschranke 1) oder PIN D5 (Lichtschranke 2)<br />
//löst einen Interrupt aus<br />
unsigned char lichtschranke; //legt fest, welcher Interupt ausgelöst werden darf<br />
unsigned char drehrichtungstimer; //zählt zeit für LS1->LS2 und LS2->LS1<br />
long timer12; //Timer von LS1 nach LS2 (inkrementiert bei Output<br />
Compare Match Flag UND lichtschranke=0b0000 0001)<br />
long timer21; //Timer von LS1 nach LS2 (inkrementiert bei Output<br />
Compare Match Flag UND lichtschranke=0b0000 0000)<br />
long wert12; //Ausgelesener Wert von Timer 12<br />
long wert21; //Ausgelesener Wert von Timer 21<br />
unsigned int a;<br />
unsigned char b;<br />
unsigned char c;<br />
unsigned char d;<br />
unsigned char e;<br />
long umin;<br />
long usec;<br />
//======================================================================<br />
============================<br />
Seite 13
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
ISR(PCINT1_vect) //Interrupt-Service-Routine (ISR)<br />
{ //für Lichtschranke 1<br />
if(lichtschranke==0b00000001) //char lichtschranke verhindert, dass einer der<br />
Lichtschranken-<br />
{ //Interupts zwei mal hintereinander<br />
ausgelöst wird<br />
}<br />
lichtschranke=0b00000000;<br />
wert21=timer21;<br />
timer21=0b00000000;<br />
}<br />
//======================================================================<br />
============================<br />
ISR(PCINT2_vect) //Interrupt-Service-Routine (ISR)<br />
{ //für Lichtschranke 2<br />
if(lichtschranke==0b00000000) //char lichtschranke verhindert, dass einer der<br />
Lichtschranken-<br />
{ //Interupts zwei mal hintereinander<br />
ausgelöst wird<br />
}<br />
lichtschranke=0b00000001;<br />
wert12=timer12;<br />
timer12=0b00000000;<br />
usec = usec + 1;<br />
}<br />
Seite 14
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
//======================================================================<br />
============================<br />
ISR(TIMER1_COMPA_vect)<br />
{<br />
TCNT1=0;<br />
if (wert12-wert21>0)<br />
{<br />
PORTB=PORTB & 0b11111100;<br />
PORTB=PORTB | 0b00000001;<br />
}<br />
if (wert12-wert21
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
d = d
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
}<br />
ISR(TIMER0_COMPA_vect)<br />
{<br />
TCNT0=0;<br />
if (lichtschranke==0b00000000) //Wenn Lichtschranke 1 aktiv is<br />
timer12=timer12+1; //...wird timer12 ein größer<br />
if (lichtschranke==0b00000001) //Wenn Lichtschranke 2 aktiv is<br />
timer21=timer21+1; //...wird timer21 ein größer<br />
}<br />
//======================================================================<br />
============================<br />
void init (void)<br />
{<br />
TCCR0B = TCCR0B | 0b00000001; //Systemtakt für Counter 0<br />
OCR0A = OCR0A | 0b00000001; //Output Compare Register A auf 21 setzen<br />
TCCR0A = TCCR0A | 0b01000010; //Set OC0A on Compare Match (OC0A wird gesetzt wenn<br />
counter 0 bis "5" zählt) / bit1 für ctc-modus<br />
Seite 17
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
TIMSK0 = TIMSK0 | 0b00000010; //Timer/Counter0 Output Compare Match A Interrupt Enable<br />
TCCR1B = TCCR1B | 0b11000101; //Systemtakt/1024 für Counter 1<br />
TCCR1A = TCCR1A | 0b01000010; //Set OC1A on Compare Match (OC1A wird gesetzt wenn<br />
counter 1 bis "65536" zählt) / bit1 für ctc-modus<br />
OCR1AH = OCR1AH | 0b11111111; //Output Compare Register (High/also die<br />
höherwertigen Bits)<br />
OCR1AL = OCR1AL | 0b11111111; //Output Compare Register (Low) beides zusammen<br />
ergibt 65536<br />
TIMSK1 = TIMSK1 | 0b00000010; //Timer/Counter1 Output Compare Match A Interrupt Enable<br />
}<br />
//======================================================================<br />
============================<br />
int main (void)<br />
{<br />
init();<br />
lichtschranke=0b00000001; //Initialisierungswert für lichtschranke<br />
DDRB=0b01000011; //PortB als Eingabe- und Ausgabeport<br />
DDRC=0b00011110; //PortC als Eingabe- und Ausgabeport<br />
DDRD=0b00001111; //PortD als Eingabe- und Ausgabeport<br />
Seite 18
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
PCICR = 0x06; //PCINT8 bis PCINT14 und PCINT16 bis PCINT23 global freischalten<br />
PCMSK1 =0x01; //PCINT8-Pin als Quelle zulassen<br />
PCMSK2 =0x20; //PCINT21-Pin als Quelle zulassen<br />
sei(); //Interrupts global freischalten<br />
while (1) //Hauptprogrammschleife<br />
}<br />
{<br />
}<br />
Seite 19
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
3 Kontrolle und Dokumentation<br />
3.1 Inbetriebnahme, Mess- und Prüfprotokolle<br />
Seite 20
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
3.2 Bedienungsanleitung<br />
Die Schaltung lässt sich durch den Schiebeschalter S1 ein- und ausschalten.<br />
An die Buchsen wird die Spannung für den Motor angelegt. Die maximale Spannung darf dort 24<br />
Volt betragen.<br />
Die Drehzahl wird auf der 7-Segment Anzeige in Umdrehungen pro Minute angezeigt. Die Grüne<br />
LED zeigt, dass der Motor rechts herum dreht und die Rote LED steht für linke Drehrichtung.<br />
Sollte die Schaltung mal nicht funktionieren, muss die Sicherung im Sicherungshalter überprüft<br />
oder die Batterie getauscht werden.<br />
Seite 21
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
3.3 Fotos<br />
3.3.1 Gesamtaufbau<br />
3.3.2 Bestückungsseite der Platine (beschriftet)<br />
Seite 22
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
3.4 Kritik der eigenen Projektplanung und – durchführung<br />
3.4.1 Zeitplanung<br />
Von der Zeitplanung her hat es nicht ganz so geklappt wie wir uns das vorgestellt hatten. Die<br />
Planungsphase war relativ schnell abgeschlossen. So hatten wir noch einen gewissen Zeitpuffer für<br />
die Durchführungsphase. Allerdings erwies auch der sich als nicht besonders groß, sodass wir<br />
Anfang Juni merkten, dass im Bereich der Softwareentwicklung die Zeit zu knapp werden würde.<br />
Etliche kleine Fehler beim Programmieren sorgten für akuten Zeitmangel. Trotz festgesetzter<br />
Stichtage für Abschnitte konnten wir zum Schluss nicht mehr gegen die Zeit arbeiten. Für das<br />
nächste Mal werden wir die Auslastung verändern und mehr Zeit für die Entwicklung berechnen.<br />
Die Aufgabe erwies sich umständlicher, als zuerst vermutet.<br />
3.4.2 Kostenplanung, tatsächliche Kosten<br />
Von den Kosten her würden wir sagen haben wir eine gute Planung an den Tag gelegt. Auch wenn<br />
das Projekt als noch nicht ganz abgeschlossen gilt, würden wir die benötigten „Überstunden“ <strong>mit</strong><br />
unserem eingeplanten Kostenvoranschlag abdecken können. Die 20€ stellten sich beim ersten hören<br />
als Problem dar. Allerdings machten wir uns dann zur Aufgabe, trotz stark begrenzter<br />
Budgetvorgabe, möglichst alle Funktionen durch günstige ,aber trotzdem qualitativ hochwertige,<br />
Bauteile zu bewältigen. Dieses ist uns so<strong>mit</strong> auch gut gelungen.<br />
3.4.3 Gewählter Lösungsansatz<br />
Unser Lösungsansatz war uns von Anfang an klar. Wir hatten während der gesamten Projektarbeit<br />
unser Ziel vor Augen. Es muss eine optische, sowie funktionelle einwandfreie Lösung gefunden<br />
werden. Deshalb stand auch sofort fest, dass wir alle möglichen Missverständnisse, sowie<br />
Sicherheitsdefizite vermeiden müssen. So haben wir beispielsweise einen Batteriehalter eingebaut,<br />
da<strong>mit</strong> es ersichtlich wird, dass eine 9V Blockbatterie als Spannungsquelle dient. Weiterhin dienen<br />
ein Schalter sowie eine Sicherung für Bedienerfreundlichkeit sowie als Schutzfunktion vor<br />
Überlastung.<br />
Seite 23
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
4 Quellenverzeichnis<br />
Das Projekt, sowie alle dazugehörigen Dateien lassen sich unter folgender Adresse wieder finden:<br />
4.1 Datenblätter<br />
Z:\EGS 3 - 2008 - Projekt\Projekte\G01 - Goerke, Radtke<br />
➢ 7-Segment Anzeige<br />
➢ Festspannungsregler<br />
➢ Quarzoszillator<br />
➢ Gabellichtschranke<br />
➢ Mikrocontroller<br />
➢ BCD/7-Segment Wandler / Treiber<br />
➢ Transistor<br />
Seite 24
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 25
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 26
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 27
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 28
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 29
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 30
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 31
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 32
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 33
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 34
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 35
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 36
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 37
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 38
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 39
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
4.2 Beispielprojekte<br />
➢ Projekt der <strong>Drehzahlmessung</strong> eines PC Lüfters<br />
Unser Projekt basiert auf einem Beispiel aus dem Internet. Allerdings hat wurde es in jeglicher<br />
Form abgewandelt und dementsprechend um modelliert. Um einen Einblick darüber zu geben,<br />
haben wir dieses Projekt hier noch einmal in Bildern zusammengefasst.<br />
Seite 40
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
Seite 41
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
4.3 Fachliteratur<br />
➢ http://www.sprut.de/electronic/pic/projekte/dehfan/drehfan.htm<br />
➢ http://de.wikipedia.org/wiki/Mikrocontroller<br />
➢ http://de.wikipedia.org/wiki/C_(Programmiersprache)<br />
➢ http://www.reichelt.de/<br />
➢ Tabellenbuch Automatisierungstechnik<br />
5.0 Fehlersuche/Probleme<br />
Während der Projektarbeit traten einige Fehler auf, die eigentlich nicht hätten auftreten sollen. So<br />
hatten wir beispielsweise das Problem, dass unsere Software in der Simulation auf dem PC<br />
einwandfrei funktionierte. Auf der Platine allerdings nicht. So<strong>mit</strong> fingen wir <strong>mit</strong> der Fehlersuche an,<br />
die nun in folgende Schritte gegliedert ist:<br />
1. Kontrolle ob ISP Adapter richtig funktioniert -> ok<br />
2. Kontrolle ob Strom vom MC für LED´s ausreicht -> nicht ok<br />
-> Schaltplan <strong>mit</strong> Transistoren ergänzt<br />
3. Kontrolle ob die Signale von den Gabellichtschranken kommen -> nicht ok<br />
-> eine Gabellichtschranke getauscht<br />
4. Kontrolle ob Funktion da -> ok<br />
5. Programmierung weiter durchgeführt<br />
Dementsprechend wurden auch auf der Platine zusätzliche Transistoren inklusive<br />
Basisvorwiderständen verbaut. Diese sind bereits im Schaltplan sowie den Stücklisten<br />
berücksichtigt. Folgendes Bild zeigt diese Änderung:<br />
Seite 42
<strong>Drehzahlmessung</strong>- und Richtungsanzeige<br />
5.1 Überschreitung der Zeitplanung<br />
Aufgrund von mangelnder Fertigstellung des Projektes wurde im Einverständnis <strong>mit</strong> dem<br />
Auftraggeber die Terminfrist auf den 07.07.2009 verschoben. Wir bedauern, dass es uns nicht<br />
möglich war diesen vereinbarten Termin einzuhalten.<br />
Seite 43