1hz sinus sinus 100Hz sinus 1000Hz sinus 5000Hz
sinus 25.000 Hz Carre 10Hz carre 5000Hz Carre 25KHz
Triangle 1000hz Triangle 20Khz Denbt de scie1000Hz Dent de scie 20Khz


fichier source C18 :
18F46K22_DDS_STCXDRM_120705_ADC5b_C18.c
chargeur :
18F46K22_test_DAC5b.hex

Version autonome DDS avec 18F26K22 utilisant son DAC5bits


Le PIC18F26K22 en DIP28 , contient aussi un DAC 5 bits avec reference VDD ou 4.906V ou 2,048V ou 1,024V
au depart la liaison interface 2T RS232 est conservée pour le developper des modifications/ameliorations:

Version TERMINAL RS232 :
Projet MC18 regroupant les dvers fichiers utilises
Rappel du
mode de calcul consigne DDS => frequence


via le terminal VBRAY (RS232)


fichier macro :
18F26k22_DDS.tmf

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..

Rajout touche de fonction Amplitude :
A chaque appui on change la reference du DAC5bits, soit 1,024 2,048 ou 4,096 volts
ainsi que 2 ampli OP Rail to Rail montes en suiveur. Apres le 1er suiveur , un potar de reglage fin est inseré pour
reglage de 0 à Amplitude maxi selectionnée, Le 2em Ampli OP permet une sortie basse impedance (Zs >= 750 ohms).
A suivre .. ampli de puissance avec alim symetrique +-12V pour sortir quelques volts sur 50 Ohms mini.

Rajout touche de fonction Potar pour reglage valeur consigne DDS
On ne peut pas utiliser directement la valeur Analogique 0-1024 points pour definir une frequence entre 1Hz et 40000Hz!
donc usage specifique d'un potar lineaire classique , course de 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: pour sortir du mode potar et donc utiliser la derniere consigne reglee

Touche Taux : permet le mode specifique Rectangle
Un potar de reglage taux , delivrant 0 à 1024 points / 4 soit 0 à 255, permet de
regler le rapport ON/OFF de la periode , entre 1% et 99%.
L'appui sur Taux permet une lecture du potar et donc rafraichit le mode Rectangle

Schema :

images/t_dds_18fx6k22_dac5b_130308.jpg
DDS_18Fx6K22_DAC5b_130307.DSN

TRicks & Tips (Problemes rencontres :
MPLAB IDE ne sauvegarde pas tout le contexte dans un projet..
J'ai perdu 2H00 à rechercher pourquoii je n'avais plus la meme relation consigne DDS et Frequence obtenue
j'avais 819Hz au lieu des 1000Hz prevus.. une coche de trop dans l'option Compilateur C18 : Integer Promotion !
ce qui mettait, apres decorticage de l'ASM géneré pour la boucle DDS , 35 cycles au lieu de 27 cycles..
Apres decochage de l'option,tout rentre dans l'ordre : boucle DDS tourne en 27 cycles soit 2,7µS
avec Q=10MHz et PLL 4x activée.

Adaptation d'impedance:
Le double ampli OP rail to rail utilisé TLC27M2, n'a pas un slew rate suffisant pour le mode Rectangle ou Carre.
D'autre part , le niveau bas de la sinusoide est un peu emoussé, et on ne peut pas utiliser une charge de sortie
inferieure à 750 ohms, sinon grosse distorsion prtie negative de la sinusoide
soluces possibles :
- Trouver d'autre ampli avec meilleur Slew Rate (V/µS) et Rajouter un offset DC sur l'entree -
- Utiliser directement un ampli de puissance DC-100KHz avec Zs=50 ohms mini, avec alim symetrique +-12V.
Je pensais pouvoir utiliser -REF du DAC pour imposer un niveau bas de 0,5V,
mais probleme de datasheet, ou imcomprehension de ma part ? question posée sur le forum futura....

A noter que l'interface 2T RS232 convient tres bien pour cette appli (38400bauds) et ne coute quasiment rien.
testé OK aussi avec un cordon Trendnet RS232-USB TU-89.


Version 18F26K22 DDS autonome
avec interfaces LCD 2x16 cars + clavier 5 boutons poussoirs
et RS232

versus 17/03/2013
En plus des commandes possibles via le terminal RS232, l'ajout de 5 boutons poussoirs et d'un ecran LCD 2x16 car
permet une utilisation autonome.(sans PC!)

images/t_DDS_18Fx6K22_DAC5b_LCD_Touches_130314.jpg par defaut, au lancement programme :
mode Sinus, Consigne 1000Hz, Amplitude Maxi 2,048 V
Deplacement dans le menu par BP droit ou BP Gauche
SINUS
CARRE
TRIANGLE
Dent de SCIE
Reverse Dent de SCIE
Rectangle

sous -menus :
Reglage TAUX 2 à 98% avec BP - +
Reglage max DAC 1, 2, ou 4V avec BP + ou -
Choix de Frequence 1 parmi 64 avec BP + ou -
Regalge FIN de frequence à 1Hz pres BP + ou -
Touche Validation pour chaque reglage ou mode.

gamme F=1Hz à 45 000 Hz
Amplitude reglable de 0% à 100% de la sortie DAC
100% pour 1,024 ou 2,048 ou 4,096V

Commande AUSSI via un terminal RS232 !
images/Proto_in_run.jpg GeneBF_18F46K22_AD9835_5BP_a



Affichage sur 1 LCD 2x16 cars :
La Ligne 1 du haut sert au libellé du MENU
La ligne 2 du bas, à afficher ou modifier des valeurs
2 BP (
BP4 Gauche , BP5 Droite ) pour se deplacer horizontalement dans le menu , comportant 10 items.
2 BP (
BP1 Haut , BP2 Bas) pour se deplacer à l'interieur du sous menu ou pour modifier une valeur par + ou -
1 BP(
BP3 Valid) pour valider l'action (et retour à la boucle infinie DDS)

Platine recevant les 5 BP + le "OU" à diodes vers RB0 BP4 Gauche , BP5 Droite , BP1 Haut , BP2 Bas , BP3 Valid

Merci à C.BERNARD pour l'etude du Circuit imprimé.

La boucle DDS etant une boucle sans fin ,On ne peut pas faire en plus du pooling, gaspillage de temps!
pour tester un eventuel appui sur un BP.
Il faut donc traiter la sortie de boucle DDS par un Event :
Les 5 BP sont relies par un "OU" à diodes sur l'entree RB0, interruptible.
Ce qui permet un traitement immediat des BP,en sortant de la boucle infine DDS
( nota : la boucle DDS est de 27 cycles à 10MHz x 4(PLL) soit en 2,7µS).
De plus, la laison RS232 reste toujours operationelle , via L'interruption sur arrivée d'un caractere sur l'UART.
qui, elle aussi, permet de sortir de la boucle DDS , et traiter la commande clavier.

Les fonctionalites du menu , resumée ici :
GeneDDS_Chart_Menu_LCD.pdf

Partie DDS PIC18F

images/DDS_Menu_chart_1.jpg images/DDS_Menu_chart_2.jpg images/DDS_LCD_choix_freq_Fixe_Reglage_fin.jpg
Reglage grossier Frequence avec
choix 1 parmi 63, puis reglage fin


Documents :
Signaux obtenus
Liste du materiel
Schema ISIS :
DDS_18F26K22_DAC5b_LCD_Touches_130314.DSN
Chargeur :
18F26K22_DDS_DAc5b_RS232_BP_RB0_130316.hex
macro terminal Vbray :
18F26k22_DDS.tmf

La sortie DAC n'est pas exploitable directement, c'est pourquoi un ampli OP suiveur, rail to rail, est connecté sur cette sortie
Il alimente un potar de 10K pour le reglage fin d'amplitude , sur lequel un autre suiveur est connecté pour delivrer le signal sous faible
impedance , la charge doit etre ici >=750 ohms pour ne pas perturber le signal
Le Menu permet 3 niveaux de sortie maxi 100% : 1,024 cr à cr, 2,048V cr à cr et 4,096V cr à Cr.






Test AD9850 DDS avec 18F26K22 (27 dec 2019)

programme compilé avec MikroC version 7.60

Fosc interne à 16 MHz
UART1 à 19200 bauds


Hardware :

images/t_Hardware_links_18F26K22_AD9850.gif
Base pour MCU 18F26K22 ou 18F27K42 liaison BASE -> AD9850 module

Base et module alimentés sous 5V
utilisation des rangées de pins +5V,0V, SCL, SDA et RC5


Projet:
_18F26K22_AD9850_DDS_Test_MikroC.zip
PIC18F26K22_AD9850_DDS_test_2019.c
P18F26K22_Fosc_Interne_16MHz.cfgsch


visu terminal :

Test AD9850 avec PIC18F26K22 16MHz
Test en mode detaillé , envoi byte par byte
Init à 1Hz
Init à 1000Hz
Init à 5000Hz
Init à 20KHz
Init à 200KHz
Init à 1 MHz
Init à 1Hz


Envoi d'une consigne de frequence toute les 5 secondes
et tourne en boucle


Video de ce test:

18F26K22_AD9850_Test_191227.webm














Top Page

Retour Home Page (index)