• 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

Windi schrieb:
Der Unsichtbare schrieb:
fragt sich nur ob Pollin hier nicht "günstig" Sondermüll entsorgt? Man schaue mal auf den Date-Code der folgenden Lithium-Zelle, ebenfalls aus dem aktuellen Pollin Sortiment:

Falls Lotti die Teile schon erhlten hat kann er uns ja aufklären ob bei ihm ein Datumsstempel drauf ist.

Meine sind schon da - die Älteste ist von 12/1993! - die neuste von Ende 1997 anscheinend wir bei pollin wirklich nur Schrott verkauft grrr... .
chm :evil:
 

Windi

Geoguru
christophmueller.org schrieb:
Meine sind schon da - die Älteste ist von 12/1993! - die neuste von Ende 1997 anscheinend wir bei pollin wirklich nur Schrott verkauft grrr... .
chm :evil:
Das ist dann aber wirklich eine Sauerei. Ich würde ihnen das Zeug postwendend zurückschicken (und vielleicht sogar die Presse informieren).
 

Lotti

Geomaster
Moin,

meine maxell von Pollin sind aus 11/97, aber sie weisen noch eine Leerlaufspannung von 3.64V auf. Die mitbestellten Vartas sind aus 1996 und 1997.

Windi schrieb:
christophmueller.org schrieb:
Meine sind schon da - die Älteste ist von 12/1993! - die neuste von Ende 1997 anscheinend wir bei pollin wirklich nur Schrott verkauft grrr... .
chm :evil:
Das ist dann aber wirklich eine Sauerei. Ich würde ihnen das Zeug postwendend zurückschicken (und vielleicht sogar die Presse informieren).

@windi, was willst Du der Presse sagen, sie haben im Bild eine falsche Angabe gemacht? Irgendwo ist man halt über den Preis am Ende der Verwertungskette angekommen. Insofern bin ich nicht sauer, auch wenn die Teile eventuell nur 1/2 Jahr halten.

Danke fürs Augenöffen,

Volkmar

PS: Am WE werde ich den ultimativen Stresstest machen und einen Blinker 48Stunden in die Tiefkühltruhe verbannen.
 
Lotti schrieb:
Moin,

meine maxell von Pollin sind aus 11/97, aber sie weisen noch eine Leelaufspannung von 3.64V auf. Die mitbestellten Vartas sind aus 1996 und 1997.

Naja - die 93er liefert nur noch 3.16V - das ist schon ärgerlich - wobei sie für meine Zwecke (AVR mit 7-Segmentanzeige) wohl noch reichen werden... .
Btw.: CSD hat meine AVRs nochnicht liefern können - die scheinen gerade Lieferschwirigkeiten beim AVR Tiny 2313 zu haben... .
chm
 

Portitzer

Geocacher
So, hab heute mal den ersten Test, allerdings mangels Tinys noch mit dem 'alten' 2313 gemacht. Echt goil :) Mit nem alten 266kHz-Quarz aus der Bastelkiste und zwei Mignonbatterien als Stromversorgung 1,8mA Stromaufnahme im 'Ruhezustand'. Mal sehen, ob das mit nem Uhrenquarz noch zu unterbieten ist.
Einen Reichweitentest konnte ich mangels Dunkelheit heute noch nicht machen. Mal sehen, ob es nachher noch klappt damit.

Muß dann gleich mal ne Bestellung abschicken :)

VG
Kurt
 

Windi

Geoguru
christophmueller.org schrieb:
Btw.: CSD hat meine AVRs nochnicht liefern können - die scheinen gerade Lieferschwirigkeiten beim AVR Tiny 2313 zu haben... .
chm
Auf meine 2313 von CSD warte ich auch noch. Ich hab mir inzwischen ein paar über Ebay bestellt. Die kamen relativ fix.
 

Lotti

Geomaster
Moin,

noch mal zu den Varta Lithiumzellen von Pollin. Sie sind zwar "steinalt", aber haben anstandslos den Dauertest in der Gefriehrtruhe überlebt. Nach 4 Tagen mit der Taschenlampe in den Gefrierschrank geleuchtet und Antwort bekommen.

Gruss Volkmar
 

Hauke

Geocacher
Hallo!
Ich habe den SP12 Programmer nachgebaut und wollte mich nun eigentlich ein wenig an den kleinen Dingern versuchen ;-)
Leider habe ich ein Problem und zwar nach dem setzen der Fuse Bits sagt mir Bascom "Could not Identify chip with ID: FFFFFF" oder "... ID: 7B0102" oder "...ID: 400102" oder "...ID: ...", je nach Lust und Laune.
Parallelport habe ich sowohl auf ECP als auch auf EPP getestet (ECP+ EPP gibt das BIOS nicht her)

