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 UtenteWALTERmwp, Foto Utentexyz

0
voti

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

Messaggioda Foto UtenteIlGuru » 14 nov 2021, 13:07

Foto Utenteboiler queste sono tutte cose che nel video del canale youtube "Tutti elettronici senza alcuna competenza" non si vedono quindi perché farle?
Carico sulle uscite, impedenza d'ingresso, uscite flottanti, masse che vanno messe in comune, alimentazioni con una resistenza serie, ma che roba è?
Arduino è: collego due fili, il led lampeggia => sono bravo.
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
5.482 2 10 13
G.Master EY
G.Master EY
 
Messaggi: 1924
Iscritto il: 31 lug 2015, 23:32

0
voti

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

Messaggioda Foto Utentealev » 14 nov 2021, 13:57

IlGuru ha scritto:queste sono tutte cose che nel video del canale youtube "Tutti elettronici senza alcuna competenza" non si vedono quindi perché farle?

Non solo elettronica, comunque :roll:
viewtopic.php?f=16&t=29619
Avatar utente
Foto Utentealev
5.990 2 9 12
free expert
 
Messaggi: 6283
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

0
voti

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

Messaggioda Foto Utentealien75 » 14 nov 2021, 21:41

Dunque ho tolto l'MCP dalla scheda millefori e l'ho collegato ad un ArduinoDue (dato che togliere lo YUN sarebbe stato un casino con tutti quei fili) usando una bred-board.
Riporto di seguito il codice usato senza la parte che gestisce i 6 generatori di segnali:
Codice: Seleziona tutto
#include <Adafruit_MCP4728.h>
    #include <Wire.h>

    Adafruit_MCP4728 mcp;

    void setup(void) {
      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);
        }
      }


      Serial.print("Imposto i canali...");
      mcp.setChannelValue(MCP4728_CHANNEL_A, 500);
      mcp.setChannelValue(MCP4728_CHANNEL_B, 500);
      mcp.setChannelValue(MCP4728_CHANNEL_C, 1024);
      mcp.setChannelValue(MCP4728_CHANNEL_D, 200);
      Serial.println(" Fatto");
    }

    void loop() { delay(1000); }


Questo lo schema:


Ho collegato tutte le masse dell'MCP assieme.
L' ARDUINODUE e l'MCP sono alimentati con il cavo di programmazione collegato al Portatile.
Dalle misure su CHA, CHB, CHC e CHD risultano le tensioni da programma: CHA 580mV, CHB 580mV, CHC 1200mV, CHD 2300mV tutti a carico con la resistenza da 200 ohm + il trimmer.
Se posiziono il trimmer al centro o a sx o a dx non cambia niente, le tensioni rimangono quelle indicate sopra.
Non ho impostato esplicitamente VREF manipolando i registri dell' MCP come si può vedere dal codice.
Avatar utente
Foto Utentealien75
1 1 4 7
Sostenitore
Sostenitore
 
Messaggi: 597
Iscritto il: 31 lug 2011, 14:08

0
voti

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

Messaggioda Foto Utenteboiler » 14 nov 2021, 22:19

Decisamente meglio, così si può lavorare.
Dalle misure su CHA, CHB, CHC e CHD risultano le tensioni da programma: CHA 580mV, CHB 580mV, CHC 1200mV, CHD 2300mV tutti a carico con la resistenza da 200 ohm + il trimmer.

Le tensioni non sono proprio quelle che ci si aspetterebbero, ma sono coerenti tra loro.
Il motivo è che evidentemente in alimentazione non hai 5 V, ma 4.75 V.

Le tensioni di uscita teoriche sarebbero così:
V_1 = \frac{4.75 \mathrm{V} \cdot 500}{4096} = 579.8 \mathrm{mV}

V_2 = V_2 =579.8 \mathrm{mV}

V_3 = \frac{4.75 \mathrm{V} \cdot 1024}{4096} = 1188 \mathrm{mV}

V_4 = \frac{4.75 \mathrm{V} \cdot 200}{4096} = 232 \mathrm{mV}

Che sono abbastanza vicine a quelle che misuri tu (immagino che quei 2300 mV siano un errore di battitura).

Quindi il DAC funziona correttamente ed è stabile sotto carico.
L'alimentazione però non è adeguata ad essere usata come Vref.
Quando tutto funzionerà correttamente, ti conviene passare al riferimento interno (eventualmente attivando il gain di 2 in uscita).

Il problema che riscontravi prima non ha nulla a che vedere con il DAC. Probabilmente hai sbagliato a fare un collegamento. Il fatto che misurassi i 4.75 V (che abbiamo appurato essere la tua tensione di alimentazione) è sintomatico. Probabilmente da qualche parte c'è o un collegamento sbagliato o un cortocircuito accidentale.

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

0
voti

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

Messaggioda Foto UtenteGioArca67 » 14 nov 2021, 22:24

Bene!
Un pezzo funziona

comunque

Codice: Seleziona tutto
     mcp.setChannelValue(MCP4728_CHANNEL_D, [b]200[/b]);


.....

Dalle misure su CHA, CHB, CHC e CHD risultano le tensioni da programma: CHA 580mV, CHB 580mV, CHC 1200mV, CHD 2300mV


