P2E-Buzzer-PWM-FR

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

Introduction

En première utilisation, un signal PWM est un signal particulier permettant de moduler la puissance moyenne d'une sortie en activant/désactivant régulièrement (et rapidement) l'état d'une broche. Ce sujet a été traité dans le tutoriel Sortie PWM qui mettait en évidence la possibilité de changer la fréquence d'un signal PWM.

D'autre part, il existe de piezo Buzzer, un dispositif constitué de deux éléments métalliques collés côte-à-côte.

 

Lorsqu'une tension est appliquée, un bref courant circule dans le piezo et celui-ci change de forme (se déforme légèrement en cuillère). Quand la tension est enlevée, le piezo reprend sa forme originale en rendant l'énergie au circuit. En répétant l'opération à une fréquence donnée, cette déformation répétée comprime l'air environnant qui se met en mouvement à la même fréquence... ce qui --au final-- n'est rien d'autre qu'un son qui se propage dans l'air.

Si la fréquence de vibration du piezo est de 440 Hertz (440 fois par seconde) alors le piezo produira une note "La"

Piezo Actif vs Piezo Passif

Il existe deux type de Piezo Buzzer, dans le monde industriel il n'est pas rare de rencontrer un Piezo Actif (comme ci-dessous).

 

Ce type de piezo dispose de sa propre électronique faisant vibrer l'élément piezo à une fréquence fixée. Il n'a donc pas besoin d'un signal PWM.

A contratio, le piezo passif (comme présenté en début d'article) a besoin d'un signal PWM pour vibrer. Si possible un système d'amplification en courant sera le bienvenu pour obtenir une déformation plus importante et donc un son plus perceptible.

Le cas du Pico-2-Explorer

Sur le Pico-2-Explorer, le piezo buzzer est branché directement sur GP13 par l'intermédiaire d'une électronique d'amplification.

Pour utiliser le Piezo Buzzer, il est donc nécessaire que le cavalier soit en place (voir au dessus du bouton "Reset").

 

Cas pratique

L'exemple ci-dessous se propose de moduler un son à partir d'un signal PWM.

La tonalité du son --donc sa fréquence-- varie en fonction de la position du potentiomètre,

Le potentiomètre permet ainsi de passer progressivement d'un son grave (100 Hertz) à un son aigu 10000 Hertz (10 KHz). La fréquence 10 KHz est à la limite de ce que peut produire le piezo buzzer présent sur la carte explorer.

Pour obtenir un son bien audible, le signal PWM est généré avec un cycle utile de 33%

Branchement simplifié

Dans cet exemple, nous allons brancher un potentiomètre sur l'entrée analogique A0 (GP26) afin contrôler la fréquence PWM produite sur GP13 (33% de cycle utile).

En contrôlant la fréquence PWM de 100 Hz à 10 KHz, le script produira un son de 100 à 10000 Hertz.

 

Remarque:

  • Le script peut être interrompu mais cela n'interrompt pas la génération du son puisque qu'un contrôleur PWM est autonome.
  • Il est bien entendu possible d'interrompre la génération du signal PWM mais il sera plus simple de presser le bouton RESET de la carte (ce qui réinitialise tous les périphériques matériel du microcontrôleur).


Si vous n'êtes pas encore familiarisé avec l'utilisation des entrées analogiques alors vous pouvez consulter le tutoriel sur les entrées analogiques.

Code

Le code ci-dessous peut être saisi dans une session REPL ou dans Thonny IDE.

Cet exemple est également disponible dans le dépôt pwm-buzzer.py .

 1 from machine import Pin, ADC, PWM
 2 from maps import map
 3 import time
 4 
 5 # Désactive PowerSafe (lower ripple)
 6 Pin( 23, Pin.OUT, value=True )
 7 
 8 a0 = ADC( Pin( Pin.board.GP26 ) )
 9 buzzer = PWM( Pin( Pin.board.GP13 ) )
10 buzzer.duty_u16( 65535//3 )
11 while True:
12     val = a0.read_u16()
13     hertz = int( map(val, 0, 65535, 100, 10000 ) )
14     buzzer.freq( hertz )
15     print( 'frequence = %5i Hz' % (hertz) )
16     time.sleep_ms( 100 )

Il ne reste plus qu'à tourner le potentiomètre pour modifier la luminosité de la LED.

Voici quelques explications:

  • Ligne 2: import de la fonction map similaire à son homologue Arduino. La fonction bibliothèque maps est déjà installée sur votre carte MicroPython et est disponible dans le dépôt esp8266-upy/LIBRARIAN.
  • Lignes x à x: xxx

Un problème?

xxxx

La luminosité de la LED ne varie pas lorsque le potentiomètre est tourné ?

  1. Est ce que la valeur affichée dans REPL varie lorsque le potentiomètre est tourné ?
    1. OUI: vérifier le raccordement entre le GP2 et la LED
    2. NON: vérifier le raccordement entre le GP26 et le potentiomètre
  2. La luminosité change par ac-coup ? Cela peut être provoqué par la pause de 1/10 de seconde à chaque tour de boucle. Diminuer le délai à 20 millisecondes augmente la réactivité du script.
  3. La LED scintille ?!?! cela peut être provoqué par un contact électrique imparfait... vérifier les divers branchement sur les connecteurs.

Le défi

xxxx

Truc et astuce


Traduction augmentée réalisée par Meurisse. D pour shop.MCHobby.be - Licence CC-BY-SA.


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.