Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Reaktives Licht mit Atmel AVR

Basteleien analog und digital mit Strom und Spannung.

Moderator: radioscout

Emalaith
Geocacher
Beiträge: 27
Registriert: Do 11. Jun 2009, 17:55
Wohnort: Herdecke
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von Emalaith »

soo wie ich mit erstaunen feststellen durfte kamen heute die neuen tinys bei mir an. Also gleich mal austesten ob das mit dem setzen der fusebits klappt.
der Chip wurde schon mal erkannt, die fusebits hab ich wie ein paar Beiträge vorher im Screenshot gesetzt.
Ein klick auf Write und Zack...
"Detected Micro does not match the selected Micro ATtiny13"
Jaa suuuper...
Ich werde mich mal mit dem Hersteller des Programmers in Verbindung setzen er soll mir mal die Belegung des 10poligen Kabels zukommen lassen.
Gibt es hier denn jemanden der einen HV-Programmer hat und mir die tinys wieder gerade biegen kann? Ich bin hier denn so langsam am verzweifeln.
Liebe, verzweifelte, Grüße
Ema

#Edit:
Ich kann Erfolg vermelden!!!
Hab gerade auf dem Windowsrechner mit viel mühe Das AVR Studio installiert und dort meldete es mir auch eine hilfreiche Warnung. es liegt am FuseBit DCBA, die 128kHz sind zu langsam für meinen ISP-Programmer. lass ich den auf Standard läuft das ding wie eine eins. Morgen löte ich mir dann einen Paralleladappter zusammen und hofe das ich vielleicht die tinys selber retten kann :) Ich bin grade super druff und freu mich wie ein kleines Kind zu Weihnachten...
Danke Danke Danke für eure ganze Hilfe, ich hoffe ich kann euch zu gegebener zeit auch mal helfen.
Viele liebe Grüße :)
Ema

#Edit2:
Welche Auswirkungen hat dies auf das spätere verhalten des tinys wenn ich den nicht auf 128kHz schraube?
kirby27b
Geocacher
Beiträge: 251
Registriert: So 12. Aug 2007, 17:45
Wohnort: GM

Re: Reaktives Licht mit Atmel AVR

Beitrag von kirby27b »

Hi,

also ich habe das Problem auch, wenn ich die auf 128kHz setze will Bascom die nicht mehr. Das umgehe ich ( wenn ein neu Programieren erforderlich ist ) indem ich vorher mittels AVR-Studio den Tiny wieder auf 8MHz setze. Wenn AVR meggert das die Geschwindigkeit zu hoch ist setzt man zu erst die ISP-Clock ( unter Terget settings ) auf 1.21kHz dann drückt man auf den Button " WRITE " und schon kann man in AVR die Tahktfrequenz des kleinen Käfer wieder mittels Fuses hoch setzen das auch Bascon wieder darauf zugreifen kann. Gebe zu etwas Umständlich, aber so gehts halt und besser Umständlich als gar nicht.

Grüße
Olaf
Geschichte ist nicht das was wirklich geschehen ist, sondern das was jemand darüber niedergeschrieben hat.
Benutzeravatar
Teddy-Teufel
Geoguru
Beiträge: 4717
Registriert: So 29. Okt 2006, 11:04
Wohnort: 17449 Karlshagen
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von Teddy-Teufel »

kirby27b hat geschrieben:Hi,

also ich habe das Problem auch, wenn ich die auf 128kHz setze will Bascom die nicht mehr.
Ich verstehe nicht warum ihr diese Schwierigkeiten mit den 128kHz habt, ich programmiere seit 2007 mittels selbstgebauten Adapter und Bascom. Habe jedoch noch nie diese Schwierigkeiten gehabt und konnte die Fusebits setzen und schreiben und was nicht noch alles, ohne daß die Tinys (13, 24 und 85) ausgestiegen sind. :???:
Es gibt Cacher, bei denen gingen dem lieben Gott wohl die Zutaten aus! :lachtot:
Moin, moin! Achim
Emalaith
Geocacher
Beiträge: 27
Registriert: Do 11. Jun 2009, 17:55
Wohnort: Herdecke
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von Emalaith »

Das liegt wohl an dem ISP-Adappter ;) Für den ist das denn dann zu langsam... So hab ich das zumindestens verstanden.

Ema
Benutzeravatar
Teddy-Teufel
Geoguru
Beiträge: 4717
Registriert: So 29. Okt 2006, 11:04
Wohnort: 17449 Karlshagen
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von Teddy-Teufel »

Emalaith hat geschrieben:Das liegt wohl an dem ISP-Adappter ;) Für den ist das denn dann zu langsam... So hab ich das zumindestens verstanden.

Ema
Moin, so die Tinys sind wieder auf dem Rückweg, falls Screenshots von den Einstellungen für alle sechs gebraucht werden, brauche ich eine E-Mail-Adresse. Die Fusebits lauten jetzt 0,1,1,1, DCBA 9,6MHz. Den Attiny 13-5D hast Du wohl programmiert, er gibt an Port 4 Impulse aus.

Frohes Schaffen und Grüße von der Küste
Es gibt Cacher, bei denen gingen dem lieben Gott wohl die Zutaten aus! :lachtot:
Moin, moin! Achim
stonewood
Geowizard
Beiträge: 1062
Registriert: Mo 3. Apr 2006, 10:15
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von stonewood »

Teddy-Teufel hat geschrieben:Moin, so die Tinys sind wieder auf dem Rückweg, falls Screenshots von den Einstellungen für alle sechs gebraucht werden, brauche ich eine E-Mail-Adresse. Die Fusebits lauten jetzt 0,1,1,1, DCBA 9,6MHz. Den Attiny 13-5D hast Du wohl programmiert, er gibt an Port 4 Impulse aus.
?? Die laufen jetzt nicht wirklich mit 9,6 Mhz, oder? Bei zwei AA-Zellen?
tiny13 Datenblatt hat geschrieben: • Operating Voltage:
– 1.8 - 5.5V for ATtiny13V
– 2.7 - 5.5V for ATtiny13
• Speed Grade
– ATtiny13V: 0 - 4 MHz @ 1.8 - 5.5V, 0 - 10 MHz @ 2.7 - 5.5V
– ATtiny13: 0 - 10 MHz @ 2.7 - 5.5V, 0 - 20 MHz @ 4.5 - 5.5V
Die Standardeinstellung (9,6 Mhz, und CKDIV8 = 1,2 Mhz) ist ok, aber mit 9,6V laufen die Tinys nur bis 2,7V innerhalb der Spezifikation.
Benutzeravatar
Teddy-Teufel
Geoguru
Beiträge: 4717
Registriert: So 29. Okt 2006, 11:04
Wohnort: 17449 Karlshagen
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von Teddy-Teufel »

stonewood hat geschrieben: Die Standardeinstellung (9,6 Mhz, und CKDIV8 = 1,2 Mhz) ist ok, aber mit 9,6V laufen die Tinys nur bis 2,7V innerhalb der Spezifikation.
Ich habe sie nur so eingestellt, wie Emalaith sie haben wollte, er hatte mit seinem Adapter Schwierigkeiten und hat gebeten DCBA auf 9,6 einzustellen, bei allem Weiteren halte ich mich raus. :^^:
Es gibt Cacher, bei denen gingen dem lieben Gott wohl die Zutaten aus! :lachtot:
Moin, moin! Achim
Emalaith
Geocacher
Beiträge: 27
Registriert: Do 11. Jun 2009, 17:55
Wohnort: Herdecke
Kontaktdaten:

Re: Reaktives Licht mit Atmel AVR

Beitrag von Emalaith »

so werden diese wieder von einem Adapter erkannt ;)
damit läuft später kein RL ;)
Danke für deine Hilfe Teddy-Teufel

Edit: Die Tinys sind bei mir wieder alle heile eingetroffen. Nochmal vielen dank, werden auch alle wieder erkannt :P Werde mir bei Gelegenheit mal einen Programmer selber bauen.
nhedgehog
Geocacher
Beiträge: 39
Registriert: So 24. Okt 2010, 22:22

Verbesserung der Schnasemannschen Variante

Beitrag von nhedgehog »

Da hier http://www.geoclub.de/viewtopic.php?f=57&t=50024 schon wieder übers "Ausmessen" :ops: diskutiert wird und ich die Schnasemannsche Variante mit der Onboard-Programmierung (Reaktivlicht mit Teachin der Blinksequenz - LEDonly Version mit AD-Wandlung - für ATtiny13V) einfach genial fand, hier noch einmal meinen Senf dazu.

Problem:
1) Ich konnte trotz verschiedener Messungen nicht die ideale Taschenlampenschwelle (TaLaSchw) finden, die das Ding empfindlich genug zur Auslösung über weite Entfernungen macht und trotzdem nicht zu einer wilden Flackerei in der Dämmerung führt.
2) Eine Tagerkennung zum Energiesparen wäre auch nicht schlecht.
3) Der Programmierplatz im Attiny war schon randvoll.

Lösung:
In meiner Lösung hab ich versucht, die Vorteile der LDR-Variante mit der LED-only analog-Variante zu verknüpfen.
1) Nach verschiedenen Versuchen zeigte sich, daß die Lichtwerte der ausgemessenen LEDs (LW) sich am ehesten durch eine quadratische Formel ausdrücken lassen: Wert^2/50 oder sowas in der Art. War aber zu Speicherintensiv, daher hab ich die TaLaSchw durch Verdopplung des LW definiert und noch eine extra Dämmerungsschwelle eingefügt.
2) Falls in 254 aufeinanderfolgenden Meßzyklen der Tag kontinuierlich erkannt wurde, prüft das RL nur noch alle 8 Sekunden ob es Nacht ist. - Code stammt aus der LDR Variante
3) Das war das größte Problem. Wurde hauptsächlich durch andere Variablendefinitionen erreicht.

Code: Alles auswählen

' Version 1.12 4.11.2010
' (c) geoclub & schnasemann


' Teachin Möglichkeit bei Tag und Brücken der Pins 5 und 6.
' Während Blinken Brücke entfernen, nach Blinkende mit Brücken von Pin 5 & 6 Muster einlernen
' Löschen und Umschalten auf Standardblinken durch Brücken der Pins über das Blinkende hinaus

' changelog
' 03.11.10 (nhedgehog) Speicheroptimierung (z.B.Variablen umdefiniert um Speicher zu sparen), Tagerkennung eingebaut, dynamische TaLaschwelle
' 31.10.09 Rundenblinker in die Dunkelphasenerkennung verschoben
' 03.11.09 Rundenzähler aus, Hub auf 14 gesetzt
' 07.11.09 Version 1.10. automatisches Erkennen des Programmierendes
' 28.02.10 Version 1.11, Bugfix Ausgabezähler Schieben

$regfile = "ATtiny13.DAT"
$crystal = 128000                                           'Reale Frequenz des internen 128kHz-Oszillators
$hwstack = 10                                               'default use 32 for the hardware stack
$swstack = 20                                               'default use 10 for the SW stack
$framesize = 20                                             'default use 40 for the frame
$eeprom                                                     'the following DATA lines data will go to the EEP file

Data &B00000000
Data &B01010101
$data


Stop Ac

Config Portb = &B11101110                                   'Portb.4 und Portb.0 auf 'Eingang' schalten
Portb = &B00000001                                          'keine Pullups zuschalten, nur PB0

Wdtcr = &B11010100                                          'Watchdog auf 250ms einstellen
Enable Interrupts

Config Adc = Single , Prescaler = Auto , Reference = Internal       'Referenzspannung des Adc Auf "Internal" = 1,1 V

Dim Wert1 As Byte
Dim Wert2 As Byte
Dim Schwelle As Byte
Dim Anzahl As Byte
Dim Runde As Byte
Dim Merker As Byte
Dim Eepromz As Byte
Dim Zaehler As Byte
Dim Tagzaehler As Byte
Dim Teachin As Bit
Dim Entprell As Byte
Dim Result As Byte
Const Dunkelwert = 18                                       ' Wert, ab dem Nacht erkannt wird (18)
Runde = 0
Portb.1 = 0                                                 'Masse für portb.0

Do
If Tagzaehler >= 254 Then
'(   Config Portb.4 = Output                                  'im Tagmodus alle 8 sek flashen zum Test und Schlafen
    Portb.4 = 1
    Gosub Warte16ms
    Portb.4 = 0
')
   Gosub Warte8s                                            'Energiesparen wenn es hell ist nur alle 8 Sek. die LED checken
   Else
   Gosub Warte250ms                                         'im Dunkeln öfter
End If

Gosub Einlesen
Schwelle = 1.6 * Wert1                                      'Berechnungsformel für Taschenlampenschwelle, je dunkler, je empfindlicher
Schwelle = Schwelle + 4                                     ' für die kleinen LED's sonst zu empfindlich, die großen ohne

If Wert1 >= 15 Then                                         'Geflacker bei Dämmerung vermeiden
Schwelle = Schwelle + 8
End If

If Wert1 =< Dunkelwert Then
   Tagzaehler = 0                                           'Tagzähler auf 0 setzen wenn die Nacht beginnt
   If Wert2 >= Schwelle Then
   Gosub Blinken
   End If
   Else
   If Tagzaehler =< 254 Then                                'verzögerte Tagerkennung, damit die Tala nicht mit der Sonne verwechselt wird
   Tagzaehler = Tagzaehler + 1
   End If
End If


