www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Prinzipielle Frage zur Funktion eines Komperators


Autor: Pic- gangster Edgar (Firma: FH) (ede84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

ich habe eine Prinzipielle Frage zur Funktion eines 
Comperators.(dsPic33FJ16GS)

ich bekomme von einen Stromwandler eine Spannung zwischen 3 und 1,8V...
der maximale Eingang am Komperator ist Avdd - 1,5V....

Der Komperator soll einen Interrupt auslösen, wenn

1) die Spannung vom Stromwandler über 3V steigt, oder
2) die Spanung vom Stromwandler unter 1,8V sinkt.

Kann ich die Spannung vom Stromwandler an einen einzigen Comperator-Pin 
vom uC legen? oder muss ich dafür zwei Pins benutzen?


Gruß Ede

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Ding heißt "Komparator" mit zwei 'a', und wenn Du danach googelst, 
findest Du auch was Hilfreiches. Ansonsten ist 
http://www.elektronik-kompendium.de immer wieder einen Besuch wert.

Autor: Pic- gangster Edgar (Firma: FH) (ede84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo danke für die rechtschreibhilfe :-)

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wozu in die Ferne schweifen ???

http://www.mikrocontroller.net/articles/Komparator

Autor: Pic- gangster Edgar (Firma: FH) (ede84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja aber mir geht es nicht um die Funktionsweise eines Komparators, die 
hab ich schon verstanden.....sondern um die Frage, ob ich jetzt 
eigentlich zwei Pin's dafür brauche oder nicht...


aber danke für die Hilfe

Autor: peter-neu-ulm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im beschriebenen Fall müsste ein Ausgang des Kontrollers auf den 
Komparatoreingang zurückgeführt werden, sodass eine Hysterese entsteht. 
Mit den passenden Widerständen lässt sich der Einschalt- und der 
Ausschaltpunkt genau festlegen. Also, ein zweiter Pin müsste draufgehen.

Andere Lösung: A/D-Wandler einsetzen und Schaltpunkte per Software 
festlegen.

Autor: Pic- gangster Edgar (Firma: FH) (ede84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha..

Dankeschön....aber leider kann ich keine AD-Wandler verwenden....der 
braucht zu viel Zeit...ich hab nur knapp 1us um meine MOSFET's aus zu 
schalten.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da du offensichtlich zwei spannungswerte zum vergleichen hast und da 
gleichzeitig verglichen werden soll ... braucht man auch zwei 
komparatoren.

Autor: Pic- gangster Edgar (Firma: FH) (ede84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay alles klar!...hab ich mir eigentlich auch schon gedacht....

mein verständnisproblem ist nur:

der Komparator schaltet immer auf '1' wenn der Eingang über einem 
festgelegten Wert ist. Aber er der zweite Komparatoreingang soll 
schalten, wenn der Eingang unter(!) einem festgelegten Wert ist.

Autor: peter-neu-ulm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach dem Überschreiten einer Spannungsgrenze soll Dein Kontroller zuerst 
seinen gerade laufenden Befehl abschließen, dann in die 
Interrupt-Routine springen, da die wichtigsten Vergleichsoperationen 
ausführen und dann noch die passende Reaktion ausgeben ???

Irgendwie passt das vom Zeitablauf her schlecht in eine usec, denn das 
dauert -zig Taktimpulse.

Bei so etwas ist wohl eine Lösung mit diskreten Komparatoren angebracht, 
wobei man daran denken soll, dass die üblichen LM311 oder LM339 schon zu 
lahm sind. Siehe Reaktionszeiten (Datenblatt).

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die zwei komparatoren sind mit einem ODER verknuepft. Wenn das eine 
kommt, oder das andere so wird ausgeloest.

Autor: peter-neu-ulm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also: "Wenn Komparator A 1 abgibt und Komparator B 0 abgibt, dann darf 
der Mosfet freigegeben werden"

So etwas kann man lösen, indem man eine Tabelle mit den vier hier 
möglichen Betriebszuständen aufstellt und daraus die dazugehörige 
Logikverknüpfung ausliest, etwa :  A und B-nicht = C

Autor: Taz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Pic- gangster Edgar
erst mal schreibst du technischen Nonsens, was es unnötig schwer macht.
" Aber er der zweite Komparatoreingang soll schalten, wenn der Eingang 
unter(!) "
der Eingang schaltet nicht sondern der Ausgang.
Ich habe nach dsPic33FJ16GS gesucht das ist kein Komparator sondern ein 
Signalcontroller.

Aber nun zu einer möglichen Lösung. Wie schon gesagt zwei Komparatoren 
benutzen, der eine erzeugt 'High' bei über 3V der ander 'High' bei unter 
1,8V. Nun beide Oder verknüpfen (z.B. mit Dioden) und an den Interrupt 
Eingang anschliessen zusätzlich beide Komparatoren an ein Port 
anschliessen.
So lössen beide den gleichen Interrupt aus und in der Routine kann dann 
verarbeitet werden ob die eine Schwelle oder die andere ausgelöst hat.
Schön wäre natürlich zwei Interrupteingänge zu benutzen wenns geht.

Autor: Pic- gangster Edgar (Firma: FH) (ede84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Taz,

ich hab schon ganz vergessen das ich mal dieses Problem hatte :-)

Dafür hab ich jetzt ein neues....ich benutze ja den Komparator um den 
Strom zu begrenzen....wenn ein bestimmter Wert überschritten wird kommt 
die "Current-Limit" Funktion und die PWM-Signale schalten aus....

Allerdings schalten bei mir die PWM-Signale komplett aus...und ich will 
eigentlich nur, dass die Signale etwas kleiner werden, oder eben nicht 
mehr steigen können...ein Grenzwert für die Breite der Pulse sozusagen..

was mach ich falsch?

Gruß
Edgar

hier der Quellcode:

//*************** UP init_PWM **************************************
void init_PWM(void)
{
PTCONbits.PTEN = 0;     //PWM disable

PTCONbits.SYNCOEN = 1;    //SYNC-OUT Disable(0)
PTCONbits.SYNCEN  = 0;  //Extern. Sync erlauben(1)

PTCON2bits.PCLKDIV = 0;    //Frequenz wird duch '1' geteilt

//************ PWM1H ******************************************
IOCON1bits.PENH = 1;    //PWM1 hat Kontrolle über H-pin
IOCON1bits.PENL = 1;    //PWM1 hat Kontrolle über L-pin

IOCON1bits.PMOD = 0;    //PWM1 im Complememtary Mode
PWMCON1bits.DTC = 2;    //keine Totzeit
PWMCON1bits.ITB = 0;    //primary Timebase

IOCON1bits.CLDAT = 0;    //PWM1H und PWM1L gehen auf Null, bei CL
FCLCON1bits.CLSRC = 0;     // CurrentLimit input "FAULT 1"
FCLCON1bits.CLPOL = 0;     // The selected current-limit source is 
active-high
FCLCON1bits.CLMOD = 1;    //Current-Limit enable(1)
FCLCON1bits.FLTMOD = 1;   //Latched Mode(0), cycle mode(1)


RPINR29bits.FLT1R = 28;     // "FAULT 1" input pin remapped to RP28

IOCON1bits.FLTDAT = 0;  // PWM1H and PWM1L are driven LOW on occurance
      // of Fault and Current limit respectively
      //Latched Condition (Latch-Mode?)


PHASE1 = 0;    //PHASE1 immer '0'(0)

PTPER = 9615;  //gewünscht 10us --> 10000ns/1.04ns = 9615
PTCONbits.PTEN = 1;  //PWM Enable
}
//*************************************************************

//*************** UP init_Komparator ***************************
void init_Komparator(void)
{

CMPCON4bits.CMPON = 0;    //Komparator 4 aus(0)

CMPCON4bits.INSEL = 3;    //Komparator 4D wählen
CMPCON4bits.RANGE = 0;    //Interne Referenz
CMPDAC4bits.CMREF = 213;  //bei 0.25V(213) soll er auslösen

CMPCON4bits.CMPON = 1;    //Komparator 4 ein(1)

}
//*********** ende UP init_Komparator ***************************

Autor: Taz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi  Pic- gangster Edgar
sorry da kann ich dir nicht helfen. Erstens benutze ich fast 
ausschliesslich den ADUC841 und zweitens die PWM Funktionen hab ich noch 
nie gebraucht.
Ich bin mir aber sicher du findest den Fehler auch selber.
MfG Taz

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.