You are not logged in.

Dear visitor, welcome to We-Mod-It | Das Forum von Moddern für Modder. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

Scynd

1. Platz Enermax Casecon Contest

  • "Scynd" started this thread

Posts: 924

Date of registration: Mar 12th 2012

Location: München

Occupation: Maschinenbautechniker

Thanks: 74

  • Send private message

1

Tuesday, May 10th 2016, 8:25am

Arduino Tutorial 3.2 - Lüftergeschwindigkeit mit zweit Tastern steuern





Um einen Lüfter steuern zu können, muss man seine Versorgungsspannung regulieren. Das macht man mit dem Arduino, indem man per analogWrite Befehl ein PWM Signal ausgibt. Der PWM Wert kann dabei zwischen 0 und 255 liegen, wobei 0 = 0% und 255 = 100% ist.
In diesem Teil zeige ich euch, wie man mit Hilfe von zwei Tastern den PWM Wert schrittweise erhöht, bzw. senkt, um so die Geschwindigkeit des Lüfters zu steuern.
Der Code für 3 Pin Lüfter und 4 Pin PWM Lüfter unterscheidet sich dabei nicht, der Aufbau allerdings schon. Den 4 Pin PWM Lüfter kann man ohne zusätzliche Bauteile an eine 12V Stromversorgung und den Arduino anschließen, aber für die Ansteuerung eines 3 Pin Lüfters braucht man noch einen Transistor der über den Arduino angesteuert wird, da die Ausgänge des Arduinos nicht genügend Strom und Spannung liefern um einen Lüfter anzutreiben.




Teileliste




Anschlussplan

3 Pin Lüfter




4 Pin PWM Lüfter






Code

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
Arduino Tutorial 3.2 - Lüftergeschwindigkeit per Taster wechseln

In diesem Tutorial geht es darum die Geschindigkeit eines Lüfters 
per Tastendruck um einen vordefinierten Wert zu erhöhen oder zu senken.
 
by Scynd 2016
http://www.scynd.de/tutorials/arduino-tutorials.html
*/

// Konstanten
const int fanPin = 9;      	// Pin für den Lüfter
const int taster1Pin = 2;  	// Pin für Taster 1
const int taster2Pin = 3;  	// Pin für Taster 2
const int schrittweite = 20;   // Schrittweite pro Tasterdruck des PWM Wertes
const int minSpeed = 75;   	// Minimale Lüftergeschwindigkeit(ca.30%,ist bei jedem Lüfter anders, müsst ihr testen)

// Variablen
int fanSpeed = minSpeed;   	// PWM Startwert des Lüfters 
int taster1Status = 0;     	// Variable zum speichern des Tasterstatus
int taster2Status = 0;     	// Variable zum speichern des Tasterstatus


void setup()
{
  TCCR1B = TCCR1B & 0b11111000 | 0x01;   // Setzt Timer1 (Pin 9 und 10) auf 31300Hz
  pinMode(fanPin, OUTPUT);    	// Setzt den Pin des Lüfters als Ausgang
  pinMode(taster1Pin, INPUT); 	// Setzt den Pin des Tasters 1 als Eingang
  pinMode(taster2Pin, INPUT); 	// Setzt den Pin des Tasters 2 als Eingang
  
  /* Der Lüfter bekommt 1 Sekunde einen Startimpuls und wird dann gedrosselt.
  Das ist eine Sicherheitsmaßnahme, falls der Lüfter mit 30% nicht anläuft */
  analogWrite(fanPin, 255);   	
  delay(1000);
  analogWrite(fanPin, fanSpeed);
}


void loop()
{
  taster1Status = digitalRead(taster1Pin);	// tasterPin1 lesen und Status speichern
  taster2Status = digitalRead(taster2Pin);	// tasterPin2 lesen und Status speichern
  
  // Wenn Taster 1 gedrückt ist, um den Wert von "schrittweite" erhöhen
  if(taster1Status == HIGH)
  {
	fanSpeed = fanSpeed + schrittweite;
	delay(500);
  }
  
  // Wenn Taster 2 gedrückt ist, um den Wert von "schrittweite" senken
  if(taster2Status == HIGH)
  {
	fanSpeed = fanSpeed - schrittweite;
	delay(500);
  }
  
  // Der ausgegebene PWM Wert wird auf den Bereich 75-255 begrenzt
  if(fanSpeed > 255)
  {
	fanSpeed = 255;
  }

  else if(fanSpeed < minSpeed)
  {
	fanSpeed = minSpeed;
  }

  analogWrite(fanPin, fanSpeed);	// Gibt den PWM Wert am fanPin aus
}



Nach dem setzen der Konstanten und Variablen, wird im setup die Frequenz des PWM Signals eingestellt, sowie die Ein- und Ausgänge deklariert.
In den Variablen habe ich den Startwert des Lüfters mit fanSpeed = 75 festgelegt. Das entspricht ca. 30% des PWM wertes, also ca. 4V. bei dieser Spannung läuft evtl. nicht jeder Lüfter los. Deshalb lasse ich den Lüfter beim Programmstart im setup für 1 Sek mit 100% laufen um das Anlaufmoment des Lüfters zu überwinden. Danach wird er wie geplant mit 75 angesteuert.
Der loop beginnt mit dem abfragen der Taster. Ist ein Taster gedrückt, wird die Variable fanSpeed um 20 erhöht oder gesenkt.
Wenn fanSpeed größer als 255 wird, wird sie auf 255 zurückgesetzt. Das gleiche passiert in die andere Richtung bei minSpeed. So wird ein Steuerbereich von 75 - 255, also 30% - 100% eingestellt.
Nun wird der noch Wert von fanSpeed per analogWrite() Befehl an den Lüfter ausgegeben.




Das war es auch schon








.

This post has been edited 2 times, last edit by "Scynd" (May 10th 2016, 8:31am)