Forum: Mikrocontroller und Digitale Elektronik Wie kann man einen ATtiny2313 mit einem Fotosensor starten


von Stefan E. (eisingstone)


Lesenswert?

Hallo,

nachdem mir die Suchfunktion hier im Forum leider auch nicht 
weitergeholfen hat, frage ich doch einfach mal.
Wie kann ich einen ATtiny2313 mit einem Fotosensor / Diode oder 
Transistor das Programm des ATTiny starten???
Der ATtiny soll 16 LED Gruppen über die Porta, Portb und Portd die als 
Output konfiguriert sind, ansteuern.
Ich könnte auch zur Not mit einer externen Lösung leben. Wichtig ist nur 
das die Schaltung möglichst wenig Strom verbraucht, da ich lediglich 4 
Mignonakkus, also 4,8 Volt mit 3500 mAh, zur Verfügung habe.
Ich hoffe einer von euch hat da eine gute Idee, wie man das Ganze 
umsetzen kann.

Gruß
Eisingstone

von Stefan M. (Gast)


Lesenswert?

fototransistor an resetpin, bzw. irgendwie verschaltet?

von Werner (Gast)


Lesenswert?

Leg den Prozessor schlafen und laß in durch die Helligkeit aufwecken, 
oder schau halt ab und zu nach....

von Werner B. (Gast)


Lesenswert?

Hat der Tiny2313 einen Analog Comparator?
 -> Sleep -> ACINT = Hallo Wach!

Oder PowerDown Mode und der Fototransistor erzeugt einen (LEVEL) 
Interrupt?

von Jadeclaw D. (jadeclaw)


Lesenswert?

Er hat einen Komparator, der auf den Interrupt geht.

Gruss
Jadeclaw.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ganz eindache Lösung: Endlosschleife vor das eigenliche Programm legen, 
aus der nur gesprungen werden kann, wenn der Fototransistor einen 
bestimmten Pin auf High oder Low legt. Nach Abarbeiten des Programms 
bedarfsweise wieder in jene Endlosschleife springen. Die Sleep-Variante 
ist freilich eleganter, weil beim Nixtun kaum Strom gebraucht wird.

von Sonic (Gast)


Lesenswert?

Hast du schon getestet ob der 2313 bis runter auf 4V 
(Entladeschlusspannung der Akkus) funktioniert? Ich würde einen Tiny26L 
bevorzugen, geht auch noch mit 3V. Den Fototransistor würde ich an einen 
ext. Interruptpin hängen, den Analog-Comparator abschalten (braucht 
Strom) und den µC in den Power-Down-Mode versetzen. Dürfte am 
Stromsparendsten sein. Im Reset-Mode (Reset-Pin auf low) braucht er auch 
einiges an Strom.

von Stefan E. (eisingstone)


Lesenswert?

Hallo,

erstmal danke für die schnellen Antworten, also ich finde die 
Sleep-Variante irgendwie interessant. Ich frage mich gerade nur wie ich 
das umsetze??
Wie setze ich den ATtiny in den Sleep Modus und wie soll er dann 
erwachen??? Ich bin noch nicht so firm in der ganzen Sache!!

von Sonic (Gast)


Lesenswert?

Wie du ihn in den (und in welchen) Sleepmode versetzen kannst, Assembler 
oder C, steht im Datenblatt des Jeweiligen µC. Der ext. INT 'weckt' den 
µC aus dem Sleepmode wieder auf, entweder bei steigender oder fallender 
Flanke am INT-Pin, bei steigender UND fallender Flanke oder high (oder 
low)-Pegel. Steht ebenfalls im Datenblatt wie's einzustellen ist. Keine 
große Sache, probier einfach mal 'n bischen 'rum!

von fieser Rahul (auch Oskar genannt) (Gast)


Lesenswert?

Da war doch was mit Wecken beim µC:
Man kann ihn über einen externen Interrupt nur per Flanke wecken lassen, 
wenn der Oszillator noch läuft. Im Sleepmode geht der AFAIK nicht mehr.
Wecken kann man ihn dann nur noch durch einen pegelgesteuerten 
Interrupt.
Dann müsste man ein RC-Glied an den Fotosensor basteln, das für einen 
genügend langen Impuls sorgt.

(Kann aber auch sein, dass ich da irgendwie mal wieder voll daneben 
liege...)

von Falk (Gast)


Lesenswert?

@fieser Rahul

> Da war doch was mit Wecken beim µC:
> Wecken kann man ihn dann nur noch durch einen pegelgesteuerten
> Interrupt.
> Dann müsste man ein RC-Glied an den Fotosensor basteln, das für einen
> genügend langen Impuls sorgt.

Jepp, das sollte aber kein Problem sein. Einfach ein C (sagen wir 100nF) 
und einen grossen Pull-Up (sagen wir 100k), dann passt das schon. Ein 
Problem könnte das unsaubere Schalten eines einfachen Phototransistors 
sein. Also besser einen 74HC14 davor. Dann isses wasserdicht.

> (Kann aber auch sein, dass ich da irgendwie mal wieder voll daneben
> liege...)

Aussnahmsweise mal nicht ;-)

MFG
Falk

von fieser Rahul (auch Oskar genannt) (Gast)


Lesenswert?

>Aussnahmsweise mal nicht ;-)

Wir wollen hier mal nicht persönlich werden! ;-)

von Stefan E. (eisingstone)


Lesenswert?

Ihr seid echt klasse.... :-)

Das hört sich an als ob ich ein ziemlich lange Bastelstunde einlegen 
muss, mal sehen was dabei so rauskommt. Ich halte Euch diesbezüglich auf 
dem Laufenden.

von Sonic (Gast)


Lesenswert?

>Einfach ein C (sagen wir 100nF)und einen grossen Pull-Up (sagen wir 100k), dann 
passt das schon. Ein Problem könnte das unsaubere Schalten eines einfachen 
Phototransistors sein. Also besser einen 74HC14 davor. Dann isses wasserdicht.

Wozu? Lass' ihn doch pegelgesteuert aufwachen, das geht schon! Den INT 
kann man ja bis zum nächsten Schlafenlegen sperren, um versehentlich 
ausgelöste INTs zu vermeiden.

von Jadeclaw D. (jadeclaw)


Lesenswert?

Nebenbei bemerkt:
Den HC14 kann man sich sparen, AVRs haben generell 
Schmitt-Trigger-Eingänge. Externe SRs sind unnötig.

Gruss
Jadeclaw.

von Falk (Gast)


Lesenswert?

@Sonic

>>Einfach ein C (sagen wir 100nF)und einen grossen Pull-Up (sagen wir >>100k), 
dann passt das schon. Ein Problem könnte das unsaubere Schalten >>eines einfachen 
Phototransistors sein. Also besser einen 74HC14 davor. >>Dann isses wasserdicht.

>Wozu? Lass' ihn doch pegelgesteuert aufwachen, das geht schon! Den INT

Ja eben, und um einen LOW Pegel ausreichender Dauer zu garantieren 
braucht es den C. Denn theoretisch könnte der Phototransistor nur einen 
kurzen Puls auf LOW gehen und dann ist das Aufwachen unsicher. Jaja, 
Phototransitoren sind nicht sonderlich schnell, aber schnell genug um 
unter ungünstigen Umständen komische Effekte zu erzeugen.

>kann man ja bis zum nächsten Schlafenlegen sperren, um versehentlich
>ausgelöste INTs zu vermeiden.

Das ist nicht das Problem.

@Jadeclaw Dinosaur

> Nebenbei bemerkt:
> Den HC14 kann man sich sparen, AVRs haben generell
> Schmitt-Trigger-Eingänge. Externe SRs sind unnötig.

Stimmt, hab ich vergessen.

MfG
Falk

von Matti (Gast)


Lesenswert?

