Antworten

Der Beitrag verursachte die folgenden Fehler, die behoben werden müssen:
Achtung: In diesem Thema wurde seit 120 Tagen nichts mehr geschrieben.
Wenn Sie nicht absolut sicher sind, dass Sie hier antworten möchten, starten Sie ein neues Thema.
Einschränkungen: 8 pro Beitrag (8 verbleibend), maximale Gesamtgröße 8,79 MB, maximale Individualgröße 1 MB
Entfernen Sie den Haken der Dateianhänge, die gelöscht werden sollen
Klicken Sie hier oder ziehen Sie Dateien hierher, um sie anzuhängen.
Anhänge und andere Optionen
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau

Zusammenfassung

Autor PICkel
 - 12.08.2022, 13:47:46 CEST
Zitat von: PICkel in 11.08.2022, 13:43:23 CESTim DaBla zum 18F14K22, Absatz 16.3 werden max. 10kOhm als Eingangswiderstand genannt

Zitat von: picass in 11.08.2022, 17:52:47 CESTÄhm..., so ganz klar ist mir das noch nicht.
Maximal... von "oben" oder von "unten" gesehen

War wohl ein wenig unklar ausgedrückt: Es ist nicht der Eingangs-R im PIC gemeint, sondern dass die äußere Beschaltung (RS in FIG. 16-5) des ADC-Pin nicht mehr als 10kOhm Innenwiderstand haben soll.

Gruß
PICkel
Autor picass
 - 11.08.2022, 17:52:47 CEST
Ähm..., so ganz klar ist mir das noch nicht.
Maximal... von "oben" oder von "unten" gesehen? Darf das Eingangssignal nun niederohmiger sein oder soll es hochomiger sein?
In "meinem" Fall, also demjenigen, welcher mir im Moment auf den Nägeln brennt, also dem testweisen Einsatz meines 4segment-LED-anzeigenden PIC ist ursprünglich zwischen dem vorgeschalteten OP OPA335 und dem Port A2 am PIC schlicht nichts, die sind diretissima miteinander verbunden.

Allerdings hat dies zu dem beschriebenen Dilemma geführt, dass die Anzeige wie wild springt, hier gleich beide letzte Stellen. Überlegt hatte ich heute, ob es möglich sein könnte, den OPA wegzulassen und den PIC direkt an das Signal für die Messung der Abgastemperatur vor dem Dieselpartikelfilter im Auto zu hängen.

Das wird - so eine allerdings gute Vermutung - erzeugt, indem eine geregelte Uv von +5 Volt auf einen Widerstand von 1 kO geführt wird, der wiederum ist mit einem PTC verbunden, welcher als Kaltwiderstand bei etwa 20°C ca. 215 Ohm hat (200 Ohm bei 0°C). Also ein Spannungsteiler von 5 Volt über 1 kO auf 215 Ohm und das auf Masse.
Dieses Signal ist also recht niederohmig, aber es soll nicht durch eine zusätzliche niederohmige Mess-Schaltung belastet werden.
Bitte auch in den anderen, gerade laufenden Fred über die Messung dieser Temp schauen. Den Gedanken an das Weglassen des OPA habe ich wieder verworfen.
Und danke für den Hinweis auf das Datenblatt.
Grüße, picass
Autor PICkel
 - 11.08.2022, 13:43:23 CEST
Hallo picass,

im DaBla zum 18F14K22, Absatz 16.3 werden max. 10kOhm als Eingangswiderstand genannt, und auf Seite 208 in Fig. 16_5 ist die Eingangsbeschaltung dargestellt.

Die 10kOhm gelten aber nur, wenn man dem PIC genügend Zeit zum Laden der internen Kondensatoren CPIN und CHOLD gibt. Da diese aber zusammen nur ca. 20pF haben, ist das für Deinen Fall unkritisch.
Mit 2...4,7 kOhm bist Du auf der sicheren Seite, auch was den Leckstrom am Pin anbelangt.

Gruß
PICkel
Autor picass
 - 11.08.2022, 13:04:40 CEST
Diesen Fred führe ich mal fort, ändere aber das interne Thema. Vorher ging es um die Eingrenzung des Bereiches, in welchem an einem Port ein analoges Signal eingelesen werden kann. Das funktionierte letztlich auch sehr gut, hier zwischen 1 und 4 Volt.

Gettz was Anderes:
Wie hoch-ohmig ist so'n PIC-Port bei Verwendung als analoger Eingang. Habe in dem Datenblatt nichts darüber gefunden.
Hintergrund der Frage: in einem aktuellen Projekt - Anzeige der Regeneration des Dieselpartikelfilters - habe ich vor meinen geliebten PIC18F14K22 einen OPA335 gesetzt, in der Absicht und Annahme, dass dieser Opa als Spannungsfolger das Eingangssignal nicht belastet, am Ausgang aber den PIC gut füttern kann.

Nun stellt sich in diesem Projekt raus, dass der OPA eigene Probleme mit sich bringt, und insbesondere das Füttern des PICs auch Unerwartetes gebiert. Daher die Überlegung, den OPA gleich wegzulassen. Aber da würde ich doch gerne wissen wollen, wie hochohmig so'n PIC dabei ist, denn das Messsignal soll wirklich nicht belastet werden.
Grüße, picass
Autor picass
 - 22.05.2022, 16:44:29 CEST
Zitat von: picass in 22.05.2022, 10:04:30 CEST.........Spannungsteiler........ mit 39 kO an Plus und 10 kO an GND. Mag sein, dass der zu hochohmig ist, da müsste ggf. noch experimentiert werden.
Ist experimentiert und die Befürchtung bestand zurecht: es stellte sich auch nicht die erwartete Spannung von 1 Volt ein, sondern stattdessen 1,4 Volt. Eine Zehnerpotenz niedriger, dann passt es besser, also 3,9 kO und 1,0 kO. Oder halt so'n niedliches Regelungs-IC mit passender Spannungsausgabe.
Grüße, picass
Autor picass
 - 22.05.2022, 10:04:30 CEST
Gettz hat auch die Einführung einer oberen Grenze für den Bereich des ADC geklappt: Der PIC wandelt nunmehr mit seinen 1.024 bit nur noch im Bereich zwischen 1 und 4 Volt.

Die untere Grenze hatten wir schon. Um die einzuführen, muss zunächst eine externe Spannung an den für die untere Grenze halt zuständigen Portpin gelegt werden – beim PIC18F14K22 ist das der Pin Port A0. Selbst hatte ich da einen Spannungsteiler angelegt mit 39 kO an Plus und 10 kO an GND. Mag sein, dass der zu hochohmig ist, da müsste ggf. noch experimentiert werden. Im Programm wird dann mit movlw b'0000 0001' und movwf ADCON1 das Bit 0 gesetzt und das wars.

Die obere Grenze bietet mehr Auswahlmöglichkeiten, auch wieder eine externe Spannung. Die müsste dann an den Pin Port A1. Selbst habe ich das FVR genommen, das interne Festspannungsmodul, welches 3 verschiedene Spannungen anbietet, siehe auch oben: 1,024 und 2,048 und 4,096 Volt. Nimmt man das, spart man sich halt den Spannungsteiler.

Um die obere Grenze zu aktivieren inclusive der Nutzung des FVR wird im ADCON1 Register das Bit 3 gesetzt, also movlw b'0000 1000' und mov das Ganze ins ADCON1.  [Für beide Grenzen gleichzeitig entsprechend b'000 1001' ] Nun noch die gewünschte Spannung und "Enabelung" des FVR: für 4,096 Volt wird mit movlw b'1011 0000' und movwf VREFCON0 dies ausgeführt.

Und dann sucht sich der PIC leicht überprüfbar seine ADC-Werte nur noch in diesem Bereich. Unterhalb wird konstant 0 ausgegeben, oberhalb konstant 1.023. Damit hat man unversehens auch eine deutlich höhere Auflösung in diesem Bereich als die üblichen 10 bit des ADCs.
Grüße, picass
Autor picass
 - 21.05.2022, 17:03:29 CEST
Schwitz! :( Der PIC ist ja doch ein Guter! Zumindest, wenn man ihm klare Anweisungen erteilt! :(
Wie üblich hatte ich für diese Änderung die Vorlage eines älteren Programm-Entwurfes genutzt. In dem waren die Port-Initialisierungen zwar funktionabel, aber die Semantik gefiehl mir nicht mehr. Nun hatte ich alle Einstellungen für PortA auf das Format gebracht: movlw b'xxxx xxxx' und movwf XXX. Nach der Bereinigung funktionierte ja auch das normale Einlesen der analogen Spannung an Port A2 wieder korrekt, aber bei den vielen binären Nullen und Einsen war dann doch eine Unkonzentriertheit dabei, und so hatte ich beim ADCON1 aus Versehen das Bit 1 gesetzt und nicht das Bit 0. Das Einser war aber "reserved" und das hat den PIC verleitet, verschnupft zu reagieren.

Gettz klappt das Hochlegen des untersten Wertes des Bereiches für den ADC: die 1024 bit verteilen sich im Moment auf den Bereich von 1 Volt bis 5 Volt. Der obere Bereich kommt vielleicht später noch. Interessant ist noch, das unterhalb der neuen Einstiegsquelle - also von null Volt bis nun 1 Volt - alle Werte als Nullen vom ADC angegeben werden. Danke für wohlmeinende Hilfen, Grüße, picass
Autor ADMIN
 - 21.05.2022, 16:19:24 CEST
Zitat von: pic18 in 21.05.2022, 15:30:36 CESTps: warum muß alles gepackt werden?[
Es muss nur das gepackt werden, was nicht in der Liste steht, die unter Anhang einfügen steht.
Bei Codes kann man oben in der Leiste beim schreiben, den TAG CODE wählen und so den Code einfügen.
Autor pic18
 - 21.05.2022, 15:30:36 CEST
ich habe hier mal ein Programmausschnitt von meinem Projekt. Ich arbeite hier mit einer Taktfrequenz von 40MHz also FOSC/4 = 10MHz
adc.zip

ps: warum muß alles gepackt werden?[
Autor pic18
 - 21.05.2022, 15:12:11 CEST
willst Du einen analogen Wert abfragen oder ausgeben? Ich gehe mal davon aus, dass Du einen analogen Wert einlesen möchtest. Mit setzen des Bits ADCON1.GO startest Du die Abfrage. Natürlich müssen vorher die anderen Parameter gesetzt sein. Also den Eingang auf Eingang setzen, den richtigen analogen Kanal setzen, sowie die richtige Acquisition Zeit. Diese ist abhängig von der Taktfrequenz und der Impedanz vom Eingang. Nach dem Start von ADCON1.GO mußt du dieses Bit solange abfragen bis dieses auf -DONE also Null springt. Dann ist die Auswärtezeit erreicht und du kannst das Ergebnis im ADRES - Register abfragen.

Similar topics (5)