School project

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 17
Geregistreerd: 25 Apr 2016, 11:50

Re: School project

Berichtdoor Jeffrey0548 » 14 Mei 2016, 20:39

Ja dat heb ik.

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: School project

Berichtdoor nicoverduin » 14 Mei 2016, 22:54

Zet je sketch eens hier neer. Dan kunnen we zien of het in de software of de hardware zit.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 17
Geregistreerd: 25 Apr 2016, 11:50

Re: School project

Berichtdoor Jeffrey0548 » 14 Mei 2016, 23:07

cpp code
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int sensorPin = A0; // constante voor de temperatuur sensor.
const int motorPin = 9; // constante voor de dc-motor.
const int sterkte = 8;
const float baselineTemp = 26.0; // constante voor de 'baseline' temperatuur.
void setup() {
Serial.begin(9600); // Connectie openen.
pinMode(motorPin, OUTPUT); // zet de dc-motor als output.
pinMode(sterkte, OUTPUT);
analogWrite(sterkte, HIGH);
lcd.begin(16, 2);
}

void loop() {
int sensorVal = analogRead(sensorPin); //
Serial.print("Sensor Value; ");
Serial.print(sensorVal);
float voltage = (sensorVal/1024.0) * 5.0;
Serial.print(", Volts: ");
Serial.print(voltage);
Serial.print(", degrees C: ");
float temperature = (voltage - .5) * 100;
Serial.println(temperature);
if (temperature > baselineTemp){
digitalWrite(motorPin, HIGH);
}
else {
digitalWrite(motorPin, LOW);
}
lcd.clear();
lcd.print("Temp C = ");
lcd.print(temperature);
delay(200);
}

Op de manier hierboven werkt die wel.

Maar die if statement wou ik omzetten na dit zodat ik de snelheid van de dc-motor heb.
cpp code
// deze komen dan bij de code erbij in.
int tempMin = 30;
int tempMax = 70;
int fanSpeed;
int fanLCD;


if(temperature < tempMin) {
fanSpeed = 0;
digitalWrite(motorPin, LOW);
}
if((temperature >= tempMin) && (temperature <= tempMax)) {
fanSpeed = map(temp, tempMin, tempMax, 32, 255);
fanLCD = map(temp, tempMin, tempMax, 0, 100);
analogWrite(motorPin, fanSpeed);
}

lcd.print("snelheid = ");
lcd.print(fanLCD);

en dan print ik dit op de lcd. zodat ik de snelheid kan zien, maar dan gaat die stotteren en geeft die rare tekens weer.

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: School project

Berichtdoor shooter » 15 Mei 2016, 00:19

je moet wel vertellen waar de tekst moet komen, want er staat ook nog temperatuur in. en het gaat allemaal te snel 200 ms per cycle.
als fanspeed 0 moet zijn schrijf dan ook gewoon analogwrite 0 en geen digitalwrite.
doe die analogwrite ook maar een keer als deze verandert en niet vaker want telkens wordt er een teller gereset.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: School project

Berichtdoor nicoverduin » 15 Mei 2016, 11:42

Als je rond de temperatuur komt die je wilt gaat die motor wel haperen... AAN-UIT-AAN-UIT enz. oftewel... Net eronder... Net erboven... Net eronder enz Dat veroorzaakt allerlei "glitches". En die diode die je erbij krijgt is veel te traag om al dat aan-uitschakelen af te vangen. Je zou meer een bandbreedte moeten nemen en dan op de uiterste schakelen en PWM gebruiken zoals Paul al aangaf.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 17
Geregistreerd: 25 Apr 2016, 11:50

Re: School project

Berichtdoor Jeffrey0548 » 15 Mei 2016, 18:48

cpp code
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int sensorPin = A0; // constante voor de temperatuur sensor.
const int motorPin = 9; // constante voor de dc-motor.
const int sterkte = 8;
const float baselineTemp = 25.0; // constante voor de 'baseline' temperatuur.
int tempMin = 25;
int tempMax = 35;
int fanSpeed;
int fanLCD;
void setup() {
Serial.begin(9600); // Connectie openen.
pinMode(motorPin, OUTPUT); // zet de dc-motor als output.
pinMode(sterkte, OUTPUT);
analogWrite(sterkte, HIGH);
lcd.begin(16, 2);
}

void loop() {
delay(100);
int sensorVal = analogRead(sensorPin); //
Serial.print("Sensor Value; ");
Serial.print(sensorVal);
float voltage = (sensorVal/1024.0) * 5.0;
Serial.print(", Volts: ");
Serial.print(voltage);
Serial.print(", degrees C: ");
float temperature = (voltage - .5) * 100;
Serial.println(temperature);
lcd.clear();
lcd.print("Temp C = ");
lcd.print(temperature);
lcd.setCursor(0,1);
lcd.print("snelheid % = ");
lcd.print(fanLCD);
if ((temperature >= tempMin)&& (temperature <= tempMax)){
fanSpeed = map(temperature, tempMin, tempMax, 32, 255);
fanLCD = map(temperature, tempMin, tempMax, 0, 100);
analogWrite(motorPin, fanSpeed);
}
else {
digitalWrite(motorPin, LOW);
}
}

Ik heb nu dit. je merkt dat de dc-motor vanaf de 25graden begint en hoe warmer het wordt dat die steeds harder gaat. maxmimaal op 35graden.
maar vanaf de 25graden laat die dus allemaal rare tekens zien. tussendoor zie je het wel soms, ook dat het werkt en je gewoon ziet dat de procenten oplopen. dus de snelheid van de dc-motor zie je dan wel.
Ik krijg het alleen niet voor elkaar om die rare tekens weg te krijgen..

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: School project

Berichtdoor nicoverduin » 16 Mei 2016, 10:13

Maak van die delay(100) er eens delay(1000) van. En ik zou sowieso een alternatieve oplossing zoeken voor het telkenmale wissen van het scherm. Maak een functie die alleen de layout print. In principe hoeft dat maar een keer. En dan hoef je alleen nog maar de waardes in te vullen en die clear() al helemaal niet. Nu is het zo te zien een grote knipper centrale.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: School project

Berichtdoor shooter » 16 Mei 2016, 10:25

pak het draadje van de motor af, en als je dan gewoon display ziet is het storing in de voeding, of een condensator erbij of een betere voeding (dan wel een aparte voor de motor)
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: School project

Berichtdoor nicoverduin » 16 Mei 2016, 14:05

shooter schreef:pak het draadje van de motor af, en als je dan gewoon display ziet is het storing in de voeding, of een condensator erbij of een betere voeding (dan wel een aparte voor de motor)
Maar dan zit ie nog steeds 10x per seconde zijn scherm te wissen......
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 4068
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: School project

Berichtdoor shooter » 17 Mei 2016, 19:43

ja dat klopt, maar vanaf 25 graden ofwel als de pwm begint, dan krijgt hij rare tekens.
paul deelen
shooter@home.nl

VorigeVolgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten