• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Temperaturschalter mit 7Segmentanzeige

Haenigser

Geocacher
Hallo zusammen.

Ich würde gern einen Temperaturschalter/-auslöser mit 7Segmentanzeige bauen.
Bisher habe ich eine funktionierende Schaltung mit einem Atmega88 und einer 1N4148 Diode auf dem Steckbrett.

Auf dem Atmega88 ist folgender Code:
Code:
$regfile = "m88def.dat"
$crystal = 16000000
$baud = 19200

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Dim Uf_raw As Word

Led_pb0 Alias Portb.0
Config Led_pb0 = Output
Led_pb0 = 0

Error_led Alias Portd.7
Config Error_led = Output
Error_led = 0


Do

   Uf_raw = Getadc(0)
   Print "Uf = " ; Uf_raw

   If Uf_raw < 10 Or Uf_raw > 600 Then
      Toggle Error_led
   Else

      If Uf_raw > 100 Then Led_pb0 = 0
      If Uf_raw < 90 Then Led_pb0 = 1

   End If

   Waitms 250

Loop
End

Statt der LED würde ich nun gern die 7Segmentanzeige ansteuern.

Hat jemand eine Idee?

Vielen Dank schon mal.
 

TeamAdolzfurt

Geomaster
Ideen schon, aber was ist Deine Frage? Im Moment misst Du eine Spannung am Eingang 0 des ADC (woher die auch immer kommt) und schaltest je nach Wert die LED an oder aus.

Was soll die Sieben-Segment Anzeige anzeigen und unter welchen Umständen?

MaJa
 
OP
H

Haenigser

Geocacher
Wenn die Diode erhitzt wird, soll zum Beispiel eine Koordinate über die Segmentanzeige ausgegeben werden.
 

maierkurt

Geowizard
Dann musst du eine 7-Segmentanzeige anschließen und die entsprechenden Muster ausgeben.
Wo genau klemmt es denn jetzt? Oder sollen wir für dich das Programm schreiben?
 

chrysophylax

Geomaster
Nimm die Standard-7Segment-Reaktivlicht-Variante und tacker dir statt einem LDR oder Reed-Kontakt einen klassischen Bimetall-Schalter aufs Brett. Die gibt es in unterschiedlichen Auslöse-Temperaturen einstellbar entweder geschlachtet aus dem Thermostat von alten Elektrospeicherheizungen oder wenns wärmer sein soll aus Bügeleisen.

Dann hast du eine fertige Schaltung, die du nehmen kannst und eine fertige Software, die du nehmen kannst und musst dich nicht mit Elektrik oder Software rumschlagen.

Eleganter und kleiner ist natürlich ein NTC, den du statt LDR nach entsprechender Anpassung des Spannungsteilers echt analog ausliest (kostet auch nur ein paar cent), da kannst du dir dann vorher mit Taschenrechner und Datenblatt einen Schwellwert für die Auslösetemperatur ausrechnen. Heißt aber Arbeit in Software und mit einem Taschenrechner - keine Ahnung, ob du dir sowas antun magst....

chrysophylax.
 
OP
H

Haenigser

Geocacher
@maierkurt:
Es klemmt am Programm. :)
Ich habe bereits versucht aus dem oben abgebildeten Code und dem aus dem 7Segment-Reaktivlicht-Thema einen Code zu frickeln, was mir leider nicht gelungen ist. Ein paar Dinge konnte ich mir schon beibringen. Bei der umfangreichen Software für das Reaktivlicht stoße ich allerdings an meine Grenzen.

Die Software muss auch nicht viel können. Sie soll nur einen Text bzw. eine Koordinate über die 7Segmentanzeige wiedergeben, wenn die Diode mit einem Feuerzeug erhitzt wird. Energiesparende Maßnahmen sind nicht nötig, da ein mitgebrachter 9V Block an die Station angeschlossen werden soll.

@chrysophylax:
Ich bin für die "elegante Variante" ;)
Beim o. g. Code habe ich allerdings nichts berechnet, sondern einfach ausprobiert. Hat auch funktioniert. ;)
 

maierkurt

Geowizard
Hast du das obige Programm selber geschrieben?
Wenn ja, das ist doch schon mal eine Grundlage um etwas hinzufrickeln.
Ich würde da jetzt einfach so vorgehen:
Du schließt die 7-Segmentanzeige an PortB an, ist ja nichts anderes als 7 einzelne LEDs. Diese definierst du dir dann z.B. so:
Als Grundlage für die Beschaltung beziehe ich mich auf: http://de.wikipedia.org/wiki/Segmentanzeige
Code:
segmentA Alias Portb.0
segmentB Alias Portb.1
segmentC Alias Portb.2
segmentD Alias Portb.3
segmentE Alias Portb.4
segmentF Alias Portb.5
segmentG Alias Portb.6

Config segmentA = Output
Config segmentB = Output
Config segmentC = Output
Config segmentD = Output
Config segmentE = Output
Config segmentF = Output
Config segmentG = Output
Ob das jetzt besonders elegant ist, sollte Nebensache sein. Hauptsache es funktioniert für dich.

Jetzt kannst du dir in Bascom Unterprogramme schreiben, um einzelne Ziffern anzuzeigen.
Code:
ziffer1:
  segmentA = 0
  segmentB = 1 
  segmentC = 1
  segmentD = 0
  segmentE = 0
  segmentF = 0
  segmentG = 0
return

Wenn die Ziffern jetzt ausgegeben werden sollen, rufst du einfach die Unterprogramme in der richtigen Reihenfolge auf. Für 50° 50.000 z.B.:
Code:
Gosub ziffer5
Waitms 1000  (keine Ahnung, welcher maximale Wert hier erlaubt ist)
Gosub allesAus
Waitms 250

Gosub ziffer0
Waitms 1000
Gosub allesAus
Waitms 250

Gosub ziffer0
Gosub allesAus
Waitms 250
.
.
.
.
.
Gosub allesAus
Du solltest dir noch ein Unterprogramm anlegen, welches alle LEDs ausschaltet.
 
OP
H

Haenigser

Geocacher
Vielen Dank für die super schnelle Hilfe.

Aber ich glaube ich hab´s schon:

Code:
Const Schwelle = 90                                      <-- von 50 auf 90 geändert
Const Tagschwelle = 800
Const Zwangsimpuls = 8 

Dim A As Byte 
Dim Tagzaehler As Byte
Dim Schlafzaehler As Byte
Dim Ldr As Integer 
Dim Alt As Integer
Dim Merker As Integer
Dim Zeichen As String * 1

Do
Reset Watchdog
Powerdown 
Start Adc 
Ldr = Getadc(2) 
Stop Adc 
Merker = Ldr - Alt 
Alt = Ldr 
If Ldr < Schwelle Then Gosub Morsen                        <-- Merker > durch Ldr < ersetzt
If Ldr > Tagschwelle Then 
 If Tagzaehler < 255 Then 
 Tagzaehler = Tagzaehler + 1
 End If
 

maierkurt

Geowizard
Die Cacher sollen die Batterie ja selber mitbringen, also kannst du auf die Stromsparfunktion am Tag ja verzichten.
Code:
Const Schwelle = 90                                      <-- von 50 auf 90 geändert


Dim A As Byte
Dim Ldr As Integer
Dim Alt As Integer
Dim Zeichen As String * 1

Start Adc

Do
Ldr = Getadc(2)
    If Ldr < Schwelle Then Gosub Morsen                       
Loop
Mit dem Wert für Schwelle musst du mal experimentieren.
 

fogg

Geomaster
Da die (meisten) Atmel-Prozessoren sowieso einen internen (unkalibrierten) Temperatursensor haben, kann man auch den benutzen. Ich habe z.B. gerade einen Eis-Petling gebaut (mit einem Attiny 84), der erst bei 4 Grad die Koordinaten verrät (zur Zeit wohl sinnlos). Man kann sich das hier anschauen: https://www.youtube.com/watch?v=AXjoXU5z92A .

Die Schwierigkeit dabei ist, dass man die Werte des Temperatursensors nicht einfach frei Haus bekommt, sondern die ADC-Register speziell setzen muss. Ob das unter BASCOM geht, weiß ich nicht.

Ob ich allerdings einen Prozessor mit 'nem Feuerzeug braten lassen möchte, weiß ich nicht genau. Da ist der Bimetall-Schalter wohl doch die bessere Lösung.
 

Anhänge

  • ICE.tiff
    350,7 KB · Aufrufe: 360

radioscout

Geoking
Es gibt eine medizinische Variante, die viele Leute zur Behandlung von leichten Sportverletzungen verwenden.
birke-wellness.de/Sport-Lavit-Kuehlspray-p00010409.html
 
Oben