GUIDA Base per laptop Ver. 1.0 DIY

ilfe98

Moderatore
Staff Forum
Utente Èlite
3,049
1,277
CPU
Intel i7 7700K
Dissipatore
Bequiet Dark rock pro 4
Scheda Madre
Msi pc mate z270
HDD
Seagate barracuda 1tb, silicon power NVME 500gb
RAM
Patriot viper steel 3733Mhz
GPU
Inno 3d gtx 1080 herculez design
Monitor
Asus mg279q
PSU
Corsair HX750
Case
Itek lunar 23
Net
Tiscali ftth
OS
windows 10,mint,debian,Arch linux
Intro
Salve a tutti ragazzi. Quest'oggi ho deciso di proporvi una guida. Durante questa epidemia sono stato sfortunatamente(o magari fortunatamente dipende dai punti di vista) ad acquistare un nuovo laptop. La spesa era da effettuare dopo la laurea, tuttavia questo imprevisto mi ha obbligato ad anticipare i tempi. La scelta è ricaduta sull'acer nitro 5 con i7 9750h e 1660ti. Quando euforicamente l'ho spacchettato e testato ho notato immediatamente le folli temperature da laptop. Mi sono accinto ad unvoltare la cpu e cambiare la pasta del capitano con una noctua nt-h2. Le differenza è stata subito abissale, ma non è bastata a placare il mio animo da nerd. Non datomi per vinto in qualità di ex fabbro ho deciso di realizzare una base per laptop in Plexiglass(FOLLE :suicidio:).
Senza dilungarmi troppo in chiacchere passo alla lista dei componenti.
Taglio e foratura della base
Bene cominciamo subito ho tagliato la prima lastra di plexiglass : 400x540x10mm. Essa fungera da base per il laptop, mentre la seconda da 90x395x10mm essa fungerà da rialzo. Purtroppo durante la realizzazione non era prevista la guida ed non posso allegare le foto se non del lavoro finito. Il secondo step è stato forare la base sulla quale posizionerò le ventole. E qui avete due scelte. La prima è realizzare una dima in modo tale da realizzare una sorta di pannello meshato dove saranno posizionate le ventole, la seconda è avere una fresa/sega a tazza della dimensione delle ventole. Io ho optato per la prima in quanto sono semplicemente un folle e ho quindi fatto circa 500 fori con una punta da 6mm, sì ci è voluta mezza giornata.
foto.jpg
La prima riga di fori l'ho effettuata a 80mm dallo spigolo superiore, mentre la prima colonnaa 75mm. Per quanto riguarda le colonne ho fatto in modo di essere centrate rispetto alla larghezza della base, mentre per le righe, la riga più in basso corrisponde con il centro.

Fan 4 wire e saldatura circuito su millefori

Forata la base possiamo accantonarla e passare ai collegamenti delle ventole e qui vi allego lo schema:
1593949046471.png
Avrete sicuramente notato che non ho menzionato alcun sensore di temperatura. I motivi son semplici:
  1. Il costo delle pwm da 14 al momento dell'acquisto erano più bassi
  2. In un futuro upgrade vorrei inserire un sensore di prossimità e tramite una libreria esterna leggere con arduino la temperatura delle ventole e quindi eliminare l'utilizzo dei pulsanti essendo pwm.
Il circuito può essere realizzato su una millefori che preferite. Ovviamente collegandoci la fase dell'alimentatore a "monte" e il ground a valle. Sdoppiando i due cavi dell'alimentatore ho ricavato un altro spinotto per collegarlo alla mb102, in quanto la clone non ha un voltage regulator ottimo e con i 12v purtroppo si surriscaldava e di conseguenza bruciava, non potendo più controllare l'arduino. Di conseguenza la mb102 è stata una buona scelta per semplificare il tutto ed alimentare l'arduino. Le altre 2 erano calcolare delle resistenze in modo tale da diminuire il voltaggio, sì è vero molto spartano ma funzionale. L'altro era di inserire un voltage regulator esternamente che con il senno del poi era la scelta migliore, in quanto diminuendo la tensione avrei potuto alimentare i led argb senza ulteriori alimentatori.
N.B Le mb102 hanno un amperaggio di out pari a quello di arduino ovvero circa 300mA, che per una striscia led sono decisamente pochi, pertanto non sognatevi di alimentare le strip con queste soluzioni.
Dalla mb102 ho saldato i cavi per alimentare i pulsanti per controllare gli rpm della ventola, seguendo questo schema
Debouncing-pin.png

Funzionamento arduino e coding

