Interrupt hall sensor voor RPM
5 berichten
• Pagina 1 van 1
Interrupt hall sensor voor RPM
Hallo allemaal,
ik ben bezig met een project om een boot te monitoren/aansturen.
Ik wil de toeren van de dieselmotor meten met behulp van een hall sensor (TLE4905). Het is een unipolaire sensor en schakelt laag als er een magneet bij is.
Een simpel programma met het aansturen van een led werkt. Toeren meten werkt echter niet!
Deze sensor zit aangesloten op mijn DUE, als FALLING interrupt.
Voor het testen laat ik alleen de counts zien. Wanneer ik mijn magneet dus langs de hall sensor haal (die dus van hoog naar laag gaat), verwacht ik dat mijn counts met 1 is toegenomen.
Dit is dus niet zo, er zijn wel 20 counts bijgekomen.
Wat doe ik verkeerd? of kan ik meer succes boeken met een latching hall sensor, en dan 2 magneten gebruiken??
De code:
ik ben bezig met een project om een boot te monitoren/aansturen.
Ik wil de toeren van de dieselmotor meten met behulp van een hall sensor (TLE4905). Het is een unipolaire sensor en schakelt laag als er een magneet bij is.
Een simpel programma met het aansturen van een led werkt. Toeren meten werkt echter niet!
Deze sensor zit aangesloten op mijn DUE, als FALLING interrupt.
Voor het testen laat ik alleen de counts zien. Wanneer ik mijn magneet dus langs de hall sensor haal (die dus van hoog naar laag gaat), verwacht ik dat mijn counts met 1 is toegenomen.
Dit is dus niet zo, er zijn wel 20 counts bijgekomen.
Wat doe ik verkeerd? of kan ik meer succes boeken met een latching hall sensor, en dan 2 magneten gebruiken??
De code:
- Code: Alles selecteren
volatile int rpmcount = 0;
void setup() {
pinMode(0, INPUT);
digitalWrite(0, HIGH); //interne pull up aanzetten
attachInterrupt(0, toeren, FALLING);
Serial.begin(9600);
}
void loop() {
Serial.println(rpmcount);
}
void toeren() {
rpmcount++;
}
Advertisement
Re: Interrupt hall sensor voor RPM
ik vond dit:
Hier: http://playground.arduino.cc/Main/ReadingRPM
Misschien dat RISING beter werkt? Het TLE4905 signaal is normaal laag en gaat hoog bij activatie.
Voor wat het waard is.
Groet
- Code: Alles selecteren
//-----------------------------------------------
volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;
void setup()
{
Serial.begin(9600);
attachInterrupt(0, rpm_fun, RISING);
rpmcount = 0;
rpm = 0;
timeold = 0;
}
void loop()
{
if (rpmcount >= 20) {
//Update RPM every 20 counts, increase this for better RPM resolution,
//decrease for faster update
rpm = 30*1000/(millis() - timeold)*rpmcount;
timeold = millis();
rpmcount = 0;
Serial.println(rpm,DEC);
}
}
void rpm_fun()
{
rpmcount++;
//Each rotation, this interrupt function is run twice
}
//-----------------------------------------------
Hier: http://playground.arduino.cc/Main/ReadingRPM
Misschien dat RISING beter werkt? Het TLE4905 signaal is normaal laag en gaat hoog bij activatie.
Voor wat het waard is.
Groet
Re: Interrupt hall sensor voor RPM
zet in de interupt eens een delay van 1 ms, als dan je probleem is opgelost, dan heb je dus last van kontaktdender. en op een uno klopt het pinnummer niet dat moet 2 zijn.
en zet een vertraging in je mainloop, want anders wordt het zenden te vaak gedaan. (waardoor de buffer overloopt)
en zet een vertraging in je mainloop, want anders wordt het zenden te vaak gedaan. (waardoor de buffer overloopt)
paul deelen
shooter@home.nl
shooter@home.nl
Re: Interrupt hall sensor voor RPM
Ik heb ergens een functiegenerator geleend, toen werkte de teller wel goed. Dus last van dender. Er komen binnenkort wat andere hall schakelaartjes binnen, eens testen of die het wel doen.
Re: Interrupt hall sensor voor RPM
als je twee hallsensoren hebt kun je een encoder maken, die heeft geen last van dender
paul deelen
shooter@home.nl
shooter@home.nl
5 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 17 gasten