Sie sind nicht angemeldet.

Naozumi

Neu Hier!

Beiträge: 3

Registrierungsdatum: 27.10.2016

Danksagungen: 1

  • Nachricht senden

41

27.10.2016, 10:53

Erster versuch einer eigenen Lüftersteuerung

Hi Scynd

klasse Project hast du da!!
Wollte mich auch mal dran versuchen und hab hier ein Code für einen attiny85 von Digispark.

Könnte das so klappen?
Ich habe mich anstatt des NTC für einen TMP36 entschieden da ich mir dann die Steinhardt Formel sparen kann..

Ich weiß der Code ist jetzt nicht nach Richtline geschrieben aber das ist mein erster Code in C. Drum sei es mir verziehen...

Die Lüfterkurve besteht aus 5 teilen.
Erster Teil ist die Mindestdrehzahl bis zu einer bestimmten Temperatur.
2. bis 4. Teil ist eine Linearfunktion die je nach Temperatur steiler wird.
Sobald die Temperatur einen bestimmten Wert überschritten hat wird die Maximaldrehzahl verwendet.
Zusätzlich kann die ganze Kennlinie mithilfe des Potis manuell nach oben verschoben werden.


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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
int temp1 = 30;

int speed1 = 20;

int temp2 = 40;

int speed2 = 40;

int temp3 = 50;

int speed3 = 60;

int temp4 = 60;

int speed4 = 80;

int speedMax = 100;



int AI_TMP36 = 0; //THIS IS P5, P5 is Analog Input 0, so when you are using analog read you refer to it as 0

int time= 20;

int temp[10];

int temperature = 0;

int AI_potentiometer = 3;

int manualAdjust = 0;

int AO_clkAmplifier = 4;

int clkOutputPercent = 0;

int clkOutputValue = 0;

int DO_greenLed = 0;

int DO_yellowLed = 1;

int DO_redLed = 2;



void setup() 
{
pinMode(AO_clkAmplifier, OUTPUT);
pinMode(DO_greenLed, OUTPUT);
pinMode(DO_yellowLed, OUTPUT);
pinMode(DO_redLed, OUTPUT);
pinMode(AI_potentiometer, INPUT);
pinMode(AI_TMP36, INPUT);
}


