www.mikrocontroller.net

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


Autor: Sebastian M. (compressed)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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-067ARM...)
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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sebastian M. (compressed)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian M. (compressed)
Datum:

Bewertung
0 lesenswert
nicht 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
#define  F_CPU 3686400
#include <util/delay.h>
#include <avr/io.h>
#include "twimaster.c"
#include <avr/interrupt.h>
#include <avr/io.h>

#define TWI_ADR    0x00
#define _TWINT    0b10000000
#define _TWEN    0b00000100
#define LM75_ADR  0b10010000 // 1001 ist standart und darf nicht verändert werden dann kommen A2=?, A1=?, A0=?
#define LM75_CONFIG  0b00000001
#define LM75_HYST  0b00000010
#define LM75_SET  0b00000011
#define LM75_TEMP  0b00000000

int ret1;
int ret2;
volatile int abfrage;

int main(void)
 {
  TCCR0 = (1<<CS00) | (1<<CS02); // Prescaler 256
  // Overflow Interrupt erlauben
  TIMSK |= (1<<TOIE0);
    wait_ms(200);  
  i2c_init();   // initialize I2C library
     while(1)
   {
    if(abfrage==20)
    {
      i2c_start_wait(LM75_ADR+I2C_WRITE);     // set device address and write mode
      i2c_write(LM75_TEMP);
      i2c_rep_start(LM75_ADR+I2C_READ);       // set device address and read mode
      ret1 = i2c_readAck();                    // read first byte from LM75
      ret2 = i2c_readNak();                    // read second byte from LM75
      i2c_stop();
    }
  }
 }


ISR (TIMER0_OVF_vect)
{
  abfrage++;
}
Code und Hardware vom TWI sollten funktionieren, zumindest bekomme ich 
die korrekten Werte auf einem LCD angezeigt.

Hier ein Log vom sniffer:
s90a00as90a00a00np
s90a00as90a10a00np
s90a00as90a04a00np
s90a00as90a00a00np
s90a00as90a00a00np
s90a00as90a00a80np
s90a00as90a00a80np
s90a00as90a00a80np
s90a00as90a00a00np
s90a00as90a00a00np
s90a00as91a00a00np
s90a00as90a00a80np
s90a00as91a00a00np
s90a00as90a10a00np
s90a00as90a10a00np
s90a00as90a10a00np
s90a00as91a01a00np
s90a00as91a04a00np
s90a00as90a00a00np
s90a00as90a00a00np
s90a00as90a04a00np
s90a00as90a10a00np
s90a00as90a00a00np
s90a00as90a01a00np
s90a00as91a04a00np
s90a00as90a00a80np
s90a00as90a00a00np
s90a00as91a01a00np
s90a00as90a11a00np
s90a00as90a19a00np
s90a00as90a18a00np
s90a00as90a10a00np
s90a00as90a10a00np
s90a00as90a11a00np
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?

Autor: Sebastian M. (compressed)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.