Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[TUTO] refroidissement par ventilateur pour le CPU de la framboise.
#1
Bonjour à tous.
Je viens de modifier mon système de refroidissement de la framboise. Le ventilo livré était trop fragile et devenait trop bruiyant après 6 mois d'utilisation. J'ai donc pris un plus costeau, toujours sous 5V. Le schémas électronique est simple. Un transistors NPN commandé par le GPIO 4 (via une résistance de 1kilohom connectée à la base). L'émetteur est sur la masse commune. Sur le collecteur est connecté au fil noir du ventilateur. Le fil rouge étant sur 5 volts ou 3,3 V du raspberry pi. Voilà pour l'électronique. Pour le programme j'ai remplacé celui en .sh que l'on trouve partout sur le net par un .py de ma fabrication. Ceci afin de résoudre un problème. En effet le ventilo a du mal à démarrer voir ne tourne pas. Le fait de passer par python est de pouvoir donner des accoups (pwm) pour amorcer le démarrage. Autre amélioration on refroidit de 6H00 à 22H00 entre 55°C et 43°C en faite moins. Le code est à placer dans un ficher avec les droit d'exécution : /usr/bin/fan.py  et dans /etc/rc.local ajouter fan.py pour qu'il se lance au démarrage.
Attention la chose est expérimentale.Donnez moi des retours sur cette mixture.

Python
#!/usr/bin/env python
 
import os
import datetime
import RPi.GPIO as GPIO
 
#definition du port Gpio 4 en sortie frequence 10Hz rapport cyclique 70
GPIO.cleanup()
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
p = GPIO.PWM(4, 10)
 
# Return CPU temperature as a character string
def getCPUtemperature():
    res = os.popen("vcgencmd measure_temp").readline()
    return res[5:7]
 
def main():
    while 1==1:
        d = datetime.datetime.today() #on lit date et heure
        while d.hour >= 6 and d.hour <= 22: #si entre 6H00 et 22H00 on refroidi
            T=int(getCPUtemperature()) #on lit la temperature
            d = datetime.datetime.today()
            if T > 55: #si T superieur a 55 on refroidi
                while T > 35: #tant que T n a pas atteint 35
                    p.start(70) #des accouts pour obliger le moteur a tourner
                    T=int(getCPUtemperature())
            else: #sinon T inferieur a 55
                p.stop() # on ne fait rien
            
if __name__ == "__main__":
    main()


Répondre
#2
Deux petites choses:
- pourquoi ne pas faire fonctionner le ventilateur simplement en on/off ?
- si jamais la température est > à 55° dans la plage horaire, ça démarre bien, mais ça ne s'arrêtera que lorsque la température sera retombée à moins de 35, indépendamment de la plage horaire.

Et je pense que ton script pourrait avoir quelques optimisations mineures Smile
Répondre
#3
Bonsoir Crazycat.
Oui je suis d'accord. J'ai vue cela qu'il y a quelques optimisations à faire. Et effectivement pour la plage horraire et la température basse c'est problématique. J'ai vue cela quand à minuit le ventilo continuait de tourner pour désespèrément atteindre les 35°C qu'il n'a jamais atteind. Donc j'ai remplacé while T >35: par while T >40 and d.hour <=22:
Après pour l'optimisation du code en lui même je suis un débutant... Undecided

Pour le on/off j'aurais pu le faire et c'est plus facile qu'avec le pwm. Mais l'idée au début était de décoincer un ventilo récacitrant au démarrage en donnant des impulsions (pwm) mais ça ne fonctionne pas où j'ai pas trouvé les bons paramètres. Avec un signal on/off ça ne fonctionne pas non plus.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)

A propos de Communauté francophone RPi

Communauté francophone RPi est un forum d'aide et de partage autour du Raspberry Pi et des micro-ordinateurs.