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.
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
Quoted
/*
Der Arduino hat 3 Timer und 6 PWM Ausgänge. Der Zusammenhang zwischen Timern und PWM Kanälen ist:
Pins 5 und 6: gesteuert von timer0 (ACHTUNG, dieser Timer beinflusst auch Funktionen wie "delay" und "millis")
Pins 9 und 10: gesteuert von timer1
Pins 11 und 3: gesteuert von timer2
Beim Arduino Mega gibt es 6 Zimer und 15 PWM Ausgänge:
Pins 4 und 13: gesteuert von timer0 (ACHTUNG, dieser Timer beinflusst auch Funktionen wie "delay" und "millis")
Pins 11 und 12: gesteuert von timer1
Pins 9 und 10: gesteuert von timer2
Pin 2, 3 und 5: gesteuert von timer 3
Pin 6, 7 und 8: gesteuert von timer 4
Pin 46, 45 und 44:: gesteuert von timer 5
Nachzulesen:
http://playground.arduino.cc/Main/TimerPWMCheatsheet
*/
void setup() {
TCCR1B = TCCR1B & 0b11111000 | 0x01; // Setzt Timer1 (Pin 9 und 10) auf 31300Hz
}
void loop() {
// put your main code here, to run repeatedly:
}
Quoted
/*
Arduino Tutorial 3.2 - Lüftergeschwindigkeit per Taster wechseln
by Scynd 2014
In diesem Tutorial geht es darum die Geschindigkeit eines Lüfters
per tastendruck um einen vordefinierten Wert zu erhöhen oder zu senken.
*/
// Konstante Variablen
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
// Variablen
int Schrittweite = 20; // Variable für die Schrittweite pro Tasterdruck des PWM Wertes
int FanSpeed = 75; // PWM Startwert des Lüfters (ca.30%)
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
Serial.begin(9600); // Setzt die Baudrate für die Ausgabe am Serial Monitor auf 9600
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 wir 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;
}
if(FanSpeed < 75) {
FanSpeed = 75;
}
analogWrite(FanPin, FanSpeed); // Gibt den PWM Wert am FanPin aus
Serial.println(FanSpeed); // Gibt den FanSpeed Wert im Seriellen Monitor aus
}
Quoted
/*
Arduino Tutorial 3.2 - Temperaturgesteuerter Lüfter mit 10kO NTC
by Scynd 2014
In diesem Szenario geht es darum, die Lüftergeschwindigkeit über die Temperatur zu steuern.
Bei steigender Temperatur, soll auch die Lüftergeschwindigkeit steigen, bei sinkender Temperatur fallen.
*/
// Konstanten
const int FanPin = 9; // Pin für den Lüfter
const int NTC = A0; // Pin für den 10kO NTC Wiederstand
const int NTCNominal = 10000; // Wiederstand des NTC bei Nominaltemperatur
const int TempNominal = 25; // Temperatur bei der der NTC den angegebenen Wiederstand hat
const int BCoefficient = 3977; // Beta Coefficient(B25 aus Datenblatt des NTC)
const int SerienWiederstand = 10000; // Wert des Wiederstands der mit dem NTC in Serie geschalten ist
// Variablen
int FanSpeed = 0; // Variable für die Lüftergeschwindigkeit
int FanMin = 60; // Kleinster PWM Wert für den Lüfter befor er abschält
int FanOut = 1; // Variable zum pürfen ob der Lüfter aus war
int TMin = 20; // Untere Grenze des Temperaturbereichs
int TMax = 60; // Obere Grenze des Temperaturbereichs
int AbfrageZahl = 5; // Je mehr abfragen, desto stabiler isr das Ergebnis, dauert aber länger
int Abfrage[5]; // Array Variable für das Mitteln der Temperatur http://arduino.cc/de/pmwiki.php?n=Reference/Array
float Durchschnitt = 0; // Variable für das Mitteln der Temperatur
float Temp; // Variable für die Berechnung der temperatur nach Steinhart
void setup() {
TCCR1B = TCCR1B & 0b11111000 | 0x01; // Setzt Timer1 (Pin 9 und 10) auf 31300Hz
Serial.begin(9600); // Setzt die Baudrate für die Ausgabe am Serial Monitor auf 9600
pinMode(FanPin, OUTPUT); // Setzt den Pin des Lüfters als Ausgang
pinMode(NTC, INPUT); // Setzt den Pin des NTC Wiederstands als Eingang
}
void loop() {
Temperaturberechnung(); // Startet die Temperaturerfassungsroutine
// Lüftergeschwindigkeit über den Temperaturbereich einstellen
// TMin->0% PWM | TMax->100% PWM
FanSpeed = map(Temp, TMin, TMax, 0, 255);
// Wenn der PWM Wert unter den van FanMin fällt, schält der Lüfter ab
if (FanSpeed < FanMin) {
FanSpeed = 0;
FanOut = 1;
}
// Hysterese
if (FanOut == 1) {
FanSpeed = 0;
}
if(Temp >= 32) {
if(FanOut == 1) {
FanOut = 0;
analogWrite(FanPin, 255);
}
}
// PWM Wert auf 255 begerenzen
if (FanSpeed > 255) {
FanSpeed = 255;
}
// Lüftergeschwindigkeit über den Seriellen Monitor ausgeben
Serial.print("Lueftergeschwindigkeit: ");
Serial.println(FanSpeed);
analogWrite(FanPin, FanSpeed); // Den Lüfter mit dem PWM Wert ansteuern
delay(500);
}
void Temperaturberechnung() {
// Nimmt N Abfragen in einer Reihe, mit einem kurzen delay
for (int i=0; i < AbfrageZahl; i++) {
Abfrage = analogRead(NTC);
delay(10);
}
// Mittelt alle Abfragen
Durchschnitt = 0;
for (int i=0; i < AbfrageZahl; i++) {
Durchschnitt += Abfrage;
}
Durchschnitt /= AbfrageZahl;
// Umwandlung des Wertes in Wiederstand
Durchschnitt = 1023 / Durchschnitt - 1;
Durchschnitt = SerienWiederstand / Durchschnitt;
// Umrechnung aller Ergebnisse in die Temperatur mittels einer Steinhard Berechnung
Temp = Durchschnitt / NTCNominal; // (R/Ro)
Temp = log(Temp); // ln(R/Ro)
Temp /= BCoefficient; // 1/B * ln(R/Ro)
Temp += 1.0 / (TempNominal + 273.15); // + (1/To)
Temp = 1.0 / Temp; // Invertieren
Temp -= 273.15; // Umwandeln in °C
// Ausgabe an den Seriellen Monitor
Serial.print("Temperatur ");
Serial.print(Temp);
Serial.println(" *C");
delay(500);
}
Quoted
/*
Arduino Tutorial 3.3 - Lüftergeschwindigkeit per Drehpoti einstellen
by Scynd 2014
In diesem Tutorial geht es darum, die Lüftergeschwindigkeit mit Hilfe eines Drehpotenzometers einzustellen.
*/
//Konstante Variablen
const int FanPin = 9; // Lüfter an Pin 9 angeschlossen
const int PotiPin = A0 ; // Potenzometer am analogen Eingang Pin 0 angeschlossen
// Variablen
int FanSpeed = 0; // Variable für die Lüftergeschwindigkeit
int PotiVar = 0 ; // Variable zum speichern des Potentiometereingangs
void setup() {
TCCR1B = TCCR1B & 0b11111000 | 0x01; // Setzt Timer1 (Pin 9 und 10) auf 31000Hz
Serial.begin(9600);
pinMode(FanPin, OUTPUT) ; //Setzt den Lüfter Pin als Ausgang
pinMode(PotiPin, INPUT) ; //Setzt den LEDPin als Ausgang
}
void loop() {
PotiVar = analogRead(PotiPin) ; // Liest das Potentiometer aus
FanSpeed = map(PotiVar, 51, 1023, 60, 255); // Verteilt den PWM Wert über den Messbereich des Potis
// Unterer Potenziometerbereichs (0-50) = Lüfter aus
if(PotiVar < 50) {
FanSpeed = 0;
}
Serial.println(FanSpeed); // Gibt die Variable im Seriellen Monitor aus
analogWrite(FanPin, FanSpeed); // Gibt die Variable mit PWM aus
}
This post has been edited 75 times, last edit by "Scynd" (Nov 12th 2015, 9:01pm)
Users who thanked for this post:
djtrickstar (05.03.2015), Koxxer (09.04.2015), rootable (27.04.2015)
"Mein Name ist George - Der George"
Date of registration: Mar 17th 2010
Location: Da wo der Berch wohnt
Occupation: Inginöööör und Freundinbeschäftiger
Wenn I Murksen muss... Aaarrgh..
Date of registration: Jul 18th 2009
Name: Patrick Betz
Location: Simbach bei Landau a. d. Isar
Occupation: Kraftfahrer (Gelernter Schreiner)
"Mein Name ist George - Der George"
Date of registration: Mar 17th 2010
Location: Da wo der Berch wohnt
Occupation: Inginöööör und Freundinbeschäftiger
"Mein Name ist George - Der George"
Date of registration: Mar 17th 2010
Location: Da wo der Berch wohnt
Occupation: Inginöööör und Freundinbeschäftiger
"Mein Name ist George - Der George"
Date of registration: Mar 17th 2010
Location: Da wo der Berch wohnt
Occupation: Inginöööör und Freundinbeschäftiger
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
This post has been edited 1 times, last edit by "mmueller" (Jan 17th 2015, 11:21pm)
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
This post has been edited 1 times, last edit by "Scynd" (Jan 19th 2015, 7:38am)
"Mein Name ist George - Der George"
Date of registration: Mar 17th 2010
Location: Da wo der Berch wohnt
Occupation: Inginöööör und Freundinbeschäftiger
© 2011-2014 We-Mod-It.com | Das Forum von Moddern für Modder | © Design by Jama