void loop() 
{


//get average Temperature in Celsius
{

for (int i = 0; i < 10; i++)
{
temp[i] = map(analogRead(AI_TMP36), 0, 410, -50, 150);
delay(time);
}

temperature=(temp[0]+temp[1]+temp[2]+temp[3]+temp[4]+temp[5]+temp[6]+temp[7]+temp[8]+temp[9])/10;

}


//get manual adjust in Percent
{
manualAdjust = map(analogRead(AI_potentiometer), 0, 1023, 0, 100);
}


//calculate clk output in percent, add manualAdjust and then convert in analog output range
{

if (temperature <= temp1) // Minimal speed
{
clkOutputPercent = speed1;
}

if (temperature > temp1 and temperature <= temp2) // Speed2
{
int m1 = (speed2 - speed1) / (temp2 - temp1); // calculate linear function
int b1 = speed2 - m1 * temp2;
int fx1 = m1 * temperature + b1;
clkOutputPercent = fx1;
}

if (temperature > temp2 and temperature <= temp3) // Speed3
{
int m2 = (speed3 - speed2) / (temp3 - temp2); // calculate linear function
int b2 = speed3 - m2 * temp3;
int fx2 = m2 * temperature + b2;
clkOutputPercent = fx2;
}

if (temperature > temp3 and temperature <= temp4) // Speed4
{
int m3 = (speed4 - speed3) / (temp4 - temp3); // calculate linear function
int b3 = speed4 - m3 * temp4;
int fx3 = m3 * temperature + b3;
clkOutputPercent = fx3;
}

if (temperature > temp4) // set maximal speed when temperature > temp4
{
clkOutputPercent = speedMax;
}

clkOutputPercent = clkOutputPercent + manualAdjust; // add manualAdjust to rise the speed manually

if (clkOutputPercent > 100) // maximal 100% limiter
{
clkOutputPercent = 100;
}

clkOutputValue = (255 / 100 * clkOutputPercent); //convert from Percent to Analog output range

analogWrite(AO_clkAmplifier, clkOutputValue);
}


// set Temperature Leds
{

if (temperature <= temp1)
{
digitalWrite(DO_greenLed, HIGH);
digitalWrite(DO_yellowLed, LOW);
digitalWrite(DO_redLed, LOW);
}

if (temperature > temp1 and temperature <= temp2)
{
digitalWrite(DO_greenLed, HIGH);
digitalWrite(DO_yellowLed, HIGH);
digitalWrite(DO_redLed, LOW);
}

if (temperature > temp2 and temperature <= temp3)
{
digitalWrite(DO_greenLed, LOW);
digitalWrite(DO_yellowLed, HIGH);
digitalWrite(DO_redLed, LOW);
}

if (temperature > temp3 and temperature <= temp4)
{
digitalWrite(DO_greenLed, LOW);
digitalWrite(DO_yellowLed, HIGH);
digitalWrite(DO_redLed, HIGH);
}

if (temperature > temp4)
{
digitalWrite(DO_greenLed, LOW);
digitalWrite(DO_yellowLed, LOW);
digitalWrite(DO_redLed, HIGH);
}

}
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Naozumi« (27.10.2016, 12:22)


Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 897

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 71

  • Nachricht senden

42

28.10.2016, 09:03

Hi Naozumi!
Also erstmal muss ich sagen, der Code , besonders für die Lüfterkurve sehen echt gut aus. Muss ich mir merken :D
Der einzigen Fehler die ich gefunden habe sind in Zeile 90, 98 und 106.

Aus

Quellcode

1
if (temperature > temp1 and temperature <= temp2)

musst du

Quellcode

1
if (temperature > temp1 && temperature <= temp2)

machen. Oder funktioniert das mit "and"? Wäre mir jetzt zumindest nicht bekannt :rolleyes:

Dann sage ich mal, Hut ab :thumbsup:

Wenn die die Steuerung gebaut hast, würde ich mich freuen, wenn du sie hier im Forum mal vorstellen würdest, da das wirklich eine schöne kleine Steuerung ist, die ja auch wunderbar auf mehr Kanäle erweitert werden kann :thumbup:


Gruß Scynd


Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Naozumi (28.10.2016)

Naozumi

Neu Hier!

Beiträge: 3

Registrierungsdatum: 27.10.2016

Danksagungen: 1

  • Nachricht senden

43

28.10.2016, 09:53

Danke für deine Anerkennung und Hilfe xD
In unseren Codes für die Maschinen die wir programmieren machen wir das nur so mit and....
Ich weiß nicht wie das bei Microcontrollern ist.
Wie ich sehe bist du auch Mschinenbautechniker xD
Ich bin in der sparte Sekundär und Teritär verpackung unterwegs und arbeite mit Steuerungen wie Rockwell, Schneider(elau) und S7

Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 897

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 71

  • Nachricht senden

44

28.10.2016, 10:43

Hehehe, jaja die Maschinenbauer ^^
Programmiertechnisch habe ich in der Arbeit gar nichts zu tun, da ich im Testgeschäft (Vibration und Schock) tätig bin, von daher bin ich da relativ blank was das Wissen angeht :P
Ich habe mich rein aus Hobbygründen an die Programmierung rangewagt und schnell Spaß daran gefunden.


Naozumi

Neu Hier!

Beiträge: 3

Registrierungsdatum: 27.10.2016

Danksagungen: 1

  • Nachricht senden

45

28.10.2016, 11:34

Eine frage noch
Der PWM ausgang von dem attiny85 kann doch direkt an den PWM eingang vom 12v Lüfter angeschlossen werden oder?

hier eine etwas aufgeräumtere version des Codes

Quellcode

Zitat


//Variables for Fancurve calculation
{
int temp1 = 30;

int speed1 = 20;

int temp2 = 40;

int speed2 = 40;

int temp3 = 50;

int speed3 = 60;

int temp4 = 60;

int speed4 = 80;

int speedMax = 100;
}

//Constantes
{
int AI_TMP36 = 0; //THIS IS P5, P5 is Analog Input 0, so when you are using analog read you refer to it as 0

int DO_greenLed = 0;

int DO_yellowLed = 1;

int DO_redLed = 2;

int AI_potentiometer = 3;

int AO_clkAmplifier = 4;
}

//Aplication Variables
{
int temp[10];

int time= 20;

int temperature = 0;

int manualAdjust = 0;

int clkOutputPercent = 0;

int clkOutputValue = 0;
}




void setup()
{
pinMode(AO_clkAmplifier, OUTPUT);
pinMode(DO_greenLed, OUTPUT);
pinMode(DO_yellowLed, OUTPUT);
pinMode(DO_redLed, OUTPUT);
pinMode(AI_potentiometer, INPUT);
pinMode(AI_TMP36, INPUT);
}


void loop()
{

//get average Temperature in Celsius
{

for (int i = 0; i < 10; i++)
{
temp = map(analogRead(AI_TMP36), 0, 410, -50, 150);
delay(time);
}
temperature=(temp[0]+temp[1]+temp[2]+temp[3]+temp[4]+temp[5]+temp[6]+temp[7]+temp[8]+temp[9])/10;
}


//calculate clk output in percent, add manualAdjust and then convert in analog output range
{

if (temperature <= temp1) // Minimal speed
{
clkOutputPercent = speed1;
}

if (temperature > temp1 and temperature <= temp2) // Speed2
{
int m1 = (speed2 - speed1) / (temp2 - temp1); // calculate linear function
int b1 = speed2 - m1 * temp2;
int fx1 = m1 * temperature + b1;
clkOutputPercent = fx1;
}

if (temperature > temp2 and temperature <= temp3) // Speed3
{
int m2 = (speed3 - speed2) / (temp3 - temp2); // calculate linear function
int b2 = speed3 - m2 * temp3;
int fx2 = m2 * temperature + b2;
clkOutputPercent = fx2;
}

if (temperature > temp3 and temperature <= temp4) // Speed4
{
int m3 = (speed4 - speed3) / (temp4 - temp3); // calculate linear function
int b3 = speed4 - m3 * temp4;
int fx3 = m3 * temperature + b3;
clkOutputPercent = fx3;
}

if (temperature > temp4) // set maximal speed when temperature > temp4
{
clkOutputPercent = speedMax;
}

manualAdjust = map(analogRead(AI_potentiometer), 0, 1023, 0, 100);
clkOutputPercent = clkOutputPercent + manualAdjust; // add manualAdjust to rise the speed manually

if (clkOutputPercent > 100) // maximal 100% limiter
{
clkOutputPercent = 100;
}

clkOutputValue = (255 / 100 * clkOutputPercent); //convert from Percent to Analog output range

analogWrite(AO_clkAmplifier, clkOutputValue);
}


// set Temperature Leds
{

if (temperature <= temp1)
{
digitalWrite(DO_greenLed, HIGH);
digitalWrite(DO_yellowLed, LOW);
digitalWrite(DO_redLed, LOW);
}

if (temperature > temp1 and temperature <= temp2)
{
digitalWrite(DO_greenLed, HIGH);
digitalWrite(DO_yellowLed, HIGH);
digitalWrite(DO_redLed, LOW);
}

if (temperature > temp2 and temperature <= temp3)
{
digitalWrite(DO_greenLed, LOW);
digitalWrite(DO_yellowLed, HIGH);
digitalWrite(DO_redLed, LOW);
}

if (temperature > temp3 and temperature <= temp4)
{
digitalWrite(DO_greenLed, LOW);
digitalWrite(DO_yellowLed, HIGH);
digitalWrite(DO_redLed, HIGH);
}

if (temperature > temp4)
{
digitalWrite(DO_greenLed, LOW);
digitalWrite(DO_yellowLed, LOW);
digitalWrite(DO_redLed, HIGH);
}

}
}

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

the_leon (04.12.2016)

Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 897

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 71

  • Nachricht senden

46

28.10.2016, 13:53

Achso, es geht um einen 4Pin Lüfter.
Naja, du muss, bevor du den PWM Pin vom Arduino an den PWM Pin vom Lüfter hängen kannst, die Frequenz des PWM Pins des Arduino erhöhen. Der läuft standartmäßig auf 490Hz glaub ich.
Laut Intel Spezifikation muss der aber 25kHz sein. 25kHz kannst du mit den Atmega AVRs nicht passend einstellen, aber 31,3kHz gehen.

Dazu hab ich hier schon ein Tutorial verfasst

Leider weiß ich nicht, ob das mit dem Befehl auch einfach beim Tiny klappt. musst du mal testen. Da wird eigentlich einfach nur ein Prescaler Wert geändert der aus dem Haupttakt des AVR(Tiny), den Takt des Timers einstellt, an dem auch der PWM hängt.


luke301

Neu Hier!

Beiträge: 2

Registrierungsdatum: 04.12.2016

  • Nachricht senden

47

04.12.2016, 21:42

Hi,

ich verfolge den Thread nun schon eine ganze Weile und habe selbst damit begonnen auf der Basis hier eine Lüftersteuerung für meinen PC zu erstellen.
Ich bin jetzt soweit, dass ich die Temperatur Regelung mit der Poti Steuerung kombiniert habe und theoretisch soweit wäre alles auf eine Platine zu bringen und den Einbau ins Gehäuse zu planen.
Ich fände es allerdings einbautechnisch besser, wenn ich den Poti durch Software ersetzen könnte und per Java GUI diesen quasi simuliere.
Hier zwei Ideen, wie ich denke, dass es funktionieren könnte:

1.: Einen USB-Header auf dem Mainboard mit dem Arduino verbinden und das ganze über USB realisieren. Hätte auch den Vorteil, dass man den Arduino in eingebautem Zustand weiter programmieren könnte.
2.: Den physischen COM-Port meines Mainboards verwenden, um so über die RX-TX Anschlüsse des Arduinos mit diesem zu kommunizieren.

Könnte davon irgendwas funktionieren?

Vielleicht ist ja irgendjemand fit auf diesem Gebiet und kann mir weiterhelfen. Vielen Dank schon mal.

Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 897

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 71

  • Nachricht senden

48

05.12.2016, 07:39

Hi luke,
ich würde den USB Header nehmen. Wie du schon gesagt hast, kannst du dann auch einfach weiter am Arduino programmieren. Ich werde das genauso mit meiner Wasserkühlungssteuerung machen.
Ich bin leider nicht fit in Java, von daher kann ich da nicht helfen. Ich habe bisher begonnen, mit Visual Studio in C# ein Programm zu schreiben mit dem ich die Temperaturen und Auslastungen des Computers auslese. Das funktioniert bisher schon mal, allerdings erkennt es noch nicht zuverlässig jede Hardware. Ich habe geplant, dass die Software dann mit dem Arduino Daten über die serielle Schnittstelle austauscht. Also CPU und GPU Temp zum Arduino und Wassertemperatur und Lüftergeschwindigkeit zurück zum PC. Das habe ich aber noch nicht implementiert. Ich habe auch schon ewig nichts mehr an der Software gemacht, da ich sie nochmal neu und schön als WPS machen wollte (aktuell ist es ein Windows Form).

Wäre aber cool, wenn du das mit Java hinbekommst und dein Projekt dann hier vorstellst :thumbsup:


Gruß Scynd


luke301

Neu Hier!

Beiträge: 2

Registrierungsdatum: 04.12.2016

  • Nachricht senden

49

05.12.2016, 15:55

Ist es eigtl. einfach so möglich den Arduino während dem Betrieb mit Daten über USB zu versorgen?

Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 897

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 71

  • Nachricht senden

50

05.12.2016, 20:54

Jup, über den seriellen Port. Das kannst du einfach testen. Du kannst in den eingebauten seriellen Monitor der Arduino IDE oben was eintrage und an den Arduino senden. Auf dem Arduino muss natürlich der passende Code laufen um das auslesen und weiter verarbeiten zu können.

Da gibt es schon Beispielcode in der Arduino IDE. Unter Datei/Beispiele/Communication sind ein paar Serielle Beispiele.


Gruß Bert


misfit

Neu Hier!

Beiträge: 3

Registrierungsdatum: 08.10.2017

  • Nachricht senden

51

16.10.2017, 06:53

Hi zusammen und vielen Dank an Scynd für die Anleitung.

Bin auch noch ein Frischling im Thema Arduino und habe mir das Projekt mal als erstes vorgenommen.

Thema ist ich habe einen Kühlschrank mit einem kleinen Hitzestau und will mit der Lüftersteuerung und nem 140er Super Silent Lüfter bisschen die Luft verquirlen *ggg*

Meine Teileliste sieht wie folgt aus:

Arduino Nano V3.0 (hatte ich noch hier rumfahren)
Meanwell RS25-12
NTC10kOhm an 2m Siliconkabel
Kaltgeräte-Einbaustecker
Kaltgerätekabel
240V/10A Switch
10kOhm Wiederstand
140mm PWM Lüfter 3 adrig

Das ganze kommt dann ich ein 3D gedrucktes Gehäuse.

So jetzt zu meiner Frage. Kann ich das ganze mit dem Nano umsetzen?
Sollte doch funktionieren.

Wenn jemand Anregungen hat.....

Gruß,
Sascha

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »misfit« (16.10.2017, 07:07)


Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 897

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 71

  • Nachricht senden

52

16.10.2017, 07:32

Hallo misfit,
klar funktioniert das mit dem Nano. Für die PWM Lüfter musst du nur eine Zeile Code einfügen, damit die PWM Frequenz vom Arduino auf 31kHz eingestellt ist. Siehe hier
Die Restliche Steuerung kannst du hier unter 3.2 nachlesen ;)

