Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema a far funzionare l'MCP4728

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteMassimoB, Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[151] Re: Problema a far funzionare l'MCP4728

Messaggioda Foto Utentealien75 » 21 nov 2021, 20:36

Rimane un problema: tutti gli AD9833 generano 1KHz pur avendo impostato da programma
frequenze diverse e non capisco perché.
Proverò a misurare con l'oscilloscopio le uscite a vuoto e magari il problema si mette a posto.
Altro problema consiste nel fatto che non visualizzo il segnale sinusoidale nell'uscita del primo TDA corrispondente al segnale identificato da programma con la lettera "O" (la fondamentale). Forse c'è un contatto sbagliato.
Avatar utente
Foto Utentealien75
18 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 416
Iscritto il: 31 lug 2011, 14:08

0
voti

[152] Re: Problema a far funzionare l'MCP4728

Messaggioda Foto Utentealien75 » 24 nov 2021, 22:30

alien75 ha scritto:Rimane un problema: tutti gli AD9833 generano 1KHz pur avendo impostato da programma
frequenze diverse e non capisco perché.
Proverò a misurare con l'oscilloscopio le uscite a vuoto e magari il problema si mette a posto.
Altro problema consiste nel fatto che non visualizzo il segnale sinusoidale nell'uscita del primo TDA corrispondente al segnale identificato da programma con la lettera "O" (la fondamentale). Forse c'è un contatto sbagliato.


Riesco a variare la frequenza con un ciclo for() soltanto dal canale O al canale A, dal B in poi non riesco ad impostare la frequenza desiderata ma appare solo 1000Hz nell'oscilloscopio.
Non capisco il perche di questo comportamento:
Codice: Seleziona tutto
#include <MD_AD9833.h>
#include <SPI.h>
#include <Adafruit_MCP4728.h>
#include <Wire.h>

Adafruit_MCP4728 mcp;

int x;




// Pins for SPI comm with the AD9833 IC
#define DATA  11  ///< SPI Data pin number
#define CLK   7  ///< SPI Clock pin number
#define FSYNC 6  //(FSYNC in AD9833 usage)
#define FSYNC1 5
#define FSYNC2 3
#define FSYNC3 2
#define FSYNC4 1
#define FSYNC5 0



MD_AD9833  O(DATA, CLK, FSYNC);
MD_AD9833  A(DATA, CLK, FSYNC1);
MD_AD9833  B(DATA, CLK, FSYNC2);
MD_AD9833  C(DATA, CLK, FSYNC3);
MD_AD9833  D(DATA, CLK, FSYNC4);
MD_AD9833  E(DATA, CLK, FSYNC5);

void setup(void)
{
  O.begin();
  A.begin();
  B.begin();
  C.begin();
  D.begin();
  E.begin();
  //Serial.begin(115200);
  /*while (!Serial)
    delay(10); // will pause Zero, Leonardo, etc until serial console opens

  Serial.println("Adafruit MCP4728 test!");*/
 
  // Try to initialize!
  /*if (!mcp.begin(0x60)) {
    Serial.println("Failed to find MCP4728 chip");
    while (1) {
      delay(10);
    }
  }*/
  mcp.begin(0x60);
}


void loop(void)
{
  mcp.setChannelValue(MCP4728_CHANNEL_A, 4500);
  mcp.setChannelValue(MCP4728_CHANNEL_B, 4500);
  mcp.setChannelValue(MCP4728_CHANNEL_C, 4500);
  mcp.setChannelValue(MCP4728_CHANNEL_D, 4500);
  for (x = 500; x < 4501; x=x+100) {
  delay(100);
  //Serial.println("Fatto!");
  O.setFrequency(MD_AD9833::CHAN_0, x);
  O.setMode(MD_AD9833::MODE_SINE);
  A.setFrequency(MD_AD9833::CHAN_0, x);
  A.setMode(MD_AD9833::MODE_SINE);
  B.setFrequency(MD_AD9833::CHAN_0, 3000);
  B.setMode(MD_AD9833::MODE_SINE);
  C.setFrequency(MD_AD9833::CHAN_0, 4000);
  C.setMode(MD_AD9833::MODE_SINE);
  D.setFrequency(MD_AD9833::CHAN_0, 5000);
  D.setMode(MD_AD9833::MODE_SINE);
  E.setFrequency(MD_AD9833::CHAN_0, 6000);
  E.setMode(MD_AD9833::MODE_SINE);
  }
}
Avatar utente
Foto Utentealien75
18 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 416
Iscritto il: 31 lug 2011, 14:08

1
voti

[153] Re: Problema a far funzionare l'MCP4728

Messaggioda Foto Utenteboiler » 25 nov 2021, 23:19