In questo modo il nostro arduino funzionerà per ciò che è nato ovvero da microcontrollore soltanto con i pin digitali, senza usare le alimentazioni o restistori interni alla scheda. Lo schema elettrico fornito servira da anti-debouncing, ovvero ciò che nel mondo elettronico viene chiamato transitorio, un evento del tutto casuale che può portare commutazioni impreviste nelle porte logiche, sensori ecc. Il condensatore in questione evita che ciò accada. Tuttavia per ridondanza agiremo anche da lato software.
Adesso fatte le dovute saldature sulla millefori possiamo programmare il nostro arduino e verificare che tutto funzioni!
C:
#define PWM 6 //Il pin di output per la velocità
#define Pup 12 // pin di input dove è collegato il pulsante up
#define pdown 13// pin di input dove è collegato il pulsante down
int val = 0;                               // si userà val per conservare lo stato del pin di input
int vecchio_val = 0;                       // si userà vecchio_val per conservare lo stato del pin di input al passo precedente
int fanspeed = 0;                          // ricorda lo stato in cui si trovano le ventole
boolean StatoCorrente = LOW;               // memorizza lo stato attuale del pulsante
boolean UltimoStato = LOW;                 // memorizza l'ultimo stato del pulsante
boolean StatoDebounce = LOW;               // stato del pulsante debounce (anti-rimbalzo)
int IntervalloDebounce = 20;               // attendere 20 ms per il settaggio del pin del pulsante
unsigned long UltimoEventoPulsante = 0;    // memorizza l'ultima volta che è cambiato lo stato del pulsante
int vald = 0;                               // si userà val per conservare lo stato del pin di input
int vecchio_vald = 0;                       // si userà vecchio_val per conservare lo stato del pin di input al passo precedente
boolean StatoCorrented = LOW;               // memorizza lo stato attuale del pulsante
boolean UltimoStatod = LOW;                 // memorizza l'ultimo stato del pulsante
boolean StatoDebounced = LOW;               // stato del pulsante debounce (anti-rimbalzo)
unsigned long UltimoEventoPulsanted = 0;    // memorizza l'ultima volta che è cambiato lo stato del pulsante

void setup(){
  pinMode(Pup, INPUT);                // impostiamo il pin 12 come INPUT per il pulsante
  pinMode(pdown, INPUT);           // impostiamo il pin 13 come INPUT per il pulsanted
  pinMode(PWM, OUTPUT);                    // impostiamo il pin 13 come OUTPUT per le ventole
  analogWrite(PWM,fanspeed);
}
void loop(){
  StatoCorrente = digitalRead(Pup);
  unsigned long OraAttuale = millis();

  if (StatoCorrente != UltimoStato){
     UltimoEventoPulsante = OraAttuale;    // aggiorna l'ora di questo nuovo evento
  }

  if (OraAttuale - UltimoEventoPulsante > IntervalloDebounce){ // se è trascorso abbastanza tempo
     if (StatoCorrente != StatoDebounce){  // se lo stato corrente è ancora diverso dal nostro ultimo stato di debounce memorizzato
        StatoDebounce = StatoCorrente;     // aggiorna lo stato di debounce (anti-rimbalzo)
        //innesca un evento
        if (StatoDebounce == HIGH){
           if(fanspeed>=255)
             fanspeed=255;
            else
             fanspeed +=20 ;        // imposta lo stato in cui si troverà il pwm
          analogWrite(PWM,fanspeed);
        } else {
          Serial.println("rilasciato up");    // possiamo visualizzare dal monitor seriale l'evento del pulsante
        }
     }
  }
  UltimoStato = StatoCorrente;
    StatoCorrented = digitalRead(pdown);
  unsigned long OraAttualed = millis();

  if (StatoCorrented != UltimoStatod){
     UltimoEventoPulsanted = OraAttualed;    // aggiorna l'ora di questo nuovo evento
  }

  if (OraAttualed - UltimoEventoPulsanted > IntervalloDebounced){ // se è trascorso abbastanza tempo
     if (StatoCorrented != StatoDebounced){  // se lo stato corrente è ancora diverso dal nostro ultimo stato di debounce memorizzato
        StatoDebounced = StatoCorrented;     // aggiorna lo stato di debounce (anti-rimbalzo)
        //innesca un evento
        if (StatoDebounced == HIGH){
           if(fanspeed<=0)
           fanspeed=0;
           else
           fanspeed -=20 ;        // imposta lo stato in cui si troverà il pwm
           analogWrite(PWM,fanspeed);
        } else {
          Serial.println("rilasciato down");    // possiamo visualizzare dal monitor seriale l'evento del pulsante
        }
     }
  }
  UltimoStatod = StatoCorrented;
  }
Chiariamo che il codice precendente è in Wiring derivato dal c++, tuttavia a causa di un plausibile bug se inserissi c++ l'engine non evidenzierebbe le parti importanti, di conseguenza il codice sarà meno leggibile. Tornando a noi, come potete notare il pulsante up è collegato al pin 12 mentre il down al 13, per quanto riguarda il controllo delle ventole il pin selezionato è un pwm cioè il 6. A questo punto appurato che le ventole funzionino correttamente possiamo assemblare il tutto.

Assemblaggio

