Estamos trabajando en un cargador de batería para una bicicleta eléctrica en este momento, pero creamos prototipos con un kit de PIC32MX695F512H y un DAC MCP4706 soldado en un panel de arranque programado con un PICKIT3. Tenemos algunos otros periféricos trabajando hasta ahora, incluyendo una pantalla LCD de 20x4 también sobre I2C, por lo que al menos eso está funcionando. Nuestro problema es que nuestro DAC funciona con y emite 5 V, independientemente de si tenemos o no un Vref conectado. (el chip por defecto es corto Vref a Vdd si no hay nada conectado a los pines)
La salida del DAC se dirige a un seguidor de voltaje que controla un MOSFET de potencia, lo que permite que una cantidad variable de corriente fluya a la batería según las lecturas de un sensor de corriente (en línea) y un sensor de voltaje a través de los terminales de la batería.
Los fragmentos de código relevantes se adjuntan a continuación:
#define DAC 0x60
.
.
.
// Configure I2C registers
void ConfigI2C()
{
//1 USES RD10 AS SCL1 AND RD 9 AS SDA1
/// I2CxCON I2CxSTAT I2CxADD I2CxMSK I2CxTRN I2CxRCV
I2C1BRG=0x186; //390 for 80MHz to 100KHz
I2C1CONbits.A10M=0; //Use 7-bit addresses
I2C1CONbits.DISSLW=1; //disable slew control for standard
I2C1CONbits.ACKDT=0; //Use and ACK not NACK
I2C1ADD=22; //Sets slave address for PIC32
TRISD=0; //Sets Port D to output
I2C1CONbits.ON=1; //turn on I2C
}
.
.
.
// Start
void I2C_start(void)
{
I2C1CONbits.SEN=1; //send start
while(I2C1CONbits.SEN){} //waits till start bit detected
}
void I2C_stop(void)
{
I2C1CONbits.PEN=1; //send stop
while(I2C1CONbits.PEN){} //waits till stop bit detected
}
.
.
.
void SendI2C3(char addrs,char regis, char data)
{
char ack;
I2C_start();
ack=I2C_write(addrs); //Address for LED is 0x50
ack=I2C_write(regis); //0xFE for LED
ack=I2C_write(data); //0x20to0x7F standard
I2C_stop();
}
Acabamos de sacar a Vref. Hemos intentado todas las 8 direcciones que puede tener el tablero, y ningún dado.
¿Alguien tiene algún consejo sobre cómo ayudarnos? Hemos estado atrapados en este problema por un par de días. Gracias.