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 Marcel - 25.03.2008 18:21)
Als Antwort auf Routine für serielle AD-Wandler von Tobias - 25.03.2008 16:34
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board
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:

Re: Routine für serielle AD-Wandler (von Tobias - 26.03.2008 17:24)