Louis Reynier

Systèmes numériques, électronique et communications

Géolocalisation – SNT

Géolocalisation - image d'illustration une carte avec un point GPS
Image d’illustration par Andrey_Photos de Pixabay

Durant l’année scolaire 2019-2020, j’ai enseigné (en/le/les ?) SNT (Sciences Numériques et Technologie) en classe de seconde. Ce fut une expérience très intéressante qui m’a permis de changer un peu d’enseignement et de public. On travaille avec un manuel, des supports pédagogiques ( des clips vidéos très bien faits, par exemple). C’est très différent de l’enseignement en BTS. Hélas, je n’ai pas terminé l’année en présentiel. Oui, en mars 2020, l’année scolaire a basculé en télétravail intégral. Vous souvient-il ? Je n’ai pas renouvelé l’année suivante car j’ai dû récupérer d’autres heures en BTS. Je présente ici deux TPs sur la géolocalisation. Ce sont des TPs assez courts, en seconde SNT, les séances ne durent que 1h30.

TP1 : quelques manips avec what3words

Le premier TP tourne autour de what3words : une application géniale qui permet de donner une adresse avec 3 mots à chaque point du globe.

TP2 : quelques manips avec Google Maps

Ce TP propose des manips avec Google Maps et permet également de bien appréhender les notions de latitude et de longitude. On joue aussi avec la notion d’antipode.

La géolocalisation est un sujet qui m’a toujours intéressé en tant que randonneur-montagnard et ancien marin-hydrographe (j’ai effectué mon service militaire à la Mission Océanographique du Pacifique).

Et qui on est, hein ?

Microbit

Prise en main de la carte microbit

La carte microbit est une petite carte (petite par la taille) très intéressante. Nous l’utilisons en début de première année avec nos étudiants de BTS SN-EC. En effet, le langage de programmation graphique (qui ressemble à Scratch) est idéal pour des débutants. C’est une très bonne initiation à l’électronique embarquée.

Le premier TP permet la prise en main de la carte, de l’environnement de développement outil MakeCode.

Le second TP permet de réaliser l’équivalent d’un niveau à bulle électronique 2D en utilisant l’accéléromètre intégré à la microbit.

Nous avons même utilisé la carte microbit dans un projet de seconde année. Il s’agissait d’une application de mesure de mouvement à distance d’un mobile en utilisant l’accéléromètre et la liaison radio.

Et qui on est, hein ?

Modulation et démodulation FSK avec PSOC 5

Est-il possible de réaliser un modulateur et un démodulateur FSK dans un PSoC ? Voilà un TP qui permettrait d’illustrer les modulations numériques ! Et bien regardons ensemble comment s’y prendre.

Pour ce TP, je me suis rajouté une contrainte. Je ne voulais pas faire une carte qui démodule directement le signal qu’elle génère. L’idée était d’enregistrer un signal FSK sous forme de fichier audio puis de le démoduler.

Caractéristique de la modulation FSK :

Débit = 300 bauds ; fréquence « 0 » = 1300 Hz ; fréquence « 1 » = 2100 Hz.

Modulateur FSK

Facile de faire un modulateur FSK avec PSoC Creator !

Modulateur FSK PSOC. UART + WaveDAC + PGA
Modulateur FSK PSoC

L’UART sert à générer le signal binaire. Il transmet en boucle une chaine de caractères.

Le WaveDAC8 est un composant extraordinaire. Il permet de générer pratiquement n’importe quel signal. Voici comment il est configuré.

Configuration du WaveDAC

C’est tout simple, si le signal sur l’entrée ws est à 0, on transmet le signal Waveform 1 : ici un sinus à 1302 Hz d’amplitude c-à-c = 2V centré sur 1,024 V et si le signal ws est à 1, on transmet le signal Waveform 2 : ici un sinus à 2101 Hz de même amplitude.

Le PGA derrière est programmé avec un gain de 2 pour exploiter toute la dynamique 0/5V.

Il ne reste plus qu’à numériser le signal avec une carte son. Je connecte la sortie du PSoC sur l’entrée line puis REC pendant une quinzaine de secondes ! J’utilise Audacity, voilà le résultat !

Signal FSK numérisé. fenetre Audacity temporel + spectre
Signal FSK numérisé

On remarque bien les 0 (durées ou la fréquence est basse) et les 1 (durées où la fréquence est haute). Le spectre montre bien 2 pics à 1300 Hz et 2100 Hz.

Vous pouvez écouter, ce n’est guère mélodieux !

Voilà, mon signal est généré et sauvegardé sous forme de fichier wav sur mon PC. Il ne reste plus qu’à le démoduler !

Démodulateur

Principe

Pour réaliser le démodulateur, je me suis inspiré de deux articles publiés par Cypress (Infineon maintenant).

Simplified FSK detection – PSoC1

Low-Frequency FSK Modulation and Demodulation – PSoC5

Le principe est le suivant : on multiplie le signal FSK par le signal FSK retardé :

multiplication signal par signal retardé
Démodulateur FSK à retard

Si notre signal est sin(ω.t) et notre retard d, on obtient en sortie du multiplieur :

sin(ω.t).sin(ω(t+d)) = 1/2. [cos(2.ω.t+ω.d)-cos(ω.d) ]

Si on ne s’intéresse qu’au terme basse fréquence, il reste -1/2.cos(ω.d)

L’idée est de choisir le retard d optimum tel que l‘écart entre cos(ω0.d) et cos(ω1.d) soit le plus grand possible (idéalement, il faudrait un cos à -1 pour ω=ω0 et un cos à +1 pour ω=ω1).

Traçons avec un tableur cos(ω0.d)-cos(ω1.d) en fonction de d (avec ω0= 2π.1300 et ω1=2π.2100) :

cos(wo.d)-cos(w1.d) en fonction de d

La fonction est maximale pour un retard d = 0,727 ms = 727 µs. Voyons maintenant comment mettre tout ça en œuvre.

Mise en œuvre

Le schéma du démodulateur sous PSoC Creator est le suivant :

Schéma du démodulateur FSK

L’étage d’entrée est constitué d’un comparateur qui va transformer notre signal FSK sinusoïdal en signal carré. Pour cela le signal entrant est décalé par un circuit C-R (composants extérieurs) à Vdda/2 puis comparé à cette valeur avec le comparateur Comp_1. Remarquez l’utilisation du suiveur sur la tension de référence Vdda/2 (Vdda/2 = la moitié de la tension d’alimentation analogique, ici Vdda = 5V).

On échantillonne ensuite le signal. Comment choisir la fréquence d’échantillonnage ? L’idéal est d’avoir une fréquence à la fois multiple de 1300 Hz et de 2100 Hz. Calculons le PPCM de 1300 et 2100, on obtient 27300. En effet 27300 = 21*1300 = 13*2100. Vous voyez que ca sert à quelque chose le PPCM (le plus petit commun multiple) vu au collège ! On utilise donc une fréquence d’échantillonnage de 27300 Hz.

Le fameux retard de 727 µs est réalisé par un registre à décalage. L’horloge de 27300 Hz a une période de 36,63 µs. Pour obtenir 727 µs, on utilise un registre à décalage de longueur 20. 20 périodes de 27300 Hz font un retard de 732,6 µs pas bien loin de nos 727 µs.

On réalise la multiplication des deux signaux avec le ou exclusif, c’est assez classique. Enfin, on utilise un « glitch filter » ou « déglitcheur » de taille N=5. J’avoue que le 5 a été choisi un peu au pif, on doit pouvoir optimiser. Ce composant permet d’éliminer par « filtrage » tout bit parasite. Son principe est expliqué ici : lien vers la doc.