Viel Spaß beim basteln! :thumbsup:

Gruß Scynd


Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

misfit (24.10.2017)

misfit

Neu Hier!

Beiträge: 3

Registrierungsdatum: 08.10.2017

  • Nachricht senden

53

24.10.2017, 06:24

Hi Zusammen,
also meine Bestellungen sind jetzt alle da.
Ich hätte aber noch zwei Fragen.
Das Gelbe Kabel vom Lüfter brauche ich nicht und das mit dem zweiten Widerstand habe nicht verstanden.
Ansonst habe ich mal ein Bilder angefügt.

Gruß,
Sascha
»misfit« hat folgendes Bild angehängt:
  • Skizze.JPG

Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 897

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 71

  • Nachricht senden

54

24.10.2017, 07:36

Hi Sascha,
wenn du die Drehzahl des Lüfters nicht auslesen willst, brauchst du das gelbe Kabel nicht. Der 10kOhm Widerstand bildet zusammen mit dem 10kOhm NTC einen Spannungsteiler.
Wenn du einen 10kOhm Widerstand an GND und einen 10kOhm an 5V anschließt und die Beiden verbindet, so ergibt sich in der Mitte eine Spannung von 2,5V. Ändert sich nun das Verhältnis die Widerstandswerte, so ändert sich auch die Spannung in der Mitte. Der NTC ist ja "nur" ein Widerstand, der bei Temperatur seinen Widerstandswert verändert. Mit dem Arduino misst man hier die Spannung der Mitte und berechnet aus dieser Änderung die Temperatur ;)


