-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Temparatur Sensor Anschluss

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    10.01.2009
    Alter
    22
    Beiträge
    20

    Temparatur Sensor Anschluss

    Anzeige

    So
    ich habe mal wieder eine kleine frage...
    Ich möchte einen temperatur sensor anschließen um mehr erfahrung zu sammeln.
    Vielleicht war ich ein bisschen voreilig das ich mir den sensor schon gekauft habe aber so ist das nun mal
    Es ist dieser von Conrad: SMT 160-30 TEMPERATUR-SENSOR TO-92
    Ich hatte vor ihn an den ADC0 oder ADC1 anzuschließen.
    ich denke das es eingentlich keine probleme beriten sollte nur ich wurde misstrauisch das im datenblatt davon die rede war das der plus plo,der ja auf dem RP6 mit vdd gekennzeichnet ist,Vcc oder so heißt.
    Nun da ich den Sensor nicht kapput machen möchte frage euch ob das egal ist oder ob ich einen widerstandt dazwischen schalten muss.
    Vielen dank im vorraus.
    Libe Grüße Anton

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    10.01.2009
    Alter
    22
    Beiträge
    20
    tut mir echt leid ich habe das thema 2 mal reingestellt
    wie lösche ich es
    lg

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Wulferstedt
    Beiträge
    1.042
    Der SMT 160-30 könnte an die Mikrocontrollerbetriebsspannung geschaltet
    werden, da 5V vollkommen im Bereich seiner Daten liegen. Könnte.... weil
    dieser Baustein nicht dafür gedacht ist, an einen AD-Eingang geschaltet
    zu werden. Am AD-Eingang reicht bereits ein Temperatursensor, welcher
    eine zur Temperatur linearisierte Ausgangsspannung abgibt. Diese gibst
    mit guter Genauigkeit bereits an 2,50 Euro. Sogar billigste Sensoren für
    ein paar Cent können angeschlossen werden, wenn man softwaremässig
    linearisiert. Der SMT 160-30 hat bereits einen AD-Wandler integriert und gibt
    ein digitales Signal aus. Man könnte das natürlich an einen Digitalport des
    Mikrocontrollers anschliessen. müsste dann jedoch dessen Signal
    warscheinlich mit großen Aufwand decodieren. Er ist eigentlich daher für
    diese Zwecke - tut mir leid, das zu schreiben - absolut unsinnig. VG Micha

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    10.01.2009
    Alter
    22
    Beiträge
    20
    hm s cheiße xD
    ich versuch es mal umzutauschen...
    könntest du mir solch einen sensor von conrad nennen?
    lg honighamster

  5. #5
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Mögliche einfache Temperatursensoren sind: LM335, die KTY... Serie. Es geht auch einfach eine Siliziumdiode wie 1N4148.

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Wulferstedt
    Beiträge
    1.042
    Hatte vor kurzem einen verbaut und an eine C-Control angeschlossen,
    das Ding hatte ich zwar von Reichelt, muss aber morgen in die Unterlagen
    schaun, was das genau für ein Typ war und schreib es dann hier auf.
    Was ist das eigentlich für ein Mikrocontroller, wo der Sensor ran soll. 8 Bit
    oder 18 Bit Auflösung? Ist nicht ganz unwichtig für die Auflösung.
    VG Micha

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Wulferstedt
    Beiträge
    1.042
    Sehe gerade, was BesserWessi geschrieben hat. Habe beide Sensortypen
    schon beim Wickel gehabt. Der LM335 gibt eine lineare Spannung raus,
    die KTY-Serie müsste man jedoch mit konstantem Strom betreiben, daher
    empfehle ich ERSTEREN. VG Micha

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    tut mir echt leid ich habe das thema 2 mal reingestellt
    Na klasse, ich war natürlich im "toten" Thread:

    Hallo

    Erstmal vorweg: Du erleichtest uns das Leben wenn du bei Artikeln aus einem Onlineshop eine direkte URL mitlieferst, am Besten noch in url-Tags eingepackt falls das Forum nicht selbständig einen Link daraus macht. Beim C würde das etwa so aussehen:

    http://conrad.de/goto.php?artikel=183093

    Nun zu deinem Sensor: Irgendwie hast du ein gutes Händchen für knifflige Aufgaben. In der Kurzbeschreibung steht doch deutlich:
    Der SMT 160-30 besteht aus einem temperaturabhängigen Halbleiter-Element und einem A/D-Wandler. Der Sensor liefert ein pulsbreitenmoduliertes Rechtecksignal mit der Amplitude der Versorgungsspannung (4,75 - 7 V/DC) und einer Frequenz im Bereich von 1 bis 4 kHz. Das Tastverhältnis ist proportional zur Temperatur.
    Das bedeutet, er wandelt intern die Temperatur in ein Rechtecksignal dessen Tastverhältniss von der Temperatur abhängig ist. Da kannst du mit ADC0/1 am RP6 nichts erreichen denn du mußt die Längen der High- und Lowzeiten des Signals messen. Das geht zwar auch mit den analogen Eingängen weil sie zusätzlich auch wie digitale Eingänge funktionieren, aber die Auswertung ist deutlich komplizierter als bei einem einfachen PTC/NTC mit Vorwiderstand. Warum fragst du nicht einfach mal bevor du was kaufst? *grummel*

    Normalerweise wertet man solche Sensoren per Interrupt und Timer/Counter aus, weil man messen muß, wie lange das Signal High und wie lange es Low ist, bei 1-4kHz sind das jeweils 1000-4000 Highs und 1000-4000 Lows pro Sekunde! Ein einfacherer Ansatz wäre aber vielleicht folgender:

    Den Sensor kann man direkt an ADC0 anschliessen, Vcc des Sensors an Vdd des RP6, GND an GND und OUTPUT an ADC0. Jetzt kannst du im Wechsel die Highs and Lows messen und die Messwerte zum Terminal senden:

    Code:
    // Temperatursensor auswerten an ADC0                                15.4.09 mic
    
    // Nicht getestet weil ich keinen passenden Sensor habe!
    // http://www.roboternetz.de/phpBB2/viewtopic.php?t=47549
    
    #include "RP6RobotBaseLib.h"
    
    int main(void)
    {
    	uint16_t temp; 					// Messwert
    	initRobotBase(); 					// Library initialisieren
    	DDRA &= ~1; 						// ADC0 ist PA0 und wird als Eingang verwendet
    	PORTA &= ~1; 						// und der interne PullUp wird nicht benötigt
    	while(1)
    	{
    	   // Zuerst messsen wir die Länge eines High-Pegels
    	   temp=0; 							// Messwert mit 0 vorbelegen
    	   while(!(PINA & 1)); 			// erstmal abwarten bis der Pegel nicht mehr Low ist
    	   while(PINA & 1) temp++; 	// Solange ein High anliegt wird er Zählwert erhöht
    	   writeString("\nHigh: ");  	// Den Wert zum Terminal senden
    	   writeInteger(temp, 10);
    
    		// und dann die Länge eines Lows
    	   temp=0; 							// Messwert wieder mit 0 vorbelegen
    	   while(PINA & 1); 				// nun abwarten bis der Pegel nicht mehr High ist
    	   while(!(PINA & 1)) temp++; // diesmal solange ein Low anliegt Zählwert erhöhen
    	   writeString(" Low: ");  	// und auch diesen Wert zum Terminal senden
    	   writeInteger(temp, 10);
    	} // endlos bis Akkus leer
    	return(0);
    }
    Ich hoffe das funktioniert so halbwegs.

    Gruß

    mic

    [Edit]
    Wenn ich die 14 richtig deute: Herzlichen Glückwunsch zum Geburtstag :)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    10.01.2009
    Alter
    22
    Beiträge
    20
    so hast du richtig gedeutet danke

    tut mir leid das du nochmal chreiben musstest
    @radbruch ich bin mir nicht sicher aber ich glaube du hast mal gesagt in einem thema hier das die Beschriftung des ADC0 und 1 falsch ist.
    Im moment würde ich vdd zu der zahl eins auf dem board und gnd zu 2 zuordnen ADC0 wäre dann 3.
    Ist das richtig?
    ich werde es heute abend ausprobieren
    @hardware und besserwessi
    ich finde nur den LM335 Z bei conrad und den meint ihr wohl nicht oder?
    wenn er eine Spannung ausgibt müsste ich noch einen widerstandt dazwischen bauen ist das richtig

  10. #10
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Dank Copy&Paste brauchte ich meinen Beitrag natürlich nicht erneut einzutippen ;)

    Die Beschriftungen der Erweiterungspads ADC0 und ADC1 auf der RP6-Platine sind richtig. Es ist die Reihenfolge der Kontakte die nicht mit den Steckern eines Servos konform sind (Vcc und GND sind getauscht). Aber das dürfte dich beim Anschluss deines Sensors nicht sonderlich stören.

    Ich habe das kleine Testprogramm etwas geändert:
    Code:
    // Temperatursensor auswerten an ADC0 (mit Timeout)                  16.4.09 mic
    
    // Nicht getestet weil ich keinen passenden Sensor habe!
    // http://www.roboternetz.de/phpBB2/viewtopic.php?t=47549
    
    // Wenn als Wert 0 ausgegeben wird läuft die Zählvariable über
    // oder der Sensor sendet nichts.
    
    // Damit kann man alle möglichen Pulslängen messen, z.B. eine IR-Fernbedienung
    
    #include "RP6RobotBaseLib.h"
    
    // Messung am ADC0
    //#define inputpin 			(PINA & 1) // ADC0
    //#define init_inputpin	{DDRA &= ~1; PORTA &= ~1;} // Eingang ohne PullUp
    
    // Messung am linken Lichtsensor (LS_L)
    #define inputpin 			(PINA & LS_L) // linker Lichtsensor
    #define init_inputpin	{DDRA &= ~LS_L; PORTA &= ~LS_L;} // Eingang ohne PullUp
    
    int main(void)
    {
    	uint16_t temp_high, temp_low;	// Messwerte
    	initRobotBase();					// Library initialisieren
    	init_inputpin						// inputpin initialisieren
    	
    // Zum Testen des LS_L die // entfernen. Die LEDs sollten bei heller Umgebung leuchten
    // Wenn man den Lichtsensor abdeckt sollten sie ausgehen. Wenn man eine Fernbedienung
    // mit unter die Abdeckung hält sollten die LEDs blinken wenn man auf die Fernbedienung
    // drückt. Alternativ kann man auch das komplette Zimmer abdunkeln ;)
    //
    //	DDRA &= ~LS_L; PORTA &= ~LS_L;
    //	while(1) if(PINA & LS_L) setLEDs(63); else setLEDs(0);
    
    	while(1)
    	{
    // Zuerst messsen wir die Länge eines High-Pegels
    
    // Maximal 65535 while-Zyklen auf Start von High warten
    	   temp_high=0;
    	   while(!inputpin && ++temp_high); // temp_high als timeout
    	   
    // Jetzt die Länge des Highs messen
    // (0 im Ergebniss bedeutet kein Sensor angeschlossen oder Zählerüberlauf)
    	   temp_high=0;
    	   while(inputpin && ++temp_high);
    	   
    // das High ist zuende, jetzt die Länge des folgenden Lows messen
    	   temp_low=0;
    	   while(!inputpin && ++temp_low);
    	   
    // und nun beide Werte zum Teminal senden
    	   writeString("\nHigh: ");
    	   writeInteger(temp_high, 10);
    	   writeString(" Low: ");
    	   writeInteger(temp_low, 10);
    	}
    	return(0);
    }
    Die Ausgabe beim Test mit der Fernbedienung:
    Code:
    High: 0 Low: 0
    High: -11830 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: -8127 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: -20614 Low: 0
    High: 0 Low: -10045
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: -27177 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: -10989 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: -23550 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 682
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: -28077 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: -23869 Low: 0
    High: 0 Low: -7190
    High: 0 Low: 0
    High: -5904 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: 0 Low: 0
    High: -8998 Low: 9402
    High: -25105 Low: 10467
    High: 0 Low: 0
    Ob das allerdings die Bitlängen der gesendeten Codes sind oder die Flanken der 36kHz-Tägerfrequenz kann ich noch nicht sagen.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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