Hallo! Habe eine Frage zur Beschaltung des LM235. Im Datenblatt auf Seite 5 ist eine Application abgebildet. --> http://cache.national.com/ds/LM/LM135.pdf Wie groß muss ich R1 wählen. Ich kann das aus dem Datenblatt nicht herauslesen. (zweite Application) Schöne Grüße
Den kannst Du in bestimmten Grenzen selbst wählen! Der Strom durch den Temp-Sensor darf 400µA-5mA (Seite 1) betragen und die Spannung an dem Sensor liegt bei 3V (bei 25°C). Also: R=(U-3V)/I U ist die Versorgungsspannung (V+ im Datenblatt) und I kannst Du dir aussuchen (s.O.)
Seite 1 oben: ...the device operates over a current range of 400 μA to 5 mA with virtually no change in performance. Die Gleichspannungen abhängig von Strom und Temperatur sind aus dem Bild "Forward Characteristics" auf Seite 5 abzulesen.
nein das war Quatsch, die Diode wird in Sperrichtung betrieben. Im Durchlaß hat sie auch eine Temperaturabhängigkeit, nur die ist in dem Bild gezeigt
Ich habe 5V Versorgungsspannung und einen 1.2k Widerstand. Das heißt ich habe etwa 1.6mA. Bei einer Temperatur von geschätzten 23 Grad zeigt er mir 44 Grad an
Ach ja das ganze hängt an einem PIC16F877 mit 10 Bit AD Auflösung also erscheint mir die Abweichung schon etwas viel
also erst mal sollte man den Strom für T Dioden möglichst klein wählen um Eigenerwärmung zu vermeiden.....
Severin Kresser wrote: > Ich habe 5V Versorgungsspannung und einen 1.2k Widerstand. Das heißt ich > habe etwa 1.6mA. Bei einer Temperatur von geschätzten 23 Grad zeigt er > mir 44 Grad an Wie kommst du rechnerisch auf diese 44°C?
habe es zuerst schon mit 600µA getestet. Kann mir also nicht vorstellen dass das an der Eigenerwärmung liegt @Andreas Naja der LM gibt pro °K 10mV Änderung aus(0°C = 273,15 K): Hier der Code: 0°C = 273,15 K 'Analogeingang einlesen + Ausgabe LCD Pause 500 DEFINE OSC 4 ' Oscillator set to 4Mhz DEFINE LCD_DREG PORTD ' LCD Data port at Port D DEFINE LCD_DBIT 0 ' LCD starting data bit = 4 DEFINE LCD_RSREG PORTC ' LCD register select on port D DEFINE LCD_RSBIT 4 ' LCD reset portD.4 DEFINE LCD_EREG PORTC ' LCD enable on port D DEFINE LCD_EBIT 5 ' LCD output on PortD.5 DEFINE LCD_BITS 4 ' LCD o/p is 4 bit data DEFINE LCD_LINES 2 ' Number of lines on LCD = 2 DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 50 DEFINE ADC_BITS 10 ' Set number of bits in result (here 10) DEFINE ADC_CLOCK 3 ' Set clock Source Internal RC CLockgen DEFINE ADC_SAMPLEUS 1000 ' Set sampling time in microseconds Read_Write VAR PORTB.5 ' Display Read(1)/ Write(0) Low Read_Write TRISA = %11111111 ' PORTA all input ADCON1 = 0 ' PORTA all analog Input PORTD.5 ' PORTD.5 input ADC VAR WORD ' Variable type word to store Analog input value ADCB VAR WORD IF PORTD.5 = 1 Then ' Push PortD.5 to start programm LCDOut $FE,1 ' Clear LCD LCDOut "ADC by SK" ' Print Message on LCD LCDOut $FE, $C0 ' Start new line LCDOut "Start......" ' Print Message on second line Pause 1000 ' 1s Pause LCDOut $FE,1 ' Clear LCD start: ADCIN 1, ADC ' Save value from AN1(analog input 1) to ADC ADCB = (ADC - 2731)/1000 ' Convert value from ADC LCDOut $FE,1 ' Clear LCD LCDOut "TEMPERATUR= ",DEC ADCB ' Print value gotten from ADCIN1 Pause 1000 ' 0.1s pause GoTo start ' Move to start EndIF
Dein Code geht davon aus, dass der ADC im Schritten von 1mV misst. Nur liefert dein ADC wahrscheinlich 10bit (Wertebereich 0..1023) für den Spannungsbereich 0..5V, d.h. ein ADC-Schritt entspricht ca. 5mV. Somit entspricht der Nullwert von 2,73V einem ADC-Wert von ca. 546 (2,73V/5mV).
Andreas Kaiser wrote: > Dein Code geht davon aus, dass der ADC im Schritten von 1mV misst. > > Nur liefert dein ADC wahrscheinlich 10bit (Wertebereich 0..1023) für den > Spannungsbereich 0..5V, d.h. ein ADC-Schritt entspricht ca. 5mV. Somit > entspricht der Nullwert von 2,73V einem ADC-Wert von ca. 546 > (2,73V/5mV). Das ein Schritt 5mV entspricht ist mir noch klar. Aber wie kommst du auf das Folgende??? Stehe grad etwas auf der Leitung
Hab doch noch ein Problem! Bei ca. 3,55 V am analogen Eingang bekomme ich einen ADC Wert (10bit) von 46000! Wie kann das sein??? Hier müsste ich doch 727 heraus bekommen??
Das kann allenfalls sein, wenn der ADC so konfiguriert ist, dass er die Werte als 16bit-Wert linksbündig ausgibt. Bei AVRs geht das, vielleicht auch bei PICs. Dann allerdings sollten die Bits 0..5 =0 sein, was bei 46000 nicht der Fall ist. Klingt also nach Programmfehler.
Danke! Ich kann aber ehrlich gesagt keinen Fehler findest. Was muss man beim AVR machen dass er es nicht linksbündig ausgibt. Oder findest du einen Fehler? 'Analogeingang einlesen + Ausgabe LCD Pause 500 DEFINE OSC 4 ' Oscillator set to 4Mhz DEFINE LCD_DREG PORTD ' LCD Data port at Port D DEFINE LCD_DBIT 0 ' LCD starting data bit = 4 DEFINE LCD_RSREG PORTC ' LCD register select on port D DEFINE LCD_RSBIT 4 ' LCD reset portD.4 DEFINE LCD_EREG PORTC ' LCD enable on port D DEFINE LCD_EBIT 5 ' LCD output on PortD.5 DEFINE LCD_BITS 4 ' LCD o/p is 4 bit data DEFINE LCD_LINES 2 ' Number of lines on LCD = 2 DEFINE LCD_COMMANDUS 2000 DEFINE LCD_DATAUS 50 DEFINE ADC_BITS 10 ' Set number of bits in result (here 10) DEFINE ADC_CLOCK 3 ' Set clock Source Internal RC CLockgen DEFINE ADC_SAMPLEUS 100 ' Set sampling time in microseconds Read_Write VAR PORTB.5 ' Display Read(1)/ Write(0) Low Read_Write TRISA = %11111111 ' PORTA all input ADCON1 = 0 ' PORTA all analog Input PORTD.5 ' PORTD.5 input ADC VAR WORD ' Variable type word to store Analog input value ADCB VAR WORD IF PORTD.5 = 1 Then ' Push PortD.5 to start programm LCDOut $FE,1 ' Clear LCD LCDOut "ADC by SK" ' Print Message on LCD LCDOut $FE, $C0 ' Start new line LCDOut "Start......" ' Print Message on second line Pause 1000 ' 1s Pause LCDOut $FE,1 ' Clear LCD start: ADCIN 1, ADC ' Save value from AN1(analog input 1) LCDOut $FE,1 ' Clear LCD LCDOut "TEMP= ",DEC ADC ' Print value gotten from ADCIN1 Pause 1000 ' 1s pause GoTo start ' Move to start EndIF
Du solltest im Manual zu dem PIC den Part mit dem AD-Wandler studieren und das Bit für "right justified" in den ADCONx-Registern suchen und setzen. Dann ist eine Sampling-Time von 1000 ms auch hoch - normale wird so 100 benutzt, gerade bei diesem geringen Eingangswiderstand. 10 Bit sind übrigens 1024 Stufen (0..1023). Der größte Wert ist die Stufe 1023. ADC auf mV umrechnen: ADC * 5000/1023 - geht nicht, weil ADC*5000 wird zu groß. Also: ADCB=ADC*5000 : ADCB=DIV32 1023 (Es geht auch rickreicher, aber da will ich jetzt nicht ziefer einsteigen.) Das Programm hat kein END. Und es läuft nur, wenn man gleich den Knopf drückt. Äußerer Loop fehlt, oder der innere Loop ist falsch gesetzt.
Hallo! Habe jetzt das ADCON register auf Right justified und die sampling time auf 100. Das Programm hat jetzt auch ein END :-) Habe die Berechnung noch weggelassen und rein den ADC WERT ausgegeben. Jetzt habe ich immer noch 46400 auf dem Display. Was ist das Problem mit den Loops?
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.