Irgendwelche Ideen?
gruß,
Hauke

PS: Einen hab ich noch übrig...
 

Windi

Geoguru
Diese Meldungen kenne ich (leider). Das hört sich nicht gut an. Hast Du womöglich das falsche Fuse-Bit programmiert?

Hast Du vorher die Fusebits angezeigt bekommen? Setzt doch mal den anderen Chip ein um zu sehen ob der Programmer funzt, d.h. ob er die Fusebits im Klartext anzeigt. Aber keine Fusebits programmieren.
 

Hauke

Geocacher
Hi!
Das mit dem falsch setzen dachte ich beim ersten, aber beim zweiten hab ich nochmal verglichen: Ich habe Fusebit E und Fusebit DCBA gesetzt.
Und der Programmer scheint zu funktionieren, denn ich bekomme alles im Klartext angezeigt, ohne kryptische Zeichen, etc.
Das Auslesen dauert auch einen kleinen Augenblick, es scheint also direkt vom Chip zu kommen.

Aber die anderen sind nun wirklich hinüber oder besteht da noch eine andere Möglichkeit mit 'nem anderen Programmer? (Meinte, dass ich hier sowas gelesen hatte...)

gruß,
Hauke


NACHTRAG
Okay, sie funktionieren wieder alle. Es lag wohl daran, dass das Compilieren des Quellcodes nicht funktioniert hat. Nun habe ich die "Fehler" entfernt einmal Compiliert und geschrieben. Nun erkennt er sie wieder.

Doch nun das neue Problem, bzw die Fehler die der Compiler anmeckert:
"Out of SRAM space" beim deklarieren von zB Dim A as Byte.
 

Windi

Geoguru
Hauke schrieb:
Doch nun das neue Problem, bzw die Fehler die der Compiler anmeckert:
"Out of SRAM space" beim deklarieren von zB Dim A as Byte.
Hast Du das original Programm verwendet oder etwas selbst entwickeltes?
 

Hauke

Geocacher
Okay, das hat sich auch erledigt.
Ich hatte das heute Nachmittag auf der Arbeit probiert. Da meldete der Compiler solche Fehler (mit original Code). Hier bei mir zu Hause läuft es ohne Probleme. Komisch.
Nungut...

Trotzdem vielen Danke!
Hauke
 

Windi

Geoguru
Zum Thema Reichweite:
Mit meiner Maglite 5D habe ich die Schaltung heute mal ausprobiert.
Ging mit einer Freiverdrahtung in der beleuchteten Straße ohne Probleme bis 200 Meter Entfernung. Weiter konnte ich es erstmal nicht testen da dann die Straße zu Ende war.
Wenn die LED in einer Röhre steckt und gegen Fremdlicht abgeschirmt ist geht es bestimmt auch noch weiter. Muss ich demnächst mal im dunklen Wald ausprobieren.
 

Gonzoarts

Geonewbie
Hallo erstmal zusammen und glückwunsch zu diesem gelungenen Fred und dem Klasse Projekt... :lol:

Hauke schrieb:
Doch nun das neue Problem, bzw die Fehler die der Compiler anmeckert:
"Out of SRAM space" beim deklarieren von zB Dim A as Byte.

Dieses Problem hatte ich anfangs auch, der Compiler meldet dass der SRAM des tiny13 zu klein sei.

Grund: in Bascom sind Standartmässig die Stacks zu hoch eingestellt.

Abhilfe: unter 'Options' ' Programmer' im Register Compiler den "HW Stack" runterstellen.
Diese Stack Size ist von Hause aus auf 32 byte eingestellt, pro Gosub werden allerdings nur 2 byte benötigt. Für dieses Projekt reicht bei mir eine Stackgrösse von 6 aus.....und siehe da, der Compiler läuft durch (hat mich selbst die halbe nacht gekostet bis ich das raus hatte...... :evil: )

Vielleicht hilft dies dem ein oder anderen weiter.....
 

Windi

Geoguru
Seltsam, bei mir steht auch 32 drin und die Sache funzt einwandfrei.

Dafür habe ich ein anderes Problem. Auf meinem Schei... Gericom-Notebook funzt die Sache nicht. Bascom mosert immer dass er den Programmer nicht findet, ich habe aber Zugriff auf die Fuses.
Nach dem Programmieren meldet er immer einen Fehler beim Vergleichen.
Selbst verschiedene Einstellungen der par. Schnittstelle im Bios brachten keinen Erfolg. Dann muss halt weiter der Büro-PC dafür herhalten.
 

Gonzoarts

