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
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.
Warum nimmst Du nicht den CCP-Pin als Messeingang? Da erreichst Du bis zu 100ns an Auflösung (bei 40 MHz) Gruß Anja
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.
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
Du kannst das Signal doch an beide Pins anschließen und später in Software je nach Drehzahl auf die effektivere Methode umschalten.
von Microchip gibts in deinem installationsordner ein beispiel für CCP ;-)
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.
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
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
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.