Contrôleur de ventilateur avec Raspberry
Dans ce projet, nous utiliserons des modules d'extension Digilent Pmods ainsi qu'une platine Raspberry Pi 4 pour mesurer la température, contrôler la vitesse d'un moteur à courant continu, afficher les données et contrôler l'appareil.

Une platine Digilent Pmod HAT est utilisée pour connecter les modules Pmods à la platine Raspberry Pi 4. Le contrôleur de moteur aura deux modes: un dans lequel la vitesse du moteur change en fonction de la température (dans ce mode, les limites de température pour 0% et 100% de la vitesse du moteur peuvent être réglées sur l'interface utilisateur) et un deuxième mode, dans lequel le moteur tourne à vitesse constante pendant un temps défini, puis il est arrêté pour le même temps (dans ce mode, la vitesse du moteur et le temps sont les paramètres contrôlables par l'utilisateur) . L'interface utilisateur sera utilisée pour changer de mode.
Inventaire nécessaire pour réaliser cette application:
1. Matériel
- Platine Raspberry Pi 4 Model B
- Platine Pmod HAT Adapter
- Module Pmod TC1
- Module Pmod HB3
- Module Pmod KYPD
- Module Pmod OLEDrgb
- Module Pmod TPH2
- Module un moteur 5V DC
- Des câbles MTE
- un petit tournevis (pour fixer les boulons dans les borniers)
2. Logiciel sur Raspberry Pi
- Python 3 - il est préinstallé sur le système d'exploitation Raspberry Pi par défaut
- Visual Studio Code - ou tout autre éditeur de texte de votre choix
Description du matériel utilisé:
![]() |
![]() |
Platine Pmod HAT: Cette platine possède 5 connecteurs principaux et trois cavaliers. En haut, le connecteur standard Raspberry Pi HAT peut être trouvé. L'adaptateur dispose de trois connecteurs 2x6 Digilent Pmod (JA, JB et JC) et chacun d'eux peut également être utilisé comme deux connecteurs 1x6 Pmod séparés (par exemple, JA peut être séparé en JAA et JAB). Tous les ports Pmod contiennent une masse et une broche 3,3 V pour alimenter le module Pmod qui y sera connecté. En plus de la fonction GPIO (General Purpose Input / Output), vous pouvez utiliser JAA et JBA comme interface SPI, JBB comme interface I2C et JCA comme interface UART. La carte Pmod HAT dispose également d'une prise DC d'entrée 5 V, de cavaliers permettant des résistances de pull-up sur les lignes I2C et d'un cavalier qui permet d'écrire dans la mémoire interne des Pmods. |
![]() |
![]() |
Module Pmod OLEDgrb: Le Pmod OLEDrgb est un écran LED RVB organique de 96 x 64 pixels avec une résolution couleur de 16 bits. Le module contient un pilote d'affichage qui communique avec les cartes ou systèmes hôtes via des liaisons SPI et GPIO. Pour ce projet, nous connecterons le module Pmod OLEDrgb aux ports JA ou JB sur l'adaptateur Pmod HAT qui prend en charge la communication SPI. |
![]() |
![]() |
Module Pmod KYPD: Le module Pmod KYPD dispose de 16 boutons poussoirs fugitifs, disposés en 4 lignes et 4 colonnes. En pilotant les lignes des colonnes à une basse tension de niveau logique une à la fois, les utilisateurs peuvent lire la tension de niveau logique correspondante sur chacune des lignes pour déterminer quel bouton, le cas échéant, est actuellement enfoncé (principe de lecture d'un clavier matricé). L'appareil communique avec Raspberry Pi via GPIO. Nous pouvons le connecter à n'importe quel port du Pmod HAT. |
![]() |
![]() |
Module Pmod TC1: Le Pmod TC1 contient un fil de thermocouple de type K et un convertisseur thermocouple-numérique à jonction froide. Le fil de thermocouple peut mesurer des températures de -73 ° C à 482 ° C avec une précision de ± 2 ° C et le module renvoie une valeur numérique signée de 14 bits. Le module Pmod TC1 doit être connecté aux ports JAA ou JBA (la partie supérieure des ports JA ou JB) sur le Pmod HAT pour la communication SPI . . |
![]() |
![]() |
Module Pmod HB3: Le Pmod HB3 est un driver de moteur CC à pont en H, avec une sortie allant jusqu'à 12 V et 2 A. Le module communique avec la carte Raspberry Pi via les GPIO. Il peut être connecté à n'importe quel port de l'adaptateur Pmod HAT. Si un moteur 5 V est utilisé, l'alimentation du moteur peut être fournie par l'une des broches 5 V PW du Raspberry Pi, qui sont capables de produire environ 2 A, lorsque le microcontrôleur a une alimentation appropriée. . |
![]() |
![]() |
Module Pmod TPH2: Le Pmod TPH2 est un connecteur de test à 12 points. Dans ce projet, il peut être utilisé pour diviser l'un des ports 2x6 Pmod de l' adaptateur Pmod HAT afin que plusieurs Pmods puissent être connectés au même port (à l'aide de câbles MTE). . |
![]() |
![]() |
Platine Raspberry Pi 4: Une carte Raspberry Pi 4 Model B sera utilisée en tant que "cerveau" dans cette application avec le système d'exploitation Raspberry Pi recommandé. Vous pouvez utiliser d'autres modèles et systèmes d'exploitation Raspberry Pi capables d'exécuter Python 3. La présentation détaillée de l'installation et de la configuration du système d'exploitation ne sera détaillée dans notre note d'application . . |
Configuration matérielle:
Les modules Pmod OLEDrgb et Pmod TC1 (avec interface SPI) ne peuvent être connectés qu'à des ports spécifiques sur la platine Pmod HAT. le module Pmod OLEDrgb est connecté au port JA tandis que le module Pmod TC1 ne peut être connecté qu'au port JBA. Le module Pmod KYPD est connecté au port JC et le module Pmod HB3 au port JBB. Le module Pmod TPH2 peut être utilisé pour briser le port JB afin que les deux modules Pmod (TC1 et HB3) puissent être connectés au même port. Connectez le fil du thermocouple et le moteur aux borniers respectifs. Comme mentionné ci-dessous, vous pouvez alimenter le moteur directement à partir de la platine Raspberry Pi. Le fichier Fritzing™ joint montre les connexions à réaliser.

Configuration du logiciel:
Tout d'abord, vous devez activer le port SPI et le port série sur la carte Raspberry Pi. Ouvrez un terminal, puis tapez: sudo raspi-config

Dans le menu, sélectionnez 3. Options d'interface, puis sélectionnez P4 SPI et activez-le. Sélectionnez à nouveau les options d'interface , puis sélectionnez P6 Serial Port . La première chose qui apparaît, le shell de connexion , peut être laissée désactivée. Il vous suffit d'activer le matériel du port série dans la deuxième invite.
Ensuite, vous changez la version par défaut de Python en Python 3. Le système d'exploitation Raspberry Pi recommandé est livré avec Python 2 et Python 3 préinstallés. Vérifiez la version Python avec les commandes suivantes:
python --version
python3 --version

Si Python 3 3.6 est préinstallé ou une version antérieur, vous devez installer une version plus récente via les commandes:
sudo apt-get installer python3.x
où x est le numéro de version. Par exemple, nous utilisons Python 3.7 dans ce projet (car il s'agit de la version préinstallée sur le système d'exploitation Raspberry Pi recommandé). Donc, vous allez taper sudo apt-get install python 3.7
Pour changer la version python par défaut en Python 3, exécutez la commande suivante:
sudo update-alternatives --install / usr / bin / python python / usr / bin / pythonn3 1
Maintenant, Python 3 devrait apparaître comme l'interpréteur par défaut.

La dernière étape consiste à installer les modules requis. Pour cela, tapez simplement les commandes suivantes dans le terminal:
sudo pip installer designspark.pmod
Code:
1. fan_controller.py
Le script Python se compose de trois modules: fan_controller.py, keypad.py et display.py. Le fan_controller.py est le module principal. Dans ce module, tout d'abord, nous importons toutes les bibliothèques et modules requis, créons une classe et définissons des variables:
- #!/usr/bin/env python
- """
- The controller sets the speed of a fan according to temperature (mode 1),
- or lets the fan run with a constant speed for a given time (mode 2).
- Temperature is measured with Pmod TC1.
- The motor is driven by Pmod HB3.
- The user interface is realized with Pmod OLEDrgb and Pmod KYPD.
- """
- # import necessary modules
- from DesignSpark.Pmod.HAT import createPmod
- from luma.core.render import canvas
- from datetime import datetime, timedelta
- import time
- # import own modules
- import display
- import keypad
- # create objects for each pmod
- TC1 = createPmod('TC1', 'JBA')
- HB3 = createPmod('HB3', 'JBB')
- keypad.KYPD = createPmod('KYPD', 'JC') # Pmod KYPD and Pmod OLEDrgb are
- display.OLED = createPmod('OLEDrgb', 'JA') # used in separate modules
- class settings:
- """ this class contains "global variables" """
- TEMP_AVG = 500 # number of temperature measurements to average
- TEMP_MIN = 22.0 # temperature for 0% fan speed
- TEMP_MAX = 35.0 # temperature for 100% fan speed
- TIME_RUN = 15 # number of minutes to run (mode 2)
- CONST_SPEED = 75 # speed in mode 2
- MOTOR_REV = False # reverse the rotation of the motor
- MODE = 1 # starting mode
Ensuite, les fonctions sont définies. Les quatre fonctions sont action_M1 () , qui règle la vitesse du moteur en fonction de la température mesurée et moyenne, action_M2 () , dont la vitesse du moteur est définie, puis la fonction attend le temps défini (les pressions sur les touches terminent la fonction). La fonction set_param () définit un paramètre et la fonction decode_key () décide quel menu ou sous-menu afficher en appuyant sur une touche.
- def action_M1():
- """ this is done in mode 1 """
- # get average temperature
- average_temp = 0.0
- for _
Publié dans: News








Laisser un commentaire