Ciò che utilizzeremo sarà la colla a caldo, in quanto il plexiglass che avevo in officina è ottenuto mediante una tecnica laminare, pertanto altri sistemi di fissaggio più invasivi finirebbero per romperlo.
  1. Sistemiamo il nostro rialzo al di sotto della base, con una angolazione tale da garantire lo spessore del plexiglass sia parallelo al tavolo e di conseguenza che l'altezza (90mm) sia perpendicolare alla superficie del tavolo.

    vlcsnap-2020-07-05-15h51m39s508.png
    Appogiamo la nostra base sopra e noteremo che ovviamente essendo il taglio dritto ci sarà un vuoto tra i due fogli di plexiglass(lato posteriore), procediamo a riempire il vuoto con la colla al caldo. Stesso procedimento per il lato interno. La nostra base sarà ora inclinata.

  2. Procediamo a montare le 3 ventole nella parte posteriore della base (in modo tale da avere una superficie uniforme per il laptop). Vi risulterà molto semplice incollare le altezze, ma decisamente scomodo incollare le ventole (dal lato che è parallelo al supporto inclinante) se lasciaste poco spazio tra le stesse ed il supporto. Ahimé non avendo un progetto già in mente ho avuto questo problema, l'ho risolto utilizzando del silicone trasparente anziche la colla. Il silicone essendo freddo potevo applicarlo sul dito ed incollare le ventole, vi consiglio vivamente di non farlo con la colla a caldo :suicidio:

  3. Dal lato posteriore del supporto alzante ho provveduto ad incollare(sempre colla a caldo) il case per arduino uno, una volta inserita la sceda e chiuso il case, ho incollato la millefori sopra lo stesso case con i pulsanti rivolti verso l'esterno(ovviamente direte).

  4. Ho inserito i cavi nei pin di arduino(già programmata) et voilà il gioco è fatto!
Ho trovato qualche foto e video vario che ho fatto nel tempo, come ho detto non era progettata la guida. In una vedrete i led. Ho arbitrariamente scelto di non inserirli poiché non ho avuto ancora modo di integrare il tutto con arduino. Semmai decidessi di integrare il tutto, e di modificare la base con ulteriori feature provvederò a modificare la guida con la versione 2.0. Gli adesivi vari sono temporanei in passato usai un tubetto di colla a caldo nero e quindi rimase qualche residuo. Gli adesivi saranno sostuiti con una pellicola Fumé.
vlcsnap-2020-07-05-16h42m58s054.png
vlcsnap-2020-07-05-16h42m35s319.png
foto arduino.jpeg
foto con pc.jpeg
 

Avets

INTEL INSIDE
Utente Èlite
5,126
3,976
CPU
Ryzen 5800x
Dissipatore
Dark rock pro4
Scheda Madre
B550m Mortar
HDD
970evo 512Gb
RAM
4x8Gb Ballistix @3800Mhz 1,4v 15-17-17-36
GPU
Nitro+ 5500XT
Monitor
Itek UWQHD 41" + AOC 27G2U
PSU
Chieftec CNS-650C
Case
CUSTOM
OS
Windows 10 pro
Complimenti per la dedizione :ok:

Tuttavia mi sembra una cosa inutilmente complicata, ma probabilmente mi son perso qualcosa.
Perché usare una alimentazione esterna e non una usb ?
Perché un microcontrollore invece di un semplice trasformatore (step up/down) ?
 

ilfe98

Moderatore
Staff Forum
Utente Èlite
3,049
1,277
CPU
Intel i7 7700K
Dissipatore
Bequiet Dark rock pro 4
Scheda Madre
Msi pc mate z270
HDD
Seagate barracuda 1tb, silicon power NVME 500gb
RAM
Patriot viper steel 3733Mhz
GPU
Inno 3d gtx 1080 herculez design
Monitor
Asus mg279q
PSU
Corsair HX750
Case
Itek lunar 23
Net
Tiscali ftth
OS
windows 10,mint,debian,Arch linux
Ciao avets. L'alimentazione esterna è necessaria in quanto le ventole sono a 12v. Se fossero state a 5 si sarebbe potuto prendere in considerazione ciò ( inoltre ritengo che occupare una porta del laptop sia sempre controproducente). Per quanto riguarda il modulino stepdown, è stato a lungo travagliato. Alla fine ho usato l'mb 102 in modo tale da poter avere un interruttore generale e spegnere il tutto da lì anziché dover mettere un pulsante ed il guadagno di una presa USB per mettere a ricaricare le pile per il mouse wireless. Sicuramente si poteva fare di meglio. Considerando che è il mio primo progetto non credo sia andato male. Sì ci è voluto molto tempo, ma sono davvero soddisfatto
Complimenti per la dedizione :ok:

Tuttavia mi sembra una cosa inutilmente complicata, ma probabilmente mi son perso qualcosa.
Perché usare una alimentazione esterna e non una usb ?
Perché un microcontrollore invece di un semplice trasformatore (step up/down) ?

Inviato da LG-H870 tramite App ufficiale di Tom\'s Hardware Italia Forum
 
  • Mi piace
Reazioni: Avets

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili