top of page

USB Temperatur-Sensor - Test und ATTINY Programmierung

 

Wenn wir ALLE Lötstellen, vor allem die am FT232RL, genauestens auf Lötbrücken und kalte Lötstellen hin kontrolliert haben können wir die Platine testen. Ich habe die Tests an einem PC mit Windows 7 durchgeführt, es sollte aber im Allgemeinen immer so einfach laufen ;)

USB Temperatur-Sensor Platine über USB mit dem PC verbunden
USB Temperatur-SensorTreiberinstallation 1

Verbindet man den USB Temperatur-Sensor mit einem USB Kabel mit dem PC wird ein neues Gerät erkannt.....

... dann werden die Treiber gesucht und automatisch installiert....

USB Temperatur-SensorTreiberinstallation 1
USB Temperatur-SensorTreiberinstallation 2
USB Temperatur-SensorTreiberinstallation 3

... nachdem der Treiber installiert wurde sieht man im Gerätemanager einen neuen COM-Port...
(Hier COM4, dieser kann aber abweichen)

 

 

 

 

 

 

 

... der erste Test ist damit erfolgreich abgeschlossen.

USB Temperatur-SensorTreiberinstallation 3
USB Temperatur-SensorTreiberinstallation 3

Nun folgt die Programmierung des ATTINY damit der Sensor endlich in Betrieb gehen kann...

Ich habe schon vor vielen Jahren angefangen Programme für den PC in Basic (genauer Visual Basic 6 Pro.) zu schreiben, damals war das noch nicht so verpöhnt wie heute. Also habe ich mich auch bei der Mikrocontroller-Programmierung dieser Programmiersprache in Form von Bascom bedient und bin bis heute sehr zufrieden damit.

 

Hier nun das Programm um den Sensor in Betrieb zu nehmen:

 

' USB-Temperatur Sensor C 2014 by Thomas Heldt

' Clckdiv/8 Fuse darf nicht gesetzt sein (off)

' Version 2014 für das Tutorial auf www.heldt.eu

 

' Der ATTINY25 wird genutzt

$regfile = "ATtiny25.dat"

 

' Interner 8 MHz Takt wird genutzt

$crystal = 8000000

 

$hwstack = 32

$swstack = 10

$framesize = 40

 

' Pins für Software UART Schnittstelle festlegen,

' Schnittstelle wird von BASCOM per Software realisiert

Open "comb.1:9600,8,n,1" For Output As #1

Open "comb.0:9600,8,n,1" For Input As #2

 

' Pin für 1 Wire Schnittstelle festlegen,

' Schnittstelle wird von BASCOM durch Software realisiert

Config 1wire = Portb.3

 

' Benötigte Variablen dimensionieren

Dim Ar(9) As Byte

Dim Temperatur As Integer

Dim Celsius as Single

 

' Wir warten kurz bis alles bereit ist ;)

Waitms 500

 

' Startmeldung ausgeben, dient gleichzeitig zur

' Kontrolle ob die serielle Übertragung funktioniert

Print #1 , ""

Print #1 , "USB Temperatur-Sensor Version 2014"

Print #1 , " Tutorial auf www.heldt.eu"

Print #1 , ""

Print #1 , " Mikrocontroller: ATTINY25"

Print #1 , " Schnittstelle: FT232RL"

Print #1 , " Sensor: DS18B20+"

Print #1 , ""

Print #1 , "Starte Messung................"

print #1, ""

 

' Die Hauptschleife wird nie beendet

Do

    ' 1 Wire Bus reseten

   1wreset

 

   ' ROM übergehen, wir haben nur einen Sensor

   1wwrite &HCC

 

   'Messung veranlassen

   1wwrite &H44

 

    ' Wir warten bis die Messung beendet wurde

   Waitms 1000

 

   ' 1 Wire Bus reseten

   1wreset

 

    ' ROM übergehen, wir haben nur einen Sensor

   1wwrite &HCC

 

   ' Daten einlesen Scratchpad (9 Byte)

    1wwrite &HBE

 

    ' und in ein Array schreiben

   Ar(1) = 1wread(9)

 

    ' Warten bis alle Daten übertragen wurden

   Waitms 1000

 

    ' Wenn Checksumme korrekt Daten verarbeiten

   If Ar(9) = Crc8(Ar(1) , 8) Then

 

      ' In Integer wandeln

      Temperatur = Makeint(Ar(1) , Ar(2))

 

       ' Jetzt bei 12 Bit Auflösung durch 16 teilen

       ' oder mit 0,0625 multiplizieren

      Celsius = Temperatur / 16

 

      ' Wert per Software UART versenden

      ' Wir nutzen * als Start- und # als Ende-Token

      Print #1 , "*" ; Celsius; "#"

 

       ' Wir warten eine Sekunde bis zur nächsten Messung,

      ' dies verhindert die Eigenerwärmung des Sensors

      Waitms 1000

   End If

Loop

 

End

Im folgenden gehe ich davon aus das man einen Programmer, z.B. AVR ISP MK2 besitzt der unter Bascom bereits funktioniert.

Um den ATTINY auf der Platine zu programmieren müssen wir noch ein Adapterkabel bauen, dies geht sehr einfach mit einer 6 poligen Stiftleiste (Rastermaß 2,54mm) und einer Wannenbuchse die zum Stecker des Programmers passt.

Meist hat der Programmer einen 6 oder 10 poligen Stecker der wie folgt belegt ist:

 

6 Polig:

 

1 = MISO

2 = 5V

3 = SCK

4 = MOSI

5 = RESET

6 = GND

 

10 Polig:

 

1 = MOSI

2 = 5V

3 = FREI

4 = GND

5 = RESET

6 = GND

7 = SCK

8 = GND

9 = MISO

10= GND

 

Die Belegung der 6 poligen Buchse auf der USB Temperatur-Sensor Platine ist diese....

 

1 = 5V

2 = MOSI

3 = MISO

4 = SCK

5 = RESET

6 = GND

 

Jetzt lötet man sich einfach einen Adapter der die jeweiligen Signale des Programmiersteckers auf den passenden PIN der Steckerleiste legt und schon ist man fertig. Am besten eignet sich einfaches Flachbandkabel dafür. Für PIN 1 sollte man die farbige Ader nehmen damit man die Steckerleiste immer richtig aufsteckt.

 

Hat man den Adapter fertig kann man diesen mit der Platine verbinden, das Ganze sieht bei mir so aus:

USB Temperatur-Sensor Platine mit Kabeln

Damit unser ATTINY korrekt funktioniert müssen wir zuerst eine FUSE Einstellung ändern, im Auslieferungszustand ist die CLK/8 Fuse gesetzt, dies bedeutet der ATTINY läuft mit 8 MHz / 8 = 1 MHz.

 

Wir möchten aber das der ATTINY mit den vollen 8 MHz läuft. Die Einstellung sieht in Bascom wie folgt aus:

 

Bascom Fuse Einstellungen

Haben wir die Fuse korrekt gesetzt übertragen wir das Programm in den ATTINY und können dann testen ob der Sensor Daten ausgibt. Ich nutze unter Windos 7 PUTTY als Terminalprogramm um mir die Seriellen Daten anzeigen zu lassen, folgendes erscheint dann bei einem Test

wenn der Sensor korrekt funktioniert....

Ausgabe der übertragenen Daten mit PuTTY

Das sieht jetzt schon fast nach der Anzeige einer Temperatur aus. Wir werden im Client, den wir uns für Windows mit Hilfe der kostenlosen Visual Studio Express 2013 Version schreiben werden, den Wert korrekt formatieren und mit einer Nachkommastelle ausgeben.

 

Hier wird sich dann auch zeigen warum ich ein Start- und ein Ende-Token mit übertrage, dies wird die Erkennung des Anfangs und des Endes der Temperaturwerte erleichtern.

 

Als Vorgeschmack ein Bild des Clients....

 

 

 

 

 

 

 

 

 

 

 

 

 

 

USB Temperatur-Sensor Windows Client
bottom of page