Problème i2c/SMB

Bonjour à tous,

Je suis actuellement confronté à un problème... disons particulier !

Dans le cadre d'un projet, je développe un robot équipé, entre autres, d'une batterie et d'un moteur.

Le moteur est commandé par l'arduino (génération d'une PWM).

La batterie est une batterie "intelligente". Je peux l'interroger pour contrôler son niveau de charge, ...

Elle communique avec l'arduino en SMB.

Tout le reste de la communication se passe en I2C (autres option de mon robot)

La batterie envoie donc directement les infos sur le bus SMB.

Jusque là, pas de problème car j'arrive à communiquer avec mon robot et à récupérer les infos désirées.

Le problème intervient lorsque je veux faire tourner le moteur : le moteur tourne mais ralentit de temps en temps et le problème s'accentue plus la PWM est proche de 255...

J'ai essayer avec une batterie non communicante... pas de problème. La source de perturbation est donc bien la batterie.

La perturbation est bien sur le signal PWM du moteur (j'ai regardé au scope et on voit bien la ligne tombée à 0V brièvement).

Mais pourquoi ? Les fonctionnements de la PWM et de l'envoie de data sur le bus I2C par la batterie sont complètement décorrélés.

Je ne pense pas avoir trop de réponse à ce poste car le problème est particulier dans un système complexe...

En espérant quand même...

Merci d'avance

Yep!

Quel arduino utilises tu ? Quels brochages pour l'i2c et le smb ? Quelles frequences de fonctionnement des bus ? Des sondes ?

A priori, j'opterais pour un conflit de timer. J'exclue de facto un amperage insuffisant.

@+

Zoroastre.

Wire n'utilise pas de timer donc aucun conflit possible de ce coté là.

Utilises tu Servo ? Servo utilise aussi des timers donc gros risque de conflit avec analogWrite();

Il nous faut plus de détails sur le hard.