Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

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: