This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
random_object_build_challenge_2023:random_build_wouter [2023/11/20 11:29] – wrusman | random_object_build_challenge_2023:random_build_wouter [2023/12/04 12:07] (current) – wrusman | ||
---|---|---|---|
Line 1: | Line 1: | ||
Van Simon kreeg ik een deksel van een elektrische koelbox en een massage apparaat. | Van Simon kreeg ik een deksel van een elektrische koelbox en een massage apparaat. | ||
+ | {{: | ||
Het massageapparaat heb ik voorzien van nieuwe accu, en dat was welkom om nekklachten te verhelpen dus die heb ik niet gebruikt voor deze challenge LOL . | Het massageapparaat heb ik voorzien van nieuwe accu, en dat was welkom om nekklachten te verhelpen dus die heb ik niet gebruikt voor deze challenge LOL . | ||
Line 21: | Line 22: | ||
{{: | {{: | ||
- | Tijdens eerste tests probeerde ik het peltier element aan de bovenkant zo'n 80 graden te laten worden, wat prima ging. Ik kwam er alleen achter dat het temperatuurverschil tussen de bovenkant en onderkant een maximale waarde heeft, dus op het moment dat de bovenkant 80 graden wordt begon het elemant | + | Tijdens eerste tests probeerde ik het peltier element aan de bovenkant zo'n 80 graden te laten worden, wat prima ging. Ik kwam er alleen achter dat het temperatuurverschil tussen de bovenkant en onderkant een maximale waarde heeft, dus op het moment dat de bovenkant 80 graden wordt begon het element |
Na dit een tijdje te hebben laten draaien kwam ik er achter dat het element in de koelkast wel koud bleef, maar de rest van de inhoud niet echt koud werd.. tijd voor nog een ventilator dus. | Na dit een tijdje te hebben laten draaien kwam ik er achter dat het element in de koelkast wel koud bleef, maar de rest van de inhoud niet echt koud werd.. tijd voor nog een ventilator dus. | ||
Line 30: | Line 31: | ||
{{: | {{: | ||
- | Het plaatje bovenop wordt mooi heet | + | Het plaatje bovenop wordt mooi heet, de binnenkant niet zo koud als gehoopt, maar ik denk dat hij iets koels wel redelijk koel kan houden. |
+ | < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | #define SENSORTOP_PIN | ||
+ | #define SENSORINSIDE_PIN | ||
+ | |||
+ | #define REFERENCE_RESISTANCE | ||
+ | #define NOMINAL_RESISTANCE | ||
+ | #define NOMINAL_TEMPERATURE | ||
+ | #define B_VALUE | ||
+ | |||
+ | //Define Variables we'll be connecting to | ||
+ | double Setpoint, Input, Output; | ||
+ | //Define the aggressive and conservative Tuning Parameters | ||
+ | |||
+ | double aggKp=4, aggKi=0.2, aggKd=1; | ||
+ | double consKp=1, consKi=0.05, | ||
+ | |||
+ | //Specify the links and initial tuning parameters | ||
+ | PID myPID(& | ||
+ | Thermistor* thermistorTop; | ||
+ | Thermistor* thermistorInside; | ||
+ | LiquidCrystal_I2C lcd(0x27, | ||
+ | |||
+ | void setup() | ||
+ | { | ||
+ | Serial.begin(9600); | ||
+ | Setpoint = 50; | ||
+ | |||
+ | thermistorTop = new NTC_Thermistor( | ||
+ | SENSORTOP_PIN, | ||
+ | REFERENCE_RESISTANCE, | ||
+ | NOMINAL_RESISTANCE, | ||
+ | NOMINAL_TEMPERATURE, | ||
+ | B_VALUE | ||
+ | ); | ||
+ | thermistorInside = new NTC_Thermistor( | ||
+ | SENSORINSIDE_PIN, | ||
+ | REFERENCE_RESISTANCE, | ||
+ | NOMINAL_RESISTANCE, | ||
+ | NOMINAL_TEMPERATURE, | ||
+ | B_VALUE | ||
+ | ); | ||
+ | myPID.SetMode(AUTOMATIC); | ||
+ | | ||
+ | lcd.init(); | ||
+ | lcd.init(); | ||
+ | // Print a message to the LCD. | ||
+ | lcd.backlight(); | ||
+ | lcd.setCursor(5, | ||
+ | lcd.print(" | ||
+ | delay(1000); | ||
+ | lcd.clear(); | ||
+ | } | ||
+ | |||
+ | void loop() | ||
+ | { | ||
+ | // Reads temperature | ||
+ | const double celsiusTop = thermistorTop-> | ||
+ | const double celsiusInside = thermistorInside-> | ||
+ | // Output of information | ||
+ | Serial.print(" | ||
+ | Serial.print(celsiusTop); | ||
+ | Serial.println(" | ||
+ | Serial.print(" | ||
+ | Serial.print(celsiusInside); | ||
+ | Serial.println(" | ||
+ | |||
+ | Input = celsiusTop; | ||
+ | | ||
+ | double gap = abs(Setpoint-Input); | ||
+ | if (gap < 10) | ||
+ | { // | ||
+ | myPID.SetTunings(consKp, | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | // | ||
+ | | ||
+ | } | ||
+ | | ||
+ | myPID.Compute(); | ||
+ | analogWrite(3, | ||
+ | Serial.print(" | ||
+ | Serial.println(255-Output); | ||
+ | Serial.println("" | ||
+ | | ||
+ | |||
+ | lcd.setCursor(0, | ||
+ | lcd.print(" | ||
+ | lcd.print(celsiusTop); | ||
+ | lcd.print(" | ||
+ | | ||
+ | lcd.setCursor(0, | ||
+ | lcd.print(" | ||
+ | lcd.print(celsiusInside); | ||
+ | lcd.print(" | ||
+ | delay(1000); | ||
+ | } | ||
+ | |||
+ | </ | ||