PWM, FET, DHT11 + ventilator.
4 berichten
• Pagina 1 van 1
PWM, FET, DHT11 + ventilator.
Hallo allemaal. Ik ben met het volgende bezig: ik heb een opstelling gemaakt waarbij ik een PWM, een FET en een DHT11 gebruik. Tevens heb ik een mini-ventilator aangesloten. De bedoeling is dat de ventilator vanaf 20 oCelsius op halve snelheid, en vanaf 25 oCelsius op volle snelheid gaat draaien. Inmiddels heb ik een sketch:
Wanneer ik deze sketch verifieer, wordt er aangegeven: fout bij het compileren voor board Arduino Uno. Nu kom ik er niet achter wat er fout is in deze sketch, (misschien de libraries welke worden gebruikt?).
Wellicht dat iemand ziet waar de foutmelding door veroorzaakt wordt. Reacties zie ik graag verschijnen.
Met vriendelijke groet,
Pascal.
- Code: Alles selecteren
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
DHT11 dht11
/*PWM_motorregeling_FET via LM35-aansturing.
Potentiometer uitlezen op seriële monitor
*/
const int analogInPin = A0; //potentiometer op pin A0
const int pwmOutPin1 = 11; //analoge PWM-output op pin 11
const int dht11OutPin2 = 9; //analoge DHT11-output op pin 9
int sensorValue = 0; //Variabele voor potmeter
int pwmValue1 = 0; //variabele voor PWM-signaal
int dht11Value2 = 0; //Variabele voor LM35-signaal
int temp = (temp - 32) / 1.8;
int tempMin = 20; //starttemperatuur ventilator halve snelheid
int tempMax = 25; //starttemperatuur ventilator volle snelheid
int fanSpeed = 1;
float tempC;
void setup () {
//start Seriele communicatie op 9600 baud:
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(A0); //leest de sensorwaarde van de potmeter
pwmValue1 = map(sensorValue, 0, 1023, 0, 255); //map regelbereik van potmeter 0...1023 naar PWM-signaal 0...255
dht11Value2 = map(sensorValue, 0, 1023, 255, 0); //map regelbereik van LM35 0...1023 naar DHT11-signaal 0...255
analogWrite(pwmOutPin1, pwmValue1); //schrijft PWM-signaal naar pin D11
Serial.print ("sensor ="); //print waarden naar seriele monitor
Serial.print ("\t sensor");
Serial.println(pwmValue1);
analogWrite(dht11OutPin2, dht11Value2); //schrijft DHT11-waarde naar pin D9
Serial.print ("temperatuur = oC"); //print waarden naar seriele monitor
tempC = analogRead(dht11OutPin2);
tempC = (5.0 * tempC * 100.0) / 1024.0;
Serial.print("\t temperatuur");
Serial.println(dht11Value2);
if (digitalRead(fanSpeed)) {
if (tempMin < 20) {
fanSpeed = fanSpeed * 0;
}
delay(200);
if (tempMin > 20) {
fanSpeed = fanSpeed / 2;
}
delay(200);
}
if (tempMax > 25) {
fanSpeed = fanSpeed * 1;
}
delay(200);
}
Wanneer ik deze sketch verifieer, wordt er aangegeven: fout bij het compileren voor board Arduino Uno. Nu kom ik er niet achter wat er fout is in deze sketch, (misschien de libraries welke worden gebruikt?).
Wellicht dat iemand ziet waar de foutmelding door veroorzaakt wordt. Reacties zie ik graag verschijnen.
Met vriendelijke groet,
Pascal.
Advertisement
Re: PWM, FET, DHT11 + ventilator.
Hallo Pascal, is het mogelijk om opnieuw te beginnen ?
Welk Arduino board heb je ?
Kun je een schema laten zien ? Een foto van een tekening mag ook.
De DHT11 is geen goede sensor. De luchtvochtigheid is zo onnauwkeurig, daar heb je weinig aan. De temperatuur is ook niet heel nauwkeurig.
Een echte DS18B20 is beter, maar helaas zijn er veel namaak.
Kun je eerst proberen de DHT11 sensor aan de praat te krijgen ?
Er zijn allerlei libraries voor de DHT11.
Heb je naast de Adafruit libraries nog meer DHT libraries geinstalleerd ? Dan komt dat in de war met de Adafruit libraries.
Je kunt de Adafruit libraries gewoon gebruiken of op de "unified" manier. Jouw sketch lijkt echter niet op de voorbeelden van Adafruit.
Waarom zou je een PWM signaal naar de DHT11 sensor sturen ? Daar heb ik nog nooit van gehoord.
Je gebruikt de fanSpeed variabele niet. Ik neem aan dat die de ventilator zou moeten regelen.
Welk Arduino board heb je ?
Kun je een schema laten zien ? Een foto van een tekening mag ook.
De DHT11 is geen goede sensor. De luchtvochtigheid is zo onnauwkeurig, daar heb je weinig aan. De temperatuur is ook niet heel nauwkeurig.
Een echte DS18B20 is beter, maar helaas zijn er veel namaak.
Kun je eerst proberen de DHT11 sensor aan de praat te krijgen ?
Er zijn allerlei libraries voor de DHT11.
Heb je naast de Adafruit libraries nog meer DHT libraries geinstalleerd ? Dan komt dat in de war met de Adafruit libraries.
Je kunt de Adafruit libraries gewoon gebruiken of op de "unified" manier. Jouw sketch lijkt echter niet op de voorbeelden van Adafruit.
Waarom zou je een PWM signaal naar de DHT11 sensor sturen ? Daar heb ik nog nooit van gehoord.
Je gebruikt de fanSpeed variabele niet. Ik neem aan dat die de ventilator zou moeten regelen.
Re: PWM, FET, DHT11 + ventilator.
Alvast bedankt voor de reactie. Eerst even wat informatie: ik gebruik een pc met Windows 10, en een Arduino Uno, beide softwarematig up-to-date. In de sketch heb ik een aanpassing gemaakt, deze geeft geen foutmelding meer en laat zich uploaden. Terzijde, wat betreft de DHT11: ik volg momenteel via een onderwijsinstelling een thuis-cursus Arduino programmeren. Bij deze cursus krijg je in het kader van 'huiswerk' op een gegeven moment een 'thuisproject' aangereikt. In dit geval het in elkaar zetten van een bouwwerk waarbij onder andere een potmeter, een FET, de DHT11 en een ventilator wordt gebruikt. Dit alles samen om er mee te leren werken. Een website zoals deze bezoek ik geregeld om informatie te vinden betreffende hardware/software-vraagstukken. Voor wat betreft de DHT11, deze zit in het startpakket welke ik ontvangen heb, inmiddels heb ik een DHT22 in bestelling. De genoemde sensor in de reactie, daar zal ik eens naar kijken.
Het is niet gelukt om een foto/tekening bij deze reactie te plaatsen, dit moet ik nog uitzoeken hoe dit gaat. Tot slot de variabele instellen, hiervoor kan ik wel een hint gebruiken.
Bij voorbaat dank voor reacties,
Pascal.
- Code: Alles selecteren
#include <Adafruit_Sensor.h>
/*PWM_motorregeling_FET via DHT11-aansturing.
Potentiometer uitlezen op seriële monitor
*/
const int analogInPin = A0; //potentiometer op pin A0
const int pwmOutPin1 = 11; //analoge PWM-output op pin 11
const int dht11OutPin2 = 9; //analoge DHT11-output op pin 9
int sensorValue = 0; //Variabele voor potmeter
int pwmValue1 = 0; //variabele voor PWM-signaal
int dht11Value2 = 0; //Variabele voor DHT11-signaal
int temp = (temp - 32) / 1.8;
int tempMin = 20; //starttemperatuur ventilator halve snelheid
int tempMax = 25; //starttemperatuur ventilator volle snelheid
int fanSpeed = 1;
float tempC;
void setup () {
//start Seriele communicatie op 9600 baud:
Serial.begin(9600);
}
void loop() {
sensorValue = analogRead(A0); //leest de sensorwaarde van de potmeter
pwmValue1 = map(sensorValue, 0, 1023, 0, 255); //map regelbereik van potmeter 0...1023 naar PWM-signaal 0...255
dht11Value2 = map(sensorValue, 0, 1023, 255, 0); //map regelbereik van LM35 0...1023 naar DHT11-signaal 0...255
analogWrite(pwmOutPin1, pwmValue1); //schrijft PWM-signaal naar pin D11
Serial.print ("sensor ="); //print waarden naar seriele monitor
Serial.print ("\t sensor");
Serial.println(pwmValue1);
analogWrite(dht11OutPin2, dht11Value2); //schrijft DHT11-waarde naar pin D9
Serial.print ("temperatuur = oC"); //print waarden naar seriele monitor
tempC = analogRead(dht11OutPin2);
tempC = (5.0 * tempC * 100.0) / 1024.0;
Serial.print("\t temperatuur");
Serial.println(dht11Value2);
if (digitalRead(fanSpeed)) {
if (tempMin < 20) {
fanSpeed = fanSpeed * 0;
}
delay(200);
if (tempMin > 20) {
fanSpeed = fanSpeed / 2;
}
delay(200);
}
if (tempMax > 25) {
fanSpeed = fanSpeed * 1;
}
delay(200);
}
Het is niet gelukt om een foto/tekening bij deze reactie te plaatsen, dit moet ik nog uitzoeken hoe dit gaat. Tot slot de variabele instellen, hiervoor kan ik wel een hint gebruiken.
Bij voorbaat dank voor reacties,
Pascal.
Re: PWM, FET, DHT11 + ventilator.
Kun je eerst proberen de DHT11 sensor aan de praat te krijgen ?
Kun je opnieuw beginnen ?
Daarvoor kun je het best een nieuwe sketch maken.
De DHT11 communiceert met de Arduino via een reeks van digitale pulsen.
Het is onmogelijk om zelf die pulsen te maken en lezen, daarvoor heb je een library nodig.
De DHT11 heeft dus geen analoge output en geen analoge input en kan geen PWM signaal verdragen. Mogelijk is jouw DHT11 daardoor stuk gegaan, maar meestal valt het mee en is hij niet meteen stuk bij een kortsluiting op het data-signaal.
Stel dat je de library van Adafruit installeert, dan zitten daar ook voorbeelden bij.
Ga in de Arduino IDE in het menu naar de voorbeelden, en dan even goed zoeken. Dan zou je die kunnen vinden.
Probeer het eenvoudigste voorbeeld: https://github.com/adafruit/DHT-sensor-library/blob/master/examples/DHTtester/DHTtester.ino.
Heb je naast de Adafruit libraries nog meer DHT libraries geinstalleerd ? Dan komt dat in de war met de Adafruit libraries.
Loop ook door de tutorial van Adafruit: https://learn.adafruit.com/dht.
Misschien lukt het daarmee om de temperatuur te lezen.
Als je die temperatuur hebt, dan kun je misschien de PWM output aan je sketch gaan toevoegen.
Kun je opnieuw beginnen ?
Daarvoor kun je het best een nieuwe sketch maken.
De DHT11 communiceert met de Arduino via een reeks van digitale pulsen.
Het is onmogelijk om zelf die pulsen te maken en lezen, daarvoor heb je een library nodig.
De DHT11 heeft dus geen analoge output en geen analoge input en kan geen PWM signaal verdragen. Mogelijk is jouw DHT11 daardoor stuk gegaan, maar meestal valt het mee en is hij niet meteen stuk bij een kortsluiting op het data-signaal.
Stel dat je de library van Adafruit installeert, dan zitten daar ook voorbeelden bij.
Ga in de Arduino IDE in het menu naar de voorbeelden, en dan even goed zoeken. Dan zou je die kunnen vinden.
Probeer het eenvoudigste voorbeeld: https://github.com/adafruit/DHT-sensor-library/blob/master/examples/DHTtester/DHTtester.ino.
Heb je naast de Adafruit libraries nog meer DHT libraries geinstalleerd ? Dan komt dat in de war met de Adafruit libraries.
Loop ook door de tutorial van Adafruit: https://learn.adafruit.com/dht.
Misschien lukt het daarmee om de temperatuur te lezen.
Als je die temperatuur hebt, dan kun je misschien de PWM output aan je sketch gaan toevoegen.
4 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 30 gasten