- 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
Problema a far funzionare l'MCP4728
0
voti
L'ho provato, e mi da i seguenti messaggi a terminale:
0
voti
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?
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?
0
voti
finora nemmeno compilava...
Ora prova quello di Adafruit:
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); }
0
voti
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.
0
voti
l'impegno di chi sin'ora ha contribuito dovrebbe essere supportato da qualche altra informazione.alien75 ha scritto:(...) Ragazzi ma vi sembra normale che nonostante tutti queste botta e rispostat non siamo riusciti a far funzionare l'MCP?
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.
-

WALTERmwp
30,2k 4 8 13 - G.Master EY

- Messaggi: 8986
- Iscritto il: 17 lug 2010, 18:42
- Località: le 4 del mattino
0
voti
Ecco un'immagine del mio circuito, ne allego una copia.
Ho collegato /LDAC a massa.
Ed ecco una il codice che ho usato:
Mi succede che leggo le tensioni impostate da codice solo per qualche istante poi tornano a 0V.
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.
Chi c’è in linea
Visitano il forum: Nessuno e 6 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



