Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
tptns2018_2 [2018/03/21 13:21] bvandepo |
tptns2018_2 [2018/03/21 13:33] (Version actuelle) bvandepo |
||
---|---|---|---|
Ligne 132: | Ligne 132: | ||
- On souhaite visualiser sur une même fenêtre mais sur 2 axes différents (car les échelles sont différentes) l'impulsion et l'impulsion quantifiée pour 7 échantillons. Vous devez donc utiliser **simuADC()** pour quantifier échantillon par échantillon tout le signal impulsion et stocker le résultat dans un tableau impQuant. Simulez un CAN ayant une plage de conversion de 0/3,3V sur 4 bits (déclarez vmin, vmax, nbbits comme constantes globales). | - On souhaite visualiser sur une même fenêtre mais sur 2 axes différents (car les échelles sont différentes) l'impulsion et l'impulsion quantifiée pour 7 échantillons. Vous devez donc utiliser **simuADC()** pour quantifier échantillon par échantillon tout le signal impulsion et stocker le résultat dans un tableau impQuant. Simulez un CAN ayant une plage de conversion de 0/3,3V sur 4 bits (déclarez vmin, vmax, nbbits comme constantes globales). | ||
- | - Créez une nouvelle fonction dans le fichier tparchi1.cpp. | + | - Créez une nouvelle fonction **void code_tparchi2(void)** dans le fichier tparchi1.cpp. |
- Afficher alors les deux signaux demandés. | - Afficher alors les deux signaux demandés. | ||
- | - Superposer ensuite l'échelon et l'échelon quantifié. | + | - Faites de même ensuite pour l'échelon et l'échelon quantifié. |
- Vous pouvez constater que l'impulsion et l'échelon sont à la limite de la dynamique du CAN. Comme lors de l'utilisation de montage à AOp (souvenez-vous du télémètre !), il est préférable de centrer les signaux d'entrée sur la tension $(vmax+vmin)/2$ plutôt que sur 0V. Modifiez les signaux impulsion et echelon en conséquence. Quelle est la nouvelle valeur de repos des signaux quantifiés ? | - Vous pouvez constater que l'impulsion et l'échelon sont à la limite de la dynamique du CAN. Comme lors de l'utilisation de montage à AOp (souvenez-vous du télémètre !), il est préférable de centrer les signaux d'entrée sur la tension $(vmax+vmin)/2$ plutôt que sur 0V. Modifiez les signaux impulsion et echelon en conséquence. Quelle est la nouvelle valeur de repos des signaux quantifiés ? | ||
- Générez un signal sinusoïdal d'amplitude 1,5V, de fréquence 1 kHz correctement centré. Dans une nouvelle fenêtre, visualisez ce signal, ce signal quantifié sur 4 bits et ce signal quantifié sur 8 bits (dynamique 0/3,3V). | - Générez un signal sinusoïdal d'amplitude 1,5V, de fréquence 1 kHz correctement centré. Dans une nouvelle fenêtre, visualisez ce signal, ce signal quantifié sur 4 bits et ce signal quantifié sur 8 bits (dynamique 0/3,3V). | ||
Ligne 142: | Ligne 142: | ||
- | === Ajout des convertisseurs dans la fonction calculReponseFiltreEnLigne() === | + | === Ajout des convertisseurs dans la méthode ReponseEnLigne() === |
- | Comme cela a été dit en introduction de ce TP (relisez là si vous avez oublié...) il faut maintenant inclure les convertisseurs analogique<->numérique dans **calculReponseFiltreEnLigne()**. Voici les opérations à effectuer: | + | Comme cela a été dit en introduction de ce TP (relisez là si vous avez oublié...) il faut maintenant inclure les convertisseurs analogique<->numérique dans **ReponseEnLigne()**. Voici les opérations à effectuer: |
- Déplacer la méthode **void ReponseEnLigne(echantillon_t * e, echantillon_t * s, int nbPts);** vers la classe FiltreTrace: | - Déplacer la méthode **void ReponseEnLigne(echantillon_t * e, echantillon_t * s, int nbPts);** vers la classe FiltreTrace: | ||
Ligne 157: | Ligne 157: | ||
=== Prise en compte de l'offset numérique des échantillons=== | === Prise en compte de l'offset numérique des échantillons=== | ||
- | - Tester à nouveau le fonctionnement de **calculReponseFiltreEnLigne()** sur le filtre passe-bande de paramètres H0=2, f0=1000, Q=0,7. Il a été numérisé par transformée bilinéaire avec Fech=48000 : b[3]={0.1703 , 0.0000 , -0.1703}; a[3]={1.0000 , -1.8140 , 0.8297}; | + | - Tester à nouveau le fonctionnement de **ReponseEnLigne()** sur le filtre passe-bande du second ordre de paramètres H0=2, f0=1000, Q=0,7. Il a été numérisé par transformée bilinéaire avec Fech=48000 : b[3]={0.1703 , 0.0000 , -0.1703}; a[3]={1.0000 , -1.8140 , 0.8297}; |
- Que constatez-vous ? | - Que constatez-vous ? | ||
- | - Ce phénomène est provoqué par l'offset numérique de ek_quant (sa valeur de repos est différente de 0). Modifiez **filtreUnEchantillon()** pour respecter le schéma de la P11 du cours. | + | - Ce phénomène est provoqué par l'offset numérique de **ek_quant** (sa valeur de repos est différente de 0). Modifiez **filtreUnEchantillon()** pour respecter le schéma de la P11 du cours. |
- | - Comme lors de l'utilisation de montage à AOp (souvenez-vous du télémètre !), il est préférable de centrer les signaux d'entrée sur la tension $(vmax+vmin)/2$ plutôt que sur 0V. Modifiez les signaux impulsion et echelon en conséquence. Vérifiez que le fonctionnement du filtre est maintenant correct. | + | - Comme lors de l'utilisation de montage à AOp (souvenez-vous du télémètre !), il est préférable de centrer les signaux d'entrée sur la tension $(vmax+vmin)/2$ plutôt que sur 0V. Modifiez les signaux impulsion et échelon en conséquence. Vérifiez que le fonctionnement du filtre est maintenant correct. |
- Vérifiez que les deux premiers filtres fournissent les mêmes réponses impulsionnelles et indicielles que précédemment. | - Vérifiez que les deux premiers filtres fournissent les mêmes réponses impulsionnelles et indicielles que précédemment. | ||