Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /home/clients/db62a7f73729021974202bbfe60264f9/sites/hfelec.ch/models/UsersManager.php on line 18
Blog de Conception Électronique - Tutoriels et Astuces
Logo Central

Sonnette de Vélo : Alliant Compacité et Autonomie

À la recherche d'une solution compacte et économe en énergie pour équiper mon vélo, je me suis lancé dans la conception d'une sonnette personnalisée. Aucun modèle du commerce ne répondait à mes critères : compacité extrême, fonctionnement sur pile et faible consommation énergétique.

Ce projet m'a conduit à développer une sonnette qui allie praticité et performance. Grâce à un design optimisé et l'utilisation de technologies efficaces, cette sonnette est non seulement discrète mais aussi particulièrement durable. Son fonctionnement sur pile assure une autonomie prolongée, tandis que sa taille réduite permet de l'intégrer parfaitement à n'importe quel guidon de vélo.

Dans le but de produire un son agréable, j'ai opté pour l'utilisation d'un petit microcontrôleur logé dans un boîtier SOIC-20, dépourvu de convertisseur DAC. Pour générer une sinusoïde, je vais utiliser un timer en PWM.

image pwm en sinus

Pour dimensionner le filtre passe-bas, plusieurs hypothèses sont faites. La fréquence maximale du clock d'entrée de mon compteur est de 24 MHz. Afin de garantir une marge de manœuvre suffisante au microcontrôleur, une période de 100 est choisie, ce qui correspond à une fréquence maximale de 240 kHz. Pour obtenir une sinusoïde de qualité, celle-ci est discrétisée en 36 points, soit à des intervalles de 10 degrés, ce qui donne une fréquence maximale de 6 666 Hz.

figure low pass filter

La fonction de transfère:

1 / 1 + jωRC => ω 0 = 1 / RC

2 π f = 1 / RC
RC ≈ 1 / 2 π 6,66 .103 = 24 . 10 -6

Afin de limiter la perte d'amplitude sur la fréquence fondamentale, j'ai décidé d'augmenter légèrement la fréquence de coupure par rapport au calcul initial. J'ai choisi une capacité C de 1 nF et une résistance R de 15 kΩ.


L'interrupteur ON/OFF

L'activation de l'alarme se fait au moyen d'un bouton poussoir, et c'est le processeur qui contrôle la coupure de l'alimentation pour minimiser la consommation de courant. Le fonctionnement est simple : le bouton poussoir permet d'allumer l'alimentation via le transistor Q1. Une fois que le 3V est établi, le microprocesseur maintient le système activé par l'intermédiaire du transistor Q2. Pour éviter tout redémarrage intempestif dû à un effet capacitif lors de la coupure de l'alimentation, j'ai ajouté une diode à l'émetteur du transistor Q2. Cela permet d'augmenter la tension appliquée sur la base du transistor et ainsi de le maintenir en conduction.

 figure switch on off

Dimensionnement:

R1 = (3V - ube - usat - uD). IB

IB = ICmax / βmin = ~ 250 mA / 50 = 5 mA

R1 = 1.5V / 5.10-3 ≈ 300Ω

Quelques précisions : j'ai fixé à 250 mA le courant maximal alors qu'il devrait être de 350 mA pour atteindre une puissance de 1W sous une tension de U = 8 , ​ Cependant, en raison de l'impédance interne de la pile et du filtre passe-bas, le système va perdre de l'amplitude. J'estime que la tension aux bornes du haut-parleur sera d'environ 2V.


Choix des composants

Pour le microcontrôleur, j'ai opté pour le plus petit processeur de la famille STM32, dans un boîtier SOIC-20. L'amplificateur que j'ai utilisé, le LM4889, était déjà disponible dans mon stock. En ce qui concerne le haut-parleur, j'ai choisi un modèle de 16 mm de diamètre de chez Visaton, conçu pour être monté directement sur le circuit imprimé ou le boîtier. Pour le support de la pile, j'ai sélectionné un modèle classique similaire à celui illustré dans la figure ci-dessous, accompagné d'un switch poussoir OFF (ON) à membrane extra-plat.

 figure speaker
 figure switch on off
 figure support de pile

Le schéma électronique

J'ai consulté la note d'utilisation du datasheet de l'amplificateur et j'ai intégré un petit connecteur destiné à la programmation du microprocesseur. Pour faciliter cette programmation, j'ai également ajouté une diode lumineuse sur la sortie PA7 du microprocesseur.

 figure schéma électronique

Construction

J'ai trouvé un boitier qui a la même taille et la même forme qu'une petite sonnette mécanique standard.

image d'une sonnette mécanique
image du boitier

Réalisation du PCB

J'ai disposé tous les composants THT sur la face TOP de mon circuit et les composants SMD sur la face Bottom, à l'exception du haut-parleur. J'ai réussi à établir toutes les connexions du côté Bottom, sauf pour une exception : sur la face TOP du circuit, j'ai intégré un plan de masse GND.

image d'une sonnette mécanique
image du boitier
image du boitier

Pour vérifier la faisabilité du montage, j'ai utilisé FreeCAD pour tester la construction en 3D. La plupart des footprints sont déjà associés à un fichier STEP (3D). Avec KiCad, la vue 3D est automatiquement disponible, ce qui permet d'utiliser FreeCAD pour intégrer le PCB dans le boîtier.

image en 3D de l'ensemble
image en 3D de l'ensemble
image en 3D de l'ensemble
image en 3D de l'ensemble

Le programme

Routine d'interruption du Timer:
	
	const uint16_t sinus[36] = {50,59,67,75,82,88,93,97,99,100,
					99,97,93,88,82,75,67,59,50,
					41,33,25,18,12,07,03,01,00,
					01,03,07,12,18,25,33,41 };

	void TIM2_IRQHandler(void)
	{
		if (__HAL_TIM_GET_IT_SOURCE(&htim2, TIM_IT_UPDATE) != RESET)
		{
			TIM2->CCR1 = sinus [compteur];
			if (compteur >= 35) compteur = 0;
			else compteur++;
		}
	__HAL_TIM_CLEAR_IT(&htim2, TIM_IT_UPDATE);
	}
	
	

J'ai défini la sinusoïde en 36 points. À chaque fois que le timer a compté jusqu'à 100 pour la période, la routine modifie la valeur du registre CCR1.

Commentaires


Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /home/clients/db62a7f73729021974202bbfe60264f9/sites/hfelec.ch/models/UsersManager.php on line 18