Senza conoscere i dettagli del circuito e dell'implementazione, il sospetto numero uno secondo me è un problema di timing. Inserisci una manciata di millisecondi di attesa tra l'impostazione dei diversi canali. I pin di FSYNC vengono commutati correttamente?

Boiler
Avatar utente
Foto Utenteboiler
19,4k 5 7 13
G.Master EY
G.Master EY
 
Messaggi: 3666
Iscritto il: 9 nov 2011, 12:27

1
voti

[154] Re: Problema a far funzionare l'MCP4728

Messaggioda Foto UtenteGioArca67 » 26 nov 2021, 9:27

Potrebbero anche essere problemi di connessioni, come hai già riscontrato in altri punti in precedenza.

Senza per ora cambiare nulla in hardware usa questa procedura
https://github.com/MajicDesigns/MD_AD98 ... 3_Test.ino

(devi scaricare anche il processore dei comandi:
https://github.com/MajicDesigns/MD_cmdProcessor)

Adatta le righe18,19, 22 e 23 (di MD_AD9833_Test.ino ovviamente) per la tua situazione
Cambia la 20 con il PIN dove è collegato l'FSYNC: fai girare lo sketch con un AD9833 alla volta e verifica se funzionano.
Avatar utente
Foto UtenteGioArca67
1.156 3 7
Expert
Expert
 
Messaggi: 969
Iscritto il: 12 mar 2021, 9:36

0
voti

[155] Re: Problema a far funzionare l'MCP4728

Messaggioda Foto Utentealien75 » 27 nov 2021, 20:44

GioArca67 ha scritto:Potrebbero anche essere problemi di connessioni, come hai già riscontrato in altri punti in precedenza.

Senza per ora cambiare nulla in hardware usa questa procedura
https://github.com/MajicDesigns/MD_AD98 ... 3_Test.ino

(devi scaricare anche il processore dei comandi:
https://github.com/MajicDesigns/MD_cmdProcessor)

Adatta le righe18,19, 22 e 23 (di MD_AD9833_Test.ino ovviamente) per la tua situazione
Cambia la 20 con il PIN dove è collegato l'FSYNC: fai girare lo sketch con un AD9833 alla volta e verifica se funzionano.


Ho scaricato i due sorgenti, ma mi da dei problemi a riconoscere la dichiarazione della variabile "nullptr" e non
so perché.
Tutti gli altri TDA funzionano.

Sto facendo quindi altri test sul circuito: riporto il circuito ultimato (naturalmente con soli due canali per semplicità)
in realtà sono 6 canali.


Come potete vedere ho pilotato il volume dell'uscita finale della sommatoria dei 6 segnali con il CHD dell'MCP.
Ho constatato, mettendo la sonda dell'oscilloscopio nel punto in cui i segnali si sommano, che si vede tutto a perfezione a monitor. Mettendo nell'uscita del terzo TDA invece non vedo nessun segnale stabile.
Non capisco che problemi abbia il terzo TDA.
Ricapitolando mi ritrovo con un problema al TDA che regola il volume della sommatoria dei segnali, ed un problema al terzo AD9833 che non genera la frequenza come da programma.
Tutti gli altri TDA funzionano.
C'è inoltre un problema di amplificazione dato che impostando le uscite dell'MCP a 4500 (valore massimo) ottengo un segnale debole in uscita di 250mVpicco massimi che vanno direttamente alla presa AUX dello stereo.
Avatar utente
Foto Utentealien75
18 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 416
Iscritto il: 31 lug 2011, 14:08

0
voti

[156] Re: Problema a far funzionare l'MCP4728

Messaggioda Foto UtenteGioArca67 » 27 nov 2021, 21:21

Problema di collegamenti forse?
Avatar utente
Foto UtenteGioArca67
1.156 3 7
Expert
Expert
 
Messaggi: 969
Iscritto il: 12 mar 2021, 9:36

0
voti

[157] Re: Problema a far funzionare l'MCP4728

Messaggioda Foto Utentealien75 » 27 nov 2021, 23:45

GioArca67 ha scritto:Problema di collegamenti forse?


Ho finito di controllarli proprio ora i collegamenti: non sembra ci siano problemi di collegamento.
Ora oltre a non funzionare il terzo, non funziona neppure il quarto AD9833.
Non capisco, il funzionamento è instabile.
Poi non capisco che cos'abbia il TDA che regola la sommatoria dei segnali.
Odo poi un segnale sulle casse dello stereo pur avendo messo tutti gli AD9833 ad OFF: questo è proprio strano.
Avatar utente
Foto Utentealien75
18 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 416
Iscritto il: 31 lug 2011, 14:08

Precedente

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti