[Gelöst] Leonardo FAN RPM Messung


hallo,

ich habe ein 4-pin pwm pc-lüfter mit hilfe eines grove mosfet (http://www.seeedstudio.com/wiki/grove_-_mosfet) zum laufen gebracht. mir jetzt noch fehlt ist die drehzahlmessung über ein pin change interrupt (http://www.geertlangereis.nl/electronics/pin_change_interrupts/pinchange_en.html). das problem dabei ist nur, dass ich keinerlei ausgabe auf dem seriellen monitor bekomme, wenn ich folgenden sketch auf mein arduino leonardo hochlade:
code: [select]
#include <timerone.h>

#define fan1_power_pin 8
#define fan1_ctrl_pin 9
// possible leonardo pin change interrupt pins:
// pb0 = rxled = pcint0, pb1 = sck = pcint1, pb2 = mosi = pcint2, pb3 = miso = pcint3
// pb4 = 8 = pcint4, pb5 = 9 = pcint5, pb6 = 10 = pcint6, pb7 = 13 = pcint7
#define fan1_rpm_sig 13
// see possible pin change interrupt pins
#define fan1_rpm_sig_name pcint7
// see possible pin change interrupt pins pcint*_vect
#define fan1_rpm_sig_interrupt pcint7_vect

volatile int x;

void setup()
{
 // switch interrupts off while messing settings
 cli();
 // pin change interrupt control register
 pcicr = (1 << pcie0);
 //pcicr = 0x01;
 // pin change mask register
 pcmsk0 = (1 << fan1_rpm_sig_name);
 // turn interrupts on
 sei();
 serial.begin(9600);
 while(!serial)
 {
   ;
 }
 // initialize timer1, , set 25khz frequenze
 timer1.initialize(40);
 // setup pwm on pin 9, 50% duty cycle
 timer1.pwm(fan1_ctrl_pin, 512);
 pinmode(fan1_power_pin, output);
 digitalwrite(fan1_power_pin, high);
 serial.println("ende setup");
 
}

void loop()
{
 int i;
 for(i = 0; < 1000; ++i)
 {
   timer1.pwm(fan1_ctrl_pin, i);
   serial.print("i = ");
   serial.println(i);
   delay(10);
 }
delay(1000);
for(i = 1000; > 1; --i)
 {
   timer1.pwm(fan1_ctrl_pin, i);
   serial.print("i = ");
   serial.println(i);
   delay(10);
 }
delay(1000);
serial.print("x ");
serial.println(x);
}

// fan - pin change interrupt
isr(fan1_rpm_sig_interrupt)
{
 if (digitalread(fan1_rpm_sig) == 1) ++x;
}

es funktioniert alles, bis auf der teil, der den interrupt betrifft für die rpm messung. bei der timerone library muss man für das leonardo allerdings eine andere version als die offizielle benutzen, da die pinbelegung für das leonardo eine andere ist als beim uno https://code.google.com/p/arduino-timerone/issues/detail?id=13

pinbelegung leonardo (http://arduino.cc/en/hacking/pinmapping32u4):
pin 8 - schaltsignal des mosfet
pin 9 - pwm signal für fan
pin 13 - rpm signal des lüfters

gruß surfhai

wie hast du denn das angeschlossen?
normalerweise brauchst du keinen fet um einen 4-pin lüfter zu steuern. der hat den schon eingebaut.


Arduino Forum > International > Deutsch (Moderator: uwefed) > [Gelöst] Leonardo FAN RPM Messung


arduino

Comments

Popular posts from this blog

Connecting Raspberry Pi 2 to P10(1R)-V706 LED Dot Matrix - Raspberry Pi Forums

TypeError: <unknown> is not a numpy array - Raspberry Pi Forums

datso and removing imagetitle - Joomla! Forum - community, help and support