Eclairage à led de vélo 3W+tracker (atmega, ESP32) maker

pour faire un feu stop arriere automatique un accelerometre va être utilisé

Les accéléromètres numériques sont nombreux avec des micro-usiné capacitif intelligent à trois axes et à faible consommation avec des résolutions de 10bits à 14 bits. Des fonctions intégrées sont multiples avec des options flexibles programmables par l’utilisateur (filtrées passe-bas, et passe haut, interruption).
Pour ce projet, nous n’avons pas besoin d’une grande résolution pour détecter la décélération du vélo pour activer l’éclairage arrière.
S’il y a une décélération en roue libre, on passe de 15km/h (4.1m/s) à l’arrêt en 19s minimum sur du plat. Donc la décélération est de -0.22m/s^2
Lors de freinage intensif, on passe de 16.6m/s à l’arrêt en 2.5s onc décélération de -6.6m/s^2

Donc pour une déclaration de -1m/s^2 mettra l’éclairage arrière en action full pendant 10s
Mais une accélération de +1m/s^2 arrêtera l’éclairage et remettra à 0. Car cela voudra dire que l’on a redémarré

Remarque 1 g est égale à 9,81 m/s²
D’ailleurs, le programme suivant a choisi la valeur -30=>-0.117g=-1.14m/s^2 pour actionner sa lumière arrière

Quels sont les capteurs d’accélération possibles ? Sachant que l’on veut minimiser le cout de fonctionnement.
L’accéléromètre analogique tel que ADXL335 est relativement cher (environ 3€) mais c’est possible de faire un filtre analogique.
L’accéléromètre numérique tel que ADXL345 est vendu pour environ 1€

Le MCU 6050 qui a un gyroscope interne est plus cher que le composant précédent

Voici, les Performances ADXL345

Alimentation: 2,0 Vcc à 3,6 Vcc
Consommation: - en mesure: 40 µA à 2,5 Vcc

  • au repos: 0,1 µA à 2,5 Vcc
    Interface: I2C ou SPI 16 bits
    Plage de mesure: ±16 g
    Sensibilité: 3,9 mg/LSB 2g
    Résolution: 4 mg/LSB (13 bits) 1bits(signe) 16g/2^12=16/4096=3.9mg
    Filtre interne de ?
    FiFo de 32 valeurs
    Le temps de mesurer l’accélération sur un axe est de ?

Pour notre programme precedent ;
L’échantillonnage de la commande de la led a été choisi à 0.1seconde (fréquence 10hz).
Pour ne pas avoir de décélération intempestifs, un filtre passe bas de la mesure d’accélération à la fréquence de coupure légèrement inférieur à 10hz serait souhaitable.
Donc, un filtre avec une fréquence de coupure de 0.05s ne nuira pas aux dynamiques de détection de l’accélération qui est de quelques secondes.
Remarque avec notre programme qui a une routine d’interruption de 1ms, la période d’échantillonnage de l’accélération se fera à cette valeur.
Il est facile de faire un filtre passe bas numérique qui atténue les fréquences les plus élevées du signal, offrant ainsi une variation plus douce de la sortie. Ce filtre passe-bas est facilement implémentable en utilisant l'équation suivante avec correspondant à la constante de temps désirée :


Mais comment vérifier les résultats les dynamiques du filtre numérique ?

On peut vérifier le filtrage en mettant un signal carré de période 0.1s et la sortie du filtre passe bas devra donner une exponentielle croissante et décroissante comme en analogique.
Exemple avec une constante de temps de 10ms, donc e^-aTe= e^-(1ms/10ms)= 0.91
Matlab permet de faire cette vérification très facilement

On peut observer que la constante de temps est bien de 10ms et que le gain statique du filtre est de 1 car l’amplitude en sortie est identique à celle de l’entrée.

Maintenant, si l’on désire, une constate de temps de 50ms e^-aTe= e^-(1ms/50ms)= 0.98
On peut observer sur la figure suivante que la sortie du filtre à bien correspond à la valeur moyenne du signal carré d’entré qui a un rapport cyclique de 50% donc de 0.5V mais avec une oscillation d’amplitude de 20%.

Pour tester le filtre, il serait possible de rajouter sur le signal carré precedent du bruit à haute frequence pour bien vérifier que ce dernier serait atténué.
Evidemment, il est possible de faire des filtres plus complexes pour avoir encore plus d’atténuation