maj: 05/04/2015
V.O. 10 mai 2013
catégorie : application microcontroleur PIC
Generateur
BF Sinus utilisant un PIC18F46K22 (Multiformes d'ondes)
et un circuit specialisé :AD9850
Home Page ( Index )
Version double DDS avec
18F46K22 et AD9850 en C18
voir aussi version
detaillée avec AD9835
pour la partie Interfacage avec operateur
Pilotage
via terminal RS232 ou via LCD 2x16 et Joystick
Schema (Isis):
![]() |
schema ISI Lite :DDS_18F46K22_DAC5b_LCD_AD9850 |
Le Module DDS :
![]() |
![]() |
![]() |
module HC-SR08 DDS_AD9850 | Schema | timing |
La datasheet du AD9850 precise dans
leTiming , la connection de D0,D1,D2
et j'ai vu pas mal de schema d'application respectant
cette preconisation,...
or cela fonctionne aussi SANS AUCUNE connections
sur le port de donnee D0,D1,D2
du module , je precise .. car je pars sur l'hypothese que
les pins du module correspondent aux pins de l'AD9850 ?
Reste à onfirmer.
Synoptique de la
Gestion du Gene DDS:
Une fois calibré, il suffit de taper au clavier la
frequence voulue sur 5 digits . 00001 à 20000. avec une
precision de 1/45 em de Hz pour le DDS PIC
ou de 00000001 Hz à 40000000 Hz ( 40Mhz) sur 8 digits
S=Sinus une periode est definie
dans une table de 256 valeurs contenant les amplitudes.
sinus de 0 à 2* PI
C=Carre
T=Triangle
D=Dent de scie. La descente est sur 1/256 de la
periode.
et une table de travail en RAM pour les signaux Dent de
scie Inverse et Rectangle à Rapport cyclique variable .
R Pour la fonction Reverse
dent de scie , la table originale est copiee à
l'envers dans la table de travail
X= Rapport cyclique
variable du signal RECTANGLE ,
valeur 0 à 1024,su 4 digits , introduite au clavier +
terminateur=CR
Valeur recadrée sur 0-255 pour parcourir un index dans
la table SIGNAL de 256 valeur
Le taux varie de 1 (car 0 = pas de signal!) à 254 ( soit
99% du temps à 1) et affichage en % correspondant.
A chaque appui de X , la valeur du taux est raffraichie
La frequence elle est celle fixee par la derniere valeur
envoyée via le terminal.,elle n'est pas modifie par le
Taux!
A= mode
AD98xx
un message d'invite à regler la frequence
apparait sur l'ecran
Saisir 8 digits 00000001 à 45000000 suivi de #013 (=CR)
revenir ensuite sur une forme Sinus,caree..PIC DDS
P= pour Phase : Permet de regler la phase du
signal Sinus AD9850 de 0 à 360° en 32 pas de 11.25°.
utilisation de figures de lissajoux sur le scope, avec un
Sinus PIC 1000Hz sur la voie Y et le Sinus 1000Hz de
l'AD9850 pour faciliter la mesurede dephasage.
Nota:
la sortie AD98xx n'est affectée QUE LORS D'UN CHANGEMENT
DE CONSIGNE AD98xx.
Des frequences fixes sont affectées à des touches de
fonctions, mais à tout moment
on peut saisir n'importe quelle valeur au
clavier, en respectant le format sur 5 digits et terminé
par Enter (CR)
ex: 15625<CR> pour 15625Hz ou 00008<CR> pour
8HZ
De meme on peut changer la forme d'onde :
SINUS,CARRE,TRIANGLE, Dent de SCIE, Reverse Dent de SCIE
et *Rectangle..
Nota:
La sortie PIC DDS est affectée par TOUTES les manoeuvres
sur le Joystick ou Terminal RS232 ...
Je me sers du Terminal Vbray et affectation de valeurs
predefinies sur les touches
de fonctions
exemple de config : 18F46k22_DDS_AD9850_joystick_130519.tmf
programme de test : 18F46K22_AD9850_DDS_test..c
Chargeur : 18F46K22_AD9850_DDS_Test_130605.hex
Usage d'un mini-Joystick
pour plus de details ...voir Appli 18F46K22 avec AD9835
lien
sur le produit
Potar
joystick :
Il est utilisé pour les réglages : valeur consigne DDS
PIC , consigne DDS AD98xx et consigne du Taux Rectangle
On ne peut pas utiliser directement la valeur Analogique
0-1024 points pour definir une frequence entre 1Hz et
20MHZ !
avec une course angulaire < 270° .
Potar au milieu (zone morte de 45 à
55%)
- Pas d' evolution de consigne et Led Stop allumée
Potar en dessous de 45% ,
- Diminution de la consigne avec un pas variant
exponentionnellement avec l'angle du potar.
- Led Down allumée.
Potar en dessus de 55% ,
-Augmentation de la consigne avec un pas variant
exponentionnellement avec l'angle du potar.
-Led UP allumée
Affichag de la consigne rafraichit en permanence
Touche Valid: par appui sur BP Joystick,
pour sortir du mode potar et donc utiliser la derniere
consigne reglee
Mode Taux : permet le mode
specifique Rectangle , ( reglage Duty
cycle du signal rectangulaire)
-Augmentation de la consigne avec un pas variant
exponentionnellement avec l'angle du potar.
valeur 2 à 1022 points , affichage en % , puis on le
reduit à 0-255 pas
car a periode du signal rectangulaire est sur 8 bits
limite basse à 1 points ,limite haute à 254
on on a donc au mini du potar un taux de 1/255 etat ON et
254/255 etat OFF
à 50% on a 127/255 etat ON et 127/255 etat OFF
à 100% on a 254/255 etat ON et 1/255 etat OFF
nota: le signal
Carré , par définition, est toujours à 50% ON et 50%
OFF
Source C18:
18F46K22_DDS_130519_ADC5b_AD9850_LCD_RS232_Joystick_C18.c
Chargeur : 18F46K22_DDS_AD9850_joystick_130519.hex
L'amplitude PIC DDS (1,3V eff) est constante
de 1Hz à 20000Hz à -0,4db pres , 36Khz à -1,2db
(couplage via C=100µF sur le multimetre Veff).
L'amplitude du signal en sortie bufferisé de l'AD9850
est seulement de 0.37V efficace centre
sur une composante continue de 0.5
Signaux
AD9850 :
A remarquer,pour F=1Mhz, que le
choix de sonde oscillo interfere beaucoup pour l'interpretation
du signal...
![]() |
![]() |
![]() |
|
signal 100 KHz sinus et carré | Signal 1Mhz sinus (Sonde A) et carré (Sonde A) | Signal 1Mhz Sinus (sonde A) et Carré (sonde B) |
Sonde A= cordon coaxial , Sonde B Hitachi 1/1
Calculs & Resultats
Mesures :
Niveau de sortie (à vide) , à 1000Hz :
Sinus 0.370V efficaces 1,08V cr cr ,
Carré 2.446V efficaces 5V cr cr
Amplitude de sortie Sinus quasiment constante à 0db jusqu'à
environ 4MHz ,
puis tombe à -3db vers 10Mhz , -6db (divisé par 2) à 15Mhz,
-20db (divisé par 10!) à 30Mhz
par rappor à l'AD9835 qui est déja à -3db vers
3,5Mhz.
Amplification
du signal de sortie AD9850
Des essais avec des AOP classiques ont montré une nette
insuffisance de bande passante ...
Choix sur un LM6172
double ampli OP RAPIDE en Dip8 !
produit Gain x bande passante > 1000 MHz
slew rate de 3000V/µSec !
faible impedance de sortie.
Inconvenient : necessite une alim symetrique +- 5V
Résumé des tests dans cette feuille xls.
On obtient 1,45V eff , soit 4,2V cr cr en sortie sur
R=47 ohms .. jusqu'à 10 MHz !
Bande passante : 12MHz à -3dB.. comme sur l'entrée = sortie
AD9850
Le condensateur d'entree bloque la composante continue et de ce
fait
1Hz se retrouve à -0,4dB au lieu de 0,0
Le 1er ampli a un gain de 4,12 (mesuré !)
Un potar de reglage amplitude est intégré avant le 2em ampli OP
buffer de sortie
L'impedance reelle de sortie est bien inferieure à 47 ohms..
puisque l'amplitude ne bronche pas lorsqu'on met cette charge sur
la sortie.
Par contre pour proteger l'ampli contre les court-circuit, j'ai
prevu d'inserer 50 ohms en serie sur la sortie ,
ce qui laissera tout de meme une impedance de sortie <= à 75
Ohms
Les premiers tests on été faits avec
4piles de 1,2V pour generer la tension de -5V !
Integration du module TRACO
POWER pour faire le +5
et -5V (debit maxi possible 100mA)
sachant que sur le -5V la conso au repos est de 4,6mA et atteint
19,8mA avec la sortie sur une charge de 47 ohms .
Circuit imprimé principal :
un grand Merci à Christian Bernard pour la réalisation du
Circuit
![]() |
![]() |
Typon | (C) Christian Bernard |
Mise en boitier :
pas tout à fait fini ! manque l'integration du circuit imprimé
partie AD9850 dans le boitier
![]() |
![]() |
![]() |
![]() |
Face AVANT, joystick +reglage Amplitudepartie PIC DDS et 'AD9850. | vue de dessus ..espace prevu pour DDS AD9850 |
3 sorties + RS232 + socle pour bloc alim 9V |
Face ARR. |
Liste
Materiel + :
EMBASE (pour alim) CHASSIS A ECROU Ø2,5mm PLASTIQUE - ref:
ALF341F 2.00 (ElecDif)
ANTELEC SUPPORT TULIPE 40 POINTS LARGE - ref: COANA640BSE 1.70
(ElecDif)
PS2 Thumb Joystick module for Arduino 4.0
(Miniinthebox)
Coffret WCAH2851 160x95x55 Wellman 7,5 (AG-Electronic)
1 embase DB9 femelle, 3 embases BNC isolées .
1 ampli OP LM6172IN/NOPB chez RadioSpares ou
Elecdif ~5 à 6..
1 module TRACO POWER TMA 0505D ref:RS191-4966
chez RadioSpares (5,00)
Connection ICSP pour MAJ, modifications:
![]() |
![]() |
Position du connecteur 5br ICSP | necessite 4 fils ! |
Interface RS232 .... voir ICI
Attention:
- Certains afficheurs LCD2x16 ont la connectique
située EN HAUT de l'affichaur..
mais elle est pour la plupart, EN BAS de l'afficheur
- laisser un peu de jeu autour du cabochon joystick.. celui ci
doit etre completement libre
pour les mouvements Horizontaux ou Verticaux, pour rester au
centre si non solicité.
-revoir eventuelement les seuils de commutation Joystick pour
equilibrer les courses Jaut,Bas ou Droite Gauche
Circuit Imprimé :
04/04/2015
![]() |
![]() |
![]() |
|
connecteur coté carte principale | Carte fille DDS | DDS_AD9835_130811.LYT |