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) 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 Bascom 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 2015 für das Tutorial auf www.thomasheldt.de ' 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
Zum Download des Programmes hier klicken–> USB-TEMPERATUR-SENSOR-2015
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:
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:
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….
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….
Weiter geht es mit der Programmierung des Windows Clients…
Verlinke diesen Beitrag:
<a href="https://blog.thomasheldt.de/usb-temperatur-sensor-programmierung/">USB DS18B20 Temperatur-Sensor – Programmierung</a>

Thomas H.

Neueste Artikel von Thomas H. (alle ansehen)
- I2C 1-Wire 1-Port Bridge für Raspberry Pi - 2. April 2018
- 1-Wire Wetterstation - 17. Februar 2018
- 1-Wire Barometer - 14. Februar 2018
Hallo !
Ist ein tolles Projekt!
Kann man auch DS18S20 Sensoren verwenden?
Habe leider keine „b“
Danke im Voraus
Halo zzz,
im Prinzip geht das schon man müsste nur den Code etwas abändern.
Einfach mal nach Bascom und DS18(S)20 suchen und den Code den man findet mit meinem
vergleichen 😉
Viel Erfolg!
Gruß
Thomas