- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 29

Thema: Strom messen mit Atmega

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    08.07.2008
    Beiträge
    49
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hey

    Also ich hab das Poti natürlich nur so weit aufgedreht das zwischen ADCO und ADC1 max 2,56V an liegen da ich ja auch die interne RefU benutze und da ich ja ADCO auf Masse lege (ist in der Zeichnung falsch seh ich grade also ADC0 liegt an Masse und an ADC1 liegt die + Spannung) sollte doch der ADC nich wirklich an 24V liegen da er ja keine Verbindung zur Masse des einstellbaren Netzteils hat. Oder?! Seh ich das falsch?

    das Programm sieht wie folgt aus:

    Code:
    $regfile = "m32def.dat"                                     'Konfiguration auf ATmega 32
    
    $crystal = 16000000                                         'Quarztakt 16MHz
    
    '-----------------------------Configuration-------------------------------------
    
    Config Portb = Output
    Config Portd = Output
    Dim Anz1u2 As Byte
    Dim Anz3u4 As Byte
    Dim Var1 As Byte
    Dim Var2 As Byte
    Dim Adcvar As Long
    Dim X As Word
    Dim V24 As Long
    
    Admux = &B11101001
    Adcsr = &B11100111
    
    '-----------------------------Dimensionierung-----------------------------------
    
    '----------------------------Hauptprogramm--------------------------------------
    
    
    
    
    
    Do
    
       Var1 = 0
       Var2 = 0
    
       Adcvar = Adch
    
       V24 = Adcvar
       Rotate V24 , Left , 2
    
       Adcvar = Adcl
       Rotate Adcvar , Right , 6
    
       V24 = V24 + Adcvar
    
       'V24 = V24 * 1000
       'V24 = V24 / 4391
    
       Adcvar = V24
    
       'Waitms 100
    
       For X = 1 To Adcvar Step 1
    
          Var1 = Var1 + 1
    
          If Var1 = 100 Then
    
             Var2 = Var2 + 1
             Var1 = 0
    
          End If
    
       Next
    
       Anz1u2 = Makebcd(var1)
       Anz3u4 = Makebcd(var2)
       Portb = Anz1u2
       Portd = Anz3u4
    
    Loop
    
    
    End

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    hallo dämmi,

    warum nun dein uC abstürzt weiss ich derzeit nicht.
    allerdings // und ich weise nochmals daruf hin, dass ich bisher nix mit "adc-differentiell" gemacht habe, da sich mir der sinn nicht erschliesst//

    ja .. allerdings kommt mir deine schaltung merkwürdig vor.
    wie soll denn der adc etwas messen können, wenn du die massen nicht verbindest ?

    andererseits ist es ja so, dass, wenn du sie verbindest, der atmega wohl angesichts deiner 24 volt den hut heben wird.

    du benötigst also spannungsteiler jeweil vor dem shunt und dahiner.
    dieser muss so ausgelegt sein, dass die spannung an den adc-in bei deinen angestrebten 12-15volt auf highside niemals mehr als avcc wird.
    idealerweise sollte sie bei 2 A natürlich unterhalb deiner Aref bleiben.

    aus den genannten gründen verstehe ich bisher auch wirklich nicht, warum man das nun differentiell messen sollte.
    das spart doch meines erachtens nach nur eine einzige subtraction bei der auswertung.

    also denk nochmal drüber nach.

    gruss klaus

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    08.07.2008
    Beiträge
    49
    Hey

    Also ich hab Natürlich AdcVcc auf 5V gelegt und auch AdcGnd verbunden.
    Ich hab ja den AdcGND auf 12V glegt und damit diese 12V ja als GND bestimmt und auf den AdcIn gebe ich nie mehr als 14,56V. Daher hab ich auch nie mehr als ne Differenz von 2,56V und das sollte den Adc nicht killen oder? Ich will den Diff Eingang benutzen weil ich dort nen Gain von x10 hab und daduch Spannungen von 0 - 0,256V voll messen kann ohne sie extern zu verstärken.

    Die beiden Spannungsquellen also die die den µC mit 5V versorgt und die Einstellbare Spannungsquelle sind Natürlich Galvanisch getrennt. Daher sollte es ja auch klappen die 12V am AdcGnd als 0V zu bestimmen oder bin ich da grade falsch vor?! Ich kann doch auch z.B. einen µC mit 20V Acc und mit 15V Gnd verbinden und dieser sollte nicht Schlappmachen.

    Gruß dämmi

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    adc gnd ist immer auch uc-gnd und nicht irgendwas anderes.
    du killst den uc wenn du das so machst, wie es sich gerade darstellt.

    nimm endlich die spannungsteiler !

    gruss klaus

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    08.07.2008
    Beiträge
    49
    Hm .... Also ich habs ja schon so gemacht und der Adc ist noch ok und mir scheint das auch unlogisch weil der µC ja nirgends mehr als 5V abbekommt die massen der beiden Spannungsquellen sind absolut unabhängig und wenn ich die Masse vom µC einfach auf 12V der anderen Spannungsquelle lege und dann andere Eingänge wie den ADC0 an 14,5V lege hab ich ja eigl nur 2,5V zur Masse das sacht dann ja auch das Messgerät. Also sollte da nichts passieren und das tut es ja auch also bis auf das er sich aufhängt aber ich werd das einfach noch einmal mit den Spannungsteilern versuchen und schauen was dann passiert. Aber das mach ich dann Morgen. Aber sehr vielen Dank für die Hilfe.

    lg dämmi

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    eff-eff Alarmanalgen machen das ähnlich, die 5 V für den
    µC hängen + an 12V und GND an +7V. Die Relais werden dann
    mit PNP Transistoren gegen 12V GND geschaltet. Das hat den Vorteil,
    die 5V "schwimmt" auf den 12V, Netzschwankungen kommen da
    überhaupt nicht an.

    Gruß Richard

  7. #17
    Benutzer Stammmitglied Avatar von Johnes
    Registriert seit
    07.12.2007
    Ort
    Neu Wu
    Beiträge
    45
    Über den Shunt sollte man mit zwei Teilern, die differentiellen Eingangssignale erzeugen! So haben beide den Massebezug!

    Der Teiler muss so demensioniert sein, dass die Spannung nicht URef übersteigt! Sonst kann der µC sich aufhängen.

    Code:
                                 ___
           o----------------o---|___|----o--------o
                            |   Shunt    |
                            |            |
                            |            |
                            |            |
                           .-.          .-.
                           | |          | |
                           | |          | |
                           '-'          '-'
                    ___     |            |
           <-------|___|----)------------o <--
       zum                  |            |  max Uref
       ADC          ___     |            |
           <-------|___|----o            |
                            |            |
                           .-.          .-.
                           | | | max    | | | max
                           | | | URef   | | | Uref
                           '-' V        '-' V
                            |            |
                           GND          GND

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.11.2006
    Ort
    olargues
    Beiträge
    776
    @johnes

    genau so hatte ich mir das auch vorgestellt und versucht dem fragesteller
    das mitzuteilen.
    so , wie ich das sehe , stellt der fragesteller aber mitlerweile die gleichen fragen im micrcont.net.

    nunja

    gruss klaus

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    03.08.2009
    Ort
    SFB
    Beiträge
    60
    Wenn du mich als Fragesteller meinst:
    Hatte diese Frage nur hier her rein gestellt..
    Aber die Idee werde ich in mein nexten Versuch mal umsetzen...

  10. #20
    Benutzer Stammmitglied
    Registriert seit
    08.07.2008
    Beiträge
    49
    Moin

    Nach langer Zeit kann ich mich endlich wieder diesem Problem zu wenden hatte mit einem Schulprojekt den ganzen Monat zu tun.

    Also hab das behoben bekommen mit dem aufhängen hab einfach waitms 2 gleich in den anfang gesetzt.

    Code:
    $regfile = "m32def.dat"                                     'Konfiguration auf ATmega 32
    
    $crystal = 16000000                                         'Quarztakt 16MHz
    
    '-----------------------------Configuration-------------------------------------
    
    Config Portb = Output
    Config Portd = Output
    Dim Anz1u2 As Byte
    Dim Anz3u4 As Byte
    Dim Var1 As Byte
    Dim Var2 As Byte
    Dim Adcvar As Long
    Dim X As Word
    Dim V24 As Long
    
    Admux = &B11101001
    Adcsr = &B11100111
    
    '-----------------------------Dimensionierung-----------------------------------
    
    '----------------------------Hauptprogramm--------------------------------------
    
    
    
    
    
    Do
    
       Waitms 2
       Var1 = 0
       Var2 = 0
    
       Adcvar = Adch
    
       V24 = Adcvar
       Rotate V24 , Left , 2
    
       Adcvar = Adcl
       Rotate Adcvar , Right , 6
    
       V24 = V24 + Adcvar
    
       'V24 = V24 * 1000
       'V24 = V24 / 4391
    
       Adcvar = V24
    
       'Waitms 100
    
       For X = 1 To Adcvar Step 1
    
          Var1 = Var1 + 1
    
          If Var1 = 100 Then
    
             Var2 = Var2 + 1
             Var1 = 0
    
          End If
    
       Next
    
       Anz1u2 = Makebcd(var1)
       Anz3u4 = Makebcd(var2)
       Portb = Anz1u2
       Portd = Anz3u4
    
    Loop
    
    
    End
    Allerdings messe ich nur bis 511 das wäre aber 9bittig gemessen....
    Was mach ich falsch beim Bits drehen? Ich komme einfach nicht auf 1023.....

    Zum testen hab ich den adc auch über einen Spannungsteiler an die Versorgungsspannung gelegt um einfach einmal dieses 24V Problem beseitigen.

    Danke für die Beschaltung des Shunt werde das so einmal Probieren.

    Gruß Jonas

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress