LM235 Beschaltung

OP #699297
Lesenswert?

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
#699302
Lesenswert?

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.)
OP #699341
Lesenswert?

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
#699347
Lesenswert?

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).
OP #699354
Lesenswert?

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
OP #699471
Lesenswert?

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
(Firma: Promaxx.net) #699481
Lesenswert?

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.
OP #701328
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren