Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: We-Mod-It | Das Forum von Moddern für Modder. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 908

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 72

  • Nachricht senden

1

10.05.2016, 08:25

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

Quellcode

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








.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Scynd« (10.05.2016, 08:31)