Auteur Sujet: Arduino pilotage PN37  (Lu 34634 fois)

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Arduino pilotage PN37
« Réponse #30 le: avril 05, 2016, 01:10:56 pm »
Bonjour,

Dans la description du module sonnerie, je vois qu'il y a deux entrées pour démarrer et éteindre la sonnerie. Ça ne colle pas avec ton explication.
Cordialement

Dominique Donnat

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : Arduino pilotage PN37
« Réponse #31 le: avril 05, 2016, 02:52:14 pm »
Si si, sur mon module il y a bien deux entrées, qui sont chacune une mise à la masse :
- l'une lance la lecture intégrale de l'enregistrement son, qui dans mon cas fait 25 secondes, trop long pour moi. Une fois la lecture lancée, on ne peut pas l'arrêter,
- l'autre est un flip flop : une impulsion lance, la suivante l'arrête. C'est celle que j'utilise pour maîtriser la durée de sonnerie.

Par ailleurs, en trackant le fonctionnement de mon programme, je mesure une loop de 128 millisecondes. Ça me semble bien long, et du coup ça fait apparaître des saccades dans le mouvement du servo. À la lecture de mon code, vois-tu une anomalie qui expliquerait cette durée ?

Autre info : j'ai utilisé un optocoupleur pour isoler le module sonore de l'arduino, mais je les alimente par la même source primaire de 9 ou 10V. De fait, ils ont donc une masse commune. Est-ce gênant ? Le câblage de l'opto est identique à celui décrit dans le manuel du kit arduino, similaire à cette image, http://sdz-upload.s3.amazonaws.com/prod/upload/optocoupler_sc%C3%A9ma1.jpg avec la connection des pins 5 et 6 à l'entrée de commande et à la masse du module sonore.

Dom


Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Re : Arduino pilotage PN37
« Réponse #32 le: avril 05, 2016, 03:08:24 pm »
Si si, sur mon module il y a bien deux entrées, qui sont chacune une mise à la masse :
- l'une lance la lecture intégrale de l'enregistrement son, qui dans mon cas fait 25 secondes, trop long pour moi. Une fois la lecture lancée, on ne peut pas l'arrêter,
- l'autre est un flip flop : une impulsion lance, la suivante l'arrête. C'est celle que j'utilise pour maîtriser la durée de sonnerie.

Mais ce n'est pas ce que je lis dans leur descriptif :

Citer
3.Mode automatique avec 2 ILS (Interrupteur reed):
Le son est déclenché par un ILS et éteint par un deuxième ILS. Le son est restitué jusqu'à il est éteint par ILS n°2.

Donc la première entrée démarre le son, la seconde l'arrête. (on passera sur la concordance des temps  ;D)

Citer
Par ailleurs, en trackant le fonctionnement de mon programme, je mesure une loop de 128 millisecondes. Ça me semble bien long, et du coup ça fait apparaître des saccades dans le mouvement du servo. À la lecture de mon code, vois-tu une anomalie qui expliquerait cette durée ?

Oui, l'envoi d'environ 120 à 140 caractères sur la ligne série à 9600 bauds. Disons 1200 bits = 125ms

Citer
Autre info : j'ai utilisé un optocoupleur pour isoler le module sonore de l'arduino, mais je les alimente par la même source primaire de 9 ou 10V. De fait, ils ont donc une masse commune. Est-ce gênant ? Le câblage de l'opto est identique à celui décrit dans le manuel du kit arduino, similaire à cette image, http://sdz-upload.s3.amazonaws.com/prod/upload/optocoupler_sc%C3%A9ma1.jpg avec la connection des pins 5 et 6 à l'entrée de commande et à la masse du module sonore.

Ça n'est pas utile je pense, tu peux connecter directement la sortie de l'Arduino. N'oublie pas de réunir les masses.
Cordialement

Dominique Donnat

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : Re : Re : Arduino pilotage PN37
« Réponse #33 le: avril 05, 2016, 05:10:41 pm »
Citation de: Jean-Luc
Mais ce n'est pas ce que je lis dans leur descriptif :
Citer
3.Mode automatique avec 2 ILS (Interrupteur reed):
Le son est déclenché par un ILS et éteint par un deuxième ILS. Le son est restitué jusqu'à il est éteint par ILS n°2.
J'ai écrit "similaire à ... ". À l'évidence, ils ont ou ont eu plusieurs fabrications. Le mien, je l'ai en main et il fonctionne comme je l'ai décrit.


Citation de: Jean-Luc
Citer
.../... une loop de 128 millisecondes.
Oui, l'envoi d'environ 120 à 140 caractères sur la ligne série à 9600 bauds. Disons 1200 bits = 125ms
Bon, ça disparaîtra à la fin. OK.

Citation de: Jean-Luc
Citer
.../... un optocoupleur pour isoler le module sonore de l'arduino,
Ça n'est pas utile je pense, tu peux connecter directement la sortie de l'Arduino. N'oublie pas de réunir les masses.
Je vais essayer, il suffit d'inverser les états HIGH et LOW par rapport à la version avec opto. Mais je ne suis pas électronicien chevronné, n'y a-t-il pas un risque à relier l'entrée du module sonore au +5V arduino ?

En tout cas merci de tes explications et de tes conseils.

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Re : Re : Re : Arduino pilotage PN37
« Réponse #34 le: avril 05, 2016, 05:39:44 pm »
J'ai écrit "similaire à ... ". À l'évidence, ils ont ou ont eu plusieurs fabrications. Le mien, je l'ai en main et il fonctionne comme je l'ai décrit.

Ok, donc le problème vient d'ailleurs.

Citer
Je vais essayer, il suffit d'inverser les états HIGH et LOW par rapport à la version avec opto. Mais je ne suis pas électronicien chevronné, n'y a-t-il pas un risque à relier l'entrée du module sonore au +5V arduino ?

Je suppose que l'entrée de commande a une résistance de pullup sinon quand l'ILS ne colle pas l'entrée flotterait.

De ce que je vois sur la carte beige : 4 diodes pour redresser une tension alternative accessoire, 2 condensateur chimique qui doivent normalement se trouver autour d'un régulateur. Je parie que le boitier noir qui ressemble à un transistor est un régulateur faible puissance (100mA). regarde ce qui est inscrit sur la face plate, 78L05 ?

Si tu mets le module sonore seul, que tu l'alimentes et que tu mesures la tension sur cette entrée, qu'y a-t-il ? 
« Modifié: avril 05, 2016, 06:08:35 pm par Jean-Luc »
Cordialement

Dominique Donnat

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : Arduino pilotage PN37
« Réponse #35 le: avril 05, 2016, 05:57:59 pm »
Oui, il y a un régulateur au dos de la carte, c'est bien un 78M05. Je lis 4,70 V sur l'entrée hors fonctionnement

En fait, en regardant mieux, mon module a l'air conforme à la description. Il y a 3 entrées :
- entrée 1 : lance la lecture complète du fichier son,
- entrée 2 (celle que j'utilise) : flip / flop tel que décrit
- entrée 3 : le son joue tant que l'entrée est mise à la masse. Et je viens de découvrir qu'une impulsion à la masse sur entrée 3 stoppe le son si on l'a lancé par l'entrée 2 ou l'entrée 1 !

Je vais quand même essayer un pilotage direct depuis l'arduino si tu penses que c'est électriquement compatible.
« Modifié: avril 05, 2016, 06:08:20 pm par Dominique Donnat »

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Arduino pilotage PN37
« Réponse #36 le: avril 05, 2016, 06:07:48 pm »
Je ferais comme ça pour commander cette entrée directement :

Tu écrits 0 dans sur la pin alors qu'elle est programmée en entrée (dans setup) avec digitalWrite. Quand tu veux faire un pulse à LOW, tu la programmes en sortie avec pinMode puis en entrée toujours avec pinMode. De cette manière tu n'imposes jamais 5V sur l'entrée du module son.
Cordialement

Dominique Donnat

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : Arduino pilotage PN37
« Réponse #37 le: avril 05, 2016, 06:39:34 pm »
J'ai réorganisé le code concerné. Est-ce que j'ai bien compris ?

#include <ScheduleTable.h>
// Création des objets
    ScheduleTable ouvreSonne(5,18000);  // Création de la table

// déclaration des constantes
    const byte pinSonne=8;  // affecte l'E/S 8 au pilotage de la sonnerie sans optocoupleur

// déclaration des variables   
    float target = 0.0; // La cible du servo : target = 0.0 pour barrières fermées.
    byte actionPN=0; // variable d'état pour le switchcase de pilotage des barrières
    byte prevActionPN=0; // l'état précédent de actionPN
   
// fonctions pour SheduleTable
void pulseOn()
    {
      pinMode(pinSonne, OUTPUT);
      digitalWrite(pinSonne, LOW);
    }

void pulseOff()
    {
     pinMode(pinSonne, INPUT);
     digitalWrite(pinSonne, LOW);
    }
void basculeTarget()
    {
      target = 1.0 - target;
    }
void setup() {
  // put your setup code here, to run once:
    pinMode(pinSonne, INPUT); // déclare pinSonne comme entrée à l'init;
    digitalWrite(pinSonne,LOW); // écrit 0 sur pinSonne
   
// Table des événements de ouvreSonne: impulsions de 1000 ms à t=000 et t = 16000, et assigne la valeur 0.0 à target à t = 5000
    ouvreSonne.at(000,pulseOn);
    ouvreSonne.at(1000,pulseOff);
    ouvreSonne.at(5000,basculeTarget);
    ouvreSonne.at(16000,pulseOn);
    ouvreSonne.at(17000,pulseOff);

}

void loop() {
  // put your main code here, to run repeatedly:

 // Code pour gérer le mouvement des barrières
    switch (actionPN) // début du switch case de pilotage des barrières
        {
          case 0: // on ouvre les barrières
              if (actionPN != prevActionPN) {target = 1.0; prevActionPN=actionPN;}
              break;
          case 1: // on ferme les barrières avec sonnerie
              if (actionPN != prevActionPN) ouvreSonne.start(1);
                // digitalWrite(pinSonne,sonne); cette ligne ne semble plus utile, c'est maintenant dans les fonctions
                prevActionPN=actionPN;
               break;
          case 2: // on ferme les barrières sans sonnerie
              if (actionPN != prevActionPN) {target = 0.0; prevActionPN=actionPN;}
              break;
          } // fin du switch case de pilotage des barrières

}

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Arduino pilotage PN37
« Réponse #38 le: avril 05, 2016, 06:43:10 pm »
Vérifie avec une LED mais je pense que le digitalWrite(pinSonne, LOW); dans pulseOn() et pulseOff() est de trop (il ne sert pas mais il ne fait pas de mal)

Sinon ça me semble ok
Cordialement

Dominique Donnat

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : Arduino pilotage PN37
« Réponse #39 le: avril 06, 2016, 09:40:32 am »
Bon, pas encore ça. Avec une LED, ça fonctionne (en inverse, évidemment), mais en liaison avec le module son,rien ne se passe. Je dois encore chercher le pourquoi du comment.

Je vais câbler le plan B (commande manuelle du module son par bouton-poussoir en façade) et reprendre tout cela après mon expo de mi-mai, vu tout ce qu'il me reste à faire d'ici-là sur le réglage fin du mouvement des barrières, et tout le décor. 5 semaines ne seront pas de trop.

Merci de ton aide, Jean-Luc.