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

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

Messaggioda Foto Utentealien75 » 2 nov 2021, 20:46

L'ho provato, e mi da i seguenti messaggi a terminale:

Codice: Seleziona tutto
NAME     Vref   Gain  PowerDown  DACData
DAC0          0       0            10             4085
EEPROM0  0       0             0               4095
DAC1          0       0             10            4095
EEPROM1  0       0             0               4095
DAC2          1       1             11            4095
EEPROM2   0      0              0               4095
DAC3          1       1             11              4095
EERPOM3  0       0              0               4095
Avatar utente
Foto Utentealien75
1 1 4 8
Sostenitore
Sostenitore
 
Messaggi: 590
Iscritto il: 31 lug 2011, 14:08

0
voti

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

Messaggioda Foto UtenteGioArca67 » 2 nov 2021, 23:36

Che tensione misuri alle uscite del DAC?
A che piedino dello YUN è collegato?
Avatar utente
Foto UtenteGioArca67
4.580 4 6 9
Master EY
Master EY
 
Messaggi: 4591
Iscritto il: 12 mar 2021, 9:36

0
voti

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

Messaggioda Foto Utentealien75 » 3 nov 2021, 5:59

Le ternsioni sono fluttuanti sui 4 canali del DAC.
L'MCP è collegato lalo YUN atttraverso SCL ed SDA.
Avatar utente
Foto Utentealien75
1 1 4 8
Sostenitore
Sostenitore
 
Messaggi: 590
Iscritto il: 31 lug 2011, 14:08

0
voti

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

Messaggioda Foto UtenteGioArca67 » 3 nov 2021, 6:46

I valori mostrati a terminale cambiano? O rimane sempre 4095?
Avatar utente
Foto UtenteGioArca67
4.580 4 6 9
Master EY
Master EY
 
Messaggi: 4591
Iscritto il: 12 mar 2021, 9:36

0
voti

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

Messaggioda Foto Utentealien75 » 3 nov 2021, 13:59

Il valore rimane sempre 4095, non cambia niente.
I valori da terminale non cambiano rimangono gli stessi.
Ragazzi ma vi sembra normale che nonostante tutti queste botta e rispostat non siamo riusciti a far funzionare l'MCP?
Avatar utente
Foto Utentealien75
1 1 4 8
Sostenitore
Sostenitore
 
Messaggi: 590
Iscritto il: 31 lug 2011, 14:08

0
voti

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

Messaggioda Foto UtenteGioArca67 » 3 nov 2021, 15:37

finora nemmeno compilava...

Ora prova quello di Adafruit:
Codice: Seleziona tutto
// Basic demo for configuring the MCP4728 4-Channel 12-bit I2C DAC
#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()) {
    Serial.println("Failed to find MCP4728 chip");
    while (1) {
      delay(10);
    }
  }


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

void loop() { delay(1000); }
Avatar utente
Foto UtenteGioArca67
4.580 4 6 9
Master EY
Master EY
 
Messaggi: 4591
Iscritto il: 12 mar 2021, 9:36

2
voti

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

Messaggioda Foto Utenteboiler » 3 nov 2021, 15:47

alien75 ha scritto:Ragazzi ma vi sembra normale che nonostante tutti queste botta e rispostat non siamo riusciti a far funzionare l'MCP?

Viste le premesse, sì.

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

0
voti

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

Messaggioda Foto UtenteGioArca67 » 3 nov 2021, 15:55

alien75 ha scritto:non siamo riusciti a far funzionare l'MCP?


La libreria base di Arduino presuppone che ci sia un collegamento fra un PIN di uscita ed il PIN \LDAC del DAC, che se non è messo a massa non abilità la scrittura verso le uscite.

La libreria Adafruit (la prima che ti ho suggerito), invece sfrutta il bit \UDAC nel messaggio verso il DAC, tale bit bypassa questo comportamento per le scritture di un canale alla volta.
Avatar utente
Foto UtenteGioArca67
4.580 4 6 9
Master EY
Master EY
 
Messaggi: 4591
Iscritto il: 12 mar 2021, 9:36

0
voti

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

Messaggioda Foto UtenteWALTERmwp » 5 nov 2021, 10:15

alien75 ha scritto:(...) Ragazzi ma vi sembra normale che nonostante tutti queste botta e rispostat non siamo riusciti a far funzionare l'MCP?
l'impegno di chi sin'ora ha contribuito dovrebbe essere supportato da qualche altra informazione.
Magari non serve a niente ma tu fallo: inserisci una(o più) fotografia del set-up, del sistema che stai provando, così da renderlo visibile nel suo insieme.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8986
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

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

Messaggioda Foto Utentealien75 » 5 nov 2021, 16:04

Ecco un'immagine del mio circuito, ne allego una copia.
Ho collegato /LDAC a massa.
Ed ecco una il codice che ho usato:

Codice: Seleziona tutto
#include <Wire.h>
#include "MCP4728.h"

MCP4728 dac;

void setup()
{
    Serial.begin(115200);  // initialize serial interface for print()

    Wire.begin();
    dac.attach(Wire, 14);
    dac.readRegisters();

    dac.selectVref(MCP4728::VREF::VDD, MCP4728::VREF::VDD, MCP4728::VREF::INTERNAL_2_8V, MCP4728::VREF::INTERNAL_2_8V);
    dac.selectPowerDown(MCP4728::PWR_DOWN::GND_100KOHM, MCP4728::PWR_DOWN::GND_100KOHM, MCP4728::PWR_DOWN::GND_500KOHM, MCP4728::PWR_DOWN::GND_500KOHM);
    dac.selectGain(MCP4728::GAIN::X1, MCP4728::GAIN::X1, MCP4728::GAIN::X2, MCP4728::GAIN::X2);
    dac.analogWrite(MCP4728::DAC_CH::A, 1110);
    dac.analogWrite(MCP4728::DAC_CH::B, 2220);
    dac.analogWrite(MCP4728::DAC_CH::C, 3330);
    dac.analogWrite(MCP4728::DAC_CH::D, 4440);

    dac.enable(true);

    dac.readRegisters();
    printStatus();
    delay(5000);
}


void loop()
{
    static int count = 0;
    if (++count > 4000)  count = 0;

    dac.analogWrite(count, count, count, count);

    delay(10);
    dac.readRegisters();
    printStatus();
}

void printStatus()
{
    Serial.println("NAME     Vref  Gain  PowerDown  DACData");
    for (int i = 0; i < 4; ++i)
    {
        Serial.print("DAC");
        Serial.print(i, DEC);
        Serial.print("   ");
        Serial.print("    ");
        Serial.print(dac.getVref(i), BIN);
        Serial.print("     ");
        Serial.print(dac.getGain(i), BIN);
        Serial.print("       ");
        Serial.print(dac.getPowerDown(i), BIN);
        Serial.print("       ");
        Serial.println(dac.getDACData(i), DEC);

        Serial.print("EEPROM");
        Serial.print(i, DEC);
        Serial.print("    ");
        Serial.print(dac.getVref(i, true), BIN);
        Serial.print("     ");
        Serial.print(dac.getGain(i, true), BIN);
        Serial.print("       ");
        Serial.print(dac.getPowerDown(i, true), BIN);
        Serial.print("       ");
        Serial.println(dac.getDACData(i, true), DEC);
    }
    Serial.println(" ");
}


Mi succede che leggo le tensioni impostate da codice solo per qualche istante poi tornano a 0V.
Allegati
sinth.jpg
Avatar utente
Foto Utentealien75
1 1 4 8
Sostenitore
Sostenitore
 
Messaggi: 590
Iscritto il: 31 lug 2011, 14:08

PrecedenteProssimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti