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.
Problema a far funzionare l'MCP4728
Moderatori: MassimoB,
WALTERmwp,
xyz
0
voti
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);
}
}
1
voti
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
Boiler
1
voti
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.
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.
0
voti
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.
0
voti
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.
Chi c’è in linea
Visitano il forum: Nessuno e 4 ospiti