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
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.
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
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.
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.
Da du offensichtlich zwei spannungswerte zum vergleichen hast und da gleichzeitig verglichen werden soll ... braucht man auch zwei komparatoren.
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.
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).
Die zwei komparatoren sind mit einem ODER verknuepft. Wenn das eine kommt, oder das andere so wird ausgeloest.
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
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.
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 ***************************
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.