Hallo, Ist mein erstes Projekt habe also keine Erfahrung. Wie kann ich einen Eingang des PIC12F617 so konfigurieren das er ab >1V ein High meldet und <1V Low)? Die Betriebsspannung des PIC ist 4,5V. Und welcher Eingang ist dafür am besten geeignet? Vielen Dank
> Und welcher Eingang ist dafür am besten geeignet? Es gibt manche Mikrocontroller die haben einen eingebauten Komparator wo du dann an den anderen Vergleicheingang eventuell 1V zur verfuegung stellen kannst. Ob das so ist darfst du selber rausfinden indem du das Datenblatt deines Controllers selber liesst und dabei mal nach Komparator suchst. Viele Controller koennen das aber nicht, da musst du dann einen externen Komparator bereitstellen der dein Signal mit 1V vergleicht. Beachte dabei das viele Komparatoren einen Opencollektorausgang haben. Ein sehr alter Comparator den schon unsere Grosseltern verwendet haben ist dabei der LM393, deutlich moderner, aber auch schon 10Jahre alt, waere ein LMC7211. Vanye
Torsten R. schrieb: > Und welcher Eingang ist dafür am besten geeignet? Ein ADC-Eingang.
:
Bearbeitet durch User
Torsten R. schrieb: > das er ab >1V ein High meldet und <1V Low) Genau bei 1V geht sowieso nicht. Du musst schon angeben, welche Toleranzen du bei der Schaltschwelle erlaubst.
Vanye hat eigentlich schon alles gesagt - aber in der Praxis gibt es meist ein paar Stolperfallen. Zur Verdeutlichung hab ich dir mal einen Auszug aus dem Datenblatt angehängt. FIGURE 9-1 zeigt gleich in der Fußnote in mögliches erstes Problem: "The black areas of the output of the comparator represents the uncertainty due to input offsets and response time." Deine Aufgabe wäre hier, die bei deiner Anwendung zulässige "uncertainty" zu bestimmen und abzuprüfen. FIGURE 9-2 zeigt dir zunächst, dass sowohl GP1/CIN0- als auch GP4/CIN0- als Messeingang möglich sind, und welche Möglichkeiten du hast, um den Vergleichswert (1V) bereit zu stellen. Dein uC bietet hier GP0/CIN+, FixedRef, CVREF oder CMVREN. Deine Aufgabe wäre hier zu prüfen, ob das für dich so hin haut. Bei der ganzen Geschichte solltest du aber auch "9.2 Analog Input Connection Considerations" beachten ...
:
Bearbeitet durch User
Genau, da steht's geschrieben. Noch wichtig, das Kapitel 5, der/die Eing[a/ä]ng(e) müssen auf Analog- bzw. Digital-Funktion konfiguriert werden. Wenn Du es abschreiben willst, dort: http://www.f-w-eppers.homepage.t-online.de/BigC_Dir/big_C8.X.zip werden, wenn ich richtig erinnere, 2* Komparatoren genutzt. Was mir noch einfällt: Web-Site von Sprut, er läßt sich auch gründlich zu Comparator aus. mfG fE
:
Bearbeitet durch User
Vielen Dank erstmal. Wenn ich das richtig verstanden habe sollte ich mein 1V Signal (was im wahren Leben entweder 1V = H oder 0V = L hat) an den Eingang GP1/CIN0- anschließen und ein Vergleichsregister Register FixedRef (???) zB auf 0,5V einstellen. Richtig?
Torsten R. schrieb: > Wenn ich das richtig verstanden habe ... Wenn ICH das richtig verstanden habe, dann hast Du eben die Specs geändert -- oder es Dir anders überlegt -- oder Du verfolgst nun eine neue Häkelei. Über unausgegorene Pläne debattieren, da hab ich jetzt auch nicht den Gieper drauf. Und drum bin ich erst mal raus!
Torsten R. schrieb: > Vergleichsregister Register FixedRef (???) zB auf > 0,5V einstellen. Richtig? Aber die Hysterese nich vergessen! Sonst zappelt das evtl. rum. Gut das der Pic eine hat. ;) Dabla Punkt 9. ff Joe L. schrieb: > Wenn ICH das richtig verstanden habe, Haste nich.
Torsten R. schrieb: > Wie kann ich einen Eingang des PIC12F617 so konfigurieren das er ab >1V > ein High meldet und <1V Low)? Der Eingang kann dir keine Analogsignale melden. Hast du dir das Kapitel 9 im Datenblatt schon einmal zu Gemüte geführt? Das dürfte dein Problem lösen. Deine Meldung kannst du dann z.B. im Register CMCON0 im COUT Bit ablesen. https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/DataSheets/41302D.pdf
Ich habe die Specs nicht geändert. Dann hast du mich nur falsch verstanden, oder ich mich zu dämlich ausgedrückt. Hier der genaue Hintergrund, der macht die Aufgabe vielleicht verständlicher. Der PIC selbst läuft mit 4,5V Betriebsspannung. An einem Eingang ist über einen Taster aber nur die Spannung einer Uhrenbatterie, also je nach Füllstand noch ca. 1- 1-5V. Ich will nun wissen ob der Taster gedrückt ist (=1 - 1,5V am Eingang) oder eben nicht gedrückt ist (=0V am Eingang), mehr nicht.
Ich habe dazu mal ChatGPT befragt und da kam folgende Antwort: "Der PIC12F617 hat eine feste interne Referenzspannung von 1,024 V, die nicht programmierbar ist. Du musst die Referenzspannung nicht manuell festlegen, da sie bereits intern festgelegt ist. Hier ist der Code: LIST P=12F617 INCLUDE <P12F617.INC> __CONFIG _CP_OFF & _WDT_OFF & _MCLRE_OFF & _IOSCFS_4MHZ ORG 0x00 ; Reset vector GOTO Main Main: BSF STATUS,RP0 ; Select register bank 1 MOVLW B'00000001' ; Set GP0 as input (Channel 0) TRIS GPIO ; Configure GPIO as input BCF STATUS,RP0 ; Select register bank 0 BSF CMCON0, C2OE ; Enable Comparator 2 BCF CMCON0, C2OUT; Clear Comparator 2 output (C2OUT) Loop: BTFSS CMCON0, C2OUT ; Check the Comparator 2 output GOTO LowSignal ; If C2OUT is low, jump to LowSignal GOTO HighSignal ; If C2OUT is high, jump to HighSignal LowSignal: ; Hier kannst du den Code ausführen, wenn das Signal niedrig (0V) ist. GOTO Loop HighSignal: ; Hier kannst du den Code ausführen, wenn das Signal hoch (1V) ist. GOTO Loop END ``` In diesem Code wird der Komparator 2 (C2) verwendet, um das Eingangssignal mit der fixen internen Referenzspannung von 1,024V verglichen. Wenn der Ausgang des Komparators 2 hoch ist (das Eingangssignal höher als die Referenzspannung), wird der HighSignal-Abschnitt ausgeführt, andernfalls der LowSignal-Abschnitt. Bitte beachte, dass der PIC12F617 eine feste Referenzspannung hat, die nicht geändert werden kann. Du kannst den Code verwenden, um den Zustand des Eingangssignals zu überwachen und entsprechend darauf zu reagieren." Könnte das korrekt sein? Ich kann es noch nicht testen.
:
Bearbeitet durch User
Torsten R. schrieb: > Ich will nun wissen ob der Taster > gedrückt ist (=1 - 1,5V am Eingang) oder eben nicht gedrückt ist (=0V am > Eingang), mehr nicht. Wo kommen dann die 0V her? Taste nicht gedrückt sorgt erstmal nur für "Spannung undefiniert". Typisch schaltet man daher Tasten gegen GND und enabled den internen Pullup. Der Pullup legt dann High an bei Taste nicht gedrückt.
Torsten R. schrieb: > Ich habe die Specs nicht geändert. Hast du wohl. Torsten R. schrieb: > ab >1V ein High meldet und <1V Low mutiert zu Torsten R. schrieb: > Vergleichsregister Register FixedRef (???) zB auf 0,5V einstellen Wo kommt plötzlich der Faktor 2 her?
Peter D. schrieb: > Typisch schaltet man daher Tasten gegen GND Das wird die Uhrenbatterie nicht mögen - falsche Schaltung.
Du hast Recht, offener Eingang ist undefiniert. Aber ich könnte hinter dem Taster noch einen Pull down Widerstand an den Eingang legen. ?
Die 0,5V des Vergleichsregisters habe ich gedacht ist ein guter Wert als Schaltschwelle genau auf der Hälfte zwischen 1V und 0V an meinem Eingang. Wie gesagt ich will wissen ob der Taster gedrückt ist oder nicht, mehr nicht. Hab mich anfangs wohl unglücklich ausgedrückt.
Torsten R. schrieb: > Könnte das korrekt sein? Nein! Das ist eine dumme KI und kein Mensch... :DDD Torsten R. schrieb: > Ich kann es noch nicht testen. Aber ins Dabla gugen, solltest du endlich!
1 | 2010 Microchip Technology Inc. DS41302D-page 67 |
2 | PIC12F609/615/617/12HV609/615 |
3 | 9.0 COMPARATOR MODULE |
4 | The comparator can be used to interface analog |
5 | circuits to a digital circuit by comparing two analog |
6 | voltages and providing a digital indication of their |
7 | relative magnitudes. The comparator is a very useful |
8 | mixed signal building block because it provides analog |
9 | functionality independent of the program execution. |
10 | The Analog Comparator module includes the following |
11 | features: |
12 | • Programmable input section |
13 | • Comparator output is available internally/externally |
14 | • Programmable output polarity |
15 | • Interrupt-on-change |
16 | • Wake-up from Sleep |
17 | • PWM shutdown |
18 | • Timer1 gate (count enable) |
19 | • Output synchronization to Timer1 clock input |
20 | • Programmable voltage reference |
21 | • User-enable Comparator Hysteresi |
Torsten R. schrieb: > Aber ich könnte hinter > dem Taster noch einen Pull down Widerstand an den Eingang legen. ? Ja.
Torsten R. schrieb: > Was ist falsch an dem Code? Die Zeile, in der Schaltschwelle und Hysterese festgelegt werden.
Ich wuerde dazu einen npn Transistor nehmen. Basis ueber ca. 10k an besagten Taster zur Batterie. Ebenfalls ca. 100k von Basis zu GND. C an Eingang des uC, E an GND. Dann noch den internen Pullup des uC Eingangs einschalten. Das Ganze ist jetzt invertiert, aber das sollte ja kein Problem sein.
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.