¿Por qué mi DAC MCP4822 no genera 0 V?

0

Como parte de mi proyecto de MIDI a CV, estoy usando un MPC4822 ( hoja de datos ) dos canal 12 bit DAC. Después de mucho trabajo, tengo todo funcionando según lo planeado, pero dado que incluso cuando se inicializa con valores que deberían dar una salida de 0v, el mínimo que veo en cada Vout es 0.56v. Falta la octava media. ¿Por qué sucede esto?

    void loop() {
    mode = digitalRead (modePin);      // GET MODE
    if (mode != prevMode) {
    setVoltage (DAC1, 0, 1, 0);       // INITIALISE BOTH DAC CHANNELS FOLLOWING MODE SWITCH
    setVoltage (DAC1, 1, 1, 0);
    }
    prevMode = mode;
    mode ? mode1() : mode2();

    }
    ................

    void setVoltage(int dacpin, bool channel, bool gain, unsigned int mV)
    {
    unsigned int command = channel ? 0x9000 : 0x1000;

    command |= gain ? 0x0000 : 0x2000;
    command |= (mV & 0x0FFF);

    SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));
    digitalWrite(dacpin,LOW);
    SPI.transfer(command>>8);
    SPI.transfer(command&0xFF);
    digitalWrite(dacpin,HIGH);
    SPI.endTransaction();
    }

    
pregunta Sir Cute

2 respuestas

0

No está utilizando condensadores de desacoplamiento. Eso suele estar causando tal imprecisión. Coloque al menos un condensador de desacoplamiento de 100 nF en MPC4822.

    
respondido por el Chupacabras
0

ya que su vref está configurado internamente, trataría de recortarlo variando el voltaje o trataría simplemente de usar un diodo en serie que enviaría la polarización al pin de tierra. El uso de un dac con un solo suministro tampoco ha dado resultados precisos. La vez que usé ese chip usé un proyecto de suministro de +/- 5 v y tuve un divisor de voltaje entre el suministro de +/- que iba a mi pin Vss. Creo que el pin Vss estaba alrededor de -0.6V así.

    
respondido por el drtechno

Lea otras preguntas en las etiquetas