- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 31

Thema: Frequenz in analoge Spannung wandeln

  1. #11
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    21.04.2006
    Ort
    Dortmund
    Alter
    36
    Beiträge
    379
    Anzeige

    Powerstation Test
    Nein 2 Takt Motoren Zünden pro Umdrehung einmal. Das heißt du musst 1:1 rechnen. Ein Impuls entspricht einer umdrehung.
    Und zum Thema wo du das Zündsignal abnehmen sollst: Eine Vespa hat ne CDI Zündung und ein Pickup am Polrad. Das Kabel vom Pickup ist rot und geht bis zur CDI durch. Du kannst das Signal direkt dort abgreifen aber es muss noch geglättet werden, da der Pickup ein Induktivgeber ist. Das heißt es wird eine Spannung induziert die du in geeignete Form bringen musst für den ADC des Mikrocontrollers. Sollte aber kein Problem sein mit nem Tiefpass und einem begrenzenden widerstand.

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    Wenn ich meine Schaltung noch richtig weiss, hab ich mit nem Pullup die Kl. 1 auf 12V gezogen. Der Schalter zieht die dann regelmässig nach GND.
    Dann da einfach nen NPN mit der Basis hin, Emitter auf Masse und Kollektor über nen Widerstand an 5V. Dann liegt am Kollektor das Schaltsignal in 0V/5V vor.

    Zur Rechnung: immer gleich ist das nicht. Hängt von der Zylinderzahl sowie Taktanzahl ab.

    Ein 2-Takt-Motor braucht jede Umdrehung einen Zündfunken. Da nur 1 Zylinder da ist, ist also die Anzahl der Zündpulse = Drehzahl.
    Wenn du ne halbe Sekunde misst und dann die Umdrehungen pro Sekunden brauchst, ist der Faktor 120 (weil ja 120 halbe Sekunden in ne ganze Minute passen)
    #ifndef MfG
    #define MfG

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    02.04.2008
    Ort
    Feldthurns
    Alter
    32
    Beiträge
    37
    aaahso verstanden

    ok, passt, ich hätte noch eine frage:

    ich habe begonnen den controller mit Bascom zu programmieren, habe aber basic noch nie gemacht, in C wäre es mir lieber, aber ich krig das einfach nicht hin mit diesem makefile und dem ganzen shit...aber das ist jetzt egal, könntest du mir nicht ein codeschnipsel in Bascom schicken, das zeigt wie man sie einen impuls "liest", also das zählen der impulse und so...

    wäre sehr hilfreich!!

    vielen dank!!

    -Alexander

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.08.2006
    Ort
    Budapest
    Alter
    36
    Beiträge
    563
    Wenn Du AVR Studio von Atmel kostenlos runterlädst, brauchst Du kein Makefile, und kannst in C arbeiten.

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    02.04.2008
    Ort
    Feldthurns
    Alter
    32
    Beiträge
    37
    ok ich lade gerade AVR studio runter

    @jaecko: könntest du mir irgend ein codeschnipsel schicken für das zählen der impulse?
    wäre sehr nett!

    danke!!

  6. #16
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.188
    Wenn Du ohnehin schon ein Polrad ( = Magnet ) hast, könntest Du die Drehzahl auch gleich mit einem Magnetsensor wie z.B. den TLE4905L abnehmen.
    Der funktioniert auch mit 5V wie der Microcontroller und Du bist vom Zündstromkreis komplett galvanisch getrennt.
    Du brauchst dir somit also über Überspannungen und Ausschwingeffekte keine Gedanken machen.

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    16.12.2007
    Beiträge
    39
    wenn das signal nicht prellt, kann man es einfach auf einen der beiden interrupteingänge des mega legen und bei jedm interrupt den zählerstand um eins erhöhen, da sollte man ein 16 bit register, wenn nicht sogar ein 24-bit register nehmen, kommt auf die max drehzahl an: bei 16bit maximal 65535 rpm; bei 24: 16777215 rpm, hmm scheint doch etwas viel^^; hab grad keine vorstellung,, wie schnell son teil dreht (bin leider zu jung um sowas zu fahren^^).

    dann braucht man nen timer, der alle jede sekunde überläuft (Timer 1 im ctc modus glaub ich), der gibt dann den wert der rpm irgendwo aus und setzt den wert wieder auf 0, oder man lässt ihn alle halbe sekunde überlaufen und multiplizert die umdrehungszahl mit 2 und hat die rpm, dann sollte man wohl dicke mit nem 16-bit register auskommen^^
    man könnte dann vielleicht noch ne rundung oder eine interpolation(?) über die zeit hinzufügen, damit der wert nicht so springt und man besser lesen kann.

    mit UART oder lcd könnte das in assembler vielleicht maximal ne gute DinA4 seite sein, wenn man die ansteuerungsroutinen nicht dazurechnet.
    in basic sollte das n fliegenschiss sein und in c auch nich sonderlich viel, da hat man allerdings auch wieder die ansteuerungsroutinen/libs für lcd bzw UART oder was man sonst haben will.

    basic code könnte ich jez nich posten, weil ich in C progge (und gelegentlcih assembler), aber ich bin ja auch nich gefragt^^

    Ele

  8. #18
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.188
    Die Impuls Zählmethode mit fester Torzeit ist sicher die einfachste Möglichkeit einen Drehzahlmesser zu bauen.
    Dabei gibts allerdings den Nachteil, das man nur Schritte mit 60U/min dabei hat.
    Und auch nur dann, wenn man als Torzeit 1sek verwendet.

    Bei 0,5sek und 1 Impuls pro Umdrehung sind es dann schon 120 U/min.

    Ich bin da lieber für die Periodendauermessung.

    Man lässt einen Timer mit Überlaufzähler frei laufen.
    tritt ein Impuls auf wird der Zählerstand des vorherigen Impulses vom aktuellen Zählerstand abgezogen.
    Verwendet man dazu unsigned Variablen ist auch der Überlauf des Zählers kein Problem.
    Dieser Wert entspricht quasi der Periodendauer der Drehzahl und kann in diese Umgerechnet werden.
    Diese Methode ist gerade bei niedrigen Drehzahlen sehr genau und man erhält bei jedem Impuls eine Aussage über die Drehzahl.

    Ab einer bestimmten Drehzahl werden die ermittelten Zählerstände wiederum so klein, das die Impulszählmethode wieder genauer ist.
    Bei meinem letzten Projekt lag diese Drehzahl bei 22000 U/min.
    Und da wir auch ein kleiner 2 Takter nur schwer drüber kommen.

    Ein Problem der Periodendauermessung möchte ich auch nicht verschweigen. Wenn die Drehzahl so niedrig ist, das der Zähler in einer Periodendauer überläuft, kommt es natürlich zu Fehlmessungen.

    Das sollte man in der Soft berücksichtigen und abfangen.

    Eine Bascom Source kann ich Dir leider auch nicht anbieten, ich progge auch in "C".
    Ausserdem hab ich die letzte gut funktionierende Drehzahlmeßroutine in Assembler geschrieben. Die geht aber auch bis 800000 U/min hoch.

  9. #19
    Benutzer Stammmitglied
    Registriert seit
    02.04.2008
    Ort
    Feldthurns
    Alter
    32
    Beiträge
    37
    also wenn ich jetzt den controller in C programmiere ist das kein problem wäre auch mit einem schnipsel in C zufrieden ^^
    würde mir sehr helfen, da ich leider nicht viel ahnung davon habe wie das ganze funktioniert^^

    ich bn nicht recht fit mit microcontroller und muss mir erst mal diese ganzen timer und interrupt sachen anschauen^^

    ich glaube ich mache es schon mit der periodendauermessung, da mein motor sicher nicht unter diesen bereich in der es fehler gibt mit der drehzahl kommt, und da er auch keine 22000 u/min macht ^^

    würde mich sehr über einen beispielcode freuen


    vielen dank!!

    -alexander

  10. #20
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    41
    Beiträge
    2.009
    ALso den Drehzahlmesser hab ich damals auch in Bascom gemacht.
    Der "Nachteil" mit der Auflösung war mir im Prinzip egal. Da es ja eigentlich keinen Unterschied macht, ob der Motor jetzt mit 3400 oder 3460 dreht.

    Also mal ein Codeteil (Kann sein, dass irgendwo noch kleine Fehler sind, also ein = zuviel o.ä., aber seit Februar hab ich Bascom eigentlich nicht mehr verwendet)
    Code:
    ' INT0 initialisieren
    Config INT0 = Falling ' oder Rising; an sich egal
    On INT0 ISR_Int0 ' Bei Auslösung: Springe nach ISR_Int0
    Enable INT0 ' INT0 einschalten
    Enable Interrupts ' Interrupts global freigeben
    
    ' Timer einstellen
    Config Timer1 = ... je nach gewünschter Dauer...
    On Timer1 ISR_Timer1
    Enable Timer1
    
    DIM Pulse as Word ' Zählvariable
    DIM Drehzahl as Word
    
    DO
    'Main-Loop, irgendwas machen, z.B. Ausgaben etc
    LOOP
    
    ISR_Int0:
    INCR Pulse ' Pulse um 1 erhöhen
    Return
    
    ISR_Timer1:
    Drehzahl = Pulse * Faktor ' (Faktor je nach Motortakte/Zylinderzahl/Messzeit)
    Pulse = 0
    Return

    So lassen sich schon mal die Pulse zählen. Jetzt nur noch nen Timer mit der gewünschten Zähllänge dazu, dort die Anzahl der Pulse auswerten und die Variable 'Pulse' wieder auf 0 setzen.
    #ifndef MfG
    #define MfG

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress