Un Générateur d'Impulsions

On a toujours besoin d'une série d'impulsions chez soi !

 

Puls gen1

          Depuis qu'il cherche à mesurer le temps, et plus de nos jours avec les circuits électroniques, l'homme a eu besoin de disposer d'impulsions électriques calibrées dans le but de comparer, estimer, analyser, le fonctionnement des ses circuits et réalisations... que ça soit le modèliste qui veut tester ses servos ou le mécanicien qui a besoin d'une lampe stroboscopique pour visualiser la rotation de son moteur ... Sans parler des besoins spontanés de l'électronicien pour ses essais ...

          Ce n'est pas un générateur BF, car on ne lui trouve pas de sortie sinusoïdale, triangulaire ... Les signaux générés sont des signaux carrés, de 1 milliseconde à 999 secondes, programmables en nombre de cycles, en temps signal haut et en temps signal bas (rapport cyclique ) individuellement, avec possibilité de rappel des dernières valeurs réglées et fonctionnement répétitif "ad vitam éternam" sans réglage du nombre de cycles souhaités !

          Les sorties sont au niveau TTL sur fiche BNC,  TTL complémenté (déphasé à 180°) sur BNC également, et une sortie réglable de 0 à 12 volts sur les fiches bananes, commutable en 12 volts plein sur une impédance de 60 Ohms minimum ... La seule protection qu'il puisse y avoir c'est le montage des optocoupleurs de sorties sur des supports DIL, en vue de leur remplacements en cas de court-circuit accidentel ....

          Sur la face avant, en plus des sorties évoquées plus haut, un afficheur LCD 2x16 caractères permet le dialogue machine <=> homme. Un codeur incrémental nous fait voyager dans les menus et assure la saisie des données; dans le sens horaire j'incrémente, dans le sens anti-horaire je décrémente et je valide par un appui !

Lors de la mise sous tension l'écran d'accueil se présente ainsi :

Puls gen lcdstrt

          Il suffit de remplir, en tournant le bouton  Time High en validant chaque digit pour passer au suivant et ce 3 fois puis choisir secondes ou millisecondes  puis 3 valeurs pour le Time Low . Après avoir validé on règle le nombre d'impulsions que l'on veut générer. Si on valide 000 le cycle se reproduira indéfiniment ... Un simple appui sur le bouton fera démarrer les pulses. Les valeurs sont automatiquement sauvegardées en EEPROM afin de pouvoir les rappeler en fin de cycle sans avoir à tout retaper .

Quelques exemples :

Dans celui ci-dessous, le temps état haut est d'une seconde, état bas 1 seconde également, et ça tourne à perpette car il n'y a pas eu de nombre de cycles demandés ....

Puls gen lcd1s1 2

 

Ci-desous, l'état haut sera de 111 millisecondes, l'état bas de 50 millisecondes et il reste 63 pulses à générer !

Puls gen lcdms

 

Une vue de l'oscilloscope quand ça commence (111 ms hi, 50 ms lo)

Puls gen scp111x50strt

 

Et ça continue jusqu'à ce que le nombre affiche "0"

Puls gen scp111x50 1

Arrivé à 0, l'écran s'éteint quelques secondes plus tard et si l'on veut la même série d'impulsions, il suffit de presser de nouveau le bouton ... Voila pour ce qui est de la présentation et des réglages ! il est grand temps de voir comment ça marche ! 

 

La réalisation pratique :

Le schéma :

Puls gen sch

          Un Arduino Nano est largement suffisant pour réaliser ce qui est demandé ! Commençons par l'afficheur LCD 2 x 16 caractères rétroéclairés : pour simplifier le câblage et limiter le nombre d'entrées/sorties, je l'ai traîté en I2C avec un module driver, acheté un dollar symbolique chez Aliexpress ... ce qui limite la connexion à l'alimentation 5v et les Datas + l'horloge de synchro... Elle n'est pas belle la vie ?

          Le codeur incrémental nous fourni deux signaux déphasés de 90° dans un sens et de 270° dans l'autre sens ce qui va permettre la détection du sens de rotation et là comme les données sont réglées ensemble au début, ça permet de s'affranchir d'un vecteur d'interruption sur les entrées du Nano . Le bouton de validation n'a pas besoin de résistance physique de pull-up car cette fonction est disponible dans la déclaration de l'Arduino .

          Les trois sorties (c'est le grand luxe) sont toutes opto-couplées pour assurer l'isolation galvanique de chacune, et une résistance de limitation passe 10mA pour allumer la led de l'opto ! Son photo-transistor est relié au 5 volts pour les sorties TTL, rappelées au potentiel 0 volt par une résistance de 1KOhms. Sauf pour la sortie 12 volts où une résistance de 68 Ohms sert de limitation contre les court-circuits. Cette sortie est commutée directement vers les douilles bananes, par un interrupteur, ou vers un potentiomètre de 250 Ohms pour ajuster le niveau désiré .

L'alimentation de l'ensemble est confiée à un module 12 volts à découpage du même fournisseur.

Puls gen alim

 

Le circuit Imprimé:

Puls gen pcb Puls gen cms

Un circuit simple face, pour faciliter la réalisation, où l'on soude en priorité les résistances CMS puis le reste des composants ... J'ai soudé le potentiomètre côté cuivre simplement parce que le boitier de récupération que j'ai utilisé avait déjà des trous percés pour l'axe à cet endroit, mais sur un habillage neuf, on le place normalement . Quelque connecteurs sont montés pour raccorder les différents éléments...

Puls gen dev

 

L'afficheur LCD et son driver :

Puls gen lcdserial

 

          Pour loger tout ça, j'ai récupéré un boitier Sarel que j'ai découpé suivant la disposition des axes et fiches diverses . J'ai réalisé un cache à l'imprimante 3D pour dissimuler les découpes disgracieuses du contour du LCD . Le câblage étant terminé il n'y a plus qu'a téléverser le programme dans le Nano . 

 

Le Programme :

Tout ce que j'ai voulu faire est expliqué dans les commentaires en bout de chaque ligne de programme ; pas de difficulté majeure !

La gestion du codeur, sans vecteur d'interruption : Non nécessaire ici car l'ensemble des saisies se fait au début ...

Puls gen cod

 

La gestion des différents menus suvant les cas à traiter...

Puls gen cas

 

L'écriture de sauvegarde des valeurs en EEPROM ...

Puls gen weeprom

 

La récupération des valeurs dans l'EEPROM...

Puls gen call

 

 

 

Les fichiers pour la réalisation:

Trouvez, dans le Zip ci-dessous tous les fichiers utilisés pour la réalisation ...

Puls genPuls gen (73.11 Ko)

 

 

Une Version Simplifiée :

Pwm gen

 

 

         Les Chinois sortent pour 3,50€ un petit module générateur PWM d'une grande simplicité et redoutablement efficace qui permet de générer une fréquence en signal carré de 1 Hertz à 150 kilo Hertz avec un réglage de la largeur d'impulsion de 0 à 100% et sortant la tension qui l'alimente ; autrement dit de 3,3 volts à 30 volts . Le codeur incrémental rotatif permet, suivant la vitesse de rotation, de passer aux réglages des dizaines et des centaines sans avoir à 'pédaler' trop longtemps ... Quand les valeurs correspondent  à ce que l'on veut, il suffit de presser le bouton On/Off pour sortir le signal . 

Pwm gen module

               Une pression prolongée de 5 " sur l'axe du codeur va permettre de mémoriser les paramètres affichés et de les retrouver même après la mise hors tension. La seule différence avec celui que j'ai décris plus haut, c'est qu'avec le mien, je peux définir un nombre de répétition réglable et la plage de temps permet d'aller jusqu'à 999 secondes (fonction de temporisation ) mais avec la précision du quartz et de l'occupation (busy) de l'Arduino ... 

Le schéma :

Pwm gen sch

            J'ai alimenté mon générateur en 12 volts, ce qui couvre pratiquement tous mes besoins, et l'ai interfacé de manière à disposer de sorties réglables en niveau de tension et surtout de limiter l'intensité, qui risque d'être destructrice en cas de court-circuit ou de surcharge ! Le fabricant le donne avec une sortance de  30 mA (Je n'ai pas essayé de le détruire pour vérifier ) .

           L'interrupteur S2 permet de commuter en sortie niveau TTL ramené à 5 volts par la Diode zener D1 (4,7 volts 1/4 watt) Et sortie sur BNC. Dans l'autre position de cet inter, on dispose d'une sortie 0 à 12 vols pour haute impédance d'entrée, réglée par le potentiomètre de 1K, et sortie sur BNC également ! Si l'on veut attaquer une charge plus grande, un transistor MOS-FET (IRLZ44N) va booster la sortie et offrir le double avantage d'avoir des signaux directs ou déphasés à 180°  suivant que l'on utilise la fiche banane de sortie avec une des  autres référencées aux potentiels de l'alimentation !  Une résistance de 250 Ohms / 1 Watt (R6) charge le FET et une autre de 100k (R2) garantie le 'pull-down' de la gate du transistor . Attention aux charges inductives sur les fiches BNC. 

 

Le Câblage :

Pwm gen cbg

         Pas de circuit imprimé, yoouupiiiee ! Juste un bon vieux câblage en l'air sur les douilles et différentes pinuches des composants de façade ... Il n'y a pas grand chose ... Il n'est même pas nécessaire de dissiper le transistor, il tièdit tout juste et l'alimentation à découpage s'écroule si l'on dépasse les 2 Ampères au total . Mais pensez y, si vous utilisez une source plus balaise que celle-ci !

Pwm gen inf

 

          Voici donc un deuxième générateur d'impulsion, très 'bon marché' , sans prétention mais qui va permettre de tester les servos, ou des steppeurs, et de générer des signaux carrés pour tout autres tests et essais sur MCU ou variateurs ...

 

 

Ajouter un commentaire