Geonewbie
Hm, seltsam, nach 3 Stunden hatte ich zumindest diese Begründung in einem anderen Forum versteckt gefunden...und erst nach der änderung funktionierte es.
 
Wer sich ein bisschen in Microcontroller einlesen will, kann sich dieses Skript
ftp://ftp.rcs.ei.tum.de/pub/courses/rtproz.pdf
zu Gemüte führen. Finde ich einen schönen Vergleich, gerade zwischen Atmel ind PIC.
 

Dani_B

Geocacher
Sodele, meine reaktives Licht ist jetzt soweit fertig. Bei mir dauert sowas immer etwas :D

Ich hatte noch Tiny15, aber die haben kein Ram. Ich hab dann so lang am Code rumgestrickt, bis es ohne Ram (nur mit Registern) läuft. Aber leider ist die Stromaufnahme recht hoch, da er kein 128kHz Oszillator hat.

Mittlerweile hab ich mir auch Tiny13 besorgt, mit den alles wesentlich besser geht. Die Stromaufnahme liegt bei 30-40µA
Zusätzliche Bauteile sind jetzt nurnoch:
8pol. IC Fassung (die einfachen)
100R Widerstand
8mm LED rot, ultrahell.

Wie einfach der Aufbau ist, könnt ihr an den Bildern sehen. Die LED klemmt zwischen Fassung und IC, ein Beinchen ist innen hochgebogen, eins mit Widerstand außen rum. -> super kompakter Aufbau.


Nochmal von unten:


Und das ganze Licht:
(die LED wird mit Silikon abgedichtet, die Gehäusehälften werden mit selbstverschweißendem Klebeband abgedichtet. Der Li-Ion Akku könnte draußen kritisch sein und wird noch gegen eine Pollin-Lithium-Batterie getauscht)


Und für alle AvrGcc User noch der aktuelle Code:
Code:
#define F_CPU  128000			// Oszillatorfrequenz in Hz

#include <avr/io.h>
#include <avr/delay.h>

#define LED_A PB4				// LED Pin Anode
#define LED_K PB3				// LED Pin Kathode

#define DISCHG 150			      // Entladezeit der LED in ms. Je größer der Wert, desto empfindlicher.
#define DARKCNT 16			      // Verhindert blinken bei Dauerbeleuchtung (Tag). 
								         // Je größer der Wert, desto unempfindlicher gegen Taglicht.


unsigned char led_abfrage(void)
{
 unsigned char i;
   
 PORTB &= ~(1<<LED_A);			// Port LED_A auf Masse schalten
 PORTB |=  (1<<LED_K);			// Port LED_K auf Vcc schalten, um die LED zu 'laden'

  _delay_ms(1);           	   // Ladezeit 1ms 

 DDRB  &= ~(1<<LED_K);    	   // Port LED_K nun zwecks Abfrage der LED-Ladung auf 'Eingang' schalten
 PORTB &= ~(1<<LED_K);   		// Pullup abschalten

  _delay_ms(DISCHG);        	// Entladezeit abwarten

  if (PINB & (1<<LED_K)) i=0; else i=1;   	// Ladezustand einlesen

 DDRB  |=  (1<<LED_K);   		// Port LED_K wieder auf Ausgang schalten
 PORTB &= ~(1<<LED_K);  		 // Port LED_K auf Masse schalten

return i;
}


int main(void) 
{
 unsigned char k;
  DDRB  = (1<<LED_A) | (1<<LED_K);      	// LED_A und LED_K als Ausgang definieren       
  PORTB = 0xFF ; 					        	// Pullups zuschalten    
  PORTB &= ~((1<<LED_A)|(1<<LED_K));    	// Pullups für LED abschalten
  OSCCAL = 0;        	                   // Oszillator auf geringste Taktfrequenz trimmen
  ACSR = (1<<ACD);  	                    // analogen Komperator ausschalten, spart Strom
  
  while (1) 			// Main Loop
  {

  k = 0;
   
   while (k < DARKCNT)      		// nur wenn k-mal hintereinander "dunkel" erkannt wurde
    {								     // gehts weiter und die Schaltung ist "scharf"
	 if (led_abfrage()) k = 0; else k++;
	}
   
   while (!(led_abfrage()))		// hier ist die Schaltung scharf und wartet auf Licht				
    {
	}
   
   for (k = 0; k < 30 ; k++)		// ab hier beginnt das Blinkspektakel			
	{
     PORTB |=  (1<<LED_A);						
      _delay_ms(60);								
     PORTB &= ~(1<<LED_A);						
      _delay_ms(80);
    }   
  }
return 0;
}

Grüße,
Daniel
 
Oben