- 3D-Druck Einstieg und Tipps         
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
    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)

  2. #2
    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)

  3. #3
    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)

  4. #4
    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.

  5. #5
    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)

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wieso noch der Umstand mit der Gleichrichtung. Wenn das Signal schon mit 2,5 V offset vorliegt, kann man mit dem Signal direkt an den µC. Die Gleichrichtung erlaubt nur eine 2 fache Verstärkung, oder 1 Bit mehr an Auflösung. Mit der Bildung des Betrages und mitteln über z.B. 200 Werten (20 ms) gewinnt man mehr als 1 Bit(eher 2-3 Bit) durch das Mitteln. Das gibt also eine besseres Ergebnis mit weniger Aufwand.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2011
    Beiträge
    9
    die gleichrichtung brauchst du nicht , ich hab 24 stück lem lts 15 auf ein atmega 8 am laufen , über multiplex , benutze 8 ausgänge vom atmega , um die lems zu versorgen und 3 adc.
    Mein programm funktioniert tadellos.
    gruß carlos

Ä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
  •  

fchao-Sinus-Wechselrichter AliExpress