Una delle due non va. Hai sicuramente riportato uno 0 in più o in meno.

Ok.

Ora vai di tda. Al PIN 6 collega un partitore
Codice: Seleziona tutto
                ___  5V
                 |
                .--.
                |  |
                |  |    R1 = 620 ohm
                |  |
                '--'
                 |
PIN 6 ------------------
                 |     |
                .--.   |
                |  |<---     R2 = 5k ohm variabile
                |  |
                |  |
                '--'
                 |
                .--.
                |  |
                |  |    R3 = 620 ohm
                |  |
                '--'
                 |
                ---   GND
         
Avatar utente
Foto UtenteGioArca67
4.580 4 6 9
Master EY
Master EY
 
Messaggi: 4592
Iscritto il: 12 mar 2021, 9:36

0
voti

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

Messaggioda Foto Utentealien75 » 15 nov 2021, 11:50

Ho collegato il partitore come da disegno sopra e rilevo il segnale allegato.
Riporto di seguito il sorgente usato:
Codice: Seleziona tutto
#include <MD_AD9833.h>
#include <SPI.h>
#include <Adafruit_MCP4728.h>
#include <Wire.h>

Adafruit_MCP4728 mcp;

int pinLed = 3;





// 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!
  //mcp.begin();
  if (!mcp.begin(0x60)) {
    Serial.println("Failed to find MCP4728 chip");
    while (1) {
      delay(10);
    }
  }
  Serial.print("Imposto i canali...");
  mcp.setChannelValue(MCP4728_CHANNEL_A, 2500);
  mcp.setChannelValue(MCP4728_CHANNEL_B, 404);
  mcp.setChannelValue(MCP4728_CHANNEL_C, 1024);
  mcp.setChannelValue(MCP4728_CHANNEL_D, 500);
  Serial.println(" Fatto");             
}


void loop(void)
{
    O.setFrequency(MD_AD9833::CHAN_0, 500);
    O.setMode(MD_AD9833::MODE_SINE);
    A.setFrequency(MD_AD9833::CHAN_0, 404);
    A.setMode(MD_AD9833::MODE_SINE);
    B.setFrequency(MD_AD9833::CHAN_0, 500);
    B.setMode(MD_AD9833::MODE_SINE);
    C.setFrequency(MD_AD9833::CHAN_0, 5000);
    C.setMode(MD_AD9833::MODE_SINE);
    D.setFrequency(MD_AD9833::CHAN_0, 1000);
    D.setMode(MD_AD9833::MODE_SINE);
    E.setFrequency(MD_AD9833::CHAN_0, 1500);
    E.setMode(MD_AD9833::MODE_SINE); 
}


Variando il potenziometro non succede niente, il segnale rimane quello della foto: l'ampiezza di uscita non varia
Allegati
segnale.jpg
Avatar utente
Foto Utentealien75
1 1 4 7
Sostenitore
Sostenitore
 
Messaggi: 597
Iscritto il: 31 lug 2011, 14:08

0
voti

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

Messaggioda Foto Utenteboiler » 15 nov 2021, 11:59

alien75 ha scritto:e rilevo il segnale allegato.

Dove lo rilevi?

Misura con un multimetro la tensione tra pin 6 e GND mentre provi diverse posizioni del potenziometro.
Cosa misuri?

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

0
voti

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

Messaggioda Foto UtenteGioArca67 » 15 nov 2021, 13:05

Ma perché 6 AD9833? Servono proprio?
Non te ne basta uno al momento?
Rendi le cose il più semplici possibili, poi aggiungi.
Avatar utente
Foto UtenteGioArca67
4.580 4 6 9
Master EY
Master EY
 
Messaggi: 4592
Iscritto il: 12 mar 2021, 9:36

0
voti

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

Messaggioda Foto Utentealien75 » 15 nov 2021, 13:11

boiler ha scritto:
alien75 ha scritto:e rilevo il segnale allegato.

Dove lo rilevi?

Misura con un multimetro la tensione tra pin 6 e GND mentre provi diverse posizioni del potenziometro.
Cosa misuri?

Boiler


Rilevo quel segnale nell'uscita del TDA (PIN 8).
Ho fatto le misure che mi hai chiesto tra pin 6 e GND e rilevo le seguenti misure:

Codice: Seleziona tutto
POT a MAX = 4,36V
POT in posiz. CENTRALE = 2,60V
POT a MIN = 0,38V


Variando la posizione del cursore non varia l'ampiezza del segnale sul pin 8.
Avatar utente
Foto Utentealien75
1 1 4 7
Sostenitore
Sostenitore
 
Messaggi: 597
Iscritto il: 31 lug 2011, 14:08

0
voti

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

Messaggioda Foto Utentealien75 » 15 nov 2021, 13:13

GioArca67 ha scritto:Ma perché 6 AD9833? Servono proprio?
Non te ne basta uno al momento?
Rendi le cose il più semplici possibili, poi aggiungi.


Avevo già fatto le misurazioni e le prove con uno e funzionava, nel momento in ciu ho aggiunto altri 5 canali
iniziò a non funzionare più.
Avatar utente
Foto Utentealien75
1 1 4 7
Sostenitore
Sostenitore
 
Messaggi: 597
Iscritto il: 31 lug 2011, 14:08

PrecedenteProssimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti