INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
[Projekt] Reifeschrank Klimasteuerung
18.03.2015, 19:47 (Dieser Beitrag wurde zuletzt bearbeitet: 18.03.2015 19:54 von sleipneer.)
Beitrag #57
RE: [Projekt] Reifeschrank Klimasteuerung
Danke wampo für den Code.
Den werd ich mir morgen mal zu Gemüte führen.

Ja, aktuell hab ich nen 4pin Lüfter dran, der mit einem extra Netzteil gespeist und vom Relais geschalten wird.

Hinterher soll es so sein, dass das Netzteil alles speist: Arduino, Lüfter und Nebler.

Die Grundidee hinter der PWM Sache ist, dass der Lüfter im Idealtemperaturbereich trotzdem noch mit 20% Leistung oder so läuft, um eine beständige Luftzirkulation zu erreichen.

Zum Thema Quick&Dirty: Ich glaub mein ganzer Code ist mittlerweile dreckig genug! Big Grin
Ich hab mir das in meinen Augen passende gesucht und dann zurecht gebastelt! ^^ Ein echter Programmierer würde sich wahrscheinlich übergeben! *g*

// edit:
ich wollte eigentlich den Aufbau in fritzing machen, bin aber daran gescheitert, dass das Relais-Board dort nicht drin ist Sad
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.03.2015, 20:05
Beitrag #58
RE: [Projekt] Reifeschrank Klimasteuerung
Ach von den Dreckigen sachen hab ich auch noch genug, aber meistens nur die versuchsdinger!

Probier den Code einfach mal aus, benutze aber die Frequenzy Lib und fahr die mit 25kHz (25000Hz). Spiel dich da mal durch die Frequenzen zwischen 22-28khz und achte mal auf deine Lüftergeräusche bei unter 50%. Dazu hilft meistens noch ein Datenblatt vom Lüfter, den nicht alle verlangen immer genau die 25khz.

Greez
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.03.2015, 20:10
Beitrag #59
RE: [Projekt] Reifeschrank Klimasteuerung
(18.03.2015 20:05)Wampo schrieb:  Ach von den Dreckigen sachen hab ich auch noch genug, aber meistens nur die versuchsdinger!

Probier den Code einfach mal aus, benutze aber die Frequenzy Lib und fahr die mit 25kHz (25000Hz). Spiel dich da mal durch die Frequenzen zwischen 22-28khz und achte mal auf deine Lüftergeräusche bei unter 50%. Dazu hilft meistens noch ein Datenblatt vom Lüfter, den nicht alle verlangen immer genau die 25khz.

Greez

danke für den Tip.
Hab grad mal gekuckt, aber auf der HP des Herstellers gibts leider keine genaueren Daten.
Stammt aus nem CPU Kühler.
Arctic Freezer Xtreme Rev.2. Das ist ein 120mm Lüfter, aber der is eh grad nur zum testen! ^^
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.03.2015, 11:42
Beitrag #60
RE: [Projekt] Reifeschrank Klimasteuerung
so, hab jetzt die PWM Steuerung hinbekommen.
heisst, wenn er sich innerhalb der Toleranzbereiche bewegt, läuft er mit PWM=1 (was immer noch relativ schnell ist, wie ich empfinde).
Und sobald er ausserhalb der Toleranz ist, kriegt er PWM=255 und fängt volles Pfund zu pusten an.

Jetzt will ich aber die rpm zusätzlich auf dem Display anzeigen, weil on/off ja dadurch wegfällt.
Wie löse ich das denn? Ich hab das gelbe Tachokabel an den Arduino angeschlossen. Aber sämtliche Anleitungen, die ich im Netz gefunden hab, beissen sich wohl mit meiner Programmierung.
Gibts da auch ne "Qucik&Dirty" Lösung für? Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.03.2015, 12:07
Beitrag #61
RE: [Projekt] Reifeschrank Klimasteuerung
(19.03.2015 11:42)sleipneer schrieb:  heisst, wenn er sich innerhalb der Toleranzbereiche bewegt, läuft er mit PWM=1 (was immer noch relativ schnell ist, wie ich empfinde).
Da koennte man vielleicht was machen, indem man das PWM selbst programmiert. Vielleicht gibt es da auch eine Lib, die ein PWM mit ein paar mehr Bits Aufloesung erlaubt.

Zitat:Jetzt will ich aber die rpm zusätzlich auf dem Display anzeigen, weil on/off ja dadurch wegfällt.
Wenn Du weisst, welcher "PWM-Wert" welcher Drehzahl entspricht, dann kannst Du das direkt anzeigen... Vielleicht reicht Dir auch sowas wie "hohe Drehzahl" und "niedrige Drehzahl".

Zitat:Wie löse ich das denn? Ich hab das gelbe Tachokabel an den Arduino angeschlossen. Aber sämtliche Anleitungen, die ich im Netz gefunden hab, beissen sich wohl mit meiner Programmierung.
Tja, da braeuchte man mal eine Beschreibung, wie das Tachosignal genau aussieht.
Vermutlich gibt das Impulse ab, deren Dauer oder Haeufigkeit was mit der Drehzahl zu tun haben. Du koenntest fuer den Anfang mal was mit pulseIn versuchen und das Ergebnis einfach ueber Serial ausgeben.

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.03.2015, 13:47
Beitrag #62
RE: [Projekt] Reifeschrank Klimasteuerung
hmm....irgendwie bringt mich PulseIn auch nicht weiter...
oder ich bin grad einfach zu doof dazu Sad
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.03.2015, 13:52 (Dieser Beitrag wurde zuletzt bearbeitet: 19.03.2015 13:54 von Wampo.)
Beitrag #63
RE: [Projekt] Reifeschrank Klimasteuerung
(19.03.2015 12:07)Thorsten Pferdekämper schrieb:  
(19.03.2015 11:42)sleipneer schrieb:  heisst, wenn er sich innerhalb der Toleranzbereiche bewegt, läuft er mit PWM=1 (was immer noch relativ schnell ist, wie ich empfinde).
Da koennte man vielleicht was machen, indem man das PWM selbst programmiert. Vielleicht gibt es da auch eine Lib, die ein PWM mit ein paar mehr Bits Aufloesung erlaubt.

Zitat:Jetzt will ich aber die rpm zusätzlich auf dem Display anzeigen, weil on/off ja dadurch wegfällt.
Wenn Du weisst, welcher "PWM-Wert" welcher Drehzahl entspricht, dann kannst Du das direkt anzeigen... Vielleicht reicht Dir auch sowas wie "hohe Drehzahl" und "niedrige Drehzahl".

Zitat:Wie löse ich das denn? Ich hab das gelbe Tachokabel an den Arduino angeschlossen. Aber sämtliche Anleitungen, die ich im Netz gefunden hab, beissen sich wohl mit meiner Programmierung.
Tja, da braeuchte man mal eine Beschreibung, wie das Tachosignal genau aussieht.
Vermutlich gibt das Impulse ab, deren Dauer oder Haeufigkeit was mit der Drehzahl zu tun haben. Du koenntest fuer den Anfang mal was mit pulseIn versuchen und das Ergebnis einfach ueber Serial ausgeben.

Mein vorschlag und kenntnisse über genau deine Frage:

1.Die Idee mit PWM Wert = Drehzahl is nicht verkehrt aber denke ich is zu Umständlich das rauszufinden. Genauere Drehzahlangaben bekommst eben über den Tachopin. Hab den Tachpin immer über ein Interrupt laufen, pro Umdrehung bekommst du ein oder zwei Impulse. Diese kannst du ganz einfach auswerten mit dem Code (unten) der zwar für einen Windsensor an meiner Wetterstation hängt aber nach dem gleichen Prinzip Funktioniert.


2. Die Lüfter lassen sich generell nicht auf 0 RPM mit PWM Drosseln, da deine PWM Taktung irgendwann nicht mehr ausreicht um den Lüfter zu drehen, gerade dann wenn er wirklich steht, reicht kein niedriges PWM Signal um ihn andrehen zu lassen.
Daher sind die ab ner gewissen Geschwindigkeit sozuagen Festgenagelt. Spiel dich n bissl rum um zu sehen was das niedrigste PWM Signal ist was du drauf geben kannst.
Achja Tachosignal wird auf GND gezogen wenn impuls anliegt. Stells dir wie n REED Kontakt vor, nur das das im Lüfter überwiegend mit nem Hallsensor gemacht wird.

Mit dem unten stehenden Code musst du aber bedenken das du immer ein Delay während der Impulszählung hast. Da gibts mit sicherheit andere möglichkeiten auch noch aber das funktioniert ganz gut.
Versuch mal zu Googeln: Interrupt Tacho Signal Lüfter / Fan

