Forum: Mikrocontroller und Digitale Elektronik LM235 Beschaltung


von Severin K. (severin)


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

von Paul (Gast)


Lesenswert?

Kennst du das ohmsche Gesetz? Steht alles drin, 400µ bis max. 5mA...

von Msp 4. (msp430_crew)


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.)

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

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

von Severin K. (severin)


Lesenswert?

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

von Severin K. (severin)


Lesenswert?

Ach ja das ganze hängt an einem PIC16F877 mit 10 Bit AD Auflösung also 
erscheint mir die Abweichung schon etwas viel

von Sirko P. (poehli)


Lesenswert?

also erst mal sollte man den Strom für T Dioden möglichst klein wählen 
um Eigenerwärmung zu vermeiden.....

von Andreas K. (a-k)


Lesenswert?

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?

von Severin K. (severin)


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

von Severin K. (severin)


Lesenswert?

Rechnerisch komme ich eben nicht auf die 44°C

von Andreas K. (a-k)


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).

von Severin K. (severin)


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

von Andreas K. (a-k)


Lesenswert?

Nu, was sind 2.73V ausgedrückt in Schritten zu 5mV?

von Severin K. (severin)


Lesenswert?

OK  alles klar

von Severin K. (severin)


Lesenswert?

Nochmals Danke für die schnellen Antworten

von Severin K. (severin)


Lesenswert?

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??

von Andreas K. (a-k)


Lesenswert?

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.

von Severin K. (severin)


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

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


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.

von Severin K. (severin)


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?

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
Noch kein Account? Hier anmelden.