maj: 12/04/2014
V.O. 22/04/2013
catégorie : application microcontroleur PIC
Generateur
BF Sinus utilisant :
PIC18Fx6K22 (Multiformes d'ondes) et un AD9835
Home Page ( Index )
Version
autonome DOUBLE DDS : 18F46K22 DAC5b + 5
BP + LCD2X16 et DDS AD9835 (
C18).
Version autonome DOUBLE DDS :
18F46K22 DAC5b + JOYSTICK + LCD2X16
et DDS AD9835 ( C18)
Version Double MIXTE 18F46K22 :
avec DDS PIC18 + DDS AD9835 ,
gestion via LCD et 5BP +
RS232
Schema :
On peut donc avoir 2
sorties simultanees avec ce montage
La sortie Sinus ( ou autre forme) du DDS PIC18F de 1Hz à 20 000
Hz par pas de 1Hz
La sortie Sinus exclusivement ( ou Carré par hardware) du AD9835
de 1Hz à 20 000 000 Hz par pas de 0,1Hz
DDS_18F46K22_DAC5b_LCD_AD9835_Touches_130422.DSN
![]() |
![]() |
![]() |
Liste du materiel | vue des sous ensembles | in run , version 5BP + potars |
Evolution du Hardware :
Passage sur la version DIP 40 car trop juste en E/S avec le
modele 28 pins
Le circuit specialisé SPARKFUN AD9835 est
relié au PIC en liaison simili SPI Software
via les lignes RC3,RC4,RC5 pour initialiser l'AD9835 et lui
envoyer une consigne frequence
(Frequence #1 sous la forme d'un mot de 32 bits
Evolutions possibles : Choix Frequence #2 , envoi consigne de
dephasage ...avec lignes RC0,RC1,RC2
Le coefficent de calibration AD9835 ,immuable, est de 85,89934592
Ce qui signifie qu'il faut initialiser l'accumulateur à 85 899
pour avoir 1 000 Hz.
Evolution
du Programme :
Rajout de 2 items dans le menu horizontal (Gauche, droite)
Mode DDS AD9835 :
dans ce cas,On
ne pilote plus le DDS 18F.. la sortie DAC5b retombe à 0 !
rappel: la boucle DDS PIC18F demande 100% des ressources du PIC
et on se concentre alors sur l'AD9835 ,
qui ne voit sa sortie coupée QUE LORSQU'ON RAFRAICHIT LA
CONSIGNE FREQUENCE
vu qu'il est autonome , independant par rapport au PIC.
la ligne 2 du LCD affiche la frequence en cours delivree par
l'AD9835
des qu' on appui sur BP Up+ or BP Down -
Affichage ligne 1 LCD: " Reglage Freq AD9835
"
Usage de BP Up Incrementation ou BP Down ,decrementation du mot
32 bits accumulateur AD9835,
Cette incrementation correspond au pas choisi.
Affichage Ligne 2 LCD :
les BP G et BP D permettent alors un reglage du pas
d'incrementation
indice du pas , variant de 1 à 8 est affiché
à gauche de la ligne 2 , suivi du sigle > ou
< suivant increm. ou decrem
et de la FREQUENCE en Hz correspondante.( et non pas de
l'accumulateur).
Relation entre indice et pas :
de 4^0 à 4^7 soit un pas de 1 à 16384
Lorsque le pas est trop important, et risque de deborder le mini
ou le maxi
affichage à gauche de "? " , signifiant en
butée de reglage, reduire alors le pas pour pouvoir
aller jusqu'aux limites
min (86Hz) ou max (20Mhz)
![]() |
|
Evolution possible accumulateur et Freq | log sur RS232 Ecran terminal , toutes les modif via BP & LCD sont consignees |
Liaison
ICSP Circuit GBF DDS et Pickit3
Connecteur male 5 broches
sur le circuit imprimé GBF
Connecteur femelle 6 plots coté Pickit3
4 rallonges Femelle-Male pour relier les 2
![]() |
![]() |
Les potentiometres Freq et Taux
sont maintenant operationels AUSSI avec le mode LCD.(et RS232)
Entrer via Menu "Reglag Freq Potar",
le potar centré on affiche la frequence (fixe) en cours avec le
signe =
Le potar au dela de 50 % on affiche > valeur de frequence ..
celle ci augmentant de facon exponentielle suivant l'angle du
potar au dela de 50%
Le potar en deca de 50 , on affiche < valeur de frequence..
qui diminue d efacon exponentielle suivant l'angle du potar en
deca de 50%
Traitement
associé:
Le
potentiometre Taux ( reglage Duty cycle du signal rectangulaire)
Traitement lineaire de la valeur issue du potar 0 à1023
points reduit à 0-255 pas
la periode du signal rectangulaire etant 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% du potar 127/255 etat ON et 127/255 etat OFF
à 100% du potar 254/255 etat ON et 1/255 etat OFF
nota: le signal carré est
toujours à 50% ON et 50% OFF
Nota: les 2
possibilites de reglage FREQ et TAUX co-existent avec les
reglages par BP+ ou BP-
Captures menu LCD
1ere ligne : item du Menu
2emligne : valeur de la frequence
fichiers associes :
source C18 + hex + others
18F46K22_DDS_AD9835_5BP_130421.zip
![]() |
![]() |
![]() |
AD9835 avec DAC sur 10bits et le PIC sur 5bits | 50Khz sortie AD9835 et 1Khz sur le PIC | le meme signal 50Khz dilaté |
On remarque la qualité
superieure de l'AD9835 , comportant un DAC de 10 bits soit 1024
pas ( au lieu de 5bits 63 pas)
de son accumulateur sur 32 bits ( 24 bits sur PIC) et de son
horloge à 50Mhz ( 10 Mhz effectif sur le PIC au niveau du cycle)
Modif pour la saisie de frequence AD9835 via liaison
UART1 avec terminal RS232
La valeur de frequence pouvant atteindre (et depasser 20Mhz) il
faut 8 digits , au lieu de 5 pour le DDS 18F limité à 20Khz
Si on entre dans le mode AD9835 via la Touche macro
"AD9835" ( envoi "A" <CR>)
Celle ci est decodée et impose le "mode DDS AD9835"
sur la 1ere ligne LCD,
attend 8 cars pour definir et charger la frequence dans l'AD9835
puis celle ci est recopiée en ligne 2 du LCD et sur l'ecran.
Le terminal RS232 est
maintenant completement redondant avec l'interface LCD+5BP
fichier macro VBray : 18F46k22_DDS_AD9835.tmf
Usage
d'un mini-Joystick au lieu des 5 B.P. (boutons
poussoirs)
La problematique reside dans le fait qu'il faut
conserver une interrupt permettant de sortir de la boucle de fond
infinie 'DDS PIC18F"
Comment generer une ou des interruptions avec une valeur
analogique : potar Horizontal , permettant d'appeler et se
deplacer dans le menu LCD
Via les Comparators !
Configuration des comparateurs :
Les 2 potars du joystick sont connectes respectivement sur RA0 et
RA1
La valeur ADC RA0 sert de Vin- pour les 2 comparateurs
On utilisera l'entree RA3 analogue pour fixer un seuil bas à 1/3
de Vcc=5V comme Vin+ pour le comparateur 2.
Le seuil haut sera definit par Vref interne de 4,096V sera
utilisé comme Vin+ pour le comparteur 1
de sorte , avec ces 2 comparateurs de declencher 2 evenements
C1IF = gauche C2IF=Droite.
RA1 entree ANA, recevra l'info du potar Vertical , qui servira,
en mode pooilng, (il n'y a que 2 comparateurs dans ce
PIC18F46K22!)
pour gerer la consigne frequence ou Taux.
Le bouton poussoir centrale du Joystick restant connecté sur
RB0, pour valider una action.
schema de configuration et connection des
comparators du PIC18F46K22.
Programme de test de la partie Joystick...
18F46k22_Joystick_ADC_test_Comparateur_130401.c
Schema:
![]() |
![]() |
schema au format ISIS (DSN) | 1er tests apres cablage C.I. version Joystick |
Integration du Joystick
dans l'application PIC18 DDS et AD9835:
explicage:
Programme (C18) :
18F46K22_DDS_source
C18
Realisation Finale :
![]() |
![]() |
![]() |
Réalisation Circuit Imprimé / | (c) Christian BERNARD | C.I. monté |
version
Alternative :
Usage des interruptions Comparators pour naviguer dans le menu
Usage de interruption RB0 pour rentrer dans les Reglages
Synoptique Gestion du Gene DDS:
Source C18 ,hex : 18F46K22_DDS_AD9835_joystick-130510.zip
fichier
Macro terminal: 18F46k22_DDS_AD9835_joystick_130510.tmf
fichier log : 18F46K22_DDS_LCD_5b_AD9835_joystick_130511.log
Mode d'emploi
Etude pour
Amplification signal de sortie DDS AD9835 (ou AD9850) :
Etude theorique avec LT1363 Ampli High Speed 1000V/µS
Zs=100 ohms , niveau de sortie 5V cr à Cr, et Bande
Passante de 0 à 40MHz à +3db... en theorie !
![]() |
![]() |
Ampli_LB_LT1363.asc | Test reel : Job to do ! |
Ampli avec
composants discret : 3 transitors
Test Simulation :
![]() |
![]() |
![]() |
Ampli_3T_push_pull.asc | Signal In et Out | Bande passante |
TEST REEL
:
Une forte boucle de contre reaction (AC) et une compensation de
gain HF sur l'etage d'entree,
permet d'augmenter la bande passante , ainsi qu'une autre boucle
de contre reaction avec composante continue
pour stabiliser et faciliter le reglage du point de
fonctionnement.
On obtient un Gain en tension global de 6,66 (4V cr cr en sortie
avec 0,6V en sortie de l'AD9835), soit +16dB
Nota: l'AD9835 delivre 1,2V à vide (sur sa charge de 300 ohms)
mais seulement 0,6V connectée à l'ampli.
La resistance de 300 ohms sur l'entree de l'ampli evite la
degration du signal AD9835.
L'amplitude decroissant rapidement au dessus de 4MHz , on
limitera l'usage à 6Mhz correspondant à -6db
de la band passante. soit 2V cr cr en sortie.
Le gain en puissance permet de pouvoir connecter une charge de
100 ohms sans perte d'amplitude.
L'impedance de sortie reste inferieure à 50 ohms.
La bande passante limitée permet aussi de filtrer les
harmoniques , ainsi
Le signal de sortie à 10Mhz est bien meilleur que celui
d'entrée ..
en resumé: Bande passante à -3dB : 1hz à 4Mhz pour un
gain de +16dB en tension.
INSUFFISANT !
Solution finalement
retenue pour l'ampli :
voir version avec AD9850 ICI
Au depart,
prevision sur un AD9850
...si j'arrive à
le souder sans le cramer !
Bref j'y rennonce et me jette sur un circuit precablé :
Sparkfun DDS AD9835 Breakout
! avec
pins au pas de 2,54mm
Disponible ici :
mini module générateur de signal 26€ sparkfun Base "AD9835"
Référence : BOB-09169 32.29 € TTC chez Lextronic
AD9835 moins performant , mais plus simple : Caracteristiques 10-bit DAC pour une bonne definition ( precision en anglais ?) 2 registres de frequences , accessibles via un bit de selection 4 Registres de phase , accessibles via 2 bits de selection SPI communication serielle 3 fils , via un simple jeu de commande Alimentation 5V Consommation de 5 à 40mA Interface SPI en niveaux 5V Dimensions: 3.048cm w 2.54cm Poids : 4.3 gr Selection de Frequence ou selection de Phase possible par Hardware via Pins disponibles ou via Software. Quartz de 50Mhz Signal de sortie de 1,2V centré sur 0.6V DC : - disponible sur sortie coaxiale - ou 2 trous disponible pour insertion de pins de sortie : OUT et GND |
![]() |