Cette structure génère un «1» uniquement lorsque les N échantillons actuels et précédents sont «1», et un «0» uniquement lorsque les N échantillons  actuels et précédents sont «0». Sinon, la sortie est inchangée par rapport à sa valeur actuelle.

L’UART, enfin permet de décoder le signal et on affiche les caractères reçus sur l’afficheur LCD.

Résultats

Et ça marche ? Relions la sortie de la carte son (jack) à l’entrée de la maquette.

Regardons ici les résultats obtenus sur mon vieux scope analogique.

Relevé à l'oscilloscope signal FSK et signal démodulé
Relevé oscilloscope démodulateur FSK

En haut, le signal modulé FSK à l’entrée, en bas le signal numérique démodulé. La démodulation FSK est fonctionnelle !

Quelques signaux intermédiaires relevés à l’analyseur logique :

relevé signaux logiques démodulateur FSK

De haut en bas : Le signal FSK en sortie du comparateur (fsk_comp), le signal de sortie du Ou exclusif (xor) et le signal en sortie du « déglitcheur » (data_out). La sortie du ou exclusif est plein d’impulsions parasites (normal, ce sont les termes en 2.ω !). Admirez l’intérêt du « déglitcheur ».

Et voila ce que l’on obtient sur l’afficheur LCD de la maquette :

Affichage du message reçu
Maquette démodulateur FSK

Je vous laisse découvrir le message décodé !

Et voilà ! Un modulateur – démodulateur (un modem) FSK dans un PSoC ? C’est possible ! Il n’y a que deux composants extérieurs : une résistance et un condensateur.

Et qui on est, hein ?

Visual Studio C# pour électroniciens

Dans nos projets de BTS, bien souvent, nous mettons en œuvre des capteurs qui mesurent des grandeurs physiques interfacés à un microcontrôleur. Longtemps nos IHM, nos Interfaces Homme-Machine, se sont limités à des leds, des boutons-poussoirs, des petits afficheurs, avec éventuellement une sortie d’informations vers un PC sous forme communication série.

Rapidement, le besoin de réaliser des IHM plus évolués s’est fait sentir. Ça serait quand même sympa de pouvoir piloter nos projets à partir d’un PC ! C’est comme cela que nous nous sommes lancés sur Visual Studio C#, pour réaliser des petites applications Windows pour communiquer avec nos projets/systèmes.

Les TPs présentés ici sont abordés en milieu de BTS 2eme année. les étudiants ont déjà une première maitrise du langage C et quelques connaissances en POO (programmation orientée Objet) en C++.

TP n°1 : premiers pas Visual Studio

TP1 : Calculateur Résistance diode

Un premier TP/tuto assez simple qui permet de réaliser une application Windows permettant de calculer la résistance associé à une LED.

TP 2 : Gestion des évènements et du temps

Compte à rebours Visual Studio
Compte à rebours Visual Studio

Un deuxième TP qui permet de réaliser un petit minuteur (pour faire cuire des œufs à la coque, par exemple).

TP3 : Gestion de la liaison série

Terminal série Visual Studio
Terminal série

Le TP consiste à réaliser un petit moniteur série (comme le moniteur série d’Arduino).

J’ai appris Visual Studio C# sur le tas, les solutions ne sont peut être pas optimales. Si je raconte des bêtises dans mes TPs, merci de me le faire savoir en laissant un commentaire.

Faire des IHM Windows pour piloter nos systèmes ? On sait faire !

Et qui on est, hein ?

Un amplificateur de jauge avec PSoC

Psoc cypress - structure modulaire

Présentation du problème

Cette année, avec nos étudiants de BTS SN2 sur un projet, nous avons voulu lire directement une jauge de contrainte avec un circuit PSoC sans utiliser d’amplificateur d’instrumentation extérieur. Tout dans le PSoC. Oui, on a peur de rien. Et qui on est, hein ?

Notre cahier des charges 

On veut mesurer une masse d’environ 500 g avec une précision de 1 g. On utilise le capteur de force suivant :

Capteur utilisé

Le capteur est alimenté en 5V et donc délivre (5×800µV) = 4 mV pour 780 g soit environ 4 mV pour 800 g donc 2,5 mV pour 500 g. Cette tension différentielle est centrée autour de 2.5 V (c’est un pont de Wheatstone). 1 gramme correspond à 2,5mV/500 = 5 µV.

Structure retenue

La structure retenue et dessinée sous PSoC Creator est la suivante :

Le capteur de force est alimenté en 5V. Les deux sorties du capteur sont reliées à Vplus et Vmoins. On entre sur un multiplexeur analogique AMux. On utilise ensuite 4 PGA (Amplificateur à gain programmable) connectés en amplificateur différentiel à 2 étages. Enfin, un convertisseur analogique-numérique mesure cette tension amplifiée (présente entre OutPlus et OutMoins).

Principe de la mesure

La mesure se fait en deux temps avec le multiplexeur analogique . Posons G = gain total de l’amplificateur différentiel.

1° temps : AMux sur voie 0, on amplifie et mesure Vplus – V moins. On obtient V1 = G(Vp – Vm + offset)

2° temps : AMux sur voie 1, on amplifie et mesure Vmoins – Vplus. On obtient V2 =G (Vm-Vp + offset)

V1 et V2 sont stockés après numérisation. On effectue le calcul suivant dans la foulée :

V1 – V2 = G(Vp – Vm + offset) – G(Vm-Vp + offset) = 2.G.Vp – 2 .G.Vm + G.offset – G.offset

= 2 G.(Vp – Vm)

L’offset des amplificateurs s’annule par magie cette astuce !

Le gain de la structure totale est 2.G = 2 (Gain_PGA1 * Gain_PGA3)

Bien entendu, pour que cela fonctionne correctement il faut PGA1 = PGA2 et PGA3=PGA4

Tester la structure

Comment tester facilement la structure sans jauge de contrainte sous la main ?

En utilisant l’accessoire suivant :

Cette petite bidouille permet d’obtenir une tension (Vplus – Vmoins) comprise entre 0 et 6,5 mV environ centrée autour de 2,5 V. Ça simule très bien électriquement la jauge de contrainte. La tension est négative si l’on permute Vplus et Vmoins.

J’ai testé dans les conditions suivantes :

PGA1 = PGA2 = 24 et PGA3=PGA4 = 32

Tension d’entrée : environ -2,5 mV. CAN : Convertisseur Sigma-delta 20 bits. Mesure sur 16 échantillons. Kit PSoc050

Mesure obtenue PSOC 5
Manip effectuée

1 : Tension mesurée par le CAN, multiplexeur en position 1 = -2060 mV

2 : Tension mesurée par le CAN, multiplexeur en position 2 = 1756 mV

A = (V1-V2) = -3816 mV ce qui correspond à 496 grammes (avec signe <0)

2.G(Vp-Vm) = -3816 mV donc G.(Vp-Vm) = -1908 mV et l’offset ramené à la sortie est de -152 mV !

A l’entrée, le signal est de 2,484 mV et l’offset de 0,198 mV.

Attention, le système ne fonctionne correctement que si les tensions 1 et 2 sont inférieures à la tension d’alimentation !

Testé avec les étudiants et la jauge. Ça marche aussi. On a baissé un peu les gains car on saturait une des sorties.

Conclusion

Faire un amplificateur d’instrumentation avec tous les étages analogiques dans le PSoC ? Ça marche, on sait faire !

Et qui on est, hein ?

Refonte du site

J’ai créé ce site en 2010 (je crois). J’avais codé en html. C’était pas très convivial.

Ça ressemblait à ça :

Site ancien
Page d’accueil vintage du site

Vous souvient-il ?

Le design était vraiment très simple et dégage aujourd’hui un petit parfum « vintage » !

Sommaire ancien site
Sommaire du site d’avant

Nous sommes en juin 2022 et je viens de passer à WordPress. Je vous le recommande, c’est vraiment très simple. Surtout pour mettre des articles en ligne. Du coup, je pense que je publierai plus souvent.

J’ai remis toutes les pages de l’ancien site et tous les fichiers. Certaines choses sont sûrement obsolètes, mais ça donne à ce site un petit côté rétro qui ne me déplait pas. N’oublions pas que j’ai été webmaster d’un site de brocante en ligne, géré par mon épouse.

Bienvenue sur ce nouveau site !

Informatique pour BTS SN-EC

Langage C en mode console

En BTS Systèmes numériques, option électronique et communication (BTS SN-EC), nous avons mis en place au lycée Cabanis, mes collègues et moi, une série de TPs d’informatique ou plus exactement de développement logiciel (langage C). L’objectif de ces TPs (enfin plutôt des TD/TPs) est de permettre aux étudiants d’acquérir quelques bases de C et d’algorithmique. Pour cela, nos étudiants de première année développent des applications console avec CodeBlocks. Les activités proposées sont assez simples, la finalité étant de passer rapidement à la programmation d’applications informatiques embarquées sur des plateformes comme Arduino, mbed, PSoC etc… 


Un tutoriel pour prendre en main CodeBlocks



Le TP n°1 : entrées/sorties, structures de contrôle

Le TP n°2 : entrées/sorties, structures de contrôle (suite) et fonctions

Le TP n°3 : les tableaux et les fichiers

Le TP n°4 : les pointeurs

Le TP n°5 : les chaînes de caractères

Electronique embarquée Arduino, mbed, PSoC

Retrouvez ici des TP sur de l’électronique embarquée Arduino, PSoC, Mbed etc…

PSoC

Avec mes collègues du BTS Systèmes électroniques du lycée Cabanis, nous nous sommes lancés il y a quelques années avec nos étudiants, sur un projet PSoC(1). Le document présenté ici est un document de débutant à l’usage des débutants : PSoC pour les nuls en quelque sorte. Il peut y avoir des erreurs ou des imprécisions, merci de me le signaler en utilisant les commentaires de ce site. J’ai laissé ce document ici, mais nous n’utilisons plus PSoC1. Nous utilisons PSoC5. Voir ci-après.

PSoC 5

Le PSoC 1 évoqué ci-dessus commence à vieillir. Place à PSoC 5LP ! Voici un TP incluant des tutos (de moins en moins guidés), permettant de prendre en main le kit de développement PSOC5 CY8C-KIT050 et le logiciel PSoC Creator. Ce document s’adresse à des débutants (étudiants de BTS SN en milieu de première année).

Arduino

J’ai commencé à entendre parler d’Arduino en 2010. J’ai essayé, j’ai « bidouillé » avec, et j’ai trouvé cela très bien : c’est simple, c’est pas cher et on peut développer très vite des choses avec des étudiants de BTS Systèmes électroniques. Une petite présentation de Arduino.

Créer une classe pour Arduino

Un TP assez simple pour créer et utiliser une classe pour Arduino (une « librairie » comme disent abusivement mes étudiants). Au niveau matériel, on peut difficilement faire plus minimaliste : une carte Arduino et basta. On utilise la led de l’Arduino ! C’est librement adapté d’un document Arduino « Library Tutorial ».

Serveur Web embarqué mbed

Un TP pour mettre en œuvre un serveur web embarqué autour d’un circuit mbed. Ce serveur permet d’allumer des leds ou de lire une entrée analogique. Ce TP permet aussi d’aborder en « live »  html et javascript.

« Older posts

© 2022 Louis Reynier

Theme by Anders NorenUp ↑

Cookie Consent Banner by Real Cookie Banner