IMA4 2018/2019 P10
Sommaire
- 1 Présentation générale : Réalisation d'un capteur de pollution dans l'eau.
- 2 Analyse du projet
- 3 Préparation du projet
- 4 Réalisation du Projet
- 4.1 Feuille d'heures
- 4.2 Prologue
- 4.3 Semaine 1: Comment faire un potentiostat ?
- 4.4 Semaine 2: La communication sans fil ?
- 4.5 Semaine 3: Quel microcontrôleur? Gestion de l'alimentation de la carte?
- 4.6 Semaine 4: Les connexions entre la Nucleo et le module Lora
- 4.7 Semaine 5: Test de la carte Nucleo-32
- 4.8 Semaine 6: Design d'un potentiostat
- 4.9 Semaine 7 et 8: Modifications pour la carte,tirage de la carte
- 4.10 Semaine 9: Soudure des composants, test de la Nucléo-32
- 4.11 Semaine 10:Code Arduino pour le potentiostat, Tests de la carte,design de la carte connectée
- 4.12 Semaine 11:Réparation et test de la carte, Test du programme
- 4.13 Semaine 12: Design d'un galvanostat/potentiostat connecté
- 5 Documents Rendus
Présentation générale : Réalisation d'un capteur de pollution dans l'eau.
- Élève : Branquart Antoine
- Encadrants : Alexandre Boé / Xavier Redon / Thomas Vantroys
Description
La pollution de l'eau entraîne une mauvaise qualité de l'eau qui provoquerait des maladies à l'origine de près de deux millions de décès par an dans le monde. Cette pollution peut se présenter sous différentes formes : chimiques, bactériologiques mais aussi thermiques et atteint toutes les sortes d'eaux.
Elle est difficile à détecter puisque ce qui est au fond de l'eau, ou dilué dans l'eau est souvent invisible, et que certains toxiques infiltrés dans le sol ne produisent souvent leur effet qu'après un long délai.
De plus on a du mal à se prévenir des épisodes de pollution (quand la concentration d’un ou plusieurs polluants dépasse les seuils réglementaires horaires ou journaliers) puisque les tests de la qualité des eaux sont souvent ponctuels et ont longtemps nécessité des équipements coûteux : les échantillons d'eau devaient en effet être envoyés à des laboratoires spécialisés le plus souvent distants.
La réalisation d'un capteur autonome permettrait de se prévenir de ces épisodes de pollution de manière beaucoup plus régulière.
Objectifs
Le système autonome en énergie devra pouvoir être déployé et fixé afin que la source d'énergie renouvelable rattachée au capteur ne voit pas son rendement chuté en cas de déplacement qui engendrerait des mauvaises conditions de récupération d'énergie et tout cela dans n'importe quelles eaux.
La fixation du capteur évitera aussi la perte de celui-ci s'il est coincé proche des berges nécessitant une intervention humaine.
Il devra être capable de récupérer les dosages d’éléments chimiques significatifs d'une pollution ainsi que le niveau de salinité de l'eau et d'envoyer ces informations par un protocole de communication longue distance à une station de base.
Ce capteur complet assurera donc les fonctions de:
- Mesures de salinité de l'eau et de densités chimiques grâce à des capteurs du type galvanostat.
- Traitement de données grâce à un microprocesseur.
- Transmission de données par le protocole de communication radiofréquence "LoRa" à une station d'analyse.
- Alimentation par batterie rechargeable par un panneau photovoltaïque.
Bien sûr ce capteur devra être protégé par un packaging imperméable permettant le maintien en service du système pour de longues durées, idéalement sur plusieurs années.
Voici le synoptique du système:
Ce système sera déployé dans les eaux aux alentours de Lille ou bien dans la rivière Saïgon au Vietnam.
Par la suite il sera possible de continuer ce projet au Vietnam après validation du capteur en apportant une interface graphique ainsi qu'une base de données à la station de base qui serviront à la visualisation des données à n'importe quel moment.
Analyse du projet
Positionnement par rapport à l'existant
On trouve beaucoup plus souvent, en effectuant des recherches, des laboratoires ou des universités qui développent des prototypes se rapprochant de ce projet mais il existe en réalité peu d'industries qui commercialisent des capteurs de niveau de pollution de l'eau.
Les quelques entreprises qui possèdent des produit de ce style mettent à disposition des capteurs avec des mesures ponctuelles ainsi qu'une interface qui est câblée à la sonde et qui nécessite donc de se déplacer au point d'eau que l'on souhaite analyser.
Il existe aussi des capteurs autonomes vendus par ces sociétés mais à des prix onéreux, qui mesurent de nombreux paramètres inutiles dans notre cas et qui semblent être difficile à utiliser.
L'avantage du système développé dans ce projet par rapport au marché actuel serait l'autonomie du capteur ainsi que sa capacité de transmission de données. En effet le système une fois installé n’entraînerait plus par la suite des déplacements vers le point d'eau que l'on souhaite analyser.
Le coût du capteur développé serait lui aussi un avantage puisque de nombreux paramètres inutiles comme la mesure de propriétés physiques optiques ou la mesure de la température ajouteraient des technologies à notre système et augmenteraient le prix. Ici on ne recueillera que les informations de la salinité de l'eau ainsi que la densité des éléments chimiques présents dans l'eau.
Analyse du premier concurrent
La sonde paramètres AP-7000 de la société SDEC spécialiste pour les solutions technologiques pour l'environnement.Cette sonde a été conçu pour effectuer des mesures continues fiables et précises des paramètres physico-chimiques dans l'eau.
Elle permet la mesure de paramètres standard (voir: [1]).
Avantages:
- De nombreux paramètre physico-chimiques mesurées.
- Nettoyage des capteurs par système de balai-brosse programmable.
- Corps de sonde en aluminium anodisé (Qualité Marine) pour supporter tous les environnements.
Inconvénients:
- On doit ajouter des modules de communication AP-PC-KIT (pour la calibration des capteurs et la prise de mesures ponctuelles) et un enregistreur(pour le suivi et l'enregistrement de longue durée des paramètres physico-chimiques).
- Des paramètres comme la température ou la profondeur de l'eau sont mesurés alors que dans notre cas ils ne sont pas nécessaires.
- Le prix sans doute élevé au vu des technologies employées et il faut demander des devis pour les obtenir.
Objectifs pour le système recherché par rapport à ce concurrent:
- Offrir la possibilité d'effectuer des mesures de longue durée sans que le système n'est besoins d'être complété par différents modules.
- Offrir un produit à un prix attractif.
Analyse du second concurrent
Sonde U-50 de la société HORIBA spécialisée dans le process et l'environnement.La sonde multiparamètres U-50 est capable en un seul appareil de mesurer et d'afficher simultanément les résultats de 11 paramètres d'indication de qualité des eaux.
Elle est utilisée sur des sites tels que pour le contrôle des eaux souterraines, eaux de rivières, eaux de ruissellement, etc...(voir: [2]).
Avantages:
- Simplicité d'utilisation.
- De nombreux paramètres en simultanés.
Inconvénients:
- Obligation de se déplacer sur les points d'eau pour l'utiliser.
- Communication par USB avec un PC pour visualiser les données sous format EXCEL.
- Systèmes non autonomes.
Objectifs pour le système par rapport à ce concurrent:
- Offrir une communication sans-fil avec une station à distance pour l'analyse des données.
- Offrir la même simplicité d'utilisation.
- Offrir un système autonome sur une longue durée.
Scénario d'usage du produit ou du concept envisagé
Monsieur Haddock, directeur du ponton Bélem port de plaisance situé à NANTES à décider de s'engager en faveur de Ports propres qui est la première et la seule démarche de gestion environnementale des ports de plaisance à l'échelle européenne.
Cette démarche traduit une volonté forte de la part des gestionnaires de port de plaisance de prendre des engagements concrets pour lutter en faveur de la préservation des milieux aquatiques et du développement durable des activités littorales et marines.
Monsieur Haddock pour suivre cette démarche décide de faire appel à un laboratoire d'analyses de la qualité de l'eau, le laboratoire Inovalys situé lui aussi à NANTES.
Ce laboratoire est spécialisé dans les analyses physico-chimiques, microbiologiques et biologiques, sur tous les types de produits liés à l’environnement.
L'équipe de recherche d'Inovalys a développé un tout nouveau type de capteur, le capteur "ClearWater".
Ce capteur imperméable et robuste à un environnement hostile une fois déployé dans l'eau est capable de mesurer les valeurs de densités chimiques dans l'eau ainsi que sa salinité et de transmettre ces valeurs directement par liaison radio sans fil à la station d'analyse à distance situé à 5 km du point d'eau. Le capteur est constitué d'un galvanostat réalisé avec différents composants électriques de précision ainsi que d'un module émetteur radio de technologie "LoRa" l'un des réseaux radio sans fil pour le développement d'objet connectés le plus connu qui se diffère de son concurrent direct Sigfox grâce à son aspect open source.Un microcontrôleur du type "basse consommation" lui aussi permet l'utilisation et la transmission des données entre le capteur et le module émetteur. Son alimentation s'effectuant par le biais d'une source d'énergie renouvelable, un panneau solaire, "ClearWater" possède une durée de vie d'environ 5 ans et permets donc d'acquérir des données de manière très régulière sans aucun impact sur l'environnement.
Ce capteur est idéal pour observer l'évolution de la qualité de l'eau à distance, au fil du temps, sur de longues périodes, sans intervention de l'homme. Son déploiement et son utilisation sont simples: une fois fixé à la berge du point d'eau à analyser, le programme implanté dans le microcontrôleur permet de récupérer les données du capteur qui les transmet au module émetteur afin d'envoyer ces données à la station de base qui elle dispose du module récepteur. Ces données sont donc reçues via le module récepteur et sont ensuite transmises par une simple liaison USB à un Pc disposant d'une interface dédiée à ce système qui génère en direct: courbes, tableau de données et autres selon le choix de l'utilisateur.
Grâce à ce capteur, Inovalys propose à monsieur Haddock d'assurer la surveillance de la qualité de l'eau du ponton Bélem pour 5 ans, et d'assurer la communication d'épisode de pollution au directeur du port en cas de variations anormales constatées par le laboratoire.
Monsieur Haddock pourra par la suite prendre les mesures sanitaires nécessaires pour respecter son engagement envers "Ports Propres".
Site web du laboratoire Inovalys Site web du ponton Bélem Site web de la démarche ports propres
Réponse à la question difficile
- Comment réaliser le packaging complet du capteur et comment assurer son déploiement dans l'environnement ?
Le capteur sera déployé au bord du point d'eau que l'on veut analyser lié à un piquet de robinier, bois avec lesquels sont construit les pontons en contact permanent avec l'eau, qui serait lui-même implanter dans la berge.
Au niveau du packaging, le capteur sera installé dans une boîte en PEHD (Polyéthylène à Haute Densité). Le PEHD est un polyéthylène qui est un des polymères le plus simple et le moins cher. Il est régénéré et recyclé sous forme de granulés. Il est par exemple utilisé pour produire des caisses en plastique hautement résistantes, des canoës-kayaks, câbles enterrés et des tubes pour le transport de gaz ou d'eau.
Un couvercle de cette même matière sera réalisé qui recouvrerait la boîte et qui sera lié avec de la colle époxy. Un moule en plâtre devra être créé afin de pouvoir couler le PEHD préalablement chauffé.
Il reste encore à résoudre le problème de transport d'électricité entre le panneau et le capteur.
- Quelle est l'autonomie énergétique et quelles sont les solutions pour la récupération d'énergie ?
Sans parler de la solution de récupération d'énergie qui a été proposé précédemment, si on a une pile de capacité de 3700 mAh et que si l'on regarde la consommation du microcontrôleur + la consommation du module émetteur-récepteur on a une consommation pour 100 envois de données en une heure:
- Pour une consommation du module de 28 mA par émission soit 280 mA par heure.
- Pour une consommation de 3,70 mA donc 37 mA par heure du microcontrôleur pour une alimentation à 3,3 volts et une horloge interne de 8 Hz.
- 3700 / 37+280 = 380 heures soit 15 jours ce qui est trop faible. Calculs inspirés de ce site : [3]
En ne prenant pas en compte la consommation des deux capteurs l'autonomie du système est beaucoup trop faible pour répondre aux objectifs donnés, la solution de la récupération de l'énergie par énergie solaire, l'optimisation de l'utilisation du microcontrôleur ainsi qu'un choix judicieux d'un nombre d'envoi par heure peuvent être acceptable pour améliorer l'autonomie du système.
Préparation du projet
Cahier des charges
Fonctions | Critères d'appréciation | Niveaux d'exigence |
---|---|---|
FP1 Indiquer de façon autonome le taux de pollution de l'eau | La durée de vie du système | Autonome |
FC1 Donner des mesures fiables | Le potentiel électrique d'une cellule électrochimique | +/- 10% d'erreur |
FC2 S'intégrer de façon harmonieuse dans l'environnement | Le taux de rejet de déchets du système | Aucun rejet de déchets polluant |
FC3 Transmettre les données sur une longue distance | La distance de communication | +/- 5km |
FC4 Établir une communication fiable | La réception des données | Aucune pertes de données |
FC5 Être autonome en énergie | La consommation d'énergie du système | Durée de vie des batteries |
FC6 Être imperméable | L’imperméabilité du packaging | Taux d'humidité à l'intérieur du packaging ~ 0% |
FC7 Nécessiter aucune intervention de l'homme | La perte du système sur le point d'eau | Aucune perte |
FC8 Ne perturber aucun autre système aux alentours | Niveau de bruit sur le signal transmis | Aucun bruit |
Choix techniques : matériel et logiciel
Choix matériel :
- 1 Carte STM32L031K6 Nucleo ->Lien direct vers la référence du produit
- 2 Microcontrôleurs STM32L051K8T6 ->Lien direct vers la référence du produit
- 2 Modules radio RF-LoRa-868-SO -> Lien direct vers la référence du produit
- 1 Batterie portable 5V -> Lien direct vers la référence du produit
- 1 Électrode au calomel saturé (fournie par M. Boé)
- 2 Électrodes de platine (fournies par M. Boé)
- 2 Ports micro USB-B -> Lien direct vers la référence du produit
- 2 Régulateurs de tension -> Lien direct vers la référence du produit
- 1 Digital to analog converter DAC1220E-> Lien direct vers la référence du produit
- 2 LM324 -> Lien direct vers la référence du produit
- 2 Amplificateurs opérationnels OPA4192IPW -> Lien direct vers la référence du produit
- 1 LM2662 Switched Capacitor Voltage Converter -> Lien direct vers la référence du produit
Choix logiciel :
- STM32CubeMX Logiciel de configuration des microcontrôleur/microprocesseur STM32 -> Packages
- Fritzing -> [4]
- KiCad -> [5]
- KDE -> [6]
- IDE Arduino -> [7]
Liste des tâches à effectuer
- Réalisation du PCB qui reliera le microcontrôleur, l'émetteur radio, le capteur type potentiostat et l'alimentation.
- Réalisation du PCB qui reliera le microcontrôleur, un port USB pour la communication avec le PC et le récepteur radio.
- Programmation du microcontrôleur pour le traitement des données reçu par le capteur.
- Programmation du microcontrôleur pour la gestion de l'envoi de données via l'émetteur radio.
- Programmation du microcontrôleur pour la gestion de la réception des données via le récepteur radio.
- Réalisation base de données pour stockage des données des capteurs sur le PC.
- Réalisation d'une interface pour la consultation des données.
Réalisation du Projet
Feuille d'heures
Tâche | Prélude | Heures S1 | Heures S2 | Heures S3 | Heures S4 | Heures S5 | Heures S6 | Heures S7 | Heures S8 | Heures S9 | Heures S10 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Analyse du projet | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
Rédaction du wiki | 12 | 2 | 2 | 4 | 2 | 2 | 4 | 0 | 2 | 0 | ||
Recherche sur la technologie du capteur de type potentiostat | 0 | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
La communication sans fil | 0 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
Choix du microcontrôleur | 0 | 0 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | ||
Prise en mains de Fritzing, exemple de câblage pour test | 0 | 0 | 0 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | ||
Design d'un potentiostat | 0 | 0 | 0 | 0 | 0 | 0 | 12 | 0 | 0 | 0 | ||
Modifications pour la carte,tirage de la carte | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 6 | 6 | 0 | ||
Soudure des composants, test de la Nucléo-32 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 12 |
Prologue
La phase préparation du projet m'a permis de réfléchir sur ce que devra remplir comme fonctions le système et sur les choix matériels pour tous les aspects du système:
- Le choix pour le traitement, l'envoi et la réception des données.
- Le choix pour obtenir une autonomie en énergie.
- Le choix pour que le packaging soit imperméable
Durant la phase réalisation, après discussion avec les encadrants, je me consacre dans cette partie sur l'aspect conception et réalisation de la carte qui contient:
- Un capteur de type galvanostat/potentiostat
- Un module radio émetteur
- Un microcontrôleur qui gérera le traitement des données reçu par le capteur et la transmission de ces données au module émetteur
- Une alimentation
Cette carte doit recevoir les données du capteur et de les transmettre à une seconde carte électronique.
Cette seconde carte contiendra:
- Un module radiorécepteur
- Un microcontrôleur
- Une alimentation
Cette carte doit recevoir les données de l'autre capteur et les transmettre au Pc auquel la carte sera connectée.
En résumé la partie réalisation portera et se limitera sur la conception et réalisation de ces deux cartes électroniques, l'objectif étant d'obtenir des mesures correctes du potentiostat sur un pc à distance.
Semaine 1: Comment faire un potentiostat ?
Recherches sur la technologie du capteur de type potentiostat/galvanostat
Le premier PCB à réaliser en priorité est celui ou le capteur sera intégré. Pour pouvoir établir le schématique du PCB il faut d'abord comprendre le fonctionnement du capteur et trouver des exemples déjà réalisés pour adapter la technologie pour mon utilisation.
Principe de fonctionnement
Un capteur de type potentiostat est composé de 3 électrodes :
- Électrode de travail "ET" (en platine)
- Électrode de référence "ECS" (au calomel saturé)
- Contre-électrode "CE" (en platine)
De manière à ne pas polluer la contre-électrode avec le métal de l'électrode de travail, il faut prendre le même matériau que pour les deux électrodes
L'électrode de référence sert à mesurer le potentiel de l'électrode de travail.
L'électrode de travail ne doit être parcourue par aucun courant pour que le potentiel de cette électrode reste constant. Pour fermer le circuit on doit donc utiliser une troisième électrode la contre-électrode.
Ici le capteur aura pour objectif de pouvoir tracer une courbe intensité potentielle grâce aux mesures effectuées sur les eaux.
La réalisation de cette courbe nécessite d'imposer une différence de potentiel entre l'ET et L'ER et de mesurer le courant traversant l'ET.
Schéma de principe
L'amplificateur opérationnel AO sert à maintenir la différence de potentiel entre la référence et l'électrode de travail aussi proche que possible du potentiel d'entrée de la source Ei. Il ajuste sa sortie pour contrôler automatiquement le courant dans la cellule de telle sorte que la différence de potentiel entre référence et travail soit aussi proche que possible de Ei.
Pour maintenir la différence de potentiel entre la référence et l'électrode de travail, j'utiliserai un convertisseur DAC (Digital To Analog) comme c'est le cas dans beaucoup de schéma électrique de projets équivalents que j'ai observé.
Exemples de schémas
Après plusieurs recherches, j'ai trouvé plusieurs projets avec des explications sur la réalisation d'un potentiostat et plusieurs schémas de réalisation qui devrait être utile pour la réalisation de ma carte:
Les trois montages diffèrent sur le nombre d'amplificateurs amplificateurs opérationnel pour la partie capteur:
- Le schéma de gauche utilise 5 amplificateurs opérationnels, soit 2 LM324N.
- Le schéma du milieu utilise lui 4 amplificateurs opérationnels, soit un TL084CN.
- Et le schéma de droite utilise lui 4 amplificateurs opérationnels de précision pour la partie potentiostat, soit un OPA4192 et deux amplificateurs opérationnels de précision pour la partie galvanostat soit un OPA219.
Pour ce qui est de fixer le potentiel entre l'électrode de travail et celle de référence, les trois schémas utilisent trois technologies différentes:
- Celui de gauche utilise une sortie PWM de l'arduino pour générer une rampe à une certaines fréquence.
- Celui du milieu utilise un pont diviseur de tension avec une source d'alimentation externe +15/-15.
- Celui de droite utilise un DAC (Digital To Analog Converter) pour générer une rampe.
Les voltmètres présents sur le schéma du milieu représenteront dans mon cas les entrées CAN du microcontrôleur.
En résumé pour réaliser mon capteur il me faut :
- Un DAC en entrée du capteur
- Deux CAN en sortie du capteur vers le microcontrôleur
- 5 AOP ou 6 si je pars sur la version où on a un feedback du type potentiostat et un autre feedback du type galvanostat.
- Des composants passifs (résistances, condensateurs).
- Une alimentation qui diffère selon les AOPs.
- Un Switched Capacitor Voltage Converter pour obtenir une alimentation symétrique pour les AOPs.
En reprenant les idées de ces trois schémas je devrais pouvoir réaliser le PCB comprenant le capteur une fois que j'aurai la solution technique pour le choix du microcontrôleur ainsi que pour la transmission radio sans fil.
Pour résumer:
Les potentiostats sont des dispositifs simples qui reposent sur des amplificateurs opérationnels pour conserver la différence de potentiel souhaitée entre deux électrodes (électrodes de travail et de référence) immergées dans une solution tout en enregistrant le courant électrique qui les traverse.Une troisième électrode (contre-électrode) est ajoutée au système afin d'isoler l'électrode utilisée comme référence de potentiel (électrode de référence) de la réaction de transfert de charge.
Semaine 2: La communication sans fil ?
Choix de la technologie sans fil
Pour pouvoir communiquer les données recueillies par le potentiostat à la station à distance, les deux cartes devront donc comporter chacune un module de communication sans fil. La carte contenant le capteur contiendra donc un module d'émission et la carte qui sera reliée au PC de la station contiendra un module de réception.
La communication entre le capteur et la station doit pouvoir s'effectuer sur une distance d'à peu près 5 km. Cela élimine donc de nombreux choix de protocole de communication sans fil.
On peut voir sur ce graphique les différentes technologies disponibles :
Le choix de protocole se restreint donc entre la technologie GSM, Sigfox ou LoRa. Pour notre système, les protocoles du type GSM ne correspondent pas aux besoins. Le capteur transmettra peu de données et le protocole de communication devra faible en matière de consommation d'énergie.
Il ne reste plus que deux choix :
- Sigfox
- LoRa
LoRa est un réseau open source pouvant être développé et exploité par n'importe qui dès lors qu'on achète des puces LoRa. Sigfox lui est un réseau propriétaire.
Mon choix se dirige donc vers des modules de communication LoRa.
Quelle fréquence d'émission?
Pour le choix du microcontrôleur, il faut connaître la fréquence à laquelle le système de communication pourra être développé sans licence. Pour cela je me suis projeté dans le cas où mon projet continuerait au Vietnam. La fréquence utilisable pour développer un système sans licence est la fréquence 868 MHz comme en France comme l'indique ce document [8].
Module sélectionné, exemples d'utilisation
Pendant la préparation mon choix était porté sur le module Grove du fabricant Seed. Mais après discussion avec M.Boé, il m'a dit qu'il était préférable que le module de communication ne comporte pas de microcontrôleur puisque je devais créer une carte avec le capteur, le microcontrôleur et le module de communication.Je m'étais d'ailleurs aussi trompé sur le choix de fréquence (le module sur présent sur la liste était un module communiquant à 433MHz).
Mon choix s'est donc porté sur le module RF-LORA-868-SO qui communique à 868Mhz, ne contient que le module de communication et n'est associé à aucun microcontrôleur.
Il existe plusieurs exemples d'utilisation du module RF-LORA-868-SO dans la fiche technique du produit:
L'objectif pour moi est donc de réaliser deux cartes qui reprendrait les éléments de cet exemple pour tester le module de communication, ou bien tout simplement d'utiliser deux breadboards. Pour cela il faut tout d'abord que je choisisse quel microcontrôleur choisir à la place du PIC présent dans l'exemple ci-dessus. Pour réaliser les deux cartes, je suis aussi parvenu à récupérer le symbole, et le footprint du composant que je pourrais utiliser sur Fritzing.
Semaine 3: Quel microcontrôleur? Gestion de l'alimentation de la carte?
Choix du microcontrôleur
Lors de la préparation du projet, je m'étais orienté sur le choix d'un ATMEGA328P comme microcontrôleur puisque la programmation de l'ATMEGA328P nous est familière, l'ATMEGA est le microcontrôleur de la carte ARDUINO UNO que nous avons déjà programmé plusieurs fois.
Mais après discussion avec M.Boé, il m'a orienté vers des microcontrôleurs STM32 de chez STMicroelectronics qui consomme moins d'énergie que l'ATMEGA et donc qui correspond plus aux besoins du projet.
Les STM32 sont disponibles sous différentes séries:
- STM32Fx, la série "Fast" servant pour des applications nécessitant des hautes performances.
- STM32Lx, la série "Low" servant pour des applications nécessitant une faible consommation d'énergie.
Mon choix s'est donc orienté vers la série STM32Lx. Après des recherches j'ai aussi vu qu'il existait des cartes de développement "Nucleo" qui utilise cette série de microcontrôleur.
Un collègue d'IMA5 utilisait lui aussi une carte "Nucleo" pour son projet, la NUCLEO-L031K6 qui utilise le microcontrôleur STM32L031K6T6 qui fait partie de la série STM32L0. Faisant partie de la série très faible consommation, possédant jusqu'à 32 ko de mémoire flash et un nombre suffisant d'entrées sorties pour mon projet, la carte correspondait à mes besoins et je lui ai donc pris cette carte dont il n'avait pas besoin et j'ai décidé d'en rajouter une sur ma liste de matériel. Ces cartes serviront aux tests des modules de communication et de la réception de données du potentiostat .Elles possèdent les mêmes connexions que les cartes Arduino Nano.
Le schéma de la carte Nucleo étant open source, je pourrais aussi m'inspirer pour la réalisation des deux PCB qui reprendront capteur et module de communication, notamment pour la gestion de l'alimentation et pour les composants nécessaires pour la programmation du STM32L051K8T6. Ce sera donc ce microcontrôleur qui sera présent sur les deux PCB.
Comparaison des consommations
Ce qui justifie le choix d'un STM32 à la place d'un ATMEGA328P est la différence au niveau consommation de l'énergie.
Si l'on compare la consommation lorsque les microcontrôleurs sont dans l'état actif:
- le microcontrôleur ATMEGA328P que j'avais choisi au départ consomme 200µA à 1Mhz, 25°C et à 1,8V.
- le stm32 consomme lui 76µA/Mhz dans les mêmes conditions.
Une différence de 124µA qui n'est pas négligeable pour la durée de vie du système et c'est ce qui justifie le changement au niveau du choix du microcontrôleur.
Gestion de l'alimentation
Après discussions avec les encadrants du projet, il m'a été conseillé de me concentrer sur la partie capteur et la partie communication sans fil et donc de ne pas me pencher sur la partie énergie renouvelable, solution que j'avais imaginée pour améliorer la durée de vie de mon système.
Dans un premier temps la carte qui contiendra le capteur sera donc alimenté via une batterie portable 5V relier directement à un port USB souder à la carte. Pour le choix du port USB j'ai repris la référence du port USB présent sur la carte NUCLEO. Le microcontrôleur et le module LORA étant alimenté en 3.3V il faut un régulateur de tension permettant de passer de 5v À 3.3v. J'ai donc aussi repris la référence du régulateur de tension présent sur la NUCLEO. La carte connectée au PC sera alimentée donc grâce au PC par liaison USB avec régulation de tension.
Semaine 4: Les connexions entre la Nucleo et le module Lora
Repérage
La datasheet du module LORA indique que celui-ci est programmable via une interface SPI (Bus synchrone série à haut débit, multipoint -> 1 maître avec 1 ou plusieurs esclave)
Média:datasheet_module_lora.pdf
Les données échangées sur un bus SPI s'effectuent sur 2 lignes unidirectionnelle (MOSI,MISO). Une horloge indépendante fixée par le maître synchronise les échanges(SCLK). Il n’y a pas d’adressage des esclaves (comme sur un bus i2C par exemple). L’esclave devient actif au moyen d’une ligne de sélection de boîtier dédiée(nSEL). Le bus SPI est constitué des 3 fils auxquels il faut ajouter les fils de sélection d'esclave.
Les 4 pins du bus SPI sur le module de communication RF sont les pins:
- 13(SC)
- 14(SDI)
- 15(SDO)
- 16(nSEL)
Il a fallu donc repérer les pins de la carte NUCLEO capable de communiquer via SPI.
Prise en mains de Fritzing, exemple de câblage pour test
Une fois le logiciel installé, j'ai commencé à réaliser le câblage sur breadboard entre le RF-868-SO et une Arduino NANO. Le RF-868-S0 n'étant pas crée, j'ai dû créer le composant sur Fritzing. La Nucleo STM32L031K6 n'étant pas non plus dans la liste des composants de Fritzing, j'ai donc préféré prendre une Arduino NANO pour l'exemple puisque les pins out sont les mêmes.
Je pourrais donc réaliser ce câblage une fois que j'aurai reçu la deuxième Nucleo afin d'envoyer des messages entre un module câbler en tant qu'émetteur et l’autre en tant que récepteur. Le câble qui n'est relié à rien représente l'antenne, elle sera réalisée avec un câble qui sera coupé à la longueur indiquée par la documentation technique. La programmation de la carte NUCLEO et notamment la prise en main du logiciel STM32CUBEMx permettant de contrôler la carte devront être nécessaire avant de pouvoir réaliser ce test.
Semaine 5: Test de la carte Nucleo-32
L'objectif de ce test est de prendre en main la programmation de la carte Nucléo afin de pouvoir réaliser par la suite un test des modules radio Lora où j'enverrais des caractères d'un module configuré en émetteur à un autre module configuré en récepteur. Chacun de ces modules sera donc connecté à des cartes Nucleo-32 via des breadboards afin de prendre en main la communication radio Lora nécessaire pour obtenir un capteur connecté.
Pour simplement tester l'implémentation de programme dans la carte Nucléo-32, j'ai donc voulu, classiquement, faire clignoter une LED grâce à la carte.
La première phase de ce test est de prendre en main le logiciel STM32CcubeMX.STM32CubeMX est un outil graphique qui permet une configuration des microcontrôleurs et des microprocesseurs STM32, ainsi que la génération du code C d’initialisation.La première étape consiste à sélectionner le microcontrôleur ou le microprocesseur STM32 de STMicroelectronics correspondant au jeu de périphériques requis. Pour les microprocesseurs, la deuxième étape permet de configurer le GPIO et la configuration de l'horloge pour l'ensemble du système.
Voici donc comment se présente le logiciel lorsque l'on a réalisé la première étape:
Ici j'ai donc configuré un GPIO en tant que sortie pour allumer la led ainsi que la configuration du RCC (Reset and Clock Control) pour la faire clignoter.
Une fois la configuration effectué il ne reste plus qu'à générer le code initialisation de la carte.
Après plusieurs recherches, j'ai trouvé un IDE pour les cartes Nucléo qui permet de modifier le code géréner par STM32CubeMX, le compiler et l'implémenter facilement dans le microcontrôleur de la carte.
Cet IDE, le logiciel "KDE" m'a donc permis de modifier le code généré précédemment :
/* Includes ------------------------------------------------------------------*/ #include "main.h"
/* Private function prototypes -----------------------------------------------*/ void SystemClock_Config (void); static void MX_GPIO_Init (void);
int main (void) { /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init();
/* Configure the system clock */ SystemClock_Config();
/* Initialize all configured peripherals */ MX_GPIO_Init();
/* Infinite loop */ while (1) { /* USER CODE BEGIN */ HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); HAL_Delay(200); /* USER CODE END */ } }
Une fois le code modifié j'ai donc testé la compilation du code ainsi que son implémentation dans le microprocesseur. Mais le logiciel m'informe d'une erreur :
Le soucis vient de l'IDE, c'est un logiciel développé pour Windows que je suis parvenu à installer sur Linux via Wine. Le problème est que je me retrouve devant une incompatibilité au niveau des drivers, je vais donc devoir trouver une solutions pour flasher la Nucléo-32 autrement que par l'IDE.
Semaine 6: Design d'un potentiostat
Durant cette semaine, j'ai dessiné et routé une carte servant de capteur du type potentiostat qui s'inspire de ceux trouver en première semaine.
Le but est d'avoir un PCB fonctionnel pour être sûr que le schéma est bon et que je pourrais m'en resservir une fois que je ferais le PCB rassemblant le capteur, le module de communication, l'alimentation et le microcontrôleur.
Présentation du dispositif:
Le dispositif proposé utilise une carte Arduino, je maîtrise plus la programmation de cette carte que celle de la Nucléo-32 ce qui simplifiera les test pour cette carte, pour la carte connectée, la Nucléo-32 sera utilisée. Pour le contrôle des paramètres et l’acquisition des données. Le carte Arduino Uno permet à l'utilisateur de réaliser des expériences de voltamétrie cyclique (CV) simples.
La voltamétrie est une méthode d’électro-analyse basée sur la mesure du flux de courant résultant de la réduction ou de l'oxydation des composés tests présents en solution sous l'effet d'une variation contrôlée de la différence de potentiel entre deux électrodes spécifiques.
On choisit le potentiel de départ, le potentiel au sommet (inflexion sur la courbe E vs t) et la vitesse de balayage.
La fenêtre de potentiel du dispositif et les limites de courant sont définies par l'amplificateur de sommation (figure A) et l'amplificateur de trans-impédance (figure C), respectivement:
Descriptif de la carte:
Alimentation
Les LM324 (Texas Instrument), sont alimentés par des alimentations symétriques, c’est-à-dire qu’ils doivent être alimentés avec une tension positive et négative (symétriquement) par rapport à la masse. L’alimentation +/- 6,5V illustrée sur le schéma de principe est conçue pour permettre une sortie +/- 5V sur l’ampli-op (après la chute de tension interne, généralement 1,5V), ce qui reste dans les limites de la carte Arduino.
Ce n'est pas réellement nécessaire mais ça vise à éviter les dommages sur le microcontrôleur, la diode Zener 5.1V connectée entre la sortie du convertisseur analogique-numérique et la masse renforcent cette sécurité. Le quad-ampli op LM324 peut être alimenté avec une double alimentation jusqu’à +/- 16V par rapport à la terre commune et peut donc être alimenté par un rail d’alimentation PC ATX + 12V et -12V.
Mais ici j'utiliserai des alimentations stabilisées disponibles à l'école que je connecterai à des headers disposés sur la carte.
Le -5V fourni à l'amplificateur de sommation et au convertisseur courant-tension doit être stable et précis, car toute fluctuation de cette tension entraînera un décalage du potentiel appliqué à la cellule électrochimique et au courant lu à partir de celle-ci. Un régulateur de tension tel que le LM79L05 peut être utilisé pour fournir une tension -5V stable à partir du rail -12 V de l'alimentation ATX mais une nouvelle fois ici j'utiliserais les alimentations stabilisées disponibles à l'école.
Convertisseur numérique-analogique
Les cartes Arduino Uno n’ayant pas de convertisseur numérique-analogique (DAC), mais seulement une modulation de largeur d’impulsion (PWM) et pour une expérience de voltamétrie cyclique, une rampe de potentiel doit être appliquée sur le contrôleur de potentiel, l’onde carrée générée par le PWM doit être convertie en une rampe potentielle.
Une solution consiste à utiliser un filtre RC pour convertir les valeurs PWM en vraies valeurs analogiques. L'inconvénient de cette approche est que, pour une carte Uno, le PWM a une résolution de 8 bits, ne générant que 256 valeurs de potentiel discrètes. Cela pourrait entraîner des voltamogrammes mal définis, en particulier si on effectue des expériences avec des limites inférieures à la limite de potentiel maximum et minimum de l'équipement.
Outre le problème de résolution, la plupart des cartes Arduino ont un signal PWM basse fréquence, allant de 400 Hz à 960 Hz, ce qui entraîne une constante de temps élevée pour le filtre RC. Ces fréquences sont déterminées par un diviseur entier sur l'horloge interne de la carte, ce qui signifie que la fréquence peut être modifiée en modifiant la valeur du diviseur, ce qui donne des fréquences allant jusqu'à 3,1 kHz, plus adaptées à l'application envisagée. Le tableau "A" montre la tension de sortie du convertisseur en fonction du niveau de tension / PWM du CNA.
La tension PWM de la carte Uno est de 5 V et le DAC ne peut fournir que des tensions de 0 à 5 V.Un amplificateur opérationnel est nécessaire pour les expériences de voltamétrie cyclique car on souhaite faire varier le potentiel entre les valeurs négatives et positives.
Comme la plupart des expériences d’enseignement en électrochimie sont effectuées dans l’eau et que la fenêtre électrochimique de l’eau n’est pas supérieure à 1,5 V pour la plupart des matériaux utilisés pour les électrodes de travail (WE), il n’a aucun intérêt à balayer le potentiel jusqu’à 5 V. Donc la sommation L’amplificateur peut être conçu pour produire des tensions dans une meilleure plage. Comme la résolution de 8 bits sera utilisée dans l’ensemble de la fenêtre potentielle, la conception de l’amplificateur de sommation est un compromis entre la résolution potentielle et la largeur potentielle de la fenêtre.
Un tracé de la sortie du convertisseur numérique / analogique et de l'amplificateur de sommation pour la configuration est décrite à la figure B.
Scan rate
La fréquence de balayage maximale dépend du temps de montée du filtre RC utilisé sur le CAN.La fenêtre potentielle et la résolution affecteront le taux de balayage maximal.
La résolution en bits du DAC étant fixe (8 bits), le DAC peut générer 256 niveaux différents.
Avec une fenêtre potentielle de 2V (de -1V à 1V) utilisée pour les expériences électrochimiques, la résolution du CNA est de 0,0078V.
Avec un temps de montée du filtre DAC RC de 0,01 s (résistance de 10 kΩ, condensateur de 470nF et PWM de 3,1 kHz), la vitesse de balayage maximale de la configuration utilisée pour les expériences électrochimiques serait de 0,780 Vs-1.
Convertisseur analogique-numérique
Le convertisseur consiste en un amplificateur opérationnel dans une configuration de convertisseur de courant en tension (amplificateur de trans-impédence) connecté à la contre-électrode. Le convertisseur courant-tension, convertit le courant qui traverse la cellule électrochimique en un potentiel lisible par le microcontrôleur. Grâce à la sécurité soulignée dans la partie "alimentation", une surcharge dans la lecture en cours entraînera uniquement un amplificateur saturé et ne causera pas de dommages pour la carte.
La limite de courant est donnée par la résistance R6 connectée à la boucle de réaction de l'amplificateur de trans-impédence.
Le potentiostat a été conçu pour utiliser la plage dynamique maximale du potentiel de lecture du microcontrôleur (0-5 V). Il est conçu en tenant compte du fait que la carte Arduino Uno ne lit pas les potentiels négatifs, ce qui signifie qu'une valeur de 0A sur le courant par rapport à la tension le convertisseur devrait produire 2,5 V (voir tableau ). Ceci a été réalisé par l'ajout d'un potentiel de polarisation sur l'entrée inverseuse de l'amplificateur.
Pour résumer, sur le tableau D on retrouve les limites en tension et en courant pour le potentiostat.
Design du schematic et du PCB sur Fritzing
J'ai donc réalisé ce schéma et le routage de la carte sur Fritzing :
Après un temps d'adaptation pour l'utilisation du logiciel je n'ai pas rencontré de soucis au niveau de la réalisation du schéma et du routage. La seule difficulté notable a été au niveau du schématique, le LM324N n'est pas présent dans les librairies présentes dans Fritzing il a donc fallu récupéré le composant sur internet via un projet posté sur un forum qui utilise ce même composant. la carte étant réalisé j'ai envoyé à monsieur Boé les fichiers afin qu'il donne son accord pour produire cette carte qui servira de test avant d'élaborer une carte plus complexe et offrant de meilleur résultat que ceux obtenus avec cette carte qui reste assez simple.
Semaine 7 et 8: Modifications pour la carte,tirage de la carte
Corrections des erreurs effectuées
Après les retours de monsieur Boé sur la carte, il a fallu modifier certaines choses afin que cette carte puisse être produite:
- Les LM324N présent sur le précédent design ne correspondait pas à la datasheet du composant. J'ai donc dû remplacer les deux composants par d'autres via un projet posté sur internet qui reprenait des LM324N qui cette fois correspondaient bien à la datasheet.
- Le schématique n'était pas lisible notamment parce qu'il n'était pas organisé à cause des traits qui allaient dans tous les sens, j'ai donc réorganisé le schéma pour obtenir un résultat plus propre où l'on repère bien les fonctions de chaque composant.
- J'ai dû refaire mon routage à cause du mauvais choix au départ pour les composants.
- Ma carte était double face mais les deux faces n'étaient pas reliées, mais comme tous mes composants sont des composants traversants, j'ai donc routé uniquement sur la face inférieure.
- Augmentation de la distance entre piste et masse qui était trop petite.
Tirage de la carte
Une fois ce design validé, j'ai donc pu produire ma carte à l'atelier d'électronique via la graveuse mécanique:
Il ne restera plus qu'à souder les composants et effectuer les test.
Semaine 9: Soudure des composants, test de la Nucléo-32
Soudure des composants
Une fois tous les composants nécessaires pour la réalisation du potentiostat réunis, j'ai pu réaliser la soudure à l'étain de tous les composants, les composants étant tous traversant.
À la place des électrodes, j'ai d'abord soudé 3 fils qui me permettront d'effectuer des tests à vide et électriques pour vérifier qu'il n'y est pas de trop forte tension ou de trop important courants qui arrive sur les électrodes.
J'ai aussi soudé des supports pour les amplificateurs opérationnels, ce qui me permettra de tester la carte sans les amplificateurs opérationnels afin de vérifier que les tensions qui arrivent aux bornes des supports soient convenables pour les amplificateurs.
Voici donc le résultat de ma soudure:
Problèmes rencontrés: une pastille s'est dessoudée lors de la soudure d'un des headers, j'ai donc dû souder cet header à la patte d'une résistance comme on peut l'apercevoir sur la partie en bas à gauche de la photo du bottom de la carte.
Test de la Nucléo-32
Après avoir réinstallé les logiciels STM32CubeMX et l'IDE KDE uvision, je suis parvenu à flasher la Nucleo 32 et à faire simple clignoter une LED pour le moment. J'ai longtemps été bloqué à cause de la connexion entre la carte et mon PC, en effet j'ai mis un certaint temps avant de m’apercevoir que mon câble n'était pas fonctionnel.
Semaine 10:Code Arduino pour le potentiostat, Tests de la carte,design de la carte connectée
Programmation de l'Arduino
Le code présenté ci-dessous effectue automatiquement des expériences de voltamétrie cyclique à différentes vitesses de balayage.Tous les paramètres (taux de balayage et fenêtre potentielle) peuvent être modifié dans le code. J'ai utilisé l'IDE Arduino pour réaliser ce code :
//Initialisation int a = 10; int val = 0; float ct = A0; //ADC float c = 0; int n = 0; float Potstep = 0.0078; // Résolution du DAC int vevals [] = {100, 20, 50, 100, 200, 250, 300}; //multiple valeur de taux de balayage (mv/s) int const count = 6; long intervalles [count];
void setup() { TCCR1B = TCCR1B & B11111000 | B00000001; //diviseur pour modifier la fréquence du PWM Serial.begin(9600); pinMode(a, OUTPUT); pinMode(ct, INPUT); }
void loop() { for (int pos = 0; pos < count; pos++) { intervalles[pos] = (1000000L / ((vevals[pos]) * 128L)); } for (int pos = 0; pos <= count; pos++) { n = 0; while (n <= 1) { //début du forward scan for (val = 0; val <= 255; val++) { analogWrite(a, val); Serial.print(val); delay(intervalles[pos]); //c = ((0.00195*(analogRead(ct))-1)*1000);//Sorties de lecture actuelles en uA c = analogRead(ct); Serial.print(" "); Serial.print(c); Serial.print(" "); Serial.print(n); Serial.print(" "); Serial.print(vevals[pos]); Serial.print(" "); Serial.println(intervalles[pos]); } //début du reverse scan for (val = 255; val >= 0; val--) { analogWrite(a, val); Serial.print(val); delay(intervalles[pos]); //c= ((0.00195*(analogRead(ct))-1*1000);//Sorties de lecture actuelles en uA c = analogRead(ct); Serial.print(" "); Serial.print(c); Serial.print(" "); Serial.print(n); Serial.print(" "); Serial.print(vevals[pos]); Serial.print(" "); Serial.println(intervalles[pos]); } n = n + 1; } } }
Tests de la carte
Dans un premier temps j'ai fais des test où j'envoyais le 6,5V/-6,5V ainsi que le -5V sur les header correspondant et je regardais si je retrouvais bien ces tensions, sans chutes, aux pins où ces tensions devaient être présente.
Ce test à été concluant: aucune chute de tension et je retrouve bien les bonnes tensions au bon endroit.
Ensuite j'ai testé le code présenté ci-dessus et j'ai vérifié que la carte récupérait bien la PWM de valeur moyenne variable entre 0 et 4V à l'entrée de l'amplificateur opérationnel (pas encore connecté).
Voici le résultat :
La PWM est bien obtenu, le code est fonctionnel, il reste à voir si l'amplificateur permet d'obtenir la rampe souhaité lorsque celui-ci effectueras la conversion numérique/analogique.
Malheuresement, je n'ai pas pu continuer les test, en effectuant ce dernier, un header c'est déssoudé emmenant avec lui la pastille je vais donc devoir réctifier ceci par la suite avant de passer aux tests avec les amplificateurs opérationnel connectés.
Semaine 11:Réparation et test de la carte, Test du programme
Réparation et test de la carte
Au total 3 pastilles qui devait être soudées à 3 headers se sont décollées. J'ai donc du utiliser plusieurs pattes de résistances afin de recréer les pistes entre les headers et les composants auxquelles ils étaient reliées.
Une fois la carte réparées j'ai pu continuer les test sur ma carte avec cette fois-ci les amplificateurs connectés sur les support. Je retrouve bien l'alimentation 6,5/-6,5 au niveau des amplificateurs ainsi que le -5V fourni à l'amplificateur de sommation et au convertisseur courant-tension. Au niveau des câbles que j'ai mis en place pour mesurer la tension et le courant avant de mettre en place les électrodes.
On retrouve des tensions comprises entre -3v et 3V et des courants compris entre -200 et 200 micro ampères.
Test du programme arduino avec la carte
Une fois le programme décrit auparavant flashé sur l'Arduino, j'ai donc connecté la broche AO de l'Arduino à la carte correspondant à la mesure du potentiel et donc la valeur qui sera convertie par l'Arduino ainsi que la sortie D10 de l'Arduino à la carte qui correspond à l'entrée PWM.
Le programme affiche bien les différentes mesures (valeur à virgule sur le gif) que la carte effectue mais celles-ci ne correspondent en réalité à rien puisque ce sont pour le moment simplement 3 fils de cuivre qui sont disposés à la place des électrodes.
Maintenant que les tests de la carte ont été concluants et que le programme pour effectuer les mesures est opérationnel, je peux donc passer aux tests avec cette fois-ci les électrodes connectées à la carte une fois que celles-ci seront disponibles.
Semaine 12: Design d'un galvanostat/potentiostat connecté
L'objectif principal du projet était de concevoir une carte connectée qui était capable d'échanger des donnés avec un ordinateur à distance. J'ai réussi à concevoir et réaliser un potentiostat mais le problème c'est que celui-ci n'est pas connecté. Je vais donc me servir du concept de cette carte pour pouvoir concevoir une carte plus développée et qui pourra envoyer les mesures effectuées à un ordinateur à distance.
Après avoir étudié le schematic de la carte Nucleo 32, j'ai remarqué qu'un autre microcontrôleur était nécessaire pour programmer le microcontrôleur STM32L031K6.
La complexité de la carte Nucleo 32 m'a orienté vers une solution plus simple qui correspond à créer un shield pour la Nucleo 32 plutôt que de faire une carte comprenant:
- Le microcontrôleur STM32L031K6 qui traite les données et qui contrôle les modules RF
- Le microcontrôleur permettant de programmer l'STM32L031K6
- Le module RF
Ce qui reviendrait en réalité à reproduire la Nucleo 32.
Une fois les fonctions de mesures et de communication opérationnel avec ce shield je pourrais concevoir une carte regroupant tout les éléments cités avant.