Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino] Récupérer une tension de 0-12V

Sujet résolu
    11 novembre 2012 à 18:03:35

    Bonjour Bonjour,
    ayant reçu mes Attiny45, j'ai décidé de les utiliser pour un petit-projet :
    Faire en sorte que mes écrans et haut-parleurs s'éteignent quand mon UC s'éteint, et qu'ils s'allument quand je la rallume.

    Le principe, je pique la tension (entre 0 et 12v) en sortie d'un potentiomètre qui sert à diminuer la vitesse du gros ventilo (et aspirateur aussi!) sur le côté de l'UC, je la passe dans un diviseur de tension pour avoir quelque chose entre 0 et 6v, que je peux donc théoriquement lire avec une entrée analogique sur l'Arduino.
    En fonction de la valeur lue j'active/désactive un relai, ainsi quand le PC s'éteint tout s'éteint de même quand le PC s'allume tout s'allume, et si je veux laisser le PC à télécharger pendant la nuit, je diminue la vitesse du ventilo à un seuil que j'ai défini pour tout éteindre.

    Pour commencer j'ai donc fait un petit programme pour voir quelles valeurs je lisais sur l'arduino en fonction de la position de mon potentiomètre (pour décider ensuite où je plaçais mon seuil), Mes questions :
    J'ai bien compris le principe du diviseur de tension, et là je n'ai qu'à mettre 2 résistances de même valeur pour diviser par 2 (peut être que je diviserais par 3 par sureté), mais qu'en est il du courant? j'imagine que je ne peux pas laisser entrer n'importe quelle valeur de courant dans l'arduino? quel est le maximum? De même pour une résistance 1/4W quelle courant peut elle dissiper sans trop chauffer? (les 330Ohm ont pris un coup de chaud je vous avoue)
    Pour la masse, est ce que je peux les relier comme ça (ça me parait bizarre, sans que je puisse l'expliquer)? En même temps si je ne le fais pas je ne peux pas mesurer la valeur de la tension en sortie du potentiomètre non?

    Merci d'avance et bonne soirée!

    le code, plus concis que mes explication :
    const int ventilo=A1;
    int valventilo;
    
    long int temps=0;
    
    void setup()
    {
      pinMode(ventilo,INPUT);
      Serial.begin(9600);
    }
    
    void loop()
    {
      valventilo=analogRead(ventilo);
      
      if((millis() - temps) > 1000)
      {
        Serial.println(valventilo);
        temps = millis();
      }
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      11 novembre 2012 à 19:59:09

      Pour faire un pont diviseur de tension on utilise plus généralement des résistances de l'ordre du kilo.
      1kOhms voir 10kOhms.

      Les entrées analogiques de l'Arduino ont une impédance de 100 Mégohms.

      Les valeurs les plus importantes dans ton montage de pont diviseur sont:
      • La valeur max doit être inférieure ou égal à la tension du micro-controleur. [5V]
      • La puissance de tes résistances doivent être suffisante.
        P = U²/R

        V21+ /\ +12V
        |
        R || R
        |
        R || R
        |
        oniudrA nip ----+---- pin Arduino
        |
        R || R
        |
        essaM ¯ Masse

        Si tu as un pont diviseur avec (R) 330ohms.
        <math>\(P = \frac{U^2}{R1 + R1 + R1} = \frac{12^2}{990} = 0.14W < \frac{1}{6}W\)</math>
        Donc une résistance quart de Watt devrais suffire.






      • Partager sur Facebook
      • Partager sur Twitter
        11 novembre 2012 à 20:35:20

        Arf je pense que mes profs de prépa me tueraient s'ils me voyaient écrire des trucs comme "dissiper du courant"... bref! Merci bien pour cette remise à jour!
        J'ai suivi le schéma, c'est sensiblement ce que je faisais, même si du coup je suis passé à un diviseur par 3 et des résistances d' 1kOhm.

        Mais ça ne marche toujours pas,
        Quand je ne relie pas la masse du potentiomètre à la masse de l'arduino j'ai bien une tension entre 0 et 4V aux bornes du "diviseur" mais sur le port série la valeur ne bouge pas (bloqué à 1023). ce qui me parait plutôt logique puisque du coup je n'ai pas de référence.

        Si je relie les masses, alors la tension aux bornes du diviseur est toujours à ~4V peu importe la position du potentiomètre (et du coup sur la voie série j'ai ~800 ce qui correspond à 4V)
        C'est pas très bon signe ca non? j'ai l'impression que je suis en train d'alimenter mon potentiomètre :/ mais je ne comprends pas pourquoi! Il me faudrait des diodes pour bloquer le courant dans un sens?

        merci d'avance!
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          11 novembre 2012 à 20:58:34

          tu peux faire un schéma ? =)
          • Partager sur Facebook
          • Partager sur Twitter
            11 novembre 2012 à 22:02:34

            Voilà le circuit :
            Image utilisateur

            Sans relier le cable "Arduino GND" j'ai le comportement prédis quand je regarde au voltmètre, c'est à dire que la tension CB est bien égale au tiers de AB.
            Mais arduino ne voit pas les changements de tension et affiche sur la voie série toujours 1023.

            Avec la masse commune à l'arduino et au potentiomètre, ma tension au voltmètre est, peu importe la position du potentiomètre : 4V pour CD, 12V pour AB
            • Partager sur Facebook
            • Partager sur Twitter
              12 novembre 2012 à 11:55:15

              Un relais alimenté par le +12V d'une prise disque dur du PC suffit pour commuter l'écran, il n'y a pas besoin de plus de complication...
              • Partager sur Facebook
              • Partager sur Twitter
                12 novembre 2012 à 13:30:27

                Effectivement, mais ce que je cherche à faire est un poil plus compliqué puisque je veux aussi, même avec le PC allumé, pouvoir couper les écrans.
                Et plus que la finalité du projet (qui est surtout pour utiliser un attiny45, je suis pas feignant à ce point là quand même!), j'aimerais surtout savoir ce qui cloche dans ce montage!
                • Partager sur Facebook
                • Partager sur Twitter
                  12 novembre 2012 à 15:44:53

                  Hello,
                  Dans ton code tu as défini le pin ventilo en input => numérique
                  Il faut juste que tu enlève cette ligne du code :

                  Citation : Supernik

                  12 pinMode(ventilo,INPUT);


                  Et normalement ça fonctionne.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 novembre 2012 à 19:55:39

                    hmm non ca n'a rien changé... mais merci pour la tentative!
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      12 novembre 2012 à 20:40:17

                      Quand tu dit "potentiomètre PC".

                      C'est le fil rouge de ton ventilateur ou vraiment le potentiomètre qui va au contrôleur de ventilateur ?


                      add:
                      Sinon y a la solution de récupérer le signal de vitesse de ton ventilateur.
                      en comptant le temps entre deux "pic" de tension.
                      En oubliant pas de mettre un pont diviseur.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 novembre 2012 à 21:27:51

                        C'est vraiment un potentiomètre, qui est alimenté par une prise Molex.
                        et en sortie du potentiomètre j'ai donc deux fils qui se branchent sur le ventilateur en façade de l'UC.

                        Plus que mon projet maintenant j'aimerais vraiment comprendre pourquoi dès que je relie les masses de l'Arduino et du PC, cette sortie se retrouve bloquée a 12V alors qu'elle varie parfaitement sinon.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 novembre 2012 à 0:16:26

                          Pour information, j'ai essayé d'alimenter l'Arduino avec une pile, en modifiant le code (puisque plus de communication série) j'ai mis une LED témoin : allumée quand l'entrée analogique reçoit une tension plus haute qu'un seuil que j'ai défini, éteinte en dessous.
                          Et là tout fonctionne correctement, la LED réagit bien, et les tensions que je relève au multi-mètre sont logiques.

                          Le problème était donc bien que le GND USB et le GND du PC ne "s'entendaient" pas bien, mais j'espère toujours que l'un de vous puisse m'expliquer pourquoi ^^

                          Bonne soirée!
                          • Partager sur Facebook
                          • Partager sur Twitter
                            14 novembre 2012 à 9:31:11

                            Boucle de masse, probablement, la masse d'un PC est relativement parasitée...

                            Si tu veux mettre l'arduino dans le PC et l'alimenter par USB, chope un connecteur usb sur la carte mère (en général il y en a sous forme de petits pins) ça t'évitera d'avoir un cable moche qui fait un détour par l'extérieur...
                            • Partager sur Facebook
                            • Partager sur Twitter
                              14 novembre 2012 à 12:46:43

                              Ouais je vois très bien où sont ces ports USB!
                              De toute facon je pense reprendre ton idée et simplement mettre un relai 12V, c'est effectivement plus simple et plus logique (maintenant que j'ai "élucidé" ce problème avec arduino)
                              Merci!
                              • Partager sur Facebook
                              • Partager sur Twitter
                                23 novembre 2012 à 0:02:28

                                Ca y est je suis passé à la réalisation, j'ai fais mon petit montage, et ça marche au top!
                                Une petite question par contre!
                                Combien d'appareils est ce que je peux brancher sur un relai?
                                Mon relai est un 250VAC / 16A, est ce que cela veut bien dire que je peux tirer jusqu'à 4kW?
                                Dans ce cas là, je suis relativement large avec 2 écrans et mes haut-parleurs, on est d'accord?

                                Merci d'avance et bon week-end!
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  23 novembre 2012 à 0:23:53

                                  un peux moins parce que la tension réseau c'est du 230 et pas de 250. mais ouai t'y est loin =)

                                  Par contre, utilise bien du fils de 2,5m2 pour alimenter tes écrans !
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    23 novembre 2012 à 1:09:53

                                    En faite j'utilise une multiprise qui est alimentée par le relai, sur laquelle je branche mes écrans, donc le diamètre des cables doit être bon, pour ce qui est de la multiprise j'ai fait de la récup de cables d'alimentation, donc je vérifierais mais ils sont bon normalement.
                                    Merci!
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    [Arduino] Récupérer une tension de 0-12V

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown