10-TWI_LM75-Library (ATMega)

-diese Library dient zum ansteuern eines LM75 Temperatur ICs
von einem externen Modul das per TWI-Bus an die CPU angeschlossen ist.
(z.B. das Modul von myAVR “myTWI Tempsensor”)

-es können bis zu 8 LM75 gleichzeitig angesteuert werden
(Vorsicht … alle LM75 benoetigen eine eindeutige Hadrware-Adresse)

-das externe Modul ist an den TWI-Bus angeschlossen,
aus dem Grund wird auch der TWI-Treiber
“MK3_2560_TWI.h” benoetigt

Funktionen :

1
2
void EXT_INIT_LM75(void);	         	// zum initialisieren des LM75
void EXT_LM75_READ_TEMP(ADR_LM75 twi_adr);	// zum auslesen der Temperatur

Beispiel :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//-----------------------------------------------------------------------------
// Title      : bsp_ub022_mk3_ext_lm75
//-----------------------------------------------------------------------------
// Funktion   : Externes TWI-Modul : Temperatur-Sensor
// Schaltung  : myAVR MK3 + myTWI-AddOn-TempSensor
//-----------------------------------------------------------------------------
// Prozessor  : ATMega2560
// Takt       : 16 MHz
// Sprache    : C
// Date       : 20.11.2010
// Version    : 1.1
// Autor      : UB
//-----------------------------------------------------------------------------
#define F_CPU 16000000
#include <avr/io.h>
#include <ub_ext_module/EXT_TWI_LM75.h>
#include <ub_mk3_2560/MK3_2560_LED.h>
 
//-----------------------------------------------------------------------------
// Hinweis :
// > Quick-Jumper Port-L muss gesetzt sein
// > externes TWI-Modul muss am Stecker rechts unten angeschlossen sein
// > TWI-Port-Pins (D0+D1) werden benoetigt
// > Das LM75 muss auf ADR 90h eingestellt sein
// - das Programm liest zyklisch den Temperatur Wert und zeigt
//   ihn als Binaerwert an den LEDs an
// - bei einem Fehler wird 0x55 angezeigt
// - bei negativen Temperaturen wird 0xF5 angezeigt
//-----------------------------------------------------------------------------
int main (void)
{
  unsigned int n=0;
  char temperatur=0;
 
  EXT_INIT_LM75(); // init vom externen Temp-Sensor
  MK3_INIT_LED(); // init der LEDs
 
  while (true)
  {
    EXT_LM75_READ_TEMP(ADR0_LM75);
 
    if(EXT_LM75_OK==true) {
      // test ob temperatur positiv
      if(EXT_LM75.negativ==false) {
        // die Temperatur als Gradwert auslesen
        temperatur=EXT_LM75.abs_temp;
        // und per LEDs anzeigen
        MK3_LED_ZAHL(temperatur);
      }
      else {
        // 0xF5 wird als FEHLER angezeigt
        MK3_LED_ZAHL(0xF5);
      }
    }
    else {
      // 0x55 wird als FEHLER angezeigt
      MK3_LED_ZAHL(0x55);
    }
 
    for(n=0;n<60000;n++) {
      // kleine Pause
    }
  }
  return 0;
}

Hier die Library zum download :

UB_EXT_TWI_LM75_v102

