Drehzahlmessung mit Pic16f84A in C für Schaltblitz
Hallo
Ich weiß nicht ob das hier der richtige Bereich ist für meinen Post, habe aber nichts entsprechenderes gefunden.
Also mein Problem ist, ich möchte einen Schaltblitz für meine Aprilia bauen.
Dafür muss ich an einem Pin die Frequenz von der Lichtmaschine für eine gewisse Zeit abgreifen, mit einem Wert vergleichen und jenach Ergebnis einen anderen Pin auf High setzen.
Nun weiß ich jedoch nicht wie ich eine Frequenz mit dem PIC16F84A einlesen kann. Kann mir vielleicht jemand Tipps oder nochbesser Code fetzen geben damit ich weiter komme?
Freue mich auf Antwort
Gruß Marius
Liste der Anhänge anzeigen (Anzahl: 1)
oh F**k stimmt jetzt wo du es sagst die gibt 12 V.
ja wie mache is das dann? Ich würde sagen mit Widerständen oder?
Oder wie kann man das noch machen ich werde mal einen Schaltplan erstellen so wie ich mir das vorstelle.
Edit: so habe jetzt mal einen Schaltplan gemacht.
Plan ist im Anhang
Edit2: So habe jetzt alle nötiegen Teile bestellt. Wenn sie ankommen werde ich mich dran machen und den Gedöns aufbauen.
Liste der Anhänge anzeigen (Anzahl: 1)
Ja stimmt ich werde jetzt 3 LEDS verbauen.
nun habe ich ein Problem ich will die Freuqenz mit einer Select case anweisung auswerten. klappt auch soweit nur ich kann keine bereiche von zahlen also zum beispiel 150 bis 200 sondern nur eine zahl also 150 eintragen. wie muss ich das schreiben?
habe es mit mit größer als und mit 150 to 200 versucht aber das geht beides nicht
die erste led geht jetzt bei 8000 an, die zweite bei 9000 und die dritte bei 10000. code kommt noch aber erst wenn er compiliert werden kann.
gruß marius
Edit: So der neue Schaltplan und der neue Code sind fertig:
Code:
#include <C:\cc5\16F84a.h>
#pragma config |= 0b.1111.1111.0010 // Prozessor-Typ definieren
void warten(void) //Timer auf eine ms einstellen
{
OPTION = 2;
TMR0 = 131;
while (TMR0);
}
void main(void) // Start des Hauptprogramms
{
TRISB = 0b.0000.0001; //Pin 0 ist Eingang , Pin 1 bis 7 ist Ausgang
PORTB = 0b.0000.0000;
char puls; //Frequenz Impulse Variable setzen
char lauf; // Durchläufe festhalten
bit rein @ PORTB.0; //Pin für Frequenz Input
bit unter @ PORTB.1; //Pin für erste LED
bit fast @ PORTB.2; //Pin für zweite LED
bit drauf @ PORTB.3; //Pin für die maximale Drehzahl
Sprungmarke:
//Abfrage an Port B
lauf=250;
while (lauf)
{
if (rein) ;
{
puls++ ;
}
warten();
lauf-- ;
}
puls=puls*4;
if (puls>133) ;
{
unter=1;
}
if (puls>150) ;
{
fast=1;
}
if (puls>167) ;
{
drauf=1;
}
puls=0;
goto Sprungmarke;
}