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

Reaktives Licht mit Atmel AVR

OP
S

Sir Vivor

Geocacher
Ralf schrieb:
Als "Nebenprodukt" meiner Einarbeitung in diese Thematik ist eine Zusammenfassung des Themas entstanden.
Gewährleistungen für eventuelle Fehler übernehme ich natürlich nicht. Aber es ist alles ein bißchen strukturierter und kompakter aufgeschrieben. Hoffentlich, ohne etwas durcheinander zu bringen.

Ralf
Klasse Idee - gut gemacht! :D

Windi schrieb:
Vielleicht kann der Moderator von diesem Fred oder Sir Vivor den Link auf das PDF in den ersten Beitrag reinsetzen.
Erledigt. 8)

Es grüßt...

...Sir Vivor
 

Portitzer

Geocacher
Nachdem meine Tinys nun endlich eingetroffen sind, habe ich mich wieder ans basteln gemacht. Die Idee mit dem Morsecode ist ja an sich fantastisch, aber leider meldet das Teil bei meinen Eingabeversuchen immer . . . . . . . . :(
Hat jemand ähnliche Erfahrungen? Wenn ich es als Owner des zukünftigen Caches nicht schaffe, dem Teil die Koordinaten zu entlocken, befürchte ich massig Beschwerden der Suchenden...
Naja, mal sehen. Ansonsten verzichte ich einfach auf die Morsecodeabfrage und gebe die Koordinaten so aus. Das ist für den "Nichtfunkamateur" schon schwierig genug :wink:.

Gruß
Kurt
 

Portitzer

Geocacher
Klar, aber aber das meinte ich nicht, weil das ja die Zeichen bei jedem eingehenden "Lichtblitz" ausgibt, während das andere die Zeichen nur dann ausgibt, wenn man das richtige Zeichen "reinmorst" ;)

Aber egal, das strick ich mir noch passend um.

Gruß
Kurt
 
@Portitzer:
... Morsecode ist ja an sich fantastisch, aber leider meldet das Teil bei meinen Eingabeversuchen immer . . . . . . . . . :(

Sorry, hab doch tatsächlich einen Fehler im Code gefunden. Lag wohl daran, dass ich beim Entwickeln und Testen ein anderes Zeichen abgefragt hatte und es hier für den Fred auf SOS umgestellt hatte.
Falsch:
Code:
'==> Abgefragtes Zeichen festlegen
Ein = &B0000000000111001                    'Beispiel: SOS  ...---...

Richtig:
Code:
'==> Abgefragtes Zeichen festlegen
Ein = &B0000000000111000                    'Beispiel: SOS  ...---...

Mit dem korrigierten Code sollte es keine Probleme geben, dem Tiny die Ausgabe zu entlocken.
(Es spielt z.B. Keine Rolle, wie lange die Dunkel-Pausen sind. Das erste dit entscheidet die Länge der Zeichen. Ein dah sollte mindestens doppelt so lange wie das erste dit sein.)

Das ist für den "Nichtfunkamateur" schon schwierig genug :wink:.
Finde ich auch. Mir graut schon davor, wenn ich mal auf so einen Cache stoße. Darum eine Bitte, setzt die Ausgabegeschwindigkeit nicht höher als 5 WPM :eek:.

Ich muß zugeben, dass ich selbst einen Cache aktiv habe, der dir die Morsezeichen mit 20 WPM in die Augen haut :twisted: . Damit kann man die Cachekollegen ganz schön verwirren, denn entziffert bekommt das kaum einer. Die Ausgabe kommt abwechselnd mit einem zweiten, langsamen, einfachen, selbst entwickelten Nicht-Morse-Code.
 

Portitzer

Geocacher
Danke, dachte ich mir schon, dass es daran liegt, war mir aber nicht ganz sicher. Momentan bastle ich noch an einer anderen Idee auf der gleichen Hardwarebasis. Es fehlen aber noch ein paar "Zutaten".

Gruß
Kurt
 

der_obelix

Geonewbie
Hallo,
eine Frage an die Spezialisten: Ich habe in den ATTiny13 ein Testprogramm gespielt (ewiges Blinken). Hat auch geklappt. Er blinkt nun ewig. Ich wollte nun ein anderes Programm einspielen (mit abfrage der LED zum aktivieren) und das geht nicht mehr. Beim aufruf des Prommers kommt nun "Could not identify chip with ID:FFFFFF". wenn ich nun auf "Lock an Fuse Bits" gehe, kommt die Meldung "READLB entry not found". Eine neu Programierung ist scheinbar nicht möglich. Ist der Kontroller nun Edelschrott, oder kann ich ihn noch irgenwie resetten ???

mfg der_obelix
 

Windi

Geoguru
Vermutlich stimmt die Taktrate für die Datenübertragung nicht mehr. Das passiert wenn man den Tiny umprogrammiert auf die niedrigste interne Taktfrequenz. Auf welchen Takt hast Du denn die Fusebits gestellt?

Probier mal folgendes. Editiere das Basic-Programm und trage für die Taktfrequent (Crystal) 16000 ein. Dann compiliere das Programm nochmals. Hast Du jetzt wieder Zugriff auf die Fusebits?
Wenn es damit nicht klappt probiere es mal mit 128000, 4000000 oder 8000000

Hast Du zur Not noch einen zweiten Chip zum Ausprobieren?
 

der_obelix

Geonewbie
Erst mal besten Dank für die Tips.

Hat leider nicht geklappt. Ich hatte natürlich die Bits verändert. Leider habe ich zur Zeit nur das eine Muster. Wie gesagt, mein Testprogramm läuft. Mur ich kann nichts neues einspielen. Leider habe ich auch versäumt mir die Bitkonfiguration abzuspeichern.

mfg der_obelix

PS hatt noch ein Tippfehler es geht :D :D :D :D :D :D
 

Dani_B

Geocacher
Hallo!

Womit programmierst du die ICs?

Es gibt nämlich ein Problem, wenn du die Fusebits bei der ersten Programmierung auf den 128kHz Oszillator stellst.

Für so einige Programmer ist der Chip dann beim zweiten Beschreiben einfach zu langsam!

Gruß,
Daniel
 

Windi

Geoguru
Dani_B schrieb:
Es gibt nämlich ein Problem, wenn du die Fusebits bei der ersten Programmierung auf den 128kHz Oszillator stellst.

Für so einige Programmer ist der Chip dann beim zweiten Beschreiben einfach zu langsam!

128 k geht noch aber wenn man dann die "Teile durch 8" Fuse setzt wird es kritisch mit dem programmieren. Die Fusebits sollten sich aber dennoch auslesen lassen.
 

EW-Andy

Geocacher
Danke für Euer fleißiges Forschen und Eure Entwicklungsarbeit. :eek:D
Beim Nachbau hatte ich bis auf die Fuses keine Schwierigkeiten - mein erster interaktiver Blinker funktioniert gut!
Nun lese ich im PDF, daß in Reihe zur LED noch ein "passender" Widerstand gehört, den ich -äh- vergessen habe.
Meine roten LEDs funktionieren auch so an der 3V CR123-Batterie.
Der Strom durch die LED ist nie größer 20mA, meist so bei 12mA.

Muß ich also noch einen Widerstand einbauen?
Wenn ja, welchen? Gibt es eine Formel dafür?

Welchen Zweck hätte der Widerstand? Ist der der nur zum Strombegrenzen oder steigert der auch die Empfindlichkeit, die ich besonders mit der großen, aber breitwinkligen 8mm-LED nicht so toll fand.
Die 5mm-LED mit 15° Abstrahlwinkel fand ich besser.

Und: Mit welchen Entladezeiten arbeitet Ihr?
Im PDF finden sich in den einzelnen Programmen ja Zeiten von 20-100-1500us. Was nehmt Ihr?
 

Ralf

Geocacher
Natürlich gibt es da eine Formal: das Ohmsche Gesetz.
U = R * I (Spannung über dem Widerstand = Widerstand * Strom durch den Widerstand).
Jede LED hat eine eigene Spannung, die sie benötigt. Alles, was zwischen dieser Spannung und der Versorgungsspannung liegt, muss an diesem Widerstand abfallen. Schaust Du Dir eine Diodenkennlinie an, siehst du, dass eine kleine Zunahme der Spannung eine große Stromsteigerung mit sich bringt -> Leistung in der LED steigt stark an -> LED hält nicht lange.
Im Umkehrschluss bedeudet das aber auch, dass, solange die Spannung (und damit der Strom) im grünen Bereich ist (Vorsicht, es gibt auch LEDs, die weniger Strom verbrauchen als 20 mA), benötigst Du den Widerstand nicht. Allerdings erhältst Du dann auch nicht die maximal mögliche Helligkeit der LED.
Die Empfindlichkeit steigert die LED nicht. Das Prinzip ist, dass die LED in Sperrrichtung ein Kondensator ist. Dieser wird aufgeladen. Dann entläd sich dieser Kondensator (Stichwort Selbstentladung). Je nach Beleuchtung geschieht das schneller oder langsamer. Aber das passiert alles innerhalb der LED -> Widerstand spielt keine Rolle. Es kann natürlich sein, dass über den Widerstand und das IC eine Entladung stattfindet, aber die dürfte sehr klein dagegen sein.
Entladezeit ist der Parameter, an dem Du spielen musst. Probier es aus. Eine andere Lösung gibt es da nicht.

Viel Spaß noch, Ralf
 

orotl

Geocacher
Ralf schrieb:
Entladezeit ist der Parameter, an dem Du spielen musst. Probier es aus. Eine andere Lösung gibt es da nicht.
*huestl* doch, gibts und funktioniert.
Ich mache eine dynamische Anpassung des Schwellwertes:
* Timer zuruecksetzen
* Messung starten
* Timerwert nach erfolgter Entladung merken und als Schwelle (mit Offset) fuer die naechsten Messungen verwenden.
Natuerlich wird der Fall eines zu schnellen Helligkeitswechsel abgefangen.
Diese Messung mache ich alle paar Sekunden einmal.
Irgendwann moechte ich noch eine Mittelwertberechnung einbauen, dann waers beinahe perfekt.

Bei der Messung selbst:
* Timer mit Messwert vorinitialisieren und starten, IRQ enablen
* Interrupt fuer I/O Pin enablen
* Messung starten
* Schlafen
* Je nachdem ob zuerst der Timerinterrupt oder der Entladunsinterrupt kommt ist es entweder dunkel oder hell.

Funktioniert so gut, dass es auch bei Daemmerung noch einwandfrei reagiert.

Ich habe das ganze in Assembler programmiert, momentan allerdings nur fuer die Tiny12 - davon hab ich eine Menge herumliegen :wink:
Fuer die Tiny13 muesste es noch adaptiert werden.

orotl
 

Windi

Geoguru
orotl schrieb:
Ralf schrieb:
Entladezeit ist der Parameter, an dem Du spielen musst. Probier es aus. Eine andere Lösung gibt es da nicht.
*huestl* doch, gibts und funktioniert.
Ich mache eine dynamische Anpassung des Schwellwertes:
* Timer zuruecksetzen
* Messung starten
* Timerwert nach erfolgter Entladung merken und als Schwelle (mit Offset) fuer die naechsten Messungen verwenden.
Natuerlich wird der Fall eines zu schnellen Helligkeitswechsel abgefangen.
Diese Messung mache ich alle paar Sekunden einmal.
Irgendwann moechte ich noch eine Mittelwertberechnung einbauen, dann waers beinahe perfekt.

Klingt sehr interessant.
Ich glaube wir müssen mal einen deutschlandweiten Event veranstalten.
"Wer baut das beste Reaktivlicht".
 
Oben