Code:
//einbinden der notwendigen Libraries
#include <LiquidCrystal.h>

// festlegen der Pins für das LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define LCDBacklightPin 10

// einige konstanten
const int windPin = 3;          // anschluss des reedkontaktes

const float windFactor = 2.4;   // umrechnungsfaktor von umdrehungen in geschwindigkeit
const int measureTime = 3;      // messzeitraum in sekunden

// variablen
volatile unsigned int windCounter = 0;  //interner zaehler für umdrehungen
float windSpeed = 0.0;


//initialisieren der variablen fŸr messwerte und die zeitmessung
unsigned long time = 0;

//interrupt service routine fŸr das zaehlen der umdrehungen
void countWind() {
   windCounter ++;
}

// lcd anzeige
void show_values() {
  //erste Zeile - anzahl der gezaehlten umdrehungen im messzeitraum  
  lcd.setCursor(0,0);
  lcd.print("Counts  ");
  lcd.print(windCounter);
  lcd.print("    ");
  //zweite zeile - ermittelte geschwindigkeit
  lcd.setCursor(0,1);
  lcd.print("Speed ");
  lcd.print(windSpeed);
  lcd.print(" km/h  ");
}


//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// MAIN
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////

//initialisierung
void setup()
{
  //debug ausgaben auf die serielle schnittstelle
  Serial.begin(9600);
  Serial.println("starting up");
  
  //2x16 lcd display
  lcd.begin(16, 2);              // start the library
  lcd.setCursor(0,0);

  //startzeit bestimmen
  time = millis();
}

//hauptschleife
void loop()
{
  
  //starten des messzeitraums
  Serial.print("starting wind-counter for ");
  Serial.print(measureTime);
  Serial.println(" seconds");
  //zaehler auf 0 stellen
  windCounter = 0;
  time = millis();
  //zaehl-interrupt aktivieren
  attachInterrupt(1,countWind,RISING);
  //abwarten des messzeitraums
  delay(1000 * measureTime);
  //zaehl-interrupt deaktivieren
  detachInterrupt(1);
  //zeit bestimmen
  time = (millis() - time) / 1000;
  
  //debug ausgaben
  Serial.print("Time elapsed : ");
  Serial.println(time);
  Serial.print("Wind counts = ");
  Serial.println(windCounter);
  //berechnen der geschwindigkeit
  windSpeed = (float)windCounter / (float)measureTime * windFactor;
  Serial.print("Wind Speed = ");
  Serial.print(windSpeed);
  Serial.println(" km/h");
  //lcs ausgabe aktualisieren
  show_values();
  
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.03.2015, 14:08
Beitrag #64
RE: [Projekt] Reifeschrank Klimasteuerung
ich habs grad mit deinem Code ausprobiert und hab den Lüfter ohne PWM auf 100% laufen lassen.
aber er zeigt mir nur 0.00km/h an....

ich denke, der knackpunkt liegt irgendwo anders begraben.... Sad
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Roboter (Projekt) Beginner linux248 1 388 30.11.2016 12:06
Letzter Beitrag: Thie
  Arduino Projekt (Einkauf/Beratung) pekinese 2 239 21.11.2016 13:44
Letzter Beitrag: pekinese
Rainbow WB2812B Projekt CrazyHawk 18 1.508 22.07.2016 17:45
Letzter Beitrag: CrazyHawk
  Cam Slider Projekt, die ersten Schritte T8T 3 1.160 30.04.2016 16:26
Letzter Beitrag: SkobyMobil
  Projekt: Türsensor _Aviciii_ 9 2.448 05.04.2016 18:50
Letzter Beitrag: hotsystems
  Erstes Projekt Claus_M 8 1.984 08.01.2016 07:36
Letzter Beitrag: Claus_M
  NwT-Projekt Kursstufe1 Jonas Halbgewachs 6 2.310 26.10.2015 10:47
Letzter Beitrag: Binatone
  Anfänger mit großem Bau Projekt (Useless Box 3.0) Wambo 7 4.173 02.10.2015 16:36
Letzter Beitrag: Klaus(i)
  Ardunio Anfänger mit vielen Fragen zu einem Design Projekt (mit Bildern) farbexot 0 1.549 01.08.2015 13:03
Letzter Beitrag: farbexot
  1. Arduino Projekt: Riesengrill Wotan 2 2.328 24.06.2015 14:45
Letzter Beitrag: Wotan

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste