DAC

12 Anni 2 Mesi fa #1 da Guido
DAC è stato creato da Guido
Ho trovato questo PIC : PIC18F45K22-I/P che integra un modulo per convertire una frequenza da digitale ad analogico, qualche d'uno mi dice come scrivere il codice per il modulo DAC?
Mi spiego come configurarlo per ottenere le frequenze volute.
Grazie

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
12 Anni 2 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: DAC
Ciao Guido,

vedo che stai cercando delle scappatoie dal modulo PWM! :)
La teoria dietro la realizzazione di una onda sinusoidale via PWM o per mezzo di un DAC e' purtroppo la stessa, quindi comunque ci andresti ad urtare. Visto che la puoi sperimentare per mezzo di un modulo PWM ti consiglio di proseguire per questa strada.

In alternativa potresti considerare di realizzare un DAC per mezzo della rete R-2R.
In questo modo eviti di dover comprare un altro PIC.

Uno schema della rete R-2R la trovi al seguente link .

Saluti,

Mauro
Ringraziano per il messaggio: Guido

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
12 Anni 2 Mesi fa - 12 Anni 2 Mesi fa #3 da Guido
Risposta da Guido al topic Re: DAC

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
12 Anni 2 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: DAC
Ciao Guido,

il modulo PWM utilizzato e' PWM 1 quindi l'uscita e' RC2 e non RC0.

Come primo passo fai funzionare il programma.

Relativamente alla modifica che hai fatto non puo' andare perche' il timer scandisce la frequenza di campionamento per la ricostruzione del segnale analogico.

Quello che puoi fare e' che dentro la funzione di gestione dell'interruzione fai il controllo di un pulsante.
se e' premuto esegui la funzione :

set_duty_cycle (sine[sample]);

altrimenti

set_duty_cycle (0);

che in un certo modo e' come spegnere il segnale in uscita.

Come ultimo passo puoi anche cambiare la frequenza di campionamento.

saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
12 Anni 2 Mesi fa #5 da Guido
Risposta da Guido al topic Re: DAC
Mauro intanto grazie, solo che nel codice ritrovo questa indicazione:

// I create a pulse on RC0 to be measured with the scope.
// Used just for debugging the sampling frequency
LATCbits.LATC0 = 1;
LATCbits.LATC0 = 0;

ora faccio le prove che mi hai indicato.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login