« Projet DDS » : différence entre les versions

De Wiki_du_Réseau_des_Electroniciens_du_CNRS
Aller à la navigationAller à la recherche
Wiotte fabrice (discussion | contributions)
Wiotte fabrice (discussion | contributions)
Page blanchie
Balise : Blanchiment
 
(4 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
<div class="subtab">[[Accueil|Home]] - [[Le groupe DDS]] - [[Le_groupe_DDS_:_Projet DDS|Projet DDS]]</div>
<hr/>


[[Fichier:Double dds board 2019.png|300px|thumb|left]]
'''Programme Python pour la liaison USB-Série :''' Pour charger les fréquences et les amplitudes des sorties RF j'ai utilisé Pyserial et Python 3.7
Ci-dessous le code Python éditer avec l'IDE Thonny ( pour les débutants comme moi c'est pas mal ;) !)
il suffit d'installer Python 3.7 puis d'importer la bibliothèque PySerial.
 
IMPORTANT : le code c pour transmettre et recevoir les données via l'UART ci-dessous un exemple:
  <syntaxhighlight lang="c">
  void write_immediate()  //AD9959
  { 
  //frequency DDS0//
  frequency_value_f1_DDS0 = temp[3]<<24|temp[2]<<16|temp[1]<<8|temp[0];
  FTW0_DDS0 = frequency_value_f1_DDS0 * 4294967296 / 500000000; //Convert to command for DDS  //ad9959
 
  frequency_value_f2_DDS0 = temp[7]<<24|temp[6]<<16|temp[5]<<8|temp[4];
  FTW1_DDS0 = frequency_value_f2_DDS0 * 4294967296 / 500000000; //Convert to command for DDS  //ad9959
 
  frequency_value_f3_DDS0 = temp[11]<<24|temp[10]<<16|temp[9]<<8|temp[8];
  FTW2_DDS0 = frequency_value_f3_DDS0 * 4294967296 / 500000000; //Convert to command for DDS  //ad9959
 
  frequency_value_f4_DDS0 = temp[15]<<24|temp[14]<<16|temp[13]<<8|temp[12];
  FTW3_DDS0 = frequency_value_f4_DDS0 * 4294967296 / 500000000; //Convert to command for DDS  //ad9959
  ....
  }
  //*****************************************************************************
  //
  //          The UART interrupt handler.
  //
  //*****************************************************************************
  void UARTIntHandler(void)
{
    uint32_t ui32Status;
    ui32Status = UARTIntStatus(UART0_BASE, true);
    UARTIntClear(UART0_BASE, ui32Status);
 
  while(UARTCharsAvail(UART0_BASE)) //loop while there are chars
    {
      //send data to uC via USB/Uart for change one output frequency ( 4 octets)
      temp[t++] = UART0_DR_R; //Read from buffer
          if(t >...)
            {
              write_immediate();
              t = 0; //Reset read length
            }
    }
  }
  </syntaxhighlight>
  Code Python:  [[Fichier:code python.pdf]]
  Ci-dessous Code Python avec l'interface graphique [[Fichier:code python avec l'interface numérique.pdf]]
[[Fichier:Interface tkinter.png|500px|thumb|left]]
=Projet diffusion Raman expérience condensat CHROME=
Conception et réalisation d'un ensemble de deux pilotes acous-optiques d'une puissance unitaire de 2W. L'objectif est de régler le
décalage en fréquence de deux faisceaux "Raman" corrélés en phase. Réalisation de deux sources RF@80MHz en corrélation de phase avec
une fréquence centrale de 80MHz. Pilotage sur liaison USB-Série@10MHz (en cours de tests). Les signaux RF sont synchronisés sur une
même horloge@500MHz à l'aide d'un DDS AD9959 qui dispose de plusieurs sorties RF basse puissance (5dBm).Les circuits sont implémentés
sur des cartes au format Europe et insérées dans un châssis 19 pouces entièrement réalisé à l'atelier d'électronique.
[[Fichier:carte DDS ad9959.png|400px]]
=Projet condensat STRONTIUM antenne RF 375-400MHz=
Projet Antenne RF: RF CARD 375 to 400MHz Frequency Sweep control for RF antenna.
Le but est de générer des sweeps de fréquence arbitraire pour une antenne RF dans la gamme de fréquence 375 à 400 MHz avec des pas de qqs KHz.
J'utilise deux DDS , l'AD9911 pour asservir un VCO ultra low noise à 1GHZ (ROS-1000-519+) minicircuits et le second l'AD9858 pour générer
les fréquences arbitraires. Ce dernier est “clocké” grâce au 1GHz provenant du VCO sur la carte.
J'utilise également le MSP430F169 pour piloter les deux DDS en mode SPI 2wire single bit (bus SPI commun, un master et deux slaves en utilisant le chip select (CS) de chaques DDS).
[[Fichier:Générateur de rampe.png]]
Caractéristiques
Programmation en mode SPI  maître-esclave 2-wire mode single-bit.
L’AD9911 et l’AD9858 en mode esclaves via les Chip Select (CS).
Horloge commune le ROS-1000C-519@1GHz.
Pente de la rampe de fréquence programmée via l’interface CVI.
TTL externe commande rampe  up et rampe  down.
Nécessite un signal d’horloge externe 10MHz  5dBm.
Une sortie RF (AD9858) programmable 0-400MHz  0dBm.
=DDS pour détection synchrone et asservissement PDH sur cavité ultra stable=
Système de lock laser sur cavité ultra stable voir synoptique ci-dessous: DDS card for PDH AD9959 on uC TM4C123 and LCD 2x16 and encodeur
[[Fichier:PDH_AD9959.png|600px]]
Programme ARM for PDH [[Fichier:Programme uC TM4C123GH6PM for PDH module.pdf]]
Même si l'encodeur est utilisé dans un programme en c je fourni pour les amateurs de VHDL le programme pour l'encodeur numérique.VHD [[Fichier:encodeur.pdf]]
'''Carte partie Lock et carte partie DDS'''
[[Fichier:Carte lock PDH.png|500px]]
[[Fichier:PDH card.png|500px]]

Dernière version du 12 octobre 2024 à 11:33