Der Pin-Change Interrupt geht für das Problem genauso, wie ein normaler
Level-Interrupt, nur sollte man einen Punkt beachten (über den ich vor 
ein paar Wochen bei einem Tiny26 gestolpert war):

Man kann die AVRs sehr gut schlafen legen (sleep im power-down mode) und 
sie auf ein Ereignis (Pin-Change etc.) warten lassen. Hat man alle 
nicht-benötigten Komponenten (Analog-Komparator, ADC, BOD und Watchdog) 
abgeschaltet, dann brauchen sie nur 0.5-1uA. Wenn alle Eingangspins 
"fest" liegen!! Fängt ein Eingangspin an, die Spannung zu verändern 
(laden/entladen eines Kondensators, Dein Fototransistor etc.), dann wird 
die Eingangsstufe dieses Pins aktiv und verbraucht mal eben 100uA!

Im Manual steht:

"If the input buffer is enabled
and the input signal is left floating or have an analog signal level 
close to VCC/2, the
input buffer will use excessive power."

Ich war darüber gestolpert, weil ich einen extrem stromsparenden 
"Wecktimer" mit 5MOhm und 2uF (Folie) gebaut hatte, weil mir die 10uA 
des Watchdog zu viel waren! Das Resultat waren die oben erwähnten 100uA!

von Falk (Gast)


Lesenswert?

@ Matti

> Der Pin-Change Interrupt geht für das Problem genauso, wie ein normaler
> Level-Interrupt, nur sollte man einen Punkt beachten (über den ich vor

Glaub ich nicht so sehr, denn wenn der AVR wirklich schäft (nicht nur 
Idle oder Power down) ist der Takt angehalten -> nix mit Pin Change.

> Ich war darüber gestolpert, weil ich einen extrem stromsparenden
> "Wecktimer" mit 5MOhm und 2uF (Folie) gebaut hatte, weil mir die 10uA
> des Watchdog zu viel waren! Das Resultat waren die oben erwähnten 100uA!

Wozu brauchst du einen Watchdog? Hast du einen 32kHz Quarz benuzt?

MfG
Falk


von Matti (Gast)


Lesenswert?

@Falk

"Glaub ich nicht so sehr, denn wenn der AVR wirklich schäft (nicht nur
Idle oder Power down) ist der Takt angehalten -> nix mit Pin Change."

Glauben heisst "nicht wissen" (beliebter Oberlehrer Spruch)! Glaub mir, 
der Pin-Change funktioniert prima zum Aufwecken. Ich hab's schon -zig 
Mal
probiert und es steht auch in allen Manuals!

"Wozu brauchst du einen Watchdog? Hast du einen 32kHz Quarz benuzt?"

Häh? Ich glaube, ich verstehe Deine Rückfrage genauso wenig, wie Du 
wahrscheinlich meine Anwendung. Hier nur kurz zur Erläuterung:
Ich habe eine Lipo-Laderegelung mit Solarzellen programmiert, bei der 
der AVR fest am Akku hängt und auch die Steuerung des Verbrauchers 
übernimmt (Forderung: minimaler Stromverbrauch!). Dafür sollte der AVR 
die ganze Zeit Schlafen (Verbrauch < 1uA) und nur ca. alle 1-10min. 
Aufwachen und die Akku- und die Solarspannung messen. Mein 
selbstgebauter "Watchdog" hat dann über 1MOhm+2uF alle ca. 10s einen 
Pin-Change-Interrupt ausgelöst und alle 6-60 Interrupts habe ich die 
Messung gemacht. Aus o.g. Gründen (100uA Stromverbrauch) habe ich jetzt 
auf den internen Watchdog gewechselt (Verbrauch jetzt: 9uA) und lasse 
mich halt alle 2.2s Wecken.
(man muß einen Watchdog nicht zwangsläufig auch als Watchdog 
benutzen...)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Stimmt, PinChange geht immer, auch im tiefsten Schlaf, da dieser auf 
Pegel und nicht auf Flanken reagiert. Bei meinen Tiny2313s in 
IR-Fernbedienungen funktioniert das bestens.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.