IMA3/IMA4 2019/2021 P19+ : Différence entre versions
(→Liens Utiles) |
(→Réalisation du Projet) |
||
(22 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 16 : | Ligne 16 : | ||
* Matériel : | * Matériel : | ||
− | ** | + | ** Microcontrôleur STM32. |
+ | ** Ecran LCD | ||
+ | ** Générateur basses fréquences | ||
+ | |||
+ | * Logiciel/Language: | ||
+ | **Langage C | ||
==Liste des tâches à effectuer== | ==Liste des tâches à effectuer== | ||
+ | * Analyser et définir des différents composants nécessaires | ||
+ | |||
+ | * Programmer le CAN pour récupérer et stocker la valeur de l'amplitude à un temps donné | ||
+ | |||
+ | * Programmer l'écran LCD pour visualiser un signal | ||
+ | |||
+ | * Mettre en place une interface pour modifier l'échelle du signal. | ||
+ | |||
==Calendrier prévisionnel== | ==Calendrier prévisionnel== | ||
Ligne 24 : | Ligne 37 : | ||
==Prologue== | ==Prologue== | ||
+ | Avant tout, nous allons voir comment fonctionne un oscilloscope. Lorsque les oscilloscope numériques n'existaient pas, un oscilloscope fonctionnait avec un canon à électrons qui envoyait un faisceau d'électrons sur deux plaques horizontales qui déviaient le faisceau en fonction de la tension d'entrée. | ||
+ | Par la suite, cette méthode n'était plus utilisée et on a changé les oscilloscope par des oscilloscopes numériques. Pour résumer le fonctionnement, un signal d'entrée va être traité par un convertisseur analogique-numérique. Lorsque l'information est convertie, elle est stockée puis ensuite envoyée sur un écran lorsqu'il y a assez de points à afficher. | ||
+ | |||
==Semaine 1== | ==Semaine 1== | ||
− | Pour commencer | + | Pour commencer, il nous faut réaliser un travail de documentation afin de trouver les composants nécessaires à la réalisation du projet. Premièrement, ce qu'on peut voir c'est que le projet est faisable de différentes manières et des personnes ont partagé leur travail sur internet. Le projet peut se faire à base d'un circuit logique programmable ou d'un microcontrôleur. On a par exemple un utilisateur du site Instructables.com qui a réalisé un mini oscilloscope à base d'un stm32 et d'un écran lcd. Il nous explique qu'il a utilisé le CAN du microcontrôleur pour convertir avec une vitesse de conversion de 1us par échantillon. Il a décidé de fiare un affichage sur un écran lcd avec une résolution de 160x128px. |
+ | |||
− | [[Fichier:Schema_ard.png| | + | Pour commencer le projet, nous allons voir les différentes manières de réaliser un oscilloscope. Il existe plusieurs façons de le réaliser comme par exemple à l'aide d'un FPGA ou d'un microcontrôleur STM32. En amont de la partie intelligente de l'oscilloscope, nous avons au moins un convertisseur Analogique/numérique afin d'envoyer la tension mesurée sur le FPGA ou microcontrôleur. Nous avons ensuite un écran LCD qui va permettre d'afficher le signal. |
+ | [[Fichier:Schema_ard.png|350px|right|thumb|Schéma de fonctionnement avec Arduino]] | ||
+ | |||
+ | Notre choix de microcontrôleur et de carte de développement s'arrête sur un des deux choix, la NUCLEO F401RE et la NUCLEO F412ZG. Ceux-ci seront tous les deux ouverts à la programmation, disposent déjà d'un ADC et peuvent être équipé d'un écran LCD. Le problème du F401RE est qu'il ne peut gérer qu'une seule channel de l'oscilloscope. Cela veut dire que notre microcontrôleur STM32F401 ne peut réaliser qu'une seule conversion analogique/numérique à la fois. | ||
+ | <br style="clear: both;" /> | ||
==Semaine 2== | ==Semaine 2== | ||
+ | |||
+ | |||
+ | ==Semaine 3 et 4== | ||
+ | On a pu remarquer que le CAN du stm32 n'était pas assez rapide comparé à ce que nous voulions. Nous avons donc commencé à nous orienter sur un module externe qui fasse la conversion, le stm32 traite l'information et la transfère dans une RAM et réutilise l'information pour l'afficher sur l'ordinateur via la connection USB. Nous avons donc commencé à chercher un module CAN et une SRAM à relier au stm32. Nous sommes parti au départ sur des modules externes pour carte de développement, mais il y avait peu de modules intéressants. Donc nous avons dû partir sur des circuits intégrés directement. Nous avons choisi un CAN 8bits ayant une vitesse de 50Mech/s. Concernant la RAM, nous avons trouvé une SRAM de 8x1 Mbit, ce qui devrait être largement suffisant pour stocker tous les points nécessaire à l'affichage. En attendant les composants nous avons continué de voir la programmation sur stm32 | ||
+ | |||
+ | =Semaine 5= | ||
+ | Lors de cette semaine nous nous sommes consacré à la réalisation du circuit imprimé qui allait recevoir les deux composants commandé. Nous avons tout d'abord créé un nouveau projet sur fritzing. Le CAN sera relié à un connecteur 1x6 en entrée et 1x9 en sortie. En complément, nous allons avoir 2 capacités de 1uF et une résistance de 25 ohms qui seront utilisés pour le pin 2 et le pin 6. Le problème sur fritzing, c'est qu'il est difficile de trouver le modèle du CAN et de la RAM pour le routage de la carte. Par contre, on peut créer nos propres composants à partir du circuit intégré déjà existant sur Fritzing. Celui-ci peut être modifié pour être au format du boitier du CAN, qui est du SSOP. | ||
+ | Le problème est en revanche venu pour la SRAM. En effet, nous avons un format TSOP-II qui n'est pas disponible et il n'y a pas possibilité de trouver un format similaire. Il faut donc trouver une alternative pour pouvoir faire le pcb et trouver les modèles nécessaires pour les composants commandés. Nous avons remarqué que les modèles de composants pouvaient être utilisé sur le logiciel Kicad qui est lui aussi un logiciel de conception électronique. Nous avons ainsi recommencé le schéma de câblage en commençant par le CAN. Cependant, pour le schéma de câblage de la RAM, il est surement incorrect compte tenu d'une mauvaise compréhension de la datasheet. | ||
=Documents Rendus= | =Documents Rendus= | ||
Ligne 40 : | Ligne 69 : | ||
*[https://www.electronique-mixte.fr/projet-electronique-oscilloscope-numerique-a-base-du-microcontroleur-pic18f4680-a-liaison-serie-rs232/ Oscillo sur liaison série] | *[https://www.electronique-mixte.fr/projet-electronique-oscilloscope-numerique-a-base-du-microcontroleur-pic18f4680-a-liaison-serie-rs232/ Oscillo sur liaison série] | ||
+ | |||
+ | *[https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwj9-fXC5tXwAhXJ8eAKHbRwD4YQFjAAegQIBhAD&url=https%3A%2F%2Fwww.st.com%2Fresource%2Fen%2Freference_manual%2Fdm00180369-stm32f412-advanced-armbased-32bit-mcus-stmicroelectronics.pdf&usg=AOvVaw1jBYKXOIhft-b6t_Gni65g Lien Ref manual du STM32F412] | ||
+ | *[https://www.st.com/resource/en/reference_manual/dm00096844-stm32f401xbc-and-stm32f401xde-advanced-armbased-32bit-mcus-stmicroelectronics.pdf Lien ref Manual du STM32F401] | ||
*Projets déjà réalisés : | *Projets déjà réalisés : | ||
**https://github.com/cskarai/csabiscope | **https://github.com/cskarai/csabiscope | ||
**https://github.com/pingumacpenguin/STM32-O-Scope | **https://github.com/pingumacpenguin/STM32-O-Scope | ||
+ | **https://www.instructables.com/Mini-Oscilloscope/ | ||
*https://programmer.group/simple-oscilloscope-library-function-based-on-stm32.html | *https://programmer.group/simple-oscilloscope-library-function-based-on-stm32.html | ||
*https://www.gameinstance.com/post/79/STM32-Oscilloscope | *https://www.gameinstance.com/post/79/STM32-Oscilloscope | ||
+ | |||
+ | *Datasheets : | ||
+ | **http://www.farnell.com/datasheets/1497912.pdf | ||
+ | *https://projets-ima.plil.fr/mediawiki/index.php/IMA4_2018/2019_P5 | ||
+ | |||
+ | |||
+ | *Programmation du STM32 : | ||
+ | **http://jmfriedt.free.fr/tp3stm32_2014.pdf | ||
+ | **https://review.coreboot.org/plugins/gitiles/chrome-ec/+/b7308fdff1300bb4bf0362e71ed022b2dbf92c25/board/nucleo-f412zg/ | ||
+ | **https://www.youtube.com/watch?v=xsYIh1sunso | ||
+ | **https://github.com/davisjp1822/stm32_nucleo_linux |
Version actuelle datée du 21 juin 2021 à 14:59
Sommaire
Présentation générale
Description
La puissance de calcul disponible à bas coût permet d'envisager de réaliser des appareils de mesures complexes en mode DIY (Do It Yourself). Dans ce projet, nous proposons la conception et la réalisation d'un oscilloscope pour des signaux analogiques et numériques (analyseur logique). L'oscilloscope sera constitué d'un microcontrôleur et/ou d'un FPGA, d'une partie d'acquisition de données, de stockage de données (RAM) et éventuellement d'une interface de visualisation.
Objectifs
Concevoir et réaliser un oscilloscope "maison" open source.
Préparation du projet
Cahier des charges
Choix techniques : matériel et logiciel
- Matériel :
- Microcontrôleur STM32.
- Ecran LCD
- Générateur basses fréquences
- Logiciel/Language:
- Langage C
Liste des tâches à effectuer
- Analyser et définir des différents composants nécessaires
- Programmer le CAN pour récupérer et stocker la valeur de l'amplitude à un temps donné
- Programmer l'écran LCD pour visualiser un signal
- Mettre en place une interface pour modifier l'échelle du signal.
Calendrier prévisionnel
Réalisation du Projet
Prologue
Avant tout, nous allons voir comment fonctionne un oscilloscope. Lorsque les oscilloscope numériques n'existaient pas, un oscilloscope fonctionnait avec un canon à électrons qui envoyait un faisceau d'électrons sur deux plaques horizontales qui déviaient le faisceau en fonction de la tension d'entrée. Par la suite, cette méthode n'était plus utilisée et on a changé les oscilloscope par des oscilloscopes numériques. Pour résumer le fonctionnement, un signal d'entrée va être traité par un convertisseur analogique-numérique. Lorsque l'information est convertie, elle est stockée puis ensuite envoyée sur un écran lorsqu'il y a assez de points à afficher.
Semaine 1
Pour commencer, il nous faut réaliser un travail de documentation afin de trouver les composants nécessaires à la réalisation du projet. Premièrement, ce qu'on peut voir c'est que le projet est faisable de différentes manières et des personnes ont partagé leur travail sur internet. Le projet peut se faire à base d'un circuit logique programmable ou d'un microcontrôleur. On a par exemple un utilisateur du site Instructables.com qui a réalisé un mini oscilloscope à base d'un stm32 et d'un écran lcd. Il nous explique qu'il a utilisé le CAN du microcontrôleur pour convertir avec une vitesse de conversion de 1us par échantillon. Il a décidé de fiare un affichage sur un écran lcd avec une résolution de 160x128px.
Pour commencer le projet, nous allons voir les différentes manières de réaliser un oscilloscope. Il existe plusieurs façons de le réaliser comme par exemple à l'aide d'un FPGA ou d'un microcontrôleur STM32. En amont de la partie intelligente de l'oscilloscope, nous avons au moins un convertisseur Analogique/numérique afin d'envoyer la tension mesurée sur le FPGA ou microcontrôleur. Nous avons ensuite un écran LCD qui va permettre d'afficher le signal.
Notre choix de microcontrôleur et de carte de développement s'arrête sur un des deux choix, la NUCLEO F401RE et la NUCLEO F412ZG. Ceux-ci seront tous les deux ouverts à la programmation, disposent déjà d'un ADC et peuvent être équipé d'un écran LCD. Le problème du F401RE est qu'il ne peut gérer qu'une seule channel de l'oscilloscope. Cela veut dire que notre microcontrôleur STM32F401 ne peut réaliser qu'une seule conversion analogique/numérique à la fois.
Semaine 2
Semaine 3 et 4
On a pu remarquer que le CAN du stm32 n'était pas assez rapide comparé à ce que nous voulions. Nous avons donc commencé à nous orienter sur un module externe qui fasse la conversion, le stm32 traite l'information et la transfère dans une RAM et réutilise l'information pour l'afficher sur l'ordinateur via la connection USB. Nous avons donc commencé à chercher un module CAN et une SRAM à relier au stm32. Nous sommes parti au départ sur des modules externes pour carte de développement, mais il y avait peu de modules intéressants. Donc nous avons dû partir sur des circuits intégrés directement. Nous avons choisi un CAN 8bits ayant une vitesse de 50Mech/s. Concernant la RAM, nous avons trouvé une SRAM de 8x1 Mbit, ce qui devrait être largement suffisant pour stocker tous les points nécessaire à l'affichage. En attendant les composants nous avons continué de voir la programmation sur stm32
Semaine 5
Lors de cette semaine nous nous sommes consacré à la réalisation du circuit imprimé qui allait recevoir les deux composants commandé. Nous avons tout d'abord créé un nouveau projet sur fritzing. Le CAN sera relié à un connecteur 1x6 en entrée et 1x9 en sortie. En complément, nous allons avoir 2 capacités de 1uF et une résistance de 25 ohms qui seront utilisés pour le pin 2 et le pin 6. Le problème sur fritzing, c'est qu'il est difficile de trouver le modèle du CAN et de la RAM pour le routage de la carte. Par contre, on peut créer nos propres composants à partir du circuit intégré déjà existant sur Fritzing. Celui-ci peut être modifié pour être au format du boitier du CAN, qui est du SSOP. Le problème est en revanche venu pour la SRAM. En effet, nous avons un format TSOP-II qui n'est pas disponible et il n'y a pas possibilité de trouver un format similaire. Il faut donc trouver une alternative pour pouvoir faire le pcb et trouver les modèles nécessaires pour les composants commandés. Nous avons remarqué que les modèles de composants pouvaient être utilisé sur le logiciel Kicad qui est lui aussi un logiciel de conception électronique. Nous avons ainsi recommencé le schéma de câblage en commençant par le CAN. Cependant, pour le schéma de câblage de la RAM, il est surement incorrect compte tenu d'une mauvaise compréhension de la datasheet.
Documents Rendus
Liens Utiles
- Projets déjà réalisés :
- https://programmer.group/simple-oscilloscope-library-function-based-on-stm32.html
- https://www.gameinstance.com/post/79/STM32-Oscilloscope