-
        

Ergebnis 1 bis 10 von 10

Thema: VREF- funktioniert nicht

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    30
    Beiträge
    150

    VREF- funktioniert nicht

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo Leute!

    Meine Frage bezieht sich auf den A/D-Converter. Ich würde gerne eine Analoge Spannung digitalisieren. Und da hab ich zu Übungszwecken ganz einfach nen Spannungsteiler aufgebaut. Der geht von 0,5V - 5V. Na und dann hab ich den Code (in C) geschrieben. Hab auf die Parameter geachtet und na ja, das ganze läuft einmal. Aber blöderweise funktioniert VREF- nicht. Also ich kann schon den Analogwert digitalisieren, aber halt nicht von 0-1023. Da müsst ich halt VREF- auf ca. 0,5V legen. Das tu ich auch. Nehm nen Spannungsteiler mit etwas weniger als 0,5V (man ist ja vorsichtig) und häng ihn an den VREG- PIN. Nur Blöderweise ist die Spannung wenn ich am Pin messe 0V. Wenn ich den Draht wieder wegnehme, hab ich an meinem Spannungsteiler wieder meine ca. 0,5V. Jetzt frag ich mich halt, wieso am PIN 0V anliegen, obwohl ich eh 0,5V anlege. Ich versteh das nämlich nicht ganz.

    Also ich schicke noch den Programmcode mit

    Code:
    /** I N C L U D E S **********************************************************/ 
     #include <p18cxxx.h> 
     #include <adc.h>
     #include <pwm.h> 
     #include <timers.h> 
     #include <stdlib.h> 
     #include "delays.h"                        // für die Warteschleife 
       
    
     /** Configuration ********************************************************/ 
     #pragma config FOSC = INTOSC_XT   //Ich verwende interne Clock (HS für 20MHz, allerdings sind 22pF Kondis nötig)
     #pragma config PWRT = ON 
     #pragma config BOR = OFF 
     #pragma config WDT = OFF  //Watchdog Timer 
     #pragma config LVP = OFF  //Low Voltage ICSP 
     //#pragma config PBADEN = OFF  
    
     /** D E C L A R A T I O N S **************************************************/ 
     #pragma code
    
     
    
     void main(void) 
     {
                int result;
    	   unsigned int pwmwert=0;	   
     
    	   LATB = 0;     // Port B wird 0 gesetzt 
    	   TRISB = 0;     //Port B wird als Ausgang gesetzt
    	   PORTC = 0;    //PORT C wird 0 gesetzt
    	   TRISC = 0;    //PORT C wird als Ausgang gesetzt
    	   TRISA = 1;     //PORT A wird als Eingang gesetzt
    
    		OpenTimer2(TIMER_INT_OFF & T2_PS_1_1 & T2_POST_1_1);
    		OpenPWM1(255);
    		
    
       while(1) 
       { 
    		
    		OpenADC(ADC_FOSC_RC & ADC_RIGHT_JUST, ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD & ADC_VREFMINUS_EXT, 15);
    	
    		Delay10TCYx(5);
    		ConvertADC();
    		while( BusyADC() );
    		result = ReadADC();
    		CloseADC();
    		
    		pwmwert=result;		
    
    		SetDCPWM1(pwmwert);
    		SetOutputPWM1(SINGLE_OUT,PWM_MODE_1);
    				
       }//end while
    	
    	ClosePWM1();
    	CloseTimer2(); 
    
     }//end main
    So ich hoffe da weiß wer Rat. Ich weiß nämlich nicht mal obs am Code liegt oder nicht.

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.111
    Hi!
    Wenn die Spannung zusammen bricht klingt das schwer nach zu großer Quellenbelastung, entweder durch das Board, oder aber im µC. Da ich weder auswendig weiß, wie viel Strom Vref zieht noch, wie Dein Spannungsteiler aussieht, kann ich Dir nicht weiter helfen.
    Gruß

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    30
    Beiträge
    150
    Hallo!

    Nein, es liegt nicht an der Versorgung, aber ich denke, ich kann den Fehler schon mal ein "wenig" eingrenzen. Es liegt glaub ich an der Software. Weil es sieht so aus, als ob ich am Pin VREF- Masse habe. Also vielleicht ist der Pin intern auf Masse geschalten worden. Aber ich hab keine Ahnung wie oder warum. Ich meine ich weiß nicht. Ich verwende ja C und zwar die C18 von Microchip. Und von dort eben die Funktionen. Aber ja was soll ich machen, die geht anscheinend nicht, oder ich bin zu dumm. OK, es wird das zweitere sein, aber findet war einen Fehler bei dem was ich geschrieben habe?
    Bitte, bitte, sagt ihn mir!!

    lg
    Norbert

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    30
    Beiträge
    150
    So ich packs nicht. Ich hab mich jetzt schon viel zu lange herumgespielt. Ich hab mir die Sourcefiles von den Funktionen angesehen und ja, was soll ich sagen. Es müsste funktionieren.
    So aus. Jetzt muss das mal ne Zeit ruhen, sonst hau ichs noch weg.

    lg,
    Norbert

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Hallo,
    den PIC18... kenne ich nicht, kann mit "#include <p18cxxx.h>" auch nicht raten, was für einen PIC18 Du hast.
    Beim PIC16F877 muß ich mit 4 Bits im Register ADCON1 angeben, welcher Eingang digital, analog, Vref+ und Vref- ist.
    Wenn das richtig angegeben ist, kommt Vref+ an +5V und Vref- an 0,5V.
    Dann sollte es funktionieren, wenn .... der PIC18 so was auch hat
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    30
    Beiträge
    150
    Hallo Kalledom!

    Also ich verwende den PI18F4550. Das kann man nur so im Code schreiben, weil ich ein spezielles LinkerScript-File habe. Aber da kennst du dich wahrscheinlich eh aus.
    Und das was du gemacht hast hab ich eh ausprobiert. Also ich denke es liegt an der Funktion OpenADC(). Also ich mache das nächste mal Step by Step den Einschaltvorgang vom ADC also mit Registerbeschreiben und so weiter. Aber eigentlich hab ich das eh schon gemacht. Egal, vielleicht verträgt sich beides miteinander nicht.
    @ kalledom: OK, könntest du mir vielleicht noch den Code von deinem Versuch schicken, bitte.

    lg
    Norbert

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    67
    Beiträge
    2.063
    Ich programmiere nur in Assembler.
    Hier ist der Link zur Initialisierung des ADC: http://www.domnick-elektronik.de/picasm.htm#Init
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    30
    Beiträge
    150
    Hallo!

    Also jetzt ist bald Schluss! Es funktioniert nicht. Aber ich denke ich hab den Fehler. Es muss an meiner Spannungsquelle liegen. 100%-ig. Weil ich hab jetzt alles ohne den C-Code programmiert, also direkt mit Registerbeschreiben. Und es geht nicht, aber ich hab auch meine VREF+ verwendet. Da hab ich ganz einfach die 5V vom Netzgerät angehänt und die kommen auch am PIN direkt an. Also ja ich schaue drauf, dass ich ne besseres Spannungsquelle herkrieg und dann schreib ich noch mal

    lg
    Norbert

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    30
    Beiträge
    150
    Hallo!

    So ich hab jetzt das ganze mit nem Spannungsregler versucht. Und ich sag euch was. Ich hab halt ohne µC den Spannungswert eingestellt und dann angeschlossen. Und am Pin lagen die 1,25V Referenzspannung des Spannungsreglers. Hm, ich versteh das ganze jetzt noch weniger, aber jetzt denke ich dass das Problem Hardwaremäßig aber wieso tötet mir der PIN meine Spannung? Weiß da wer Rat, vielleicht aus der Elektronikabteilung wer. Weil da hats ja was. Die fixen Spannungen nimmt er, aber die ich ich mit meiner Widerstandsbeschaltung mache nimmt er nicht. Was hats da bitte?

    lg,
    Norbert

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.05.2006
    Alter
    30
    Beiträge
    150
    Hallo!
    Heast Burschen, hauts ma eine runter, wie man so schön sagt. Ich Idiot hab den dümmsten Fehler gemacht dens gibt. Wissts eh ich hab alle Softwareteile durchkontrolliert bis auf das TRISA Register. Und genau das, hab ich falsch. Bin ich gut oder was. So aber jetzt funktionierts endlich. Also wirklich, hätte mir das keiner sagen können. Stand ja im Code
    Nein, Scherz, ich freu mich das ich draufgekommen bin. *happy*
    So dann mal fröhliches programmieren wünsche ich.

    Aber ich bin noch nicht ganz fertig, also vielleicht gibts bei meiner VREF- noch ein paar Probleme.

    lg
    Norbert

Berechtigungen

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