现在风扇接GND和5v转速都是正确了 接GND1000转 接5V 3000转但是为什么我接上pwm信号 就变成几万转了
但是接上pwm信号 明显看到风扇变慢了 说明pwm信号是有用的
但是为什么转速就不对了呢?
pwm设置了 50% 80% 100% 反正就是转速不对
什么问题呢?
[code]
volatile unsigned int number = 0;
unsigned int rpm=0;
void setup() {
// pwm
pinMode(46, OUTPUT);
pinMode(45, OUTPUT);
pinMode(44, OUTPUT);
TCCR5A = _BV(COM5A0) | _BV(COM5A1) | _BV(COM5B0) | _BV(COM5B1) | _BV(COM5C0) | _BV(COM5C1) | _BV(WGM51);
TCCR5B = _BV(WGM52) | _BV(WGM53) | _BV(CS50);
ICR5H = 2;
ICR5L = 128;
OCR5AH = 2;
OCR5AL = 00;
OCR5BH = 2;
OCR5BL = 128;
OCR5CH = 1;
OCR5CL = 64;
//中断
pinMode(18, INPUT);
digitalWrite(18, HIGH); //上拉电阻
attachInterrupt(5, blink, CHANGE);
Serial.begin(9600);
}
void loop() {
delay(1000);
rpm=number*15;
Serial.println(rpm);
//delay(1000);
number = 0;
}
void blink()//中断函数
{
number++;
}
[/code]
但是接上pwm信号 明显看到风扇变慢了 说明pwm信号是有用的
但是为什么转速就不对了呢?
pwm设置了 50% 80% 100% 反正就是转速不对
什么问题呢?
[code]
volatile unsigned int number = 0;
unsigned int rpm=0;
void setup() {
// pwm
pinMode(46, OUTPUT);
pinMode(45, OUTPUT);
pinMode(44, OUTPUT);
TCCR5A = _BV(COM5A0) | _BV(COM5A1) | _BV(COM5B0) | _BV(COM5B1) | _BV(COM5C0) | _BV(COM5C1) | _BV(WGM51);
TCCR5B = _BV(WGM52) | _BV(WGM53) | _BV(CS50);
ICR5H = 2;
ICR5L = 128;
OCR5AH = 2;
OCR5AL = 00;
OCR5BH = 2;
OCR5BL = 128;
OCR5CH = 1;
OCR5CL = 64;
//中断
pinMode(18, INPUT);
digitalWrite(18, HIGH); //上拉电阻
attachInterrupt(5, blink, CHANGE);
Serial.begin(9600);
}
void loop() {
delay(1000);
rpm=number*15;
Serial.println(rpm);
//delay(1000);
number = 0;
}
void blink()//中断函数
{
number++;
}
[/code]