10 Antworten auf 10-TWI_LM75-Library (ATMega)

  1. Jörg sagt:

    Hi

    kann ich dieses Beispiel auch auf das MK2 übertragen oder erfordert dies einiges an Umstellungen? Reicht es wenn ich dem Add-On über die Jumper die Adresse zuweise?

    mfG

    • admin_ub sagt:

      Hi Jörg, die TWI-Library ist für die Mega-2650 CPU ausgelegt und funktioniert auf dem MK2-Board nicht (da ist ein Mega-8 drauf)
      so einfach “kopieren/einfügen” wird also nicht gehen.

      Auch die 8 LEDs die ich im Beispiel als Anzeige benutze gibt es auf dem MK2-Board gar nicht (da sind es nur 3).

      Schreib mir, wenn du eine LM75-Library für das MK2-Board brauchst,
      für die Anzeige müsste man sich halt was ausdenken
      (z.b. 3 Stufen kalt,warm,heiß o.ä)

      Gruss Uwe

      • Jörg sagt:

        Hi

        Ja ich möchte halt mit meinem MK2 über TWI die Temperatur nur auslesen und dann eine PWM stufenweise betreiben. Die PWM hab ich schon geschrieben jedoch weiß ich einfach nicht wie ich das mit dem TWI hinkriegen soll um den Wert dann in eine Variable zu schreiben.

        MfG

        • admin_ub sagt:

          ich hab dir eine “Vorabversion” zum testen gesendet,
          sag bescheid ob die funktioniert. Gruss

  2. Simon sagt:

    Hey , könnten sie mir auch mal eine Vorabversion für das Mk2 schicken, die Displayansteuerung hab ich soweit, ich müsste, dann nur noch die Variable von der Temperatur auf die Displayvariable schreiben. gruß Simon

    • admin_ub sagt:

      Hi, die Version die gerade online ist (1.2) hat einen Define-Schalter für das MK2-Board. Im File “mk3_2560_twi.h” einfach diesen Define anpassen (und event. auch den für den Quarz) und schon müsste es laufen. Gruss

      • Simon sagt:

        Hey, ich hab es versucht und hab auch die define-schalter entsprechend für das mk2 board ausgewählt. Jedoch bekomm ich auf dem Diplay nur Hieroglyphen angezeigt. Ich hab ein Hauptprogramm geschrieben indem ich alle Unterprogramme von dir aufrufe” MK3_2560_TWi.h den LM75 die Uhr und das LCD Display.

        • admin_ub sagt:

          wird im Blog zu kompliziert, hab eine Email geschrieben

  3. Moritz sagt:

    Guten Morgen !

    Ich benutze das myAVR Board MK3 und habe mir sehr viele ihrer Libraries runtergeladen und getestet. Die Libaries für das LCD Display, das myColor Addon, den ADC uvm. funktionieren alle einwandfrei. Ich habe ein Problem mit den TWI-Libraries.
    Leider funktionieren ihre Beispielprogramme für den Tempsensor und die RTC bei mir nicht. Die Globale Variable EXT_LM75_OK steht zu jedem Zeitpunkt auf false(entsprechend bei der RTC das selbe Problem). Auch mit meinen selbst geschriebenen Programmen habe ich den selben Fehler. Ich bin leider relativ Ratlos.
    Ich habe die notwendigen Libaries eingefügt ( TWI, LM75,DS1307), SDA und SCL (des Addons) liegen an Port D0 und D1( also das Addon ist unten rechts angeschlossen) , die Quikjumper auf dem Tempsensor liegen auf A0=A1=A2=0, also müsste ich eine feste Adresse von 0×90 haben. Auch die Quikjumper für den Pullup auf dem Addon sind gesetzt.

    Meine Programmierungsumgebung ist Sisy++ (Ich weiss nicht ob das eine Rolle spielt, aber mit dem AVR Workpad PLUS laufen die Programme leider auch nicht)
    In ihren Dokumentationen zu den EXT_MODULEN habe ich noch gelesen, dass ich die SDA und SCL Pins über 4k7 Ohm an +5V legen soll, aber auch da lag wohl nicht der Fehler (wobei ich mir nicht sicher bin ob sie SDA und SCL direkt unterhalb des Programmers meinen oder ob ich konkret Port D0 und Port D1 über den Widerstand auf HIGH legen soll.)

    Haben sie eine Idee wo der Fehler liegen könnte ?

    Mit freundlichen Grüßen
    Moritz

    • admin_ub sagt:

      event. ein Hardwarefehler. Bitte mal mit einem Multimeter die 4 notwendigen Pins am Pfostenverbinder vom MK3-Board (rechts unten) prüfen.
      Pin13 muss 5V haben. Pin14 muss auf GND liegen. Pin 19 muss mit der STAMP (rechte Kante) Pin19 verbunden sein. Pin20 muss mit der STAMP (rechte Kante) Pin20 verbunden sein.


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.