Choix de la carte Arduino adaptée

Bonjour,

Tout nouveau sur ce forum et dans le monde Arduino j’aurais besoin d’un peu d’aide pour bien choisir le modèle apte à réaliser mes “fantasmes” :slight_smile:
Mon but est d’intégrer des fonctions de monitoring et de contrôle à mon robot de tonte.

1) monitorer:

  • Une batterie (faite maison) Li-Ion à 5 éléments : 5 entrées analogique
  • le température : 1 entrée analogique
  • le courant : 1 entrée analogique

2) écrire les résultat sur une carte SD

3) envoyer ces résultat par WIFI (module ESP8266?)

4) discuter avec la carte mère du robot : 1 connexion RS232 (RX/TX)

Le but étant enfin de minimaliser la consommation.

Quel serait, selon vous, le plus petit modèle qui me permettrait de réaliser l’ensemble de ces fonctions ?
Je pensais à la Mega 2560 mais…plus petit serait mieux :slight_smile:

Merci beaucoup !

un ESP8266-12E avec un commutateur analogique CD4051
la mesure de température n’est pas forcement analogique, un DS18B20 fonctionne sur une entrée digitale

Merci.
Avec le DS18B20 je gagne 1 entrée analogique. Bon ça.

Je réduis donc à 6 entrées analogiques nécessaires...ce qui j'imagine me permet d'utiliser les plus petits modèles Arduino.

Que me conseilleriez-vous comme ensemble Arduino-WIFI-SD ? Sachant qu'il me faut absolument garder l'interface RS232 pour communiquer avec le robot.

PS: pourquoi utiliser un CD4051 ? Pour arrêter le module WIFI afin d'économiser de l'énergie ?

Merci

Pour le Wifi, il faut être conscient que la portée ne dépassera certainement pas les 20-30 mètres à vue. Sinon moins si il y a des obstacles.
Si c'est pour une transmission pendant la tonte, cela risque d'être juste.
Sinon c'est OK.
Comme rjnc38, ESP8266-12E avec un commutateur analogique CD4051.
Le CD4051, te permet, en utilisant 4 sorties numériques d'avoir 8 ports analogiques.

non pas d'arduino
l' ESP8266 12E a une seule entrée analogique il faut donc un commutateur : le 4051 a 8 entrées analogiques et une sortie le choix du canal se fait par 3 signaux digitaux de l'ESP

bilbo83:
Si c'est pour une transmission pendant la tonte, cela risque d'être juste.
Sinon c'est OK.

En complement, il est possible d'imaginer une mémoire "tampon" et de tester la connectivité wi-fi dans le code. Et à chaque fois que la connexion s'établie, envoyer les données contenues dans le tampon

Je ne connais pas l’ESP8266 mais en lisant sa datasheet il me semble avoir compris que l’entrée analogique n’accepte des niveaux compris qu’entre 0 et 1V.

Mais ce n’est pas cela qui attire mon attention.
Il serait bon de connaître avec quelle précision la mesure de chaque élément doit être connue pour travailler sans danger avec des LI-ion :
+/- 0,5 V, +/- 0,1 V ? +/- 0,01 V ?

Je dis cela parce qu’une mesure n’est jamais exacte : le “voltmètre” est imprécis, les résistances du pont sont au mieux à +/- 1%, plus probablement 2% ou 5 % → sans étalonnage un pont constitué de deux résistances à +/-5% ne sera précis qu’au double soit +/- 10%.
Bien sur ce n’est qu’un calcul d’erreur qui donne l’erreur max, l’erreur réelle sera au pire égale au max, plus probablement inférieure mais de combien ?

La précision du “voltmètre” peut s’estimer, pour compenser la dispersion sur les valeurs de résistances le pont devra être étalonné avec une tension connue (sortie d’un régulateur par exemple) et mesure avec un “vrai” voltmètre avec au minimum 2 chiffres après la virgule et non pas un ADC de micro-contrôleur.

Vu la méthode de mesure : 1 élément, 2 éléments, 3 élément,…5 éléments, plus le nombre d’élément sera élevé plus l’exploitation de la mesure sera entachée des imprécisions des mesures précédentes.

Je dis que c’est possible à 90% à condition de faire un étalonnage avec un vrai voltmètre (placé aux bornes de chaque élément mesurés un par un) et ensuite de se servir de cet étalonnage pour faire une calibration (correction) dans le programme.

En effet et l’utilisation d’un Arduino limitait déjà la plage à 5V.
Ici, avec 1V il va être plus dur d’obtenir une précision de 0,1V sur une plage de 21V avec des ponts diviseurs…

Ce n'est pas infaisable cela demande beaucoup de rigueur de la conception à la réalisation.
Également une lecture attentive de la datasheet et là, la qualité de la datasheet Expressif est largement en dessous de celles des datasheets Atmel.

Tu peux aussi envisager d'utiliser des convertisseurs analogiques/digitaux externes, il en existe en I2C qui est dispo sur l'ESP8266.

Merci de vos réponses.

Mon but ici n'est pas de contrôler la charge de mes cellules Li-Ion, un BMS embarqué le fait.
Par contre je tente de monitorer le balancement des différents éléments : si je constate qu'une des 5 cellules (en fait 1 ensemble de 4 cellules en //) est en dessous des autres je devrai la changer.
En fin de charge elles devaient toutes les 5 être à 4,2V....un écart de 0,1V n'est pas catastrophique mais ce serait un plus de pouvoir l'atteindre.

