- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 8 von 8

Thema: phasenanschnitt von umwälzpumpe mit pic12F629

  1. #1

    phasenanschnitt von umwälzpumpe mit pic12F629

    Anzeige

    LiFePo4 Akku selber bauen - Video
    hello Leute,
    Ich schreibe Diplomarbeit jetzt. Mit pic12f529 durch
    Phasenanschnittverfahren steuert Ich die Leistung der umwälzpumpe.
    Hardware ist schon da, mit Triac den Strom der Pumpe sperren oder durch lassen .

    Der problem ist , dass Ich einen Programm mit Assembler schreiben muß.
    die Funktion ist beurteilung des netzspannungnulldurchgangs und des Triacstromnulldurchgangs,welcher Nulldurchgang kommt eher, und Messung die Zeit dazwischen.

    wenn jemand Erfahrung hat,gebe mir Hilfe bitte!

    vielen Dank!

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo paul725!

    Ich habe mir mal einen Timer mit PIC12F629 gebaut um irgendwas für eingegebene Zeit einschalten. Als Takt habe ich die verdoppelte Netzfrequenz (100Hz) aus dem Netztrafo nach dem Gleichrichter benutzt, die durch Smitt-Trigger Inverter 74HC14 in Rechteck gewandelt wurde. Diese Rechteckige Spannung habe ich als externe Interruptquelle benutzt und der PIC ist mit internem RC Oscillator gelaufen. Du brauchst nur den Rechteck softwaremässig um feste Zeit verschieben, damit seine Flanken im Nulldurchgang der Netzspannung liegen. Mit dem R habe ich die max. Amplitude (5V) und mit dem Trimmpoti P den Tastverhältniss des Rechtecks auf 50% eingestelt.

    MfG
    Code:
               1N4007        1N4007             .-----.
               +->|-+--------+->|-+--------+----|7805 |-+--------> +5V
               |    |        |    |+       |    '-----' |
               |    |       .-.  ===      ---      |   ---
               |    |     R | |  /-\ 100µ --- 100n |   --- 100n
       <---. ,-+    |     1k| |   |        |       |    |
           )|(      |       '-'            |       |    |
     220V  )|(      |        |    |        |       |    |
           )|,------|--+-----|----+--------+-------+----+
     50Hz  )|(      |  |     |
           )|(      |  |    .-.      |\   |\   |\
       <---' '-+    |  |  P | |<-----| >O-| >O-| >O--------------> INT
               |    |  | 470| |      |/   |/   |/                 100Hz
               |    |  |    '-'
               |    |  |     |          74HC14
               +->|-+  +-----+-------------------------------+---> GND
               1N4007                                        |
                                                            ===
                                                            GND

  3. #3
    vielen dank, PICture!

    Ihre Schaltung ist ganze interessant. und Ich benutze Time1 um die Zeit zu messen.Aber jetzt ist meine schwerigkeit in assembler programmierung für pic12f629. Ich benutze Pollingverfahren um die Nulldurchgang zu abfagen.

    Polling
    ;; ---------------------------------------------------------
    SIGN_POS
    btfsc _Inull ; Abfrage _Inull = 0?
    goto SIGN_POS ; NEIN: -> SIGN_POS
    ; weiter im Programm ; JA: Programm fortsetzen
    ;; ---------------------------------------------------------

    in diese möglichkeit kann nur ein Nulldurchgang abfagen. das bedeutet,erst netzspannung Nulldurchgang dann Triacstrom Nulldurchgang oder erst Triacstrom Nulldurchgang dann netzspannung Nulldurchgang. Das kann nicht beide Nulldurchgänge gleichzeitig abfragen. Das ist der Problem.

    Ich bin erstmal mit Assembler für PIC12f629 Programmierung. deswegen habe ich schwerigkeit . wenn Sie Programmierung Erfahrung haben,geben mir mehr Hilfe oder Vorschlag Bitte! vielen Dank noch mal!

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.10.2004
    Ort
    ferd. Waldmüllerg. 7/2
    Alter
    39
    Beiträge
    456
    Wirklich gleichzeitig wirst du sie nie abfangen können, da der PIC ja nur einen Prozessor innen drin hat. Du wirst immer mehr oder weniger Verzugszeiten wegen deinem Code bekommen, wobei diese aber bei einer Taktfrequenz von und über 1MHz zu 100Hz (also alle Nulldurchgänge bei Wechselstrom) verschwindend gering werden.
    Aber nur nebenbei .

    Ja, das mit einem blockierenden Pooling zu lösen ist unmöglich (ich gehe mal davon aus, dass du keine Interrupts verwendest). Du brauchst eine andere Art von Polling, eine die dem Gedankengang folgt: Ist ein Ereigniss da, dann handle sie ab, ansonsten gehe weiter.
    Code:
    schleife:
        btfss eingang1
        call nulldurchgang_bei_1
        btfss _eingang2
        call nulldurchgang_bei_2
        goto schleife
    
    nulldurchgang_bei_1:
        ...
        return
    
    nulldurchgang_bei_2:
        ...
        return
    Das Problem bei diesem ist, dass du theoritsch jederzeit einen Nulldurchgang verpassen könntest, sollte dein Prozess, der diesen Abhandelt zu lange braucht.

    Eine andere Möglichkeit wäre, wenn du den einen Zustand per Pooling abhandelst und den zweiten auf einen I/O-Pin Interrupt legst. Aber auch da ist es natürlich auch möglich, dass du durch den Interrupt den zweiten, gepollten Nulldurchgang verpasst, wenn der Interrupt zu lange dauert, oder wenn bei fast gleichzeitig auftreten, da der Interrupt das Hauptprogramm unterbricht.

    Eine dritte Möglichkeit, die mri so auf die Schnelle einfällt wäre, dass du beide Nulldurchgänge auf I/O-Interrupts legst, aber in diesem nur jewels einen Bit setzt. Dadurch wird das Interrupt sehr schnell abgehandelt und danach musst du nur im Hauptprogramm nur noch dafür sorgen, dass du die Bits auswertes und auf einen oder zwei erkannten Nu
    lldurchgänge reagierst.
    Mit dieser Möglichkeit ist es dir nicht möglich einen Nulldurchgang zu "übersehen", aber dadurch, dass du nicht "augenblicklich" darauf reagierst, kommen natürlich kleine Verzugszeiten zwischen erkennen und regieren hinzu.

    MfG
    Mobius

    €dit: Aso, ich verstehe grad die Fragestellung . Also, wenn du _nur_ die Zeit zwischen den beiden Nulldurchgängen erkennen willst, ist das einfacher zu lösen, als ich es oben hingeschrieben habe.
    Weil du musst ja nichts anderes machen, als erkennen, welches der beiden NUlldurchgänge zuerst kommt und danach den Timer zu starten und es zu stoppen, sobald der zweite Nulldurchgang erkannst wird.
    Dafür wären methode 1 oder 3 am besten geeignet, also, dass du entweder beide Eingänge hintereinander abfragst und als reaktion darauf den Timer startest, stoppst, etc, oder das gleiche, nur ins Interrupt verschoben.

  5. #5
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo paul725!

    Wenn es um Nulduchgänge der Netzspannung geht, habe ich mir noch eine einfache Schaltung erinnert. Die steigenden Flanken den Impulsen liegen kurz vor und die fallenden kurz nach dem Nulldurchgang. Der Nulldurchgang der Netzspannung liegt genau in der Mitte. Diese Schaltung habe ich als Takt für Steuerung eines Triacs verwendet. Die Ermittlung eines Nulldurchgangs vom Strom kann ich mir nur kompliziert vorstellen.

    Eigentlich aus Deinen Beiträgen bin ich nicht ganz schlau (geht es um Steuern oder Messen?) und könnte Dir bei Programmierung des PICs nur bei für mich klaren Problemen vielleicht helfen.

    Algemein, durch polling des GPIO Ports, kannst Du mehrere Pins quasi gleichzeitig überwachen und auf bestimmte Änderung auf bestimmtem Pin entsprechend reagieren.

    MfG
    Code:
                                             +-------+-->+5V
                                             |       |
                                             |      .-.
                                             |      | |Rc
                                             |      | |1k
                                             |      '-'    0 0 0
                                             |       |
                                             |       +--> _|_|_|_
                                 Rb 10k      |       |
                                   ___       |     |/      100Hz
                     +--+------+--|___|------------| T
                     |  |      |             |     |>
                     |  |      V             |       |
                     |  |      -             |       |
                     | .-.     |     .-----. |       |
                +->|-+ | |R    +---+-|7805 |-+       |
                |    | | |1k   |+  | '-----' |       |
        <---. ,-+    | '-'    === ---   |   ---      |
            )|(      |  |     /-\ ---   |   ---      |
      230V  )|(      |  |      |   |    |    |       |
            )|,---------+------+---+----+----+-------+
      50Hz  )|(      |                               |
            )|(      |                              ===
        <---' '-+    |                              GND
                |    |
                +->|-+

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    15.02.2007
    Beiträge
    9

    Vorschlag Strommaxima

    Hallo,

    da es noch keinen Ansatz zur Erkennung des I-Nulldurchganges gibt, hier mal meine Idee.

    Eine Anschlussleitung des Motors durch einen Stromsensor (z.B Stromwandler 5 A Best.Nr.: 20860) legen. An den Anschlüssen des I-Wandlers einen 50 Ohm Widerstand zur Umwandlung des erzeugten Stromes in eine Spannung.
    Diese Spannung mithilfe des Komperators im PIC mit einer manuell einstellbaren Spannung vergleichen.
    Wenn Spannung vom I-Wandler größer als die manuell eingestellte ist dann Bit setzen.
    Wie lange dieses Bit gesetzt ist kann man mittels Timer messen und das Strommaxima herausfinden. Der Nullpunkt des Stromes wird zwischen 2 Maximas (Minima == neg. Maxima) liegen.
    Ob nur der Strom der Spannung voreilt oder nacheilt hängt nur von der Art des Verbrauchers ab. Dieser Motor wird wahrscheinlich ein Motor bleiben, und nicht irgendwann gegen eine kapazitve Last ausgetauscht werden.

    Tschau

  7. #7
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo jogsen!

    Coole Idee, weil sie sehr einfach zu realisieren ist!

    Übrigens, nur Bestellnummer reicht zum Bestellen leider nicht.

    MfG

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    15.02.2007
    Beiträge
    9

    Bestellnummer reicht wirklich nicht !!!

    Hallo,

    http://www.csd-electronics.de/

    anbei der Link.

    Bei der zu erwartenden Spannung von wenigen Millivolt vom Stromsensor(je nach Motorleistung), sollte die manuelle Referenz schon etwas genauer sein.

    Tschau

Berechtigungen

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

Solar Speicher und Akkus Tests