Forum: Mikrocontroller und Digitale Elektronik [Rat] Temp. Sensor sniffen


von Sebastian M. (compressed)


Angehängte Dateien:

Lesenswert?

Guten Tag,
ich stehe gerade etwas ratlos einem Problem gegenüber.
Es handelt sich um eine bestehende Temperatur Regelschaltung, in die ich 
nicht direkt eingreifen darf.
Wie man auf dem Bild sehen kann, besteht die Schaltung aus einem 
AD51/067
(http://www.datasheetfind.com/datasheet/AD51-067ARMZ-2RL?uid=2137057)
mit externen "remote sensing transistor" in einem Grafikprozessor an 
D+/D-.

Ich muss in irgendeiner Form ein Temperatur Signal für eine parallele 
Regelung erhalten, darf aber nicht störend auf die vorhande Schaltung 
wirken.

Nun würde ich gerne Wissen was machbar ist:
1) mit einem differenz ADC eines uC den externen Sensor messen. Was wäre 
besser, zwischen Filter und IC oder Filter und Sensor?
uC wäre zB ein ATtiny25

2)Den SMbus sniffen. Wie müsste ich dann die Hardware gestalten, damit 
der sniffer nicht störend auf den Bus wirkt.
Bzw. würde man mit einfachen mitteln auch die Temperatur Daten 
zuverlässig mitlesen und auswerten können?
Genaue Angaben über den Bustakt etc. kann ich noch nicht machen, müsste 
noch gemessen werden.
Hier würde wegen soft. twi auch ein attiny in frage kommen. Könnte z.B. 
der code von peter d. I²C sniffer als Grundlage dienen.

Oder beides schlecht und einfach ein LM75 auf den Kühlkörper kleben und 
parallel was messen?


danke schonmal
Sebastian

von Falk B. (falk)


Lesenswert?

@  Sebastian Möller (compressed)

>1) mit einem differenz ADC eines uC den externen Sensor messen.

Kann man machen.

>Was wäre besser, zwischen Filter und IC

Ja.

> oder Filter und Sensor?

Nein.

>2)Den SMbus sniffen.

Geht auch, ist ggf. robuster.

>Wie müsste ich dann die Hardware gestalten, damit
>der sniffer nicht störend auf den Bus wirkt.

Einfache 3,3V CMOS Eingänge, wie sie jeder Logik-IC hat.

>Bzw. würde man mit einfachen mitteln auch die Temperatur Daten
>zuverlässig mitlesen und auswerten können?

Ja.

>Hier würde wegen soft. twi auch ein attiny in frage kommen.

Ja.

> Könnte z.B.
>der code von peter d. I²C sniffer als Grundlage dienen.

Möglicherweise.

>Oder beides schlecht

Nein.

> und einfach ein LM75 auf den Kühlkörper kleben und
>parallel was messen?

Nö, das ist ein ganz andere Temperatur als uf dem IC, wo die Diode 
drinsteckt.

MFG
Falk

von Sebastian M. (compressed)


Lesenswert?

Also einfach den attiny mit sclk und sedata vom ad51 verbinden und mit 
VCC 3.3V betreiben? (sollten nach meinen Recherchen cmos Eingänge sein?)

Ist wahrscheinlich besser, da man gleich die jeweilige Temperatur hat.

Dann werde ich mich jetzt um die Software bemühen. ggf. erstmal 
mitloggen was auf dem Bus so gesendet wird und dann auswerten.

Der LM75 war auch nur ein Notanker.

danke

von Falk B. (falk)


Lesenswert?

@  Sebastian Möller (compressed)

>Also einfach den attiny mit sclk und sedata vom ad51 verbinden und mit
>VCC 3.3V betreiben? (sollten nach meinen Recherchen cmos Eingänge sein?)

Ja.

>Ist wahrscheinlich besser, da man gleich die jeweilige Temperatur hat.

Ja.

von Sebastian M. (compressed)


Lesenswert?

Ich brauche mal wieder Hilfe.

Es wurde der I²C sniffer von Peter D. mit einem Attiny85 aufgebaut. Per 
UART gebe ich den Datenverkehr eines TWI auf dem PC aus.
Das TWI besteht aus einem ATmega8 mit LM75 als slave.

Hier der Code vom Master. (LCD Ausgabe etc. entfernt)
Lib. von Peter Fleury
1
#define  F_CPU 3686400
2
#include <util/delay.h>
3
#include <avr/io.h>
4
#include "twimaster.c"
5
#include <avr/interrupt.h>
6
#include <avr/io.h>
7
8
#define TWI_ADR    0x00
9
#define _TWINT    0b10000000
10
#define _TWEN    0b00000100
11
#define LM75_ADR  0b10010000 // 1001 ist standart und darf nicht verändert werden dann kommen A2=?, A1=?, A0=?
12
#define LM75_CONFIG  0b00000001
13
#define LM75_HYST  0b00000010
14
#define LM75_SET  0b00000011
15
#define LM75_TEMP  0b00000000
16
17
int ret1;
18
int ret2;
19
volatile int abfrage;
20
21
int main(void)
22
 {
23
  TCCR0 = (1<<CS00) | (1<<CS02); // Prescaler 256
24
  // Overflow Interrupt erlauben
25
  TIMSK |= (1<<TOIE0);
26
    wait_ms(200);  
27
  i2c_init();   // initialize I2C library
28
     while(1)
29
   {
30
    if(abfrage==20)
31
    {
32
      i2c_start_wait(LM75_ADR+I2C_WRITE);     // set device address and write mode
33
      i2c_write(LM75_TEMP);
34
      i2c_rep_start(LM75_ADR+I2C_READ);       // set device address and read mode
35
      ret1 = i2c_readAck();                    // read first byte from LM75
36
      ret2 = i2c_readNak();                    // read second byte from LM75
37
      i2c_stop();
38
    }
39
  }
40
 }
41
42
43
ISR (TIMER0_OVF_vect)
44
{
45
  abfrage++;
46
}
Code und Hardware vom TWI sollten funktionieren, zumindest bekomme ich 
die korrekten Werte auf einem LCD angezeigt.

Hier ein Log vom sniffer:
1
s90a00as90a00a00np
2
s90a00as90a10a00np
3
s90a00as90a04a00np
4
s90a00as90a00a00np
5
s90a00as90a00a00np
6
s90a00as90a00a80np
7
s90a00as90a00a80np
8
s90a00as90a00a80np
9
s90a00as90a00a00np
10
s90a00as90a00a00np
11
s90a00as91a00a00np
12
s90a00as90a00a80np
13
s90a00as91a00a00np
14
s90a00as90a10a00np
15
s90a00as90a10a00np
16
s90a00as90a10a00np
17
s90a00as91a01a00np
18
s90a00as91a04a00np
19
s90a00as90a00a00np
20
s90a00as90a00a00np
21
s90a00as90a04a00np
22
s90a00as90a10a00np
23
s90a00as90a00a00np
24
s90a00as90a01a00np
25
s90a00as91a04a00np
26
s90a00as90a00a80np
27
s90a00as90a00a00np
28
s90a00as91a01a00np
29
s90a00as90a11a00np
30
s90a00as90a19a00np
31
s90a00as90a18a00np
32
s90a00as90a10a00np
33
s90a00as90a10a00np
34
s90a00as90a11a00np
35
s90a00as90a10a80np

Ich versuche das verzweifelt nachzuvollziehen.
Also es fängt mit
-Startsignal vom Master dann
-LM75 Adresse+Read=90
-ACK LM75
-Tempregister LM75=00
-ACK LM75
-Repeat Start vom Master
-LM75 Adresse+ R/W   (kann ich nicht nachvollziehen warum manchmal
 R oder W)
-Dann sollte das Datenwort vom LM75 kommen. Wo völlig unterschiedliche 
Werte stehen, obwohl die Temperatur während des Logs zwischen 20°und 23° 
lagen.
-ACK Master
-Dann ein weiteres Datenwort vom LM75? manchmal 0x80 oft 0x00?
-NCK Master

Meiner Ansicht nach müsste das aber etwas anders aussehen?

von Sebastian M. (compressed)


Lesenswert?

keiner eine Idee?
ich lasse mir die werte parallel auf einem Display ausgeben.
die 80 am Ende stehen für ,5°
Alles was der Atmega8 sendet wird korrekt vom sniffer erkannt.
Nur die Antworten vom LM75 sind zu 90% falsch.
Ich habe schon sämtliche Baud ausprobiert.
Der sniffer läuft mit 230400Baud und stellt die Zeichen korrekt dar.

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.