www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Drehzahlmessung mit PIC18


Autor: DirkF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich möchte mit dem PIC18F4580 die Drehzahl eines Motors erfassen.
Drehzahlbereich 0-2000 RPM.
An derm Motor sitzt ein Näherungsschalter, der 2 Impulse pro Umdrehung 
ausgibt.
Ich sehe folgende 2 Möglichkeiten, weiß aber nicht, welche besser ist:

Lösung 1. Das Signal auf einen Interupt Pin (INT0-INT2) geben. Dann die 
Zeit zwischen 2 Impulsen messen.

Lösung2: Die Impulse als Taktquelle für einen Timer geben.

Nachteil: Lösung1 ist bei hohen Drehzahlen zu ungenau, Lösung2 bei 
kleinen Drehzahlen zu ungenau.

Einen hochauflösenden Encoder mit z.B 1024 Impulsen pro Umdrehungen kan 
ich leider nicht einsetzen.

Bin für Hinweise sehr dankbar.
Gruß Dirk

Autor: Gastino G. (gastino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DirkF schrieb:
> Lösung 1. Das Signal auf einen Interupt Pin (INT0-INT2) geben. Dann die
> Zeit zwischen 2 Impulsen messen.

Was spricht gegen ein festes Zeitfenster, in dem Du die Anzahl der Pulse 
erfasst und daraus dann die Drehzahl errechnest?

Du kannst auch mehrere Verfahren gleichzeitig laufen lassen und die 
Ergebnisse dann in Abhängigkeit vom Drehzahlbereich auswählen.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nimmst Du nicht den CCP-Pin als Messeingang?
Da erreichst Du bis zu 100ns an Auflösung (bei 40 MHz)

Gruß Anja

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich empfehle auch die Nutzung des CCP-Modules in Zusammenhang mit einem 
Interrupt.
Genaueres dazu gibt's im Datenblatt.
Dein PIC stirbt sowieso vor Langeweile. Notfalls würde ich einen 
Vorteiler vorschlagen oder nur den einen Impuls beachten.

Autor: DirkF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
vielen Dank für die zahlreichen Hinweise.
Die Software Umsetzung mache ich später, mir ging es jetzt erst mal 
darum, wie ich das Layout entwerfen muß, also an welchen Pin das Signal 
dran muß.
Ich denke mal, es ist der Pin CCP1 (Pin 17 beim 18F4580).
Langeweile hat mein PIC leider nicht, da er noch andere Werte erfasst 
und dann alles über den Profibus zur Siemens S7 schaufelt.

Wäre schön, wenn jemand ein kurzes Beispielprogramm zum CCP hat.
Gruß Dirk

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst das Signal doch an beide Pins anschließen und später in 
Software je nach Drehzahl auf die effektivere Methode umschalten.

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
von Microchip gibts in deinem installationsordner ein beispiel für CCP 
;-)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DirkF schrieb:

> Nachteil: Lösung1 ist bei hohen Drehzahlen zu ungenau, Lösung2 bei
> kleinen Drehzahlen zu ungenau.

Das ist allerdings prinzipbedingt so.
Man kann aber ausrechnen, bei welcher Drehzahl die Grenze liegt.
Was spricht daher dagegen, beide Messungen zu machen und je nach 
Messergebnis dann das eine bzw. das andere Ergebnis zu benutzen.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DirkF schrieb:
> Nachteil: Lösung1 ist bei hohen Drehzahlen zu ungenau, Lösung2 bei
> kleinen Drehzahlen zu ungenau.

Also: bei 1us Auflösung fürs CCP hat man bei 2 Pulsen / Umdr und 2000 
RPM 15000 Counts zwischen den Pulsen im CCP-Register. (also ca 0,01% 
Auflösung). Ich zweifle mal daß die Drehzahl so stabil ist daß man eine 
höhere Auflösung braucht. Falls doch kann man jederzeit mehrere Pulse 
ausmitteln.

Gruß Anja

Autor: DirkF (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Anja,
das hört sich gut an.
Dann kann ich ja unabhängig von der Drehzahl immer die Zeit zwischen 2 
Impulsen messen.
1 % Genauigkeit reich mir vollkommen.

Danke. Gruß Dirk

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DirkF schrieb:
> 1 % Genauigkeit reich mir vollkommen.

Ich würde trotzdem immer eine volle Umdrehung messen (ggf. als 
gleitender Mittelwert aus 2 aufeinanderfolgenden Abständen) falls die 
beiden Markierungen nicht ganz exakt 1/2 Umdrehung auseinander sind oder 
das Geberrad unrund ist.

Gruß Anja

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.