- Labornetzteil AliExpress         
Seite 2 von 8 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 79

Thema: A/D Wandler mit mehr als 10 Bit gesucht mit 10bis16 Ports

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    45
    Beiträge
    237
    Anzeige

    Powerstation Test
    wow das ist ja ein File da werde ich ne weile brauchen um durchzublicken so wie ich das sehe ist es für eine andere Anwendung geschrieben der Analogport wird dort auf den ersten Blick nicht einbezogen aber mal sehen ob ich was drauß machen kann.

    Dank dir Mosi für deine Hilfe

    Gruß
    Steffen

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.04.2005
    Beiträge
    146
    Ist eigentlich nicht so schwer:
    Bl ist die Anzahl der Stützstellen, je nach gewünschter Auflösung aus dem Atmel-Dokument entnehmen,
    die Random Funktion soll in diesem Beispiel zufällige Messwerte liefern, natürlich komplett weglassen, dafür die Zeile

    Value = Random(&H0f)

    ändern in

    value= Get ADC

    Initialisierungen und Deklarationen nicht vergessen, schon läufts!

    Wenn du das Programmfragment nochmal in eine Schleife mit den gewünschten ADC-Kanälen legst, hast du als Ergebnis ein Feld mit Analogwerten genauer als 10bit.
    Habe übrigens oben einen Fehler gemacht: Wenn man durch die Anzahl der Stützstellen teilt, hat man ja nur den Mittelwert ohne höhere Auflösung,
    man muss bei 4Stellen eine Stelle nach rechts schieben, bei 16 - 2 Stellen, bei 64- 3Stellen usw. so erhält man dann natürlich die hohen Auflösungen.
    Einziger Hardwareaufwand ist das Bereitstellen eines Rauschens, das soll auch mit dem AVR selbst gehen, bin aber im Moment überfragt...
    Gruß, Rene

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.04.2005
    Beiträge
    146
    Ich nochmal,

    es geht auch wesentlich einfacher, eine gleitende Mittelwertbildung ist gar nicht notwendig.
    Einfach in einer Schleife, die je nach gewünschter Auflösung entsprechend viele Male durchlaufen wird, also z.B. bei 12bit 16Mal, die Summe aus den ADC-Werten bilden, am Ende durch 4 teilen, bzw. shift,right,2 (das ist das gleiche, geht aber viel schneller) fertig! Das Ergebnis hat eine 4fach höhere Auflösung, also 2bit mehr

    Gruß, Rene

  4. #14
    munkl
    Gast
    Hi zusammen,

    es gibt sonst auch PIC mit mehr bit auflösung. ich weis die meisten hier haben ein problem mit pics aber man könnte auch ein I2C device selber entwickeln. zB PIC18F2423 ist so einer. ca 12 AD-Inputs mit 12 Bit auflösung so viel ich weis.

    mfG munkl

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    45
    Beiträge
    237
    @munkel
    naja einen einfachen Sprut ICSP Brenner habe ich mir schon gebaut aber ich habe noch nie mit Microchip² Produkten gearbeitet und wüßte nichteinmal welche Software ich benötige.


    @mosi

    cool danke das versuche ich morgen einmal. Was ich mir ausgerechnet habe ist das mir 12 Bit eigentlich schon reichen würden je mehr desso besser aber 12 Bit wäre auch ok.

    Da teste ich morgen mal dein Vorschlag und melde mich dann wenn ich es hinbekommen habe.


    Gruß
    Steffen

  6. #16
    munkl
    Gast
    hm also eigentlich ist ein PIC programieren so einfach wie ein atmel auch. was du brauchst ist ein kompiler: für C würd ich den C18 vorschlagen, da CCSC kostet
    und dann brauchst du noch die brennsoftware von sprut.
    ja die sprut brenner find ich auch klasse ich hab den 5er und den 8er im einsatz

  7. #17
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    Bei 12 bit musst Du, wenn Du diese auch nutzen willst, bereits ein geeignetes Layout und entsprechende Schaltungsauslegung berücksichtigen. Sonst bleiben von den Bits wieder nur 8-10 übrig.

  8. #18
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    Der ADuC7026-ARM-Controller von Analog Devices hat einen 12bit-10Kanal-ADU intern.

    Blackbird

  9. #19
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    45
    Beiträge
    237
    @shaun

    ich habe das RN-Control.
    Meinst du ich muß es modifizieren um mit 12 Bit arbeiten zu können ?

    https://www.roboternetz.de/wissen/index.php/RN-Control

    Ich wollte mir wegen der zuwenigen ADC Ports dann den ATMEGA256 holen der Hat glaube 16 ADC´s. Aber das sind alles fertige Boards wo man doch im normalfall nichts mehr machen muß oder täusche ich mich ?



    @Blackbird

    der ADUC7026 ist beindruckent.

    Serial Interface Ports (UART, SPI, and dual I2C) und 12-Channel, 1 MSPS, 12-Bit ADC. Den muß ich mir genauer anschauen ich hoffe das es den auch irgendwo zu kaufen gibt.

    Wenn man einen Max232 anbaut könnte er dann sicher über RS232 kommunitieren. Der wäre spitze Oder ich versuche über I2C anzubinden das erscheint mir einfacher.


    Gruß
    Steffen

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    45
    Beiträge
    237
    mhh bis jetzt konnte ich nur Preise von über 300€ für den ADUC7026 finden und erhältlich ist er sogut wie nirgends.


    So ich habe nun mal versucht das mit diesem 12 Bit hinzubekommen aber leider fehlen mir die Kenntnisse um es zu schaffen.

    Ich habe mein normales Programm erstmal mit

    do

    loop until endwert = 16

    ausgestatt dann hab ich erstmal eine Schleife die 16 mal zählt nur wie bekomme ich nun die Summe aus der sich in der Schleife befindlichen Meßwerte ?

    Hier ist mein Quellcode :

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 38400
    
    Config Adc = Single , Prescaler = Auto                      'Für Tastenabfrage und Spannungsmessung
    
    
    Dim Endwert As Single
    
    Endwert = 0
    
    Do
    
    
    
    Dim Volt_a As Single
    Dim Volt_b As Single
    Dim Volt_c As Single
    Dim Volt_d As Single
    Dim Volt_e As Single
    Dim Volt_f As Single
    Dim Volt_g As Single
    Dim Volt_h As Single
    
    
    
    Const Ref = 5 / 1023                                        'Für Berechnung
    
    
    Dim A As Word
    Dim B As Word
    Dim C As Word
    Dim D As Word
    Dim E As Word
    Dim F As Word
    Dim G As Word
    Dim H As Word
    
    
    Config Porta = Input                                        ' Port A als Anlogeingang konfigurieren
    
       Start Adc                                                '
       A = Getadc(0)
       B = Getadc(1)
       C = Getadc(2)
       D = Getadc(3)
       E = Getadc(4)
       F = Getadc(5)
       G = Getadc(6)
       H = Getadc(7)
    
    
    
    'Bit Auflösung in Volt umrechnen
       Volt_a = A * Ref
       Volt_b = B * Ref
       Volt_c = C * Ref
       Volt_d = D * Ref
       Volt_e = E * Ref
       Volt_f = F * Ref
       Volt_g = G * Ref
       Volt_h = H * Ref
    
     ' Varible als String mit 6 Zeichen definieren
      Dim Volt_a_2kommastellen As String * 5
      Dim Volt_b_2kommastellen As String * 5
      Dim Volt_c_2kommastellen As String * 5
      Dim Volt_d_2kommastellen As String * 5
      Dim Volt_e_2kommastellen As String * 5
      Dim Volt_f_2kommastellen As String * 5
      Dim Volt_g_2kommastellen As String * 5
      Dim Volt_h_2kommastellen As String * 5
    
    
      'STR() convert a numeric value into a string
        Volt_a_2kommastellen = Str(volt_a)
        Volt_b_2kommastellen = Str(volt_b)
        Volt_c_2kommastellen = Str(volt_c)
        Volt_d_2kommastellen = Str(volt_d)
        Volt_e_2kommastellen = Str(volt_e)
        Volt_f_2kommastellen = Str(volt_f)
        Volt_g_2kommastellen = Str(volt_g)
        Volt_h_2kommastellen = Str(volt_h)
    
    ' Fusing minmize to 2 decimal places
        Volt_a_2kommastellen = Fusing(volt_a , "#.###")
        Volt_b_2kommastellen = Fusing(volt_b , "#.###")
        Volt_c_2kommastellen = Fusing(volt_c , "#.###")
        Volt_d_2kommastellen = Fusing(volt_d , "#.###")
        Volt_e_2kommastellen = Fusing(volt_e , "#.###")
        Volt_f_2kommastellen = Fusing(volt_f , "#.###")
        Volt_g_2kommastellen = Fusing(volt_g , "#.###")
        Volt_h_2kommastellen = Fusing(volt_h , "#.###")
    
    
    
    Print ";" ; Volt_a_2kommastellen ; ";" ; Volt_b_2kommastellen ; ";" ; Volt_c_2kommastellen ; ";" ; Volt_d_2kommastellen ; ";" ; Volt_e_2kommastellen ; ";" ; Volt_f_2kommastellen ; ";" ; Volt_g_2kommastellen ; ";" ; Volt_h_2kommastellen ; ";" ; "0.00" ; ";"       'Ausgabe aller 8 Analogausgänge + 1x Dummy da der letzte Wert im Excel durch den Zeilenumbruch nicht bearbeitet wird
    
    
    
    
    Waitms 120                                                  ' 120ms bis zur nächsten aktualisierung - Zu schnelle Aktualisierung -> Controller hängt sich auf
    
    
    Loop Until Endwert = 16                                     'ende der Schleife

    Das gesamte Programm macht nichts weiter als wie die ADC Werte aller 8 Ports meines ATMEGA 32 einzulesen und diese auf RS232 auszugeben und das leider nur in 8 Bit

    Gruß
    Steffen

Seite 2 von 8 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress