Table of Contents

Cooling Pad Laptop

Moldoveanu Alex-Adrian 333CA

Introducere

Ce face

Proiectul consta în realizarea unui cooler pad pentru laptop care pe langa funcționalitatea propriu zisa de a raci laptop-ul , are caracteristica ca puterea de răcire și viteza ii sunt ajustate automat prin intermediul unui senzor de temperatura iar pentru a înștiința utilizatorul despre aceste date folosește un display.Intrucat prin senzorul de temperatura trece curent , el se încălzește iar acest lucru influențează senzorul am ales sa implementez un filtru , acest filtru este de fapt o formula matematica prin care sa înlătur acea eroare a senzorului , voi vorbi mai mult despre acest filtru în paragrafele următoare.

Scop și Utilitate

Scopul este unul relativ simplu , acela de a raci componentele unui laptop, și de a le păstra la o temperatura optimă de funcționare . Atunci când componentele unui laptop precum procesorul se încălzesc acestea pierd din randament iar acest lucru poate fi înlăturat prin folosirea unui cooler.

Ideea din spatele proiectului

Am ales sa implementez un obiect pe care l-am cumpărat de atâtea ori și de care aproape de fiecare data am fost nemulțumit. Este un obiect atât de util dar și foarte interesant . E o provocare pentru mine sa implementez un obiect pe care îl utilizez în fiecare zi aproape și sa îl fac mai bun decât ceea ce este deja în comerț.

Descriere Generală

Pentru a porni dispozitivul, utilizatorul trebuie sa conecteze cooler-ul la calculator. Cooler-ul este automatizat în sensul că se activează atunci când temperatura prestabilită este depășită, iar când temperatura scade sub o limită inferioară, ventilatoarele se opresc. Prin actionarea asupra potentiometrului de catre utilizator, acesta poate ajusta viteza ventilatoarelor. Pentru a evita influențarea temperaturii înregistrate de curentul care trece prin senzorul de temperatură, am integrat un filtru în circuit.Led-urile sunt folosite pentru a oferi o estetica aparte cooler-ului , iar pentru ele am ales sa folosesc o photo rezistenta pentru ca led-urile sa facă lumina doar atunci când este întuneric în încăpere. Pentru a fi mai interactiv am ales sa folosesc un ecran LCD care sa afiseze in timp real temperatura pe care o inregistreaza senzor-ul.

Hardware Design

Listă de componete
Schema Circuitului

Rezultatul final al acestei etape este reprezentat în poza de mai jos:

Software Design

Partea de software am dezvoltat-o folosind Arduino IDE cu ajutorul unor biblioteci externe precum #include <Wire.h>, #include <LiquidCrystal_I2C.h> si #include <DHT11.h> pentru senzorul de temperatură si pentru pentru ecranul LCD.

Senzorul de temperatura

Global am initializat senzorul folosind o functie de biblioteca pe pinul 6.

global
DHT11 dht11(9);

In functia de loop mi-am declarat 2 variabile temperature si humidity in care cu ajutorul unei functii de biblioteca stochez temperatura si umiditatea inregsitrata de senzor.

loop
int temperature = 0;
int humidity = 0;
 
// Attempt to read the temperature and humidity values from the DHT11 sensor.
dht11.readTemperatureHumidity(temperature, humidity);
Foto rezistenta + led rosu

Global am declarat pin-ul pentru led si pentru fotorezistenta.

global
const int ledPin = 6;
const int fotoLedPin = A0;

In functia de setup am declarat pin-ul led-ului ca pin de output.

setup
// Setăm pinul LED-ului ca OUTPUT
pinMode(ledPin, OUTPUT);

In functia de loop am citit intr-o variabila ce inregistreaza fotorezistenta. Iar daca valorea este mai mare de 600 atunci led-ul se poate aprinde.

loop
int value = analogRead(fotoLedPin);
 
if(value <= 600){
  digitalWrite(ledPin,HIGH);
}else{
  digitalWrite(ledPin,LOW);
}
LCD

Global am folosit functia de biblioteca pentru a initializa ecranul la adersa 0x3F.

global
LiquidCrystal_I2C lcd(0x3F,16,2);

In functia de setup() afisam pe ecran un mesaj de inceput.

setup
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Hello, world!");
lcd.setCursor(0,1);
lcd.print("Optimus Digital"); 
 
delay(2000);
lcd.clear();

In functia de loop afisam pe ecran temperatura inregistrata de senzor sub formatul de grade celsius.

loop
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(char(223));
lcd.print("C");
Driver L293D + motor + elice

Global am declarat pinii pentru motor si driver. Apoi am apelat functia construita de mine in fisierul DCMDriverL293D.cpp pentru initializarea motoras-ului si a driver-ului.

global
// Pin Definitions
#define DCMOTORDRIVERB_PIN_ENABLE1	3
#define DCMOTORDRIVERB_PIN_IN1	2
#define DCMOTORDRIVERB_PIN_IN2	4
#define DCMOTORDRIVERB_PIN_ENABLE2	5
#define DCMOTORDRIVERB_PIN_IN3	7
#define DCMOTORDRIVERB_PIN_IN4	8
 
// object initialization
DCMDriverL293D dcMotorDriverB(DCMOTORDRIVERB_PIN_ENABLE1,DCMOTORDRIVERB_PIN_IN1,DCMOTORDRIVERB_PIN_IN2,DCMOTORDRIVERB_PIN_ENABLE2,DCMOTORDRIVERB_PIN_IN3,DCMOTORDRIVERB_PIN_IN4);

In functia de loop daca temperatura este mai mare sau egala cu 30 grade Celsius activam mototras-ul folosind functia setMotorA/setMotorB cu o viteza ce este reglata de potentiometru si directia de invartire a elicei alese aleator.

loop
if(temperature >= 30){
  dcMotorDriverB.setMotorA(value2,true);
  dcMotorDriverB.setMotorB(value2,false);
}else{
  dcMotorDriverB.stopMotors();
}
Potentiometru 10k

In functia de loop , pentru ca potentiometrul citea valori in 25 si 1005 , am sacalat valoarea citita intre 10 si 200, 255 fiind valoarea maxima pe care o poate primii motoras-ul, valoare cu care ii este reglata viteza elicei.

loop
int value2 = analogRead(A1);
value2 = map(value2, 25, 1005, 10, 200);
Unelte Folosite

https://app.diagrams.net/ - pentru realizarea schemei bloc

https://support.arduino.cc/hc/en-us/articles/360019833020-Download-and-install-Arduino-IDE - pentru scrierea cod-ului incarcat pe placuta

Rezultate Obţinute

Proiectul final, cât și funcționalitatea acestuia pot fi observate mai jos.

https://youtu.be/Us-E9WrCB4k?si=YHQfVc0tqV_KVFba

Download

Arhiva proiectului se află mai jos și conține:

  • Fișierele cu codul software
  • Imagini cu proiectul

Download: proiect_pm_vasilache_george.zip

Tinte

  1. - Utilizatorul poate influența viteza ventilatoarelor, chiar dacă cooler-ul este automatizat.
  2. – Dezvoltarea unui produs competitiv pe piață.

Jurnal

GRAFIC GANT