Hallo, ich habe mit einem AD5290 , Referenzspannungsquelle, sowie einem OPAMP + NPN eine einstellbare Spannungsquelle aufgebaut.
Zur Nutzung als Spannungsausgang steht im Datenblatt folgende Formel :
Vw(D) = D/256 * Va. Seite 16 Formel 3. Den rechten Teil kann ich weglassen, da ich nur eine Spannung von 12V habe, ohne negative. Terminal B also auf Masse liegt.
Nun kommen aber leider die wunderlichsten Ergebnisse zustande :
Code 1 = 0.23V Code 2 = 0.33V Code 4 = 0.43V Code 8 = 0.64V Code 16 = 1.04V Code 32 = 1.84V Code 64 = 3.44V Code 128 = 6.66V
bis hierhin könnte ich fast damit leben... aber gebe ich nun folgendes ein :
Code 6 = 6.76V ????
wenn ich dann Code 1 eingebe , dann bleibt der Wert stehen, bei 2 wird dann wieder 0.33V ausgegeben.
Ich habe 2 Platinen, die das selbe tun. Sind die trotzdem bizarr defekt, oder bin ich einfach nur zu blöd?
Hat jemand schon diese Bauteil eingesetzt ?
Ist vieleicht mein Programm Murks? Obwohl die Datenübertragung genauso aussieht wie es laut Datenblatt sein soll.
Codeauszug :
void CLK_DAC(char val) { if ( val == 0x01 ) PORTH = PORTH | 0x08 ; else PORTH = PORTH & 0xf7 ;
}void CS_DAC(char val) { if ( val == 0x01 ) PORTH = PORTH | 0x10 ; else PORTH = PORTH & 0xef ;
}void SDI_DAC(char val) { if ( val != 0x00 ) PORTH = PORTH | 0x04 ; else PORTH = PORTH & 0xfb ;
}void Set_DAC(unsigned char xval) { unsigned char i ;
CS_DAC(0) ; delay_us(10) ; CLK_DAC(0) ; delay_us(10) ;
for ( i = 0 ; i < 8 ; i++ ) {
delay_us(10) ; if ( (xval & 0x80 ) == 0x80 ) SDI_DAC(1) ; else SDI_DAC(0) ;
xval = xval