Le but est donc de pouvoir avoir cette "vision" des 5 cellules...sans ouvrir le robot.
Bien sût l'étalonnage se fera au multimètre de précision et me permettre d'apporter un facteur de correction aux mesures du µc.

Je comprends que je ne pourrai malgré tout pas atteindre une très grande précision.
Mes 5 cellules en série vont en effet cumuler une tension de max 22volts:

  • première cellule : de 0 à 4,2V....à réduire par pont diviseur
  • deuxième cellule : de 0 à 8.2V...à réduire par pont diviseur
  • troisième cellule : : de 0 à 12.6V...à réduire par pont diviseur
  • etc...
    Au plus la tension à mesurer sera élevée, au plus le pont diviseur devra être "grand"...au plus je perdrai en précision.
    Ceci cumulé au fait que l'entrée analogique ne dispose que d'une plage de 1V.

Mais j'espère tout de même arriver à faire la différence entre une cellule à 3.8v et une autre à 4.1v....

Je pense me rendre la tâche bien difficile en entamant ce projet mutilple :

  • température
  • courant
  • différentes tensions via multiplexeur analogique
  • RS232
  • WIFI

Je vais faire quelques étapes :wink: (mais le module est commandé :slight_smile: )

Une info sr la précision des résistances (applicable à d'autres composants)

Les fabricants donnent les bornes qui englobent toute leur production.
Exemple les différents lots de production donnent une distribution de +/- 5% pour une résistance de 10k.
Mais c"est valable d'un lot à l'autre, par contre à l'intérieur d'un même lot la dispersion entre les pièces peut n'être que de 0,5 % ou moins alors que le lot dans son ensemble est décallé de - 3%.

Exemple pratique atténuation d'un tiers
Solution 1 : résistances de 10k et une de 20k, lesdeux avec une précision de 5%
La valeur du point milieu sera connue à +/- 10 %

Solution 2 : achat d'un lot de résistance de 10k, la résistance de 20k sera constituée de deux résistance de 10k.
Les conditions sont totalement différentes puisque il n'y a plus de hasard à savoir si une résistance est plus forte ou plus faible que sa valeur théorique : elles sont toutes dans le même sens et toutes de la même façon.
La précision du point milieu pourra être à quelques dizième de %

une meilleur solution serait de trouver un CAN a entrées différentielles (isolées de la masse) et de commuter ce CAN sur un seul élément à la fois ou éventuellement utiliser 5 CAN

En effet...mais je vous rassure ce sujet Li-Ion/BMS/monitoring est ... sans espoir :slight_smile:
J'ai parcouru des 10aines de pages sur des 10aines de forums et malheureusement aucune solution simple ne semble se profiler.
Il faudrait en effet un convertisseur qui supporte des niveaux de référence différents...c'est le grand débat...
Mais, si par miracle vous trouvez la solution, je suis preneur :slight_smile:

Après beaucoup de recherches ce module : https://hobbyking.com/en_us/frsky-flvss-lipo-voltage-sensor-with-smart-port-1pc.html semble apte à vérifier les différentes tensions.

Il dispose d'une sortie data au format X8R, X6R, X4R....

Je n'ai encore rien trouvé sur un interfaçage possible avec l'ESP8266

un lipometre avec un pro-mini

oui :slight_smile: ....mais ce Lipomètre n'est autre que le pont diviseur que je décrivais.
Je pense de plus en plus que, finalement, la plage de mesure d'un Arduino serait plus adaptée...

sylo:
Je pense de plus en plus que, finalement, la plage de mesure d'un Arduino serait plus adaptée...

oui et dans ce cas tu ajoutes un ESP8266-01 pour le wifi

J'en reviens donc à ma question originale :

  1. monitorer:
  • Une batterie (faite maison) Li-Ion à 5 éléments : 5 entrées analogique
  • le température : 1 entrée analogique
  • le courant : 1 entrée analogique
  1. écrire les résultat sur une carte SD

  2. envoyer ces résultat par WIFI (module ESP8266?)

  3. discuter avec la carte mère du robot : 1 connexion RS232 (RX/TX)

Le but étant enfin de minimaliser la consommation.

Quel serait, selon vous, le plus petit modèle qui me permettrait de réaliser l'ensemble de ces fonctions ?
Je pensais à la Mega 2560 mais...plus petit serait mieux :slight_smile:

pourquoi ne pas partir sur la pro-mini 5v de l'ex que je t'ai donné ?
il y a 6 entrées ana : 5 pour les mesures de tension 1 pour la mesure de courant (bien prendre la carte avec les entrées A6 A7 raccordées)
tu rajoutes :

  • une sonde DS18b20 sur une pin digitale
  • un ESP8266-01 sur 2 pins digitales (port série soft) une petite adaptation 5v-3.3v est nécessaire entre le tx de la pro-mini et le rx de l'ESP (2 résistances)
  • un module rs232 (si c'est bien cet interface +-12v et pas une liaison uart 0/5v) sur le port série hard (ou en créer un deuxième soft)

Allez je me lance :slight_smile:
Merci