Hola a todos!
Estoy tratando de controlar un ventilador con el arduino usando el siguiente esquema:
Los +12 los tomo de la salida del arduino VIN ya que lo alimento a 12V. El ventilador va a 12V 0.35A.
El código es el siguiente:
int fan = 11;
int fanSpeed = 0; // for incoming serial data
int fanSpedMap = 0;
int analogvalue;
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
pinMode(fan, OUTPUT);
}
// Entradas serial: 1 = 49 2 = 50 3 = 51 ...
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) { // read the incoming byte:
fanSpeed = Serial.read(); // say what you got:
Serial.print("I received: ");
if (fanSpeed == 48) {
fanSpeed = 0;
} else if (fanSpeed == 49) {
fanSpeed = 1;
} else if (fanSpeed == 50) {
fanSpeed = 2;
} else if (fanSpeed == 51) {
fanSpeed = 3;
} else if (fanSpeed == 52) {
fanSpeed = 4;
} else if (fanSpeed == 53) {
fanSpeed = 5;
} else if (fanSpeed == 54) {
fanSpeed = 6;
} else if (fanSpeed == 55) {
fanSpeed = 7;
} else if (fanSpeed == 56) {
fanSpeed = 8;
} else if (fanSpeed == 57) {
fanSpeed = 9;
}
Serial.println(fanSpeed, DEC);
analogvalue = analogRead(fan);
Serial.println(analogvalue, DEC);
}
fanSpedMap = map(fanSpeed, 0, 9, 0, 255);
analogWrite(fan, fanSpedMap);
}
El resultado de esto es
0
I received: 0
371
0.0 Voltios
Ventilador parado
1
I received: 1
371
0.74 Voltios
Ventilador parado
2
I received: 2
381
8.8 Voltios
Ventilador en movimiento despacio
3
I received: 3
378
10.44 - 10.60
Ventilador en movimiento algo mas rapido
4
I received: 4
379
11.10 Voltios
Ventilador en movimiento aun mas rapido
5
I received: 5
378
11.34 voltios
Ventilador en movimiento aun mas rapido? No lo aprecio...
6
I received: 6
378
11.50 Voltios
Igual que antes
7
I received: 7
377
10.56 Voltios
Ventilador muy rapido (ya se le escucha..)
8
I received: 8
379
10.75 Voltios
Aun mas rapido
9
I received: 9
377
10.88
A tope ya.
Entonces segun veo el programa funciona pero no entiendo porque la lectura de analogvalue es casi la misma ni tampoco la escala de valores la hace bien. De 1 a 0.7 voltios pasamos a 2 a 8.8 voltios. No me parece muy lineal.
El control imagino que es por corriente y por eso los valores van aumentando y en los valores máximos el voltaje cae porque el arduino no es capad de dar el máximo.
Como veis ando un poco liado. El programa funciona pero no lo acabo de entender del todo el funcionamiento.
Un saludo