Répondre à la discussion
Affichage des résultats 1 à 26 sur 26

Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température




  1. #1
    Projet2019

    Wink Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Bonjour, je me suis acheté un kit Arduino je veux faire un programme qui me permet de faire varié mon moteur électrique (2 vitesses) en fonction de la température et l'affichage de la température sur l'écran qui est dans le kit.
    La vitesses du moteur est modifié grâce à 2 relais (petite et grande vitesses) et l'alimentation du moteur ce fait par une pile .
    Je n'ai aucune connaissance en programmation de carte Arduino j'aurai voulu avoir quelque explication ou trouvé quelqu'un qui aurai déjà fait cela.
    Merci d'avance pour vos réponses.

    Voici les composants principals.
    20181223_145659.jpg

    -----

    Dernière modification par Antoane ; 24/12/2018 à 09h37. Motif: suppression PJ en double

  2. Publicité
  3. #2
    penthode

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    hello ,

    il existe moult ouvrages et sites d'initiation , ça demande un peu d'investissement personnel

    un des meilleurs francophone et gratuit :

    https://openclassrooms.com/fr/course...s-avec-arduino
    Dernière modification par penthode ; 23/12/2018 à 16h01.
    là où le mensonge prolifère, la tyrannie s'annonce ou se perpétue (Albert Camus)

  4. #3
    mag1

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    Bonjour,

    Faut commencer par le début: l'alimentation. Si c'est la petite pile 9V qui alimente tout, elle va pas durer longtemps.
    MM
    Si il y a des erreurs ci dessus, c'est que je n'ai pas eu le temps de les corriger...


  5. #4
    soraka

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    Bonsoir,
    C'est très intéressant comme petit projet pour démarrer avec un arduino.
    j'ai déjà fait ça,et c'est très facile,mais il faut faire preuve d'organisation...

    Tu as 4 objets à connecter à l'arduino

    (1er) la pile 9 v
    peu importe que la pile ne tienne pas longtemps. Suffisant pour mener ton projet à terme.

    Il faut connaitre les façons d'alimenter un arduino.(voir pinout arduino uno)
    ici ce sera par l'entrée Vin (ou la prise jack)

    (2è) le capteur (ici un ds18b20)
    c'est un capteur numérique,pas vraiment idéal pour commencer pour toutes les raisons suivantes:
    il necessite de télécharger une librairie dédiée: DallasTemperature.h (=> apprendre à rechercher et à télécharger une librairie)
    et il communique avec l'arduino via le bus OneWire ,donc il te faut aussi cette librairie (elle est d'origine dans l'IDE)
    Une pin numérique quelconque déclarée en INPUT servira à collecter les données de température.
    IL TE FAUT AUSSI une résistance de 4,7 kohm (a connecter entre fil jaune et rouge,cad données et vcc 5v)sinon CA NE MARCHERA PAS !

    (3è)l'afficheur (ici un 1602 lcd pour 16 lignes et 2 colonnes)
    je te conseille de le connecter via le bus I2C qui n'utilise que 2 pins de l'arduino SDA et SCL (et seulement celles là)elles sont près du bouton reset
    et aussi un module dédié qui semble (vu les soudures)être présent derrière ton afficheur.
    pour gérer l'afficheur en I2C il te faut télécharger la librairie dédiée : LiquidCrystal_I2iC.h
    et la librairie : Wire.h présente dans l'IDE

    (4è) le module à 2 relais 5v commandés par optocoupleurs
    c'est le plus simple. 2 pins numériques de l'arduino (quelconques) déclarées en OUTPUT

    Cependant il te manque un objet essentiel : une breadboard (et des cables de liaison)
    pour relier entre eux tous ces objets ou alors tu te dém..... avec des blocs de jonction et du fil de récup.
    mais si tu dois souder tes fils sur les pattes de l'arduino,ça va les abîmer ... bref ...

    ENSUITE ...viendra le code ...

    Il faut fouiller sur internet et trouver des réalisations qui utilisent ces objets,et y récupérer les bouts de codes qui t'intéressent,les assembler,et faire ta propre sauce,surtout en en-tête,et dans le setup.

    dans la boucle de ton programme il faudra:
    récupérer les données de température et les convertir en °C
    envoyer le résultat sur ton afficheur et attendre 1 seconde pour avoir le temps de le lire.
    comparer ce résultat avec deux consignes
    si c'est inférieur a la consigne1 : (Relais1,HIGH) et (Relais2,HIGH) -> froid : moteur arret
    si c'est entre la consigne1 et la consigne2: (Relais1,LOW) et (Relais2,HIGH) -> tiède : moteur vitesse lente
    si c'est supérieur à la consigne 2: (Relais1,HIGH) et (Relais2,LOW) -> chaud : moteur vitesse rapide

    remarque: tes relais se commandent "à l'envers" c'est à dire que si tu envoies la commande HIGH (5v) ton relais sera au repos
    et si tu envoies la commande LOW (0v) il sera au travail ...

    Attention à te débrouiller de cabler tes relais de sorte que 2 commandes LOW envoyées par erreur ne crâment pas ton moteur
    en utilisant judicieusement les contacts NO et NF des relais

    Ca va te demander quelques heures de bidouillage ...
    joyeux noël

  6. #5
    Projet2019

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    Merci pour vos réponse
    J'ai commencer la programmation mais quand je veux le mettre dans la carte
    Un message d'erreur: problème de compilation avec la carte

    À tu encore le programme ?

    Et joyeux noël 😉🎉

  7. A voir en vidéo sur Futura
  8. #6
    f6bes

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    Bjr Projet2019,
    Tu dis que la vitesse doit varier en FONCTION de la température, encore faut il
    CONNAITRE à quelle température doit se faire la commutation de température.
    Cela DOIT etre renseigné dans le programme. De plus pour connaitre la
    température tu devras uiliser un CAPTEUR de température qui devra etre géré
    par ton arduino qui devra aussi gérer l'affichage.
    Si tu n'as aucune connaissance ,attaque toi à un projet moins ambitieux
    pour débuter :allumer une led, faire clignoter une led...
    Faut pas vouloir aller plus vite que la musique.
    Bonne journée
    "Ce fut la goutte d'eau de trop qui mit le feu aux poudres!"

  9. #7
    Projet2019

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    Oui je sais bien c'est un projet pour une présentation a l'oral pour le BAC de cette maquette c'est plus simple pour expliquer un système

  10. Publicité
  11. #8
    nornand

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    Citation Envoyé par Projet2019 Voir le message
    Oui je sais bien c'est un projet pour une présentation a l'oral pour le BAC de cette maquette c'est plus simple pour expliquer un système
    Allé courage il te restes quelque mois .

  12. #9
    penthode

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    y'a pas de temps à perdre toutefois !

    il faut apprendre :

    les bases de l'électronique pour la partie hard

    les bases de la programmation pour la partie soft
    là où le mensonge prolifère, la tyrannie s'annonce ou se perpétue (Albert Camus)

  13. #10
    soraka

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Bonsoir,
    On peut pas te dire pourquoi ça compile pas si tu ne mets pas en lien ton bout de code ...
    Dans la partie inférieure de l'ide il y a des messages d'erreur qui peuvent donner une indication sur la cause du refus de compiler...

    Commence par récupérer les librairies dont tu as besoin et installe les correctement dans l'en tête déclarative,
    ne fait rien dans void setup(){} et rien dans void loop(){}
    si ça compile,c'est gagné.
    (fais le avec une librairie,puis une deuxième etc ... )
    Ensuite,tu pourras t'occuper uniquement de faire coller et décoller ton relais ( par exemple chaque seconde)
    ensuite, occupes toi de l'afficheur,envoie un message "hello world" par exemple ,via l'I2C (mets l'adresse 0x27 ,je parie qu'elle va fonctionner) et surtout essaie de comprendre ce qui se passe.
    etc ...
    il faut avancer très très très lentement ... mais surement.

  14. #11
    soraka

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Regardes bien cette photo :
    Images attachées Images attachées

  15. #12
    soraka

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    C'est exactement la même chose que ta photo.
    - un bloc d'alimentation (toi une pile)
    - 8 relais statiques et 4 relais "classiques" (toi 2 relais)
    -un arduino mega (toi 1 uno)
    -3 afficheurs en I2C + 1 déporté , en 1602 et en 2004 (toi 1 afficheur 1602 en I2C)
    - une chiée de sondes ds18b20 ,pas visibles car posées à leur place dans des doigts de gant (toi une sonde ds18b20)

    Le code ne fait appel qu'à des fonctions ultra simples du language ( if, else, else if, while ... )

    et ça te permet de réaliser une régulation de chauffage central de maison bien plus performante que ce que tu trouves dans le commerce autour de 1000 €

    donc ce projet est très simple en réalité,mais aussi très utile pour toi .

  16. #13
    soraka

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Il faut inclure ces librairies en en tête,
    puis essaie comme je t'ai dit ...

    [HTML]#include <Wire.h>
    #include <LiquidCrystal_I2C.h>

    #include <OneWire.h>
    #include <DallasTemperature.h>
    Dernière modification par soraka ; 25/12/2018 à 19h13.

  17. #14
    penthode

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    Citation Envoyé par nornand Voir le message
    Allé courage il te restes quelque mois .
    il faut souligner que cette demande n'arrive pas le 31 mai pour une présentation le 15 juin !

    c'est assez rare pour être souligné
    là où le mensonge prolifère, la tyrannie s'annonce ou se perpétue (Albert Camus)

  18. #15
    Projet2019

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    Merci pour toutes vos réponses. J'ai commandé des résistances de 4,7k ohm pour la sonde.
    J'attends donc cela et je commence le câblage.
    Pour le code j'ai déjà le bout pour la sonde et l'affichage manque plus qu'à rajouter le déclenchement des relais en fonction de la température.

  19. #16
    Projet2019

    Re : Programmation carte Arduino Uno faire varié la vitesse d'un ventil en fonction de la températur

    Ah oui voila si la sorti du relais est en 6v et normalement elle est prévu pour du 230v est ce qu'il fonctionnera (pas la commande mais bien la sortie)

  20. #17
    soraka

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Bonjour,
    Ce que tu appelles la sortie du relais est un contact sec . Il y a un NO (ouvert au repos ) et un NF (fermé au repos)
    et ce qu'il est important de ne pas dépasser pour un contact, c'est l'intensité. Le tiens va jusqu'à 10 A ,si ton ventilateur consomme moins de 10A , c'est bon ...

    si tu as déjà un bout de code,postes le .

  21. #18
    Projet2019

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Bonjour tout le monde, voici le début de mon code (désolé pour le temps de réponse).
    Mais je suis bloqué en dessous de 21°C un relais est actionné alors que dans le programme j'ai bien mis pin 7 et 8 LOW.


    Code:
    #include <OneWire.h>
    #include <DallasTemperature.h>
    
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    
    #define One_Wire_Bus 6
    OneWire oneWire(One_Wire_Bus);
    DallasTemperature sensors(&oneWire);
    LiquidCrystal_I2C lcd(0x27, 16, 2);
    
    void setup(void) 
    {
      pinMode(7,OUTPUT);
      pinMode (8,OUTPUT);
      lcd.init();
      lcd.backlight();
    }
    
    void loop() {  
    sensors.requestTemperatures();
      float x=sensors.getTempCByIndex(0);
      
      lcd.setCursor(0, 0);
      lcd.print("Projet  SNCF");
    
      lcd.setCursor(0,1);
      lcd.print("Temp =");
    
      lcd.setCursor(9,1);
      lcd.print(x);
    
      lcd.setCursor(14,1);
      lcd.print("'C");
      
      if (x <= 22) digitalWrite(7,LOW);
                  digitalWrite(8,LOW);
    
      if (x >= 26) digitalWrite(7,HIGH);
        
      if (x >= 29) digitalWrite (7,LOW);
                  digitalWrite(8,HIGH);
                      
      delay (500);
      }
    Dernière modification par gienas ; 29/01/2019 à 20h11. Motif: Ajouté les balises code, obligatoires pour la lisibilité des programmes

  22. #19
    Gérard

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Forum Arduino en français : http://forum.arduino.cc/index.php?board=33.0

  23. #20
    PKcSIdur

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Salut,

    Je m'inspirerais de ce site : http://www.ferdinandpiette.com/blog/...-avec-arduino/

    C'est une vitesse d'un moteur mais le principe reste le même. J'ai fais plus ou moins pareil pour asservir une température avec une vanne 3 voies maison et un servo moteur pour la pale.

    Et puis pour une soutenance tu auras de quoi dire

  24. #21
    Ikhar84

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Juste deux petites remarques sur cette portion:
    Code:
    if (x >= 26)
        digitalWrite(7,HIGH);
    if (x >= 29)
        digitalWrite (7,LOW);
        digitalWrite(8,HIGH);
    La consigne 29 ne sera jamais atteinte, car la condition est déjà remplie par le if précedent (>=26).

    Tu peux, par exemple inverser les if, en commençant par les consignes les plus élevées.

    Pour le :
    Code:
    digitalWrite(8,HIGH)
    L'instruction sera exécutée quoi qu'il arrive car considérée comme exterieur au test de la condition.

    Essaies comme cela:
    Code:
    if (x >= 29) {
        digitalWrite (7,LOW);
        digitalWrite(8,HIGH);
    }
    
    if (x >= 26)
        digitalWrite(7,HIGH);
    
    if (x <= 22) {
        digitalWrite(7,LOW);
        digitalWrite(8,LOW); 
    }
    Notes:
    La place de la consigne <=22 n'est pas importante, mais adoptes une convention et tiens toi y;
    Fais attention aux indentations, les erreurs auraient sauté aux yeux;
    Consultes les sites qui t'ont été suggérés, la programmation a des règles de base qu'il faut maîtriser avant de se jeter sur des snippets à copier/coller sans les comprendre.

    Pas fais attention au reste du code... n'étant pas arduiniste...

    Edit: encadres les blocs de if avec des accolades même si ils ne contiennent qu'une seule instruction pour être sûr de ne pas faire d'erreurs...
    Dernière modification par Antoane ; 08/02/2019 à 13h47. Motif: A la demande de l'auteur.
    J'ai glissé Chef !

  25. #22
    Ikhar84

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Reprise après temp d'edition dépassé.

    Fatigué par une grosse journée j'ai dit une énorme bêtise:
    Si la température est >=29°C, les deux derniers test sont satisfaits.

    Les instructions seront donc executées.

    Désolé pour la bêtise concernant le dernier test jamais satisfait !

    Edit: si un gentil modo pouvait faire le ménage dans le dernier poste, en supprimant la phrase qui commence par "Fatigué..." qui déforme complément le poste et nuit à sa compréhension, n'ayant pu valider l'edition du fait de la limite des 5mn...
    Dernière modification par Ikhar84 ; 29/01/2019 à 21h10.
    J'ai glissé Chef !

  26. #23
    Projet2019

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    merci Ikhar84 le code est bon mais la carte le fait une fois et sil redescend en température il ne change pas d'état.

  27. #24
    Ikhar84

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Quel code est bon ? Le tiens ou mon bout de code ?

    Si tu parles du tien, justement non, je t'ai souligné les erreurs sur les tests, corriges les avant d'aller plus loin, en attendant qu'un arduiniste passe par là...

    Si tes test sont mal foutus, tu envois successivement des "ordres" contradictoires sans compter une logique décousue du programme.

    Utilises le bout de code donnée, ou mieux ajoute des else à tes if (d'où ma première remarque, dont il ne faut pas tenir compte), ça te donneras au moins de bonnes habitudes de programmation.

    Là, en particulier, tu as deux instructions qui s'executent quelle que soit la température, car en dehors des tests:
    Code:
    digitalWrite(8,LOW);
    Et
    Code:
    digitalWrite(8,HIGHT);
    Ce qui fait que le moteur ne s'arrête jamais en fait...

    Edit:
    Pour être plus clair, à chaque fin de ton loop,
    Code:
    digitalWrite(8,HIGHT);
    Sera toujours executée...
    Dernière modification par Ikhar84 ; 29/01/2019 à 22h32.
    J'ai glissé Chef !

  28. #25
    Projet2019

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    C'est BOON mon code fini le voici (les commandes des relais sont inversés):
    Code:
    #include <OneWire.h>
    #include <DallasTemperature.h>
    
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    
    #define One_Wire_Bus 6
    OneWire oneWire(One_Wire_Bus);
    DallasTemperature sensors(&oneWire);
    LiquidCrystal_I2C lcd(0x27, 16, 2);
    
    void setup(void) 
    {
      pinMode(7,OUTPUT);
      pinMode (8,OUTPUT);
      lcd.init();
      lcd.backlight();
    }
    
    void loop() {  
    sensors.requestTemperatures();
      float x=sensors.getTempCByIndex(0);
      
      lcd.setCursor(0, 0);
      lcd.print("Projet  SNCF");
    
      lcd.setCursor(0,1);
      lcd.print("Temp =");
    
      lcd.setCursor(9,1);
      lcd.print(x);
    
      lcd.setCursor(14,1);
      lcd.print("'C");
    
    if (x > 29) {
        digitalWrite (7,HIGH);
        digitalWrite(8,LOW);
    }
    
    else if  (x > 26){
        digitalWrite(7,LOW);
        digitalWrite(8,HIGH);
    } 
    else if (x <= 22) {
        digitalWrite(7,HIGH);
        digitalWrite(8,HIGH); 
    }
    
      delay (500);
    }
    Dernière modification par Antoane ; 08/02/2019 à 13h44. Motif: Ajout balises code

  29. #26
    Projet2019

    Re : Carte Arduino Uno : faire varier la vitesse d'un ventilo en fonction de la température

    Une question encore comment faire actionné le ventilateur si un fils de la sonde fait faut contact et qu'on n'a
    20190207_155333.jpg une valeur -127 ?

Discussions similaires

  1. [Energie] Faire varier la vitesse d'une MCC
    Par Storm5050 dans le forum Électronique
    Réponses: 5
    Dernier message: 18/11/2017, 21h40
  2. [Programmation] faire varier l'intensité lumineuse d'une led au cours du temps sur arduino
    Par Bruh dans le forum Électronique
    Réponses: 14
    Dernier message: 29/06/2017, 21h35
  3. [Programmation] Varier la vitesse d'un servomoteur arduino nano
    Par piezo27 dans le forum Électronique
    Réponses: 1
    Dernier message: 14/04/2017, 17h46
  4. [Outils/Fab/Comp] Faire varier température LED
    Par Toni187 dans le forum Électronique
    Réponses: 13
    Dernier message: 04/03/2016, 07h56
  5. [Autre] Faire varier la fréquence d'horloge d'un micro-contôleur. (Arduino)
    Par Teknic dans le forum Électronique
    Réponses: 27
    Dernier message: 24/02/2016, 20h48