misfit

Neu Hier!

Beiträge: 3

Registrierungsdatum: 08.10.2017

  • Nachricht senden

55

25.10.2017, 06:36

Hi Scynd,
ah jetzt ja ....Dankeschön.... verstehe. Werde aber bei mir dann die Drehzahl auch noch auslesen :-)



Gruß,

Sascha

Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 897

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 71

  • Nachricht senden

56

25.10.2017, 07:31

Mach das. Wenn du Probleme mit der Drehzahl hast, melde dich einfach :thumbup:


black_devil

Neu Hier!

Beiträge: 4

Registrierungsdatum: 03.11.2017

  • Nachricht senden

57

03.11.2017, 13:26

Hallo, habe alles so aufgebaut wie im Beispiel 3.3, jedoch interessiert das meinen lüfter nicht wenn ich am poti drehe.

Die Drehzahl wird korrekt im Serial Monitor angezeigt und die Massen sind auch gebrückt.

Scynd

1. Platz Enermax Casecon Contest

  • »Scynd« ist der Autor dieses Themas

Beiträge: 897

Registrierungsdatum: 12.03.2012

Wohnort: München

Beruf: Maschinenbautechniker

Danksagungen: 71

  • Nachricht senden

58

03.11.2017, 20:45

Hallo black_devil,
winn der Poti richtig ausgelesen wird, dann begrenzt das den Fehler auf den MOSFET oder den Lüfter. Was für einen MOSFET und Lüfter hast du denn?
Kannst du ein Foto vom Aufbau machen, auf dem man alles erkennen kann? Dann kann ich besser weiterhelfen.

Gruß Scynd


black_devil

Neu Hier!

Beiträge: 4

Registrierungsdatum: 03.11.2017

  • Nachricht senden

59

03.11.2017, 20:59

Also als Lüfter verwende ich einen Fractal Design 140mm 3 Pin Lüfter

Als MOSFET einen IRLZ 34N



Ich hoffe du kannst alles erkennen

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »black_devil« (03.11.2017, 21:32)


der_george

"Mein Name ist George - Der George"

Beiträge: 4 800

Registrierungsdatum: 17.03.2010

Wohnort: Da wo der Berch wohnt

Beruf: Inginöööör und Freundinbeschäftiger

Danksagungen: 354

  • Nachricht senden

60

05.11.2017, 02:10

Ich bin zwar nicht der Bert, aber ich glaube ich habe dein Fehler.

Deine unteren Versorgungsleisten (+- auf Breadboard) sind nicht versorgt, wenn ich das richtig sehe.

So long :0)
Meine Mods bei we-mod-it:
24h Stealth - 1.Platz 24h Livemodding DCMM 2010 | | taabar sin - 2. Platz Casemod DCMM 2012 | | 24h Semmetastic - 2. Platz 24h Livemodding DCMM 2013

Mein Modding-Verkaufsthread