Capteurs sur deux cartes arduinos.

Bonjour,

Je débute totalement en Arduino. Je suis actuellement sur un projet ou j'utilise une carte Mega et une Uno, chacune est connectée à une carte SD et des capteurs de pressions (fsr).
En gros, j'écris les données des capteurs sur ma carte SD à un intervalle de temps régulier (disons 5 sec). J'enregistre les moyennes des valeurs données par mes capteurs durant cet intervalle et je l'enregistre

Pour que mes données soient cohérentes, il faudrait que la prise de mesure et l'écriture de données soient synchronisées. Comment procéder ?

J'espère que cela n'a pas été déjà posé, je n'ai rien vu qui puisse m'aider lors de mes recherches.
Merci d'avoir pris le temps de lire ce post.

Bonne journée

Vous voulez dire synchroniser les 2 cartes Arduino pour qu'elles fassent les mesures au "même moment" ?

Quelle tolérance sur cette simultanéité ? la minute ? ou seconde, milliseconde, microseconde ?

Autre question : distance entre les cartes ?

Bonjour, je vous remercie pour vos réponses.

La distance entre les cartes est de l'ordre du cm,
Sinon c'est cela oui, j'aimerais une tolérance de l'ordre de la milliseconde si possible.

vous pouvez avoir un Arduino 'maître' qui va balancer un 'top' en I2C pour demander à l'esclave de faire sa mesure et lui même le faire aussi.

mais si les capteurs ne sont pas identiques des deux côtés, leur temps de réponse peut varier

si vous mesurez toutes les x secondes, ne pouvez vous pas simplement en conservant l'heure faire une interpolation entre vos mesures et comme cela vous comparez des courbes, pas juste des points isolés (ça devrait le faire si la variation du processus mesuré entre 2 mesure est faible)

Bonjour,

Il suffit simplement d'utiliser une sortie sur le maitre et une entrée sur l'esclave.
Quand le maitre décide de faire une mesure il met la sortie à 1, l'esclave scrute son entrée et dès qu'elle passe à 1 il fait la mesure.

Je vais essayer ça, merci beaucoup :slight_smile:

kamill:
Bonjour,

Il suffit simplement d'utiliser une sortie sur le maitre et une entrée sur l'esclave.
Quand le maitre décide de faire une mesure il met la sortie à 1, l'esclave scrute son entrée et dès qu'elle passe à 1 il fait la mesure.

oui I2C ou Série c'est s'il faut passer de l'information supplémentaire genre quel capteur etc. sinon juste une pin ça ira bien à condition d'avoir réuni les GND.

(en utilisant I2C attention si l'un des deux est éteint)

Moi je me pose la question : dans quelle utilisation trouve-t-on une pression qui bouge en 1 ms ?
Sachant que les enregistrements se font toutes les 5 secondes.

Je peux me tromper mais à 99% je sens pas bien le projet .
Je subodore que devant la difficulté a bien définir le cahier des charges le demandeur veut le maximum sauf qu'au final il va gagner une usine à gaz.

Encore une fois je peux me tromper et comme tu n'as pas expliqué ton projet en commençant par le début ce n'est qu'une hypothèse qui est malheureusement trop souvent vérifiée sur ce forum.

Si tu as réellement besoin d'une telle synchronisation plutôt qu'une carte maître et une esclave je vois un séquenceur externe comme un montage basé sur un 555 ou en utilisant la fonction alarme d'un DS3231 réglée sur 5s qui déclencherait une interruption vers les deux cartes micro.
L'avantage c'est de travailler en parallèle, et donc en même temps, ce qu'un microcontrôleur ne sait pas faire.
Le réglage de l'alarme peut se faire à partir d'une des cartes.

Le problème c'est que de nombreuses bibliothèques qui gèrent le DS3231 "oublient" la fonction alarme parce qu'elle sont basées sur un DS1307 qui n'a pas cette fonction.

Comme quoi lire les datasheets des composants avant de se précipiter vers des bibliothèques n'est pas inutile.

En écrivant il me vient une idée encore plus simple :
une sortie d'une des cartes envoie un créneau sur les entrées int des deux cartes déclenchant ainsi une interruption simultanée sur les deux cartes.

Mais bon j'aimerai une réponse à ma première question.
Et puis important aussi : que doivent faire d'autre les programmes des deux cartes ?

Important à lire :

Encore une fois je peux me tromper et comme tu n'as pas expliqué ton projet en commençant par le début ce n'est qu'une hypothèse qui est malheureusement trop souvent vérifiée sur ce forum.

Moi aussi je me pose cette question. Pourquoi deux cartes? Avec seulement une Mega, on peut piloter 2 SD (même 50 en théorie) et 16 capteurs analogiques. Ce n'est pas suffisant? Qu'y a-t-il d'autre?

Surtout si je cite " la distance entre les cartes est de l'ordre du cm" ..

Une seule carte simplifierait déjà en partie le problème.