-
Thread
Temperaturfühler TMP006 von T, wie anschließen?
Der TMP006 ist Temperaturfühler im BGA-Gehäuse zur berührungslosen Temperaturmessung Bis jetzt konnte ich dem Fühler noch keine Daten entlocken. Das erste Problem beginnt schon beim Erkennen des Anschlusses
gezählt. Die Beschriftungsseite ist oben, die Zinnperlenseite unten. Bei den Temperaturfühlern der TMP-Serie orientiert man sich beim Suchen des Anschlusses 1 am Zahlencode-Aufdruck auf dem Gehäuse und wie der im Datenblatt dargestellt ist (Index Area s. S. 18). Noch eine kleine Anmerkung: Bei Schaltungen
-
Thread
TMP006B zeigt falsche Temperatur
Abend In meinem Projekt benutze ich TMP006B IR Temperatursensor. An sich funktioniert er, nur gibt es eine sehr große Abweichung von ca +90°C Bei dem Sensor kann man auswählen, über wie viele Messungen das Ergebnis gemittelt wird. Wenn
komplett daneben ist, warum auch immer. Hier ist meine Schaltung und Layout Kurz gesagt, wird der TMP006 mi 3.3 V vom NCP1402 versorgt. An low side (also zwischen TMP006 and GND und NCP1402 und GND) befindet sich BSS138 der die ganze Konfiguration ein/ausschalten kann. Der Transistor ist immer an
-
Thread
Wärmebildkamera low budget
Du könntest Dir mit mehreren TMP006 eine Zeilenkamera bauen. http://www.ti.com/ww/en/analog/tmp006/index.shtml?DCMP=hpa-tmp-tmp006&HQS=Other+BB+tmp006-bb
Yoschka schrieb im Beitrag #3343826: > Du könntest Dir mit mehreren TMP006 eine Zeilenkamera bauen. > > http://www.ti.com/ww/en/analog/tmp006/index.shtml?... Hier passt der Temperaturbereich nicht. Die gehen nur von 40-125°
-
Thread
Multiplikation mit 2,56
0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9, 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7}; display('0'| (tmp=tab1[zahl])/16384); display('0'| (tmp2=tab2[tmp/128])/16); display('0'| tmp2 &15); display('0'| (tmp2=tab2[tmp&127])/16); display('0'| tmp2 &15); tab1 ist etwas komplizierter, mache ich später
0x005c,0x005d,0x005e,0x005f,0x0060,0x0061,0x0062,0x0063, 0x0064,0x0065,0x0066,0x0067,0x0068,0x0069,0x006a,0x006b,0x006c,0x006d, 0x006e,0x006f,0x0070,0x0071,0x0072,0x0073,0x0074,0x0075,0x0076,0x0077, 0x0078,0x0079,0x007a,0x007b,0x007c,0x007d,0x007e,0x007f, ...
-
Thread
Programm ist im Tiny versetzt.
, tmp ldi zahler1, 0x00 inc zahler2 cpi zahler2, 0xff breq led2 rjmp loop led2: ldi exor, 0x02 ; zustandwechsel auf PB1 alle 65536 durchläufe eor tmp,exor out PORTB, tmp ldi
1003800081818383858587878DC98B838D8C8F8FB2 :10039000919193006A95879F9D999B8B9DDD9F9F6F :1003A000B1006A83B5A5E3A7B8A1EB89BC006A8F49 :1003B000B0006AB3BDF197B7B9BDB9BB9FBCBFFF71 :1003C000C1C1C3E1C5C1C7C7C9C8CBC3CDCDCFCF9C :1003D000C0D1D3D3F7C4D7D7F9C8DB006AFDDFDFBC :1003E000E1E1E3E3E5E1E7F7E1EDEBEBFD006AEFE7 :1003F000F0006AF3F5006AF3F9F8FB006AFDFF000C
-
Thread
Optimierung bei AVR-GCC 3.3
: #define DB_SHIFT=2 void lcd_send(unsigned char data, unsigned char ormask) { unsigned char tmp; //////////////////// tmp=data&0xF0; // Um diese vier // tmp>>=4-DB_SHIFT; // Zeilen geht es // LCD_PORT=tmp | ormask; //////////////////// lcd_enable();
8795 ror r24 231 0066 8C73 andi r24,lo8(60) 43:lcd.c **** LCD_PORT=tmp | ormask; 234 0068 862B or r24,r22 235 006a 85BB out 53-0x20,r24 Genausoschlimm ist folgender Befehl: LCD_PORT=((data>>4)<<DB_SHIFT) | ormask; 216 0050 0F93
-
Thread
Worin liegt der Unterschied "UCSRC"
; case 'E': // Parity EVEN tmp |= (1<<UPM1); break; case 'O': // Parity ODD tmp |= (1<<UPM0)|(1<<UPM1); break; } if(stop == 2) tmp |= (1<<USBS); tmp |= (1<<URSEL); UCSRC = tmp
111 0066 01F4 brne .L7 112 0068 00C0 rjmp .L19 113 .L12: 114 006a 1730 cpi r17,lo8(7) 115 006c 01F0 breq .L10 116 006e 1830 cpi r17,lo8(8) 117 0070 01F4 brne .L7 118 0072 00C0 rjmp .L11 119 .L9
-
Thread
Berührungslose Temperaturmessung mit kleinem Messfeld
die Faehigkeiten wie auch die Interessen der meisten Conradkunden ueberschreiten. Such mal nach TMP006 von TI. Das ist ein BGA in 1.6x1.6mm Groesse. Olaf
Olaf schrieb im Beitrag #5709123: > Such mal nach TMP006 von TI. Das ist ein BGA in 1.6x1.6mm Groesse. Ja, den hatte ich auch mal in der Hand (bzw. den Nachfolger TMP007) und habe versucht, dort ein enges Meßfeld zu bauen. Hat nicht sonderlich gut funktioniert
-
Thread
Temperaturmessung, möglichst genau.
Na, ich muss den IR Sensor TMP006 kalibrieren, und dafür muss ich relativ genau die Temperatur messen können. Wenn ich die Temperatur mit meinem billigen Multimeter messe (oder auch IR Thermometer), ergibt sich nach Kalkulation
Ja, aber mit dem TMP006 will ich schon eine bessere Genauigkeit als +-3 oder sogar +-5°C erreichen. Das ist bei der gute Kalibrierung auch problemlos erreichbar.
-
Thread
Abschätzung Rechenzeitverbrauch einer ISR
27e: 71 f4 brne .+28 ; 0x29c <__vector_13+0x64> 280: 80 91 6f 00 lds r24, 0x006F 284: 8d 7f andi r24, 0xFD ; 253 286: 80 93 6f 00 sts 0x006F, r24 28a: e0 91 28 01 lds r30, 0x0128 28e: f0 91 29 01 lds r31, 0x0129 292: 09 95 icall 294:
volatile Variablen geschuldet. Würdest du es so schreiben [C] ISR (TIMER0_COMPA_vect) { uint8_t tmpCounter = counter; tmpCounter ++; if (tmpCounter == BESTIMMTER_WERT) { tmpCounter = 0; ... } counter = tmpCounter ; [/C] würde auch das wahrscheinlich
-
Thread
µCoaster: Untersetzter mit berührungsloser Temperaturmessung
µCoaster ist ein Untersetzer mit berührungsloser Temperaturmessung über TMP006 Temperatursensor. Wie oft hast du über den frisch gemachten Kaffee oder Tee vergessen, und sobald es lauwarm ist, schmeckt es einfach nicht. Mit diesem Untersetzter soll dass nie wieder passieren
liegt vermutlich daran das du nur kulturloser Kaffeetrinker bist und nicht die Faehigkeiten hast einen TMP006 zu loeten. :-D Interessanterweise hatte ich mit dem TMP006 naemlich genau dasselbe vor sobald ich etwas Zeit habe. Allerdings wollte ich meine Schaltung Teemometer nennen. Olaf
-
Thread
einfaches AD-Wandler Programm in Assembler
; 0101 ADC5 (Pin28) ldi tmp1, 0b00000000 ; Auto-Trigger = Free running mode (not used) sts ADCSRB, tmp1 ldi tmp1, 0b00100000 ; ADC5 (Pin28) nur analog sts DIDR0, tmp1
sbi ADCSRA,ADSC ; 'free running' "von Hand" reti reset: ldi tmp0,high(RAMEND) out SPH,tmp0 ldi tmp0,low(RAMEND) out SPL,tmp0 ldi tmp0,$FF ; D komplett auf Ausgang out DDRD,tmp0 ldi tmp0
-
Thread
Extrem kleiner Chip ohne Gehäuse
dann ist das ein WCSP8 Gehaeuse. Ein Beispiel fuer ein Bauteil in so einem Gehaeuse waere z.B ein TMP006 von TI. Olaf
ist das ein WCSP8 Gehaeuse. > > Ein Beispiel fuer ein Bauteil in so einem Gehaeuse waere z.B ein TMP006 > von TI. > > Olaf whatever Chip-Scale Packages ;) https://www.vishay.com/docs/64163/wcsp8.pdf
-
Thread
Drehgeber auslesen
) so: [C] rot_pos += tmp>>1; c8: 86 95 lsr r24 ca: 90 91 6a 00 lds r25, 0x006A ce: 89 0f add r24, r25 d0: 80 93 6a 00 sts 0x006A, r24 [/C] Der Knackpunkt ist aber, dass tmp eine char
PS: Jetzt übersetzt er es so [C] rot_pos += tmp>>1; c8: 85 95 asr r24 ca: 90 91 6a 00 lds r25, 0x006A ce: 89 0f add r24, r25 d0: 80 93 6a 00 sts 0x006A, r24[/C] Also alles Klar!
-
Thread
Wie löte ich dieses BGA Teil?
Ich habe AOYUE int852 Heißluft Station und will damit ein winziges BGA IC "reflowen" Es geht um TMP006 mit den Abmessungen 1.5x1.5 mm. Muss ich das Teil irgendwie fixieren damit die Lüft es nicht wegpustet oder reicht hier ein dickflüssiges Flüßmittel? Könnt ihr bitte ein passendes Flüßmittel
> Es geht um TMP006 mit den Abmessungen 1.5x1.5 mm. Nett was TI so unter die Leute bringt nicht? :-) Ich wuerde den im Zweifel von unten Loeten. Also die ganze Platine warm machen. Zum Beispiel auf einem Buegeleisen
-
Thread
Berechnung der Jahrzahl [jjjj], wenn nur die letzte Stelle vorhanden ist
Protokoll in EEPROM übernehmen tmp_jahr = save_memory_byte_read(EEPROM_IBIS_JAHR_ZEHNER) + save_memory_byte_read(EEPROM_IBIS_JAHR_EINER); if(protokoll_jahr <= eeprom_jahr_einer) // Ist Protokoll Jahr kleiner als EEPROM
; // Default Jahr 2008 in EEPROM schreiben write_eeprom(EEPROM_IBIS_JAHR_ZEHNER,0); tmp_jahr=8; } tmp_jahr += 2000; return(tmp_jahr); } [/c]
-
Thread
IR durchsichtige Abdeckung gesucht
Abend. In meinem Projekt verwende ich TMP006 infrarot Temperatursensor von TI. Ich will diesen Sensor irgendwie von der Umgebung schützen und suche ein billiges Material, das die Wellenlänge zwischen 4µm und 16µm durchlässt. Könnte auch
Die läßt aber auch bei vielen anderen Wellenlängen, z.B. im Sichtbaren durch ;-) Im Datenblatt des TMP006 finde ich keine Angabe darüber, in wieweit der Sensor in diesem Spektralbereich empfindlich ist und es zu Störlichteinflüssen kommen kann.
-
Thread
Daten>32Bit auf AVR
sbrc r25, 7 com ZERO ld TMP, X add TMP, r25 rjmp 1f 0: ld TMP, X adc TMP, ZERO 1: st X+, TMP dec NUM brne 0b clr ZERO clt XJMP
[/avrasm] *Subtraktion* [avrasm] DEFUN sub push NUM clr CARRY 0: ld TMP, X ld CARRY, Z+ sbc TMP, CARRY st X+, TMP dec NUM brne 0b set XJMP restore ENDF sub [/avrasm] Ein- und Ausgabe werden via
-
Thread
Parameterübergabe in Zusammenhang mit Unterprogrammen
Addition auch als Funktion hinschreiben kannst. Etwa: [c] int Addiere (int a, int b) { int tmp; tmp = a + b; return tmp; [/c] So. Du kannst jede Verknüpfung zweier Werte, die Du als Ausdruck hinschreiben kannst ("tmp = a + b" nennt man einen Ausdruck) auch als Funktion schreiben,
... [/c] Eine richtige Variante wäre diese: [c] char LEDschalten (char z) { char tmp; if (z=gr) { tmp = gr; // grüne LED einschalten } else { tmp = ge; // gelbe LED einschalten } return (tmp); ... [/c]
-
Thread
Brute Force mit dem Arduino
[c] int16_t zahl; uint8_t ziffer[4]; for( zahl = 0; zahl < 10000; zahl++ ){ unit16_t tmp = zahl; for( int8_t i = 3; i >= 0, i-- ){ ziffer[i] = tmp % 10; tmp /= 10; // mache was mit den 4 Ziffern } } [/c]
auf: [c] int16_t zahl; uint8_t ziffer[4]; for( zahl = 0; zahl < 10000; zahl++ ){ unit16_t tmp = zahl; for( int8_t i = 3; i >= 0, i-- ){ ziffer[i] = tmp % 10; tmp /= 10; switch(tmp): case 1: SendIRCode1(); break; case
-
Thread
Ist der ATtiny85 "abwärtskompatibel"?
auszulesen kommt das hier: /usr/bin/avrdude -C /etc/avrdude.conf -p t13 -P -c avrispmkII -U hfuse:r:/tmp/hfuse6380501372374583931.hex:r -U lfuse:r:/tmp/lfuse7835112631848880542.hex:r avrdude: no port has been specified on the command line or the config file Specify a port using the -P option
USB-Gerät anlegt. Bei mir ist der usbasp Gerät 6 an Bus 1: [code] ~ $lsusb ... Bus 001 Device 006: ID 16c0:05dc Van Ooijen Technische Informatica shared ID for use with libusb ... ~ $ls -l /dev/bus/usb/001/006 crw-rw---- 1 root plugdev 189, 5 Mar 1 19:11 /dev/bus/usb/001/006 [/code] Bei
-
Thread
EEPROM - HighByte first?
= 0x00, [EE_DEVICE_MEM_NEXTFREE+1] = EE_DEVICES_START}; [/c] und diese dann mit [c] uint16_t tmp; tmp = eeprom_read_word((uint16_t*)EE_DEVICE_MEM_NEXTFREE); [/c] wieder auslese, bekomme ich dann als Ergebnis 0x00FF, 0xFF00 oder funktioniert das erst gar nicht? :)
deklariert dann steht eeMem nicht mehr an erster Stelle im EEPROM und es geht schief. Die Zeile > tmp = eeprom_read_word((uint16_t*)EE_DEVICE_MEM_NEXTFREE); müsste dann besser lauten tmp = eeprom_read_word((uint16_t*)eeMem[EE_DEVICE_MEM_NEXTFREE]);
-
Thread
C programmieren wie die grossen Jungs
um einfach die Zwischenergebnisse ohne sinnvollen Namen festzuhalten. Dann mache ich eher int tmp; if() { tmp=... } ... if() { tmp=... } statt if() { int tmp; tmp=... } ... if() { int tmp; tmp=... } was man dann aber nicht unbeding machen sollte ist shadowing ala int
r25, r25 eor r26, r26 eor r27, r27 andi r24, 0x01 ; nur bei der letzten Variante sts 0x006F, r24 [/avrasm] Leider muß ich zugeben, dass die Variante mit der if-Abfrage am effizientesten und schnellsten implementiert wird, weil nicht der ganze long-Wert manipuliert wird :-( [c]
-
Thread
Pollin MOTOROLA VIP1710
135 0 5848 S < /usr/bin/halserver -l /tmp/hlog_ugGEOr -s /tmp/hal_cQ5Lvn 136 0 5848 S < /usr/bin/halserver -l /tmp/hlog_ugGEOr -s /tmp/hal_cQ5Lvn 137 0 5848 S < /usr/bin/halserver -l /tmp/hlog_ugGEOr -s /tmp/hal_cQ5Lvn 138 0 5848 S < /usr/bin/halserver -l /tmp/hlog_ugGEOr -s /tmp/hal_cQ5Lvn 139 0 5848 S < /usr/bin/halserver -l /tmp/hlog_ugGEOr -s /tmp/hal_cQ5Lvn 140 0 5848 S < /usr/bin/halserver -l /tmp/hlog_ugGEOr -s /tmp/hal_cQ5Lvn
-
Thread
Upload Arduino r4 unter Linux
erwarteten Fehlermeldung) auf der Konsole: [code] root:/tmp/r4# bossac -d --port=ttyACM0 -U -e -w blink_r4.bin Set binary mode Send auto-baud Set binary mode No device found on ttyACM0 [/code] lsusb sagt mir: [code] Bus 002 Device 003: ID 05e3:0607
Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 009: ID 2341:1002 Arduino SA Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 005 Device 001: ID 1d6b:0001
-
Thread
Cordic-Algorithmus in AVR-Assembler
Einige Verbesserungen: wenn CoTmp und SiTmp beide 0 sind kann die Iteration abgebrochen werden. Der Gain des CORDIC darf dann aber erst am Ende der Iteration berücksichtigt werden. Denn dieser ist ja abhängig von der Anzahl der Iterationen
Hagen Re schrieb: > Einige Verbesserungen: > wenn CoTmp und SiTmp beide 0 sind kann die Iteration abgebrochen werden. Lohnt das? Dürfte selten der Fall sein das, und im Mittel die Abfrage mehr kosten als sie bringt. Momentan scheint eher die Genauigkeit
-
Thread
sprintf mit dynamischen Format
Ausgabe:[c] 1 2 3 4 8 1.000000 2.000000 3.000000 4.000000 8.000000 100 3.141000 12345678 3.800000e+006 Hallo Ende[/c]
of the format string // Find valid '%' in the format string while (ptrN < 100) { tmpPtr = strchr(tmpPtr, '%'); if (tmpPtr != NULL) { if (valid_char_format_string(*(tmpPtr+1))) { ptr[ptrN] = tmpPtr; ptrN++; } } else { break;
-
Thread
AVR für wenig Geld im LAN
mal ein paar sachen ergänzen damit die hacken da bleiben... In httpd.c [c] case ('A'): PORT_tmp = PORT_tmp + 1; break; case ('B'): PORT_tmp = PORT_tmp + 2; break; case ('C'): PORT_tmp = PORT_tmp + 4; break; case ('D'): PORT_tmp = PORT_tmp + 8; break; case ('E
Schau mal 21.09.2008 von Gast(Gast) In httpd.c case ('A'): PORT_tmp = PORT_tmp + 1; break; case ('B'): PORT_tmp = PORT_tmp + 2; break; case ('C'): PORT_tmp = PORT_tmp + 4; break; case ('D'): PORT_tmp = PORT_tmp + 8; break; case ('E
-
Thread
LED-Lampe reparieren
Einfach-Geräte wegen der Billig-Optik relativ groß ist. Zum Beispiel der "Infrared Thermopile Sensor" TMP006B hat einen Öffnungswinkel von 90°. Man sagt bei diesen IR-Temperaturmessgeräten im allgemeinen dass der Abstand direkt proportional zum Radius ist. Also 1m Abstand = 1m Radius des Öffnungswinkels
Mike J. schrieb im Beitrag #4891550: > Zum Beispiel der "Infrared Thermopile Sensor" TMP006B hat einen > Öffnungswinkel von 90°. Das wird wohl der Öffnungswinkel des "nackten" Sensors sein, mit einer Konvex-Linse davor wird der kleiner. Bei vielen Geräten wird auch das Öffnungsverhältnis
-
Thread
Lattice Diamond: UART Receiver Siganl Wegoptimiert
IOWR_8DIRECT(CAN_CONTROL_BASE, CAN_CLK_DIVIDER, 0x05); // now switch to operating mode bTmp = IORD_8DIRECT(CAN_CONTROL_BASE, CAN_CONTROL_REG); bTmp = bTmp & 0xFE; IOWR_8DIRECT(CAN_CONTROL_BASE, CAN_CONTROL_REG, bTmp); [/c] Habe ich Mal 4 pro Offset und Mico 32 blokiert ab 4 Zeile
OPENCORECAN2_BASE_ADDRESS, CAN_CLK_DIVIDER)=0x05; //0101 // turn off reset mode : operating mode bTmp=OPENCORECAN_REGISTER(OPENCORECAN2_BASE_ADDRESS, CAN_CONTROL_REG); bTmp = bTmp & 0xFE; OPENCORECAN_REGISTER(OPENCORECAN2_BASE_ADDRESS, CAN_CONTROL_REG)=bTmp;[/c]
-
Thread
Bitte Platinenqualität bewerten (ragworm)
dadurch nur Probleme - Dreck bei einem Pad von U3 - starker Versatz des Bestückungsdrucks bei deinem TMP006/TMP007, den wirst du so nicht löten können. Tip fürs nächste Mal: bei BGAs oder anderen Bauteilen, bei denen es auf Präzision ankommt, den Bestückungsdruck weiträumig außenrum. Ich weiß aber nicht
-
Thread
Optimieren von ungenutzter Variable verhindern
.LFE0: 41 .text 42 .Letext0: ^LARM GAS /tmp/ccgJ3M2v.s page 2 DEFINED SYMBOLS *ABS*:00000000 volatile.c /tmp/ccgJ3M2v.s:16 .text.startup:00000000 $a /tmp/ccgJ3M2v.s:19
&code_na002Code, &code_na003Code, &code_na004Code, &code_na005Code, &code_na006Code, &code_na007Code, &code_na008Code, &code_na009Code, &code_na010Code, &code_na011Code, [/c] Es sind die Startaddressen von allen Arrays eingetragen. Trotzdem scheint das nicht
-
Thread
simulavr: invalid io reg
uint8_t i4l; uint8_t i4h; }; } convert8to4; ISR(INT0_vect) { uint8_t tmp_sreg; // save global interrupt flag tmp_sreg = SREG; cli(); // disable interrupts if (PIND & (1 << PD2)) // is Pin 2 high level? { status.operation = MULTIPLY; } else { status.operation = ADDITION; } SREG = tmp_sreg; // restore global interrupt flag } void SystemInit(void) { DDRA = 0x00; // set Port A input DDRB = 0xff; // set Port B output DDRD &= 0xff & (0 << PD2); // set Pin 2 of Port D
-
Thread
Alles Rund um den MEDION LIFE P89626 NAS
mnt/other/xtra-tmp/Medion-NAS/reload/reloaded-oxnas/proc-v6.o CC [M] /mnt/other/xtra-tmp/Medion-NAS/reload/reloaded-oxnas/arm-mmu.o LD [M] /mnt/other/xtra-tmp/Medion-NAS/reload/reloaded-oxnas/reloaded.o Building
" [/mnt/other/xtra-tmp/Medion-NAS/reload/reloaded-oxnas/reloaded.ko] undefined! WARNING: "sys_open" [/mnt/other/xtra-tmp/Medion-NAS/reload/reloaded-oxnas/reloaded.ko] undefined! WARNING: "v6_cache_fns" [/mnt/other/xtra-tmp
-
Thread
Thermomix Rezeptchips
(std::string&) : mount -o ro /tmp/dev/loop1 /tmp/sr1 NETLINK-ERROR: 0h8m14s93ms: System command mount -o ro /tmp/dev/loop1 /tmp/sr1 returned 255 NETLINK-INFO: 0h8m14s126ms: Storage partition found at /tmp/sr1/ (S/N: 1495000495750001
(std::string&) : mount -o ro /tmp/dev/loop1 /tmp/sr1 NETLINK-ERROR: 0h8m14s93ms: System command mount -o ro /tmp/dev/loop1 /tmp/sr1 returned 255 NETLINK-INFO: 0h8m14s126ms: Storage partition found at /tmp/sr1/ (S/N: REDACTED