If Wert1 >= Dunkelwert Then                                 'bei Tag oder Dauerlicht
   Teachin = Pinb.0
   If Teachin = 0 Then                                      ' Teachin beginnt
      Gosub Blitz
      Teachin = Pinb.0                                      ' nicht mehr gedrückt, dann einlernen
      If Teachin = 1 Then
         Config Portb.4 = Output
         Portb.4 = 0
         Runde = 0
         For Eepromz = 1 To 62
            Merker = 0
            For Zaehler = 1 To 8                            'bitzähler
               Result = 0
               Rotate Merker , Left
               For Entprell = 1 To 5
                  If Entprell > 1 Then
                     Gosub Warte16ms
                  End If
                  Teachin = Pinb.0
                  If Teachin = 0 Then
                     Result = Result + 1
                     Portb.4 = 1
                  Else
                     Portb.4 = 0
                  End If
               Next Entprell
               If Result > 2 Then
                  Merker = Merker + 1
                  Runde = Eepromz                           ' Merken, wann als Letztes eine "1" getastet wurde
               End If
            Next Zaehler
            Writeeeprom Merker , Eepromz
         Next Eepromz
         If Runde < 62 Then
            Incr Runde
            Merker = &B01010101                             ' Zum Schluss magic byte an das Ende schreiben
            Writeeeprom Merker , Runde
         End If
         Gosub Blitz
      Else                                                  ' Teachin immer noch gedrückt
         Merker = &B01010101                                ' Magic byte schreiben, damit Programmierung löschen
         Writeeeprom Merker , 1
         Gosub Warte250ms
         Gosub Warte250ms
         Gosub Warte250ms
         Gosub Warte250ms
         Gosub Blitz
         Gosub Blitz
         Gosub Warte8s
      End If
   Gosub Blinken
   End If
End If

Wert1 = Wert2                                               'Wert2 nach Wert1 verschieben

Loop

Blitz:                                                      'LED getaktet blinken lassen
Config Portb.4 = Output
Portb.4 = 0

For Anzahl = 1 To 5                                         'Anzahl des vorprogrammierten Blinkens (10)
   Portb.4 = 1
   Gosub Warte16ms
   Portb.4 = 0
   Gosub Warte250ms
Next Anzahl
Return

Einlesen:
Start Adc
Config Portb.4 = Output                                     'LED "entladen"
Portb.4 = 0
Gosub Warte16ms
Config Portb.4 = Input
Portb.4 = 0
cbi adcsra,7                                                'ADEN = 0
Gosub Warte16ms
sbi adcsra,7                                                'ADEN = 1
Wert2 = Getadc(2)                                           'Spannung der LED messen
Stop Adc
Return


Blinken:
Config Portb.4 = Output
Portb.4 = 0
For Eepromz = 1 To 62
   Readeeprom Merker , Eepromz                              'Byte lesen aus Eeprom
   If Merker = &B01010101 Then
      If Eepromz = 1 Then
         Gosub Blitz
      End If
      Exit For
   End If
   For Zaehler = 1 To 8                                     ' ansonsten bitweise schieben
      If Merker > 127 Then                                  ' und blinken
         Portb.4 = 1
         Gosub Warte64ms
         Portb.4 = 0
      Else
         Gosub Warte64ms                                    ' oder Pause
         nop
         nop
         nop
         nop

      End If
   Rotate Merker , Left
  Next Zaehler
Next Eepromz
Gosub Warte8s
Return

Warte8s:
Wdtcr = &B11110001                                          'Watchdog auf 8s einstellen
Reset Watchdog
Powerdown
Return

Warte16ms:
Wdtcr = &B11010000                                          'Watchdog auf 16ms einstellen
Reset Watchdog
Powerdown
Return

Warte64ms:
Wdtcr = &B11010010                                          'Watchdog auf 64ms einstellen
Reset Watchdog
Powerdown
Return

Warte250ms:
Wdtcr = &B11010100                                          'Watchdog auf 250ms einstellen
Reset Watchdog
Powerdown
Return
End
Dateianhänge
reaktivlicht_wdt_teachin_autoend_dynamisch.zip
(2.34 KiB) 16-mal heruntergeladen
Benutzeravatar
schnasemann
Geocacher
Beiträge: 235
Registriert: Mi 29. Okt 2008, 21:41

Re: Verbesserung der Schnasemannschen Variante

Beitrag von schnasemann »

nhedgehog hat geschrieben: Problem:
1) Ich konnte trotz verschiedener Messungen nicht die ideale Taschenlampenschwelle (TaLaSchw) finden, die das Ding empfindlich genug zur Auslösung über weite Entfernungen macht und trotzdem nicht zu einer wilden Flackerei in der Dämmerung führt.
2) Eine Tagerkennung zum Energiesparen wäre auch nicht schlecht.
Hallo,
manche Angaben verstehe ich nicht.

1.) Es wird immer, egal, wie man das machen will, die Problematik geben, dass ich entweder unempfindlicher werden muss oder Fehltriggerungen in Kauf nehmen muss. Damit muss man leben. Die von mir angegebenen Werte beziehen sich auf die von mir angegebene LED. Da ergeben sich bei unterschiedlichen Typen massiv andere Werte.
2) Tagerkennung hat die Grundsoftware. Sie blinkt nur nicht dabei. Weil ich das nicht wollte und weil es Strom kostet. Und Aufmerksamkeit auf sich zieht.

Mit der Float-Rechnung von 1.6*Wert1=Schwelle brauchst Du viel Platz!
Grüße,
Carsten
Antworten