Wie kann man einen ATtiny2313 mit einem Fotosensor starten

OP #467649
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
Gast
Hat der Tiny2313 einen Analog Comparator?
 -> Sleep -> ACINT = Hallo Wach!

Oder PowerDown Mode und der Fototransistor erzeugt einen (LEVEL) 
Interrupt?
(Firma: TravelRec.) Persönliche Seite
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.
Gast
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.
OP
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!!
Gast
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!
Gast
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...)
Gast
@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
Gast
>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.
Gast
@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
Gast
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!
Gast
@ 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

Gast
@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...)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.