Re: Routine für serielle AD-Wandler Kategorie: Sonstige Hardware (von Tobias - 26.03.2008 17:24) | |
Als Antwort auf Re: Routine für serielle AD-Wandler von Marcel - 25.03.2008 18:21
| |
Hallo Marcel, vielen Dank. Falls ich noch einen mit I²C finde (was ich hoffe), werde ich Deine Routine gut gebrauchen können. MfG Tobias > Hallo Tobias, > > ich habe hier eine Routine für den MAX127. > Vielleicht hilft dir das weiter. > > Gru� Marcel > > '------------------------------------------------- > ' ADWert von MAX 127 einlesen > ' Adr= Adresse (I²C) > ' Range= Bereich siehe Datenblatt > ' Channel= Channel ,der ausgelesen werden soll > '------------------------------------------------- > Sub Max127(Adr As Byte, Range As Byte, Channel As Byte) As Single > Dim RangeChannel As Byte > Dim ADs As Single > > RangeChannel=128 > If Range=1 Then > RangeChannel=136 > ElseIf Range=2 Then > RangeChannel=132 > ElseIf Range=3 Then > RangeChannel=140 > Else > RangeChannel=128 > End If > > If Channel=1 Or Channel=3 Or Channel=5 Or Channel=7 Then > RangeChannel=RangeChannel+16 > End If > If Channel=2 Or Channel=3 Or Channel=6 Or Channel=7 Then > RangeChannel=RangeChannel+32 > End If > If Channel=4 Or Channel=5 Or Channel=6 Or Channel=7 Then > RangeChannel=RangeChannel+64 > End If > I2C_Start() > I2C_Write(Adr) > I2C_Write(RangeChannel) > I2C_Stop() > I2C_Start() > I2C_Write(Adr+1) > a=I2C_Read_ACK() > b=I2C_Read_ACK() > I2C_Stop() > b=b>>4 > a=a*16+b > ADs=a > If Range=0 Then > ADs=(ADs*5)/4096 > ElseIf Range=1 Then > ADs=(ADs*10)/4096 > ElseIf Range=2 And ADs<2048 Then > ADs=(ADs*10)/4096 > ElseIf Range=2 And ADs>2048 Then > ADs=((4096-ADs)*10)/4096 > ADs=ADs*(-1) > ElseIf Range=3 And ADs<2048 Then > ADs=(ADs*20)/4096 > ElseIf Range=3 And ADs>2048 Then > ADs=((4096-ADs)*20)/4096 > ADs=ADs*(-1) > > End If > Return ADs > End Sub > > > > Hallo, > > > > hat vielleicht schon einmal einer eine Routine für einen seriellen AD-Wandler, wie z.B. den MAX1148 > > geschrieben? Gerne auch andere Typen. Wichtig wären mir nur 14 BIT und min. vier differentielle > > Eingänge, 0-5 oder 0-10V. > > > > Einen I²C-Typen mit differentiellen Eingängen habe ich leider nicht gefunden. Ich denke da wäre > > die Umsetzung einer Software mit den fertigen I²C-Routinen schneller realisiert. > > > > Freue mich über jeden Hinweis, ob Routine oder vielleicht doch einen I²C-Wandler, den ich übersehen > > hab. > > > > MfG Tobias | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum