Projet à microcontrôleur PIC 16F84A / 16F628A
Générateur de signaux arbitraires
Il s'agit d'un GBF numérique, qui fournit 5 formes de signaux :
2 formes de base :
-> continue
-> créneau
et 3 formes libres, qui sont par défaut :
-> sinus
-> triangle
-> rampe
A la mise sous tension, le signal de sortie est de forme continue.
Il faut appuyer sur le bouton poussoir "Sélection" puis sur le bouton poussoir "Sinus" pour passer à la forme sinusoïdale, etc ...
L'amplitude (crête à crête) est réglable de 0 à 10 V avec un potentiomètre.
L'offset (la composante continue) est réglable de -5 V à + 5 V avec un potentiomètre.
La fréquence s'étend de 100 mHz à 10 kHz : un commutateur permet de choisir l'une des 5 gammes de fréquences, et un potentiomètre ajuste la fréquence dans la gamme considérée.
- Signal continu (+ 5 V) :
- Créneau (1 kHz, amplitude crête à crête 10 V, offset 0 V) :
- Sinus (1 kHz, amplitude crête à crête 10 V, offset 0 V) :
- Sinus (100 mHz, amplitude crête à crête 10 V, offset 0 V) :
- Triangle (1 kHz, amplitude crête à crête 10 V, offset 0 V) :
- Rampe (1 kHz, amplitude crête à crête 10 V, offset 0 V) :
Les formes en sinus, triangle et rampe sont reconstituées grâce au convertisseur numérique / analogique DAC08C (8 bits).
128 échantillons définissent une forme :
Le microcontrôleur lit une table située dans la mémoire de programme, et met à jour l'entrée du DAC08C à la cadence du signal d'horloge (broche RA4/T0CKI).
Avec un offset réglé à 0 V et une amplitude réglée au maximum (10 V), cela donne en sortie :
Notez que le µC a besoin de 11 cycles pour mettre à jour l'entrée du DAC, soit 11*0,2 µs = 2,2 µs avec un quartz de fréquence maximale (20 MHz).
128 échantillons / période * 2,2 µs = 281,6 µs / période ou 3,55 kHz.
Cela veut dire que pour une fréquence du signal de sortie inférieure à 3,55 kHz il y a effectivement 128 échantillons.
Au dessus, la forme du signal se dégrade car il y a moins d'échantillons (100 µs / 2,2 µs = 45 échantillons pour 10 kHz).
La fréquence du signal de l'horloge est exactement 128 fois (car 128 échantillons par période) celle du signal de sortie.
Le signal d'horloge est fourni par un astable à amplificateur opérationnel LM318.
Pour couvrir la gamme 100 mHz à 10 kHz, l'astable doit couvrir la gamme 12,8 Hz à 1,28 MHz.
Il faut donc utiliser un amplificateur opérationnel "high-speed" tel que le LM318 qui propose un slew rate d'au moins 50 V / µs.
Le filtre passe bas du deuxième ordre lisse les marches d'escalier, ce qui améliore la forme du signal de sortie pour les signaux de hautes fréquences (au dessus de 3,55 kHz) :
Vous pouvez créer une forme quelconque : il suffit de définir la table des 128 échantillons, et de remplacer dans le code source, l'une des 3 tables (sinus, triangle ou rampe) par cette nouvelle table.