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

Thema: Steuergerät für Motor die 2te :)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.09.2004
    Ort
    Wien
    Alter
    38
    Beiträge
    26

    Steuergerät für Motor die 2te :)

    Hiho!

    Da ich für nen Freund ein Steuergerät für nen Motor entwickeln soll,
    zumindest so, dass er mal halbwegs läuft, bräucht ich bitte ein wenig (bis viel ^^)
    Hilfe von euch!

    Zuerst mal die Funktionsweise bzw. Aufgabe des Boards:

    Durch einen Hallsensor bekommt der Controller (Siemens SAB80C51) bei jeder Umdrehung ein Signal, welches einen Interrupt auslöst - ich nens jetzt mal Bleep

    Jetzt gibts für mich leider nur ein paar Verständnisprobleme bei den Interrupts bzw den Timern...

    Einen Timer brauch ich für die Drehzahlmessung, das is schonmal fix...
    Die Zeit zwischen den Bleeps gemessen und daraus resultiert die Drehzahl.

    Nun hat der Controller nur noch einen Timer, ich brauch aber 2 -
    einmal für den Einspritzzeitpunkt und gleich darauf für die Einspritzdauer...

    Jetzt mal die erste Frage:
    Wenn ich eine bestimmte Zeit warten muss, eben Zeitpunkt und dann Einspritzdauer, sollt ich da nen Timer verwenden oder reicht eine einfache Waitfunktion mit nem passend hohen Wert?

    Den mit Timern kann das (nach meinem Verständis) irgendwie ned funktionieren...
    Jetzt mal meine Überlegungen zum Ablauf:
    -> Initialisierungsphase: Standardwerte werden in Variablen geschrieben, "Drehzahltimer" wird gestartet.
    -> Bleep startet Interruptroutine
    -> Interruptroutine holt sich aus einer Variable, die im Mainprogramm errechnet wird, den Wert für den Timer aus einer globalen Variable (Einspritzzeitpunkt) und startet ihn
    -> Nach Ablauf der Zeit wird der Wert für die Einspritzdauer geholt (wieder aus ner Variable - kann man das überhaupt in ner Interruptroutine?)
    -> der vorrige Timer läuft nochmal (startet sich also quasi selbst neu mit nem anderen Wert)
    -> nach dem Ablauf wirds Ventil geschlossen
    -> Drehzahltimer wird gestoppt und sein Wert ausgelesen und in einer Variable gespeichert
    -> Drehzahltimer wird wieder gestartet
    -> aus Drehzahlvariable wird die Drahzahl berechnet
    -> Gaspedalstellung wird gemessen

    -> Gaspedalstellung und Drehzahl ergeben Werte für Einspritzzeitpunkt und Dauer

    -> Warten auf den nächsten Bleep

    Kann das so funktionieren oder denk ich komplett verkehrt?

    Von mir aus zeichne ich auch gern ne Skizze, bin nur leider grad im Stress

    Schonmal vielen Dank fürs Helfen (... eigentlich schon mal danke fürs Durchlesen .. :P )

    LG Alex
    * Hi! I'm a signature virus! Copy me into your ~/.signature to help me spread! *

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    Jetzt mal die erste Frage:
    Wenn ich eine bestimmte Zeit warten muss, eben Zeitpunkt und dann Einspritzdauer, sollt ich da nen Timer verwenden oder reicht eine einfache Waitfunktion mit nem passend hohen Wert?
    Dazu kann ich was sagen.

    Ich löse solche Sachen immer folgendermaßen:

    Ich stelle meinen Timer so ein, dass er jede Millisekunde (ms) einen Interrupt auslöst.
    In der Interrupt Routine werden alle zeitabhängigen Variablen verarbeitet.

    Willst du zB etwas eine bestimmte Zeit lang machen, dann brauchst ne
    Variable dafür: nennen wir sie mal EINSPRITZDAUER.

    Dann muss in der Timer Interrupt Routine stehen:
    if(EINSPRITZDAUER){ EINSPRITZDAUER--; }


    Im Hauptprogramm wird laufen folgendes ausgeführt:
    if(EINSPRITZDAUER){ einspritzen }else{ nicht einspritzen }


    Will man jetzt einspritzen, dann setzt man EINSPRITZDAUER=10.
    Somit spritzt er 10ms ein.

    Den Aufruf der Interruptroutine kann man natürlich auch öfter aufrufen lassen....

    Vielleicht hilft dir das was ...
    Gruß,
    Franz

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    11.09.2004
    Ort
    Wien
    Alter
    38
    Beiträge
    26
    Hey, das hilft mir schonmal sehr viel weiter

    Stellt sich nur die Frage ob der das zeittechnisch schafft...

    Bei 6000 Umdrehungen kommt son Bleep alle 10 Millisekunden...

    Somit sollte alles auch in der Zeit ablaufen, bzw eigentlich noch schneller, da er ned nur Drehzahl und Gas messen und Einspritzung regeln sollt, sondern noch zusätzlich den Einspritzdruck...

    Wird wohl per Druckwiderstand gemessen:
    Is der Druck unter 1150 wirds Überdruckventil geschlossen,
    is er über 1250 wirds aufgemacht.

    Danke schonmal!

    LG Alex
    * Hi! I'm a signature virus! Copy me into your ~/.signature to help me spread! *

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    38
    Beiträge
    795
    wenn dir das Zeitintervall nicht reicht, musst halt die "frequenz" mit der
    die Interrupt routine aufgerufen wird höher setztn.

    Sprich: Timer Prescaler herab setzen.
    Gruß,
    Franz

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress