- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 44

Thema: Wechselstrom mit Bascom messen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    45
    Beiträge
    642
    Hall Carlos,
    wenn ich deinen Code richtig verstehe werden also 20 Messungen gemacht weil das Array auf 20 Stellen begrenzt ist?
    wenn die 20 Stellen voll sind werden also die Min und Max werte bestimmt?
    Ich habe das ganze mal in einen vollständigen Code als unterprog eingebunden, allerdings lässt sich dein Abschnitt nicht fehlerfrei Compilieren, das Problem liegt in dieser Zeile:
    For A = 1 To Tastmessungen

    @Stfan1409:
    Danke für deinen Code, ich werde auch den mal Checken
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2011
    Beiträge
    9
    Hallo
    Klar Kannst du mir eine PN schicken


    Zitat Zitat von Neutro Beitrag anzeigen
    Hall Carlos,
    wenn ich deinen Code richtig verstehe werden also 20 Messungen gemacht weil das Array auf 20 Stellen begrenzt ist?
    wenn die 20 Stellen voll sind werden also die Min und Max werte bestimmt?
    Ja so sollte der ablauf sein.
    Ich hab keine ahnung wieso du ein fehler bekommst , du solltest kompielierbaren code hier reinstellen, kann es sein das vergessen hast a as byte für die for schleiffe zu definieren?

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    45
    Beiträge
    642
    Ja, die Definition fehlte tatsächlich, aber dann wird die Zeile :
    Max(w(1) , M1 , Idx) Als fehler markiert (asignment error)

    Hier mal der ganze Code:


    $regfile = "m8def.dat"
    $crystal = 4000000
    $baud = 9600

    '-------------------------------------------------------------------------------
    'LCD Config

    Config Lcd = 16 * 2
    Config Lcdbus = 4
    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5

    '-------------------------------------------------------------------------------


    'Variable setzen

    'print Fusing(effektiv , "#.##")
    Dim A As Byte
    Dim Tastmessungen As Byte
    Tastmessungen = 20 'sollte die gleiche grösse wie w haben
    Dim W(20) As Word ' getadc mag kein single
    dim Maxi as word '
    dim mini as word
    dim Spitzenstrom as word
    Dim Effektiv As Single 'und alle andere variablen für die Berechnungen als single deklarieren


    '-------------------------------------------------------------------------------
    'ADC Einstellungen

    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc

    '-------------------------------------------------------------------------------
    'Hauptprogramm

    Cls
    Cursor Off
    Upperline
    Lcd " ACV "
    Lowerline
    Lcd " Spannung "

    Wait 3
    Cls


    Do

    Gosub Spannungsmessung

    Loop


    Spannungsmessung:

    For A = 1 To Tastmessungen
    W(a) = Getadc(0) 'analogwert lesen und in W array speichern
    Next A
    Max(w(1) , M1 , Idx) 'aus W array Maximum wert raussuchen und speichern
    Maxi = M1 'Maximum wert in Variable maxi speichern
    Min(w(1) , M1 , Idx) 'aus W array Minimum wert raussuchen und speichern
    Mini = M1 'Minimum wert in Variable Mini speichern
    Spitzenstrom = Maxi-Mini
    'jetzt deine variable skalieren und dann
    Effektiv = Spitzenstrom / 2.82

    Upperline Fusing(effektiv , "#.##") 'hier ist jetzt der Spannungswert der umgerechnet werden muss!

    Return
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2011
    Beiträge
    9
    hallo Neutro
    es fehlt
    dim M1 as word
    dim idx as word
    und das solltest du wechseln
    Upperline Fusing(effektiv , "#.##") 'hier ist jetzt der Spannungswert der umgerechnet werden muss!
    in
    upperline
    lcd Fusing(effektiv , "#.##")
    jetzt wird deine gosub siemlich schnell durchlaufen , du solltest mindestens ein waitms 1 in deine messschleife am besten wäre es wenn du ein timer benutzt mit 1 ms
    Geändert von Carlos76 (12.02.2012 um 17:00 Uhr)

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    45
    Beiträge
    642
    Danke für die Antwort,

    das mit dem Wait hatte ich glatt vergessen....
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Ein Wait ist nur nötig, wenn man sich auf so wenige Werte geschränkt. Sonst ist es eher besser mehr Werte des AD Wandlers zu nutzen, und nicht zu warten. Das Suchen nach Maximum und Minimum geht auch ohne alle Werte zu speichern, jeweils direkt nach der Messung. Dann ist es auch klein Problem nicht nur 20 Werte zu nutzen sondern z.B. 200 oder auch 1000.

    Ein Timer ist hier eher nicht angebracht. Eher schon der Interrupt vom AD Wandler: also den AD Wandler im Free running mode laufen lassen und dann die benötigte Zahl (ca. 200) an Samples auswerten. Das Programm kann dann auch noch was anderes machen während der Messung.

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von Neutro
    Registriert seit
    28.10.2007
    Ort
    Ostfriesland
    Alter
    45
    Beiträge
    642
    So, ich wollte mal einen kurzen Zwischenbericht zu dem Projekt abgeben:
    Ich habe mich für eine "Hybrid" Lösung entschieden, soll heißen das ich einen Vollwellengleichrichter und den Programmvorschlag von
    Carlos mit ein paar kleinen Änderungen nehmen werde.
    Zur Erklärung: Der Gleichrichter wird das Signal des Stromsensors gleichrichten und in seiner welligen Form auf den Controller ADC geben.
    Die Software soll dann 25 Messungen in 800µS Abstand ausführen, so das ich auf jeden Fall sehr dicht an die Spitzenspannung herankommen werde.
    Der Min Wert braucht dazu nicht mehr bestimmt zu werden, der Max Wert/ 1,41 ergibt dann ja den Effektivwert der Spannung.
    Leider bin ich noch nicht dazu gekommen die Software zu testen, zumindest beim compilieren erhalte ich keine Fehler.
    Der Gleichrichter wird noch so modifiziert werden, das er den 2,5V Offset des Sensors abzieht. Dafür werde ich dann den OP (TL082) aber wohl doch symetrisch mit +/- 5V betreiben müssen. Am Ausgang des Gleichrichters wird noch eine Schottky Diode gegen GND eingesetzt um neg. Spannung vom ControllerPin
    fern zu halten.

    Bis hier hin schon mal vielen Dank an alle!

    MFG
    Neutro
    Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
    (Mark Twain)

Ähnliche Themen

  1. Gleich- oder Wechselstrom?
    Von freaky44 im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 26.01.2012, 20:26
  2. Wechselstrom Zähler ?
    Von Enten Züchte im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 08.01.2009, 13:38
  3. Gleichstrom --> Wechselstrom
    Von Haki im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 28.08.2008, 17:00
  4. Spannung Messen mit Attiyn26L und Bascom??
    Von Brantiko im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 12.01.2007, 06:06
  5. Schrittmotor mit Wechselstrom ansteuern!
    Von Frank im Forum Motoren
    Antworten: 6
    Letzter Beitrag: 26.05.2004, 20:41

Berechtigungen

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

LiFePO4 Speicher Test