- SF800 Solar Speicher Tutorial         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: Ortungspieper mit ATtiny13 für Modell-Elektrosegler

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Anzeige

    E-Bike
    Schon einmal an so etwas gedacht? http://zft.de/peil1.htm ein Modell kann ja recht teuer sein..in diesem Link ist die Reichweite nicht optimal, aber der normale Flieger wird ja in etwas die Richtung kennen wo das Modell "abhanden" gekommen ist?

    Gruß Richard

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    40
    Beiträge
    557
    Der Tiny13 hat einen 8-bit Timer. Den TIMER0. Ich kenne mich jetzt in Bascom gar nicht, und in C nur ein wenig, aus, aber die Programmierung sollte eigentlich keine große Aufgabe sein.

    Ich würde den Timer mit dem höchst möglichen Prescaler initialisieren. Bei jedem Überlauf einen Zähler inkrementieren und bei Bedarf den Pieper starten.

    So lange der Controller nen Timer hat dürfte es egal sein, welchen Typ du genau verwendest. Denn die Aufgaben die du bisher beschrieben hast dürften Alle ohne Probleme lösen können.
    Alles ist möglich. Unmögliches dauert nur etwas länger!

  3. #13
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    Hallo Rolf,

    was für ein pfiffiges Projekt *ggg*
    Zitat Zitat von hegewald
    ... Das Proplem sind die Zeiten 20, 30, 40 Minuten ...
    Der Tiny13 hat, im Unterschied zu den meisten anderen Controllern, drei interne Oszillatoren. Der langsamste schwingt mit 128 kHz. Bei dieser Frequenz kannst Du den herunter bis 1,8 Volt betreiben, dabei frisst der Kleine (NUR der Controller) im aktiven Modus 240 µA. Den Watchdog kannst Du so programmieren (Clock/1024), dass der Controller fast ne halbe Sekunde verschläft und dann überlegt, ob die 40 Minuten vergangen sind *ggg* - sprich: im Aktivmodus von rund 5000 runterzählen (40 min * 60 sec/min * 2 Aktivzeiten/sec => 4800) und er hat die 40 Minuten. In den Pausen schläft er (Sleep Modus) und frisst dabei (NUR der Controller) weniger als 0,1 µA bei 1,8 V. Fazit: Aufgabe machbar, mit Sleep Modus wird Energie gespart - da müssen die Modelle nur noch gegen frühzeitigen Käferbefall oder Fäulnis gesichert werden *ggg*.

    Viel Erfolg mit dem Projekt!

    Für den Fall, dass Du für den Tiny13 doch noch das Datenblatt suchst (Lektüre ist dringend zu empfehlen - leider) dann hier klicken.

    Offtopic: das nächste Mal werde ich beim Gleitschirmfliegen auf der Wasserkuppe mein Vario ausschalten - vielleicht hör ich es dann im Wald piepsen. Offtopic zu Ende
    Ciao sagt der JoeamBerg

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    20.08.2011
    Beiträge
    61
    Hallo Richard,
    das größte Problem sind die Bäume!
    Selbst wenn Du weist, in welcher Richtung er runter gekommen ist,
    Dir tut dann bald der Nacken weh...nach oben suchen zu wollen.

    Danke für die Antworten!

    Grüße

    Rolf

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Hallo Rolf,

    umzugsbedingt war ich ein paar Tage offline - ich lebe zwar immer noch mit, aus und in Kartons, aber der Internet-Zugang geht wenigstens schon mal

    Ehrlich gesagt, würde ich das Problem auch nach der "Sender-Aus"-Methode lösen... Was die Servo-Impulse anbetrifft dürfte es doch nicht den geringsten Unterschied machen, ob eine Anlage auf 35 MHz, 2,4 GHz oder welcher Frequenz auch immer sendet, und ob sie AM ( ), FM oder PCM als Modulationsverfahren verwendet - ALLE Servos dieser Welt brauchen Rechteckimpulse mit einer Impulslänge zwischen 1 und 2 ms, und die muss JEDER Empfänger liefern. Und genau da würde ich den Hebel ansetzen: Kommt für eine bestimmte Zeit (z.B. 10 Sekunden) dieser Impuls nicht mehr, wird der Pieper aktiviert. Das einzige wirkliche Hindernis könnten vielleicht solche hypermodernen Empfänger sein, die auch nach Verlust des Sendersignals die letzte korrekt empfangene Impulsfolge weiter an die Servos ausgeben. Aber so etwas ist glaube ich noch keineswegs der Standard.

    Und wenn gekaufte Schaltungen diese (einfache!) Aufgabe nicht zuverlässig lösen können, würde mich das nur anspornen, einen besseren Code zu schreiben

    Aber das nur am Rande. Die Sache mit den vorgesehenen Zeiten lässt sich sicher lösen!

    Bei der ja bereits erwähnten stromsparenden Taktfrequenz von 128 kHz läuft der 8bit-Timer alle 2ms über. Du könntest also z.B. im Timer-Interrupt eine Word-Variable um 1 hochzählen lassen. In der Hauptschleife wird diese Variable abgefragt; wenn sie 30.000 erreicht hat ist eine Minute rum, und eine entsprechende zweite Minuten-Variable wird um 1 inkrementiert. Dann muss nur noch überprüft werden, ob die vorgewählte Anzahl an Minuten schon erreicht ist, und gegebenenfalls der Pieper aktiviert werden.

    Als bekennendes Spielkalb kommen mir aber gerade noch ein paar Ideen, wie man das Ding noch komfortabler machen könnte. Wie wär´s denn mit frei einstellbaren Zeitspannen (z.B. in 10-Minuten-Schritten) und einem einzigen Taster zur Bedienung? Nach dem Einschalten könnte man mit kurzen Tastendrücken die Zeit um jeweils 10 Minuten erhöhen (z.B. 4 Drücke = 40 Minuten), und durch einen langen Tastendruck dem Controller sagen, dass man fertig ist und er diesen Wert speichern soll.

    Mit was hast Du denn die kleinen PICs programmiert?

    Grüße,

    Daniel

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.04.2008
    Alter
    40
    Beiträge
    557
    Zitat Zitat von Sauerbruch Beitrag anzeigen
    ALLE Servos dieser Welt brauchen Rechteckimpulse mit einer Impulslänge zwischen 1 und 2 ms, und die muss JEDER Empfänger liefern. Und genau da würde ich den Hebel ansetzen: Kommt für eine bestimmte Zeit (z.B. 10 Sekunden) dieser Impuls nicht mehr, wird der Pieper aktiviert. Das einzige wirkliche Hindernis könnten vielleicht solche hypermodernen Empfänger sein, die auch nach Verlust des Sendersignals die letzte korrekt empfangene Impulsfolge weiter an die Servos ausgeben. Aber so etwas ist glaube ich noch keineswegs der Standard.
    Robbe/Futabe bewerben grade stark ihr Bus-System. Dies ist zwar hautpsächlich für große Modelle mit vielen Funktionen gedacht aber kann auch in kleinen Maschinen eingesetzt werden. Diese arbeiten mit "Digital-Servos" mit anderen Zeiten für HIGH- und LOW-Pegel arbeiten. Diese sind aber noch recht neu.

    Die Funktion, dass der Empfänger auch bei Abbruch der Funkverbindung zum Sender noch Signale an die Servos sendet, nennt sich FailSave und ist bei halbwegs modernen Sender/Empfänger standart.

    Man könnte aber z.B. einen Kanal überwachen, welcher im Flug "viel" benutzt wird, z.B. Querruder. Auf diesem Kanal überprüft man eine bestimmte Zeit lang ob sich das Signal ändert. Wenn jetzt z.B. 15 Sekunden lang keine Änderung auf dem Kanal auftritt wird der Pieper ausgelöst, weil man davon ausgehen kann, dass das Model den Kampf mit der Schwerkraft verloren hat.
    Alles ist möglich. Unmögliches dauert nur etwas länger!

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    20.08.2011
    Beiträge
    61
    Eure Ideen haben gewiss Vorteile und Nachteile:
    zu Daniel....vor mir liegt ein PCM-Empfänger von Graupner "smc16 scan 35"
    mit nen Skop waren auf allen Kanälen feine Nadelimpulse im ySec. Bereich sichtbar, obwohl Sender aus und
    Fail Save nicht aktiv war.
    Bei PPM Empfängern ist nichts zu sehen. Bei Jeti 2,4 GHz bin ich mir nicht so sicher.
    Die käuflichen Pieper reagieren nicht, wenn der Sender aus ist.
    Zum anderen verschwindet das Modul im Rumpf und man kümmert sich nicht mehr darum. Oftmals käme man
    nicht so eben mal ran, um eine Taste zu drücken.
    Ich würde sagen, daß mit den 3 Zeiten hat sich schon bewährt.
    so war es mit den PIC:

    #include<p12f675.inc>

    __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_ON

    radix dec ;alle nicht defin. Werte, z.B HIGH 1300 dezimal
    ;Configurationsergebnis =

    ;************************************************* **********************************

    ;Variable Definition (nach Anwendung anpassen)


    CBLOCK 0x20 ;erste RAM Adresse = 20h anwählen
    SEKUNDEN_HIGH ;20h Variablen auf Spalte 1 setzen (Col 1)
    SEKUNDEN_LOW ;21h
    LOOP1 ;22h
    LOOP2 ;23h
    LOOP3 ;24h
    ENDC ;mit ENDC unbedingt abschließen
    ;************************************************* **********************************


    org 0x00 ;Reset ab Adresse 0

    ;Vorbereitung:

    movlw 0x3F ;B'0011 1111'
    movwf CMCON ;GP0-GP5 = digital (Bank0)
    bsf STATUS,RP0 ;Bank 1
    errorlevel -302
    movlw B'111011' ;GP0/1/3/4/5 = Input=1
    ;GP2 = Output=0
    movwf TRISIO ;Register in Bank1
    movlw B'110011' ;GP-Eingänge mit Pull-Up Widerst.=1
    movwf WPU ;Register in Bank1
    bcf OPTION_REG,7 ;GPPU-Bit 7 auf Null setzen
    call 0x3FF ;springe zur Adresse 3FFh und hole ins W-Reg.
    ;da liegt der Inhalt vom Hersteller und
    ;Rückkehrbefehl retlw
    movwf OSCCAL ;Inhalt vom W-Register ins Register OSCCAL
    ;interner Oszillator wird kalibriert.
    bcf STATUS,RP0 ;Bank 0
    errorlevel +302
    clrf GPIO ;Wichtig, Register definitiv auf Null setzen!

    ;Adresse Befehl Operand Kommentar

    begin goto abfrage

    abfrage btfss GPIO,1 ;Taste "Test",springe wenn Test offen(GP1=High)
    goto blinken
    btfss GPIO,4 ;Taste "S1",springe wenn S1 offen(GP4=High)
    goto vorber1
    btfss GPIO,0 ;Taste "S2",springe wenn S2 offen(GP0=High)
    goto vorber2
    btfss GPIO,5 ;Taste "S3",springe wenn S3 offen(GP5=High)
    goto vorber3
    goto abfrage


    blinken bsf GPIO,2 ;Output GP2 = HIGH, Pieper EIN
    call impuls ;Impulszeit ca. 3Sek.
    bcf GPIO,2 ;Output GP2 = LOW, Pieper AUS
    call pause ;Pausenzeit ca. 5 Sek.
    goto blinken

    impuls movlw H'FF' ;Achtung: für"'" richtige Taste(#) verwenden!
    movwf LOOP1
    movlw H'FF'
    movwf LOOP2 ;impuls-Zeitroutiene = 0,8 Sec.
    movlw H'04'
    movwf LOOP3

    blink decfsz LOOP1,F ;Sprung, wenn LOOP1 = 0
    goto blink
    decfsz LOOP2,F ;Sprung, wenn LOOP2 = 0
    goto blink
    decfsz LOOP3,F ;Sprung, wenn LOOP3 = 0
    goto blink
    retlw 0 ;CALL-Rücksprung (Impuls)

    pause movlw H'FF'
    movwf LOOP1
    movlw H'FF'
    movwf LOOP2 ;pause-Zeitroutiene = 3,2 Sec.
    movlw H'10'
    movwf LOOP3

    gehe0 decfsz LOOP1,F ;Sprung, wenn LOOP1 = 0
    goto gehe0
    decfsz LOOP2,F ;Sprung, wenn LOOP2 = 0
    goto gehe0
    decfsz LOOP3,F ;Sprung, wenn LOOP3 = 0
    goto gehe0
    retlw 0 ;CALL-Rücksprung, Ende der Pausenzeit.

    ;************************************************* *************************

    vorber1 movlw HIGH 1200 ;Zeitschleife = 20 Minuten
    movwf SEKUNDEN_HIGH ;gemessen = 1201 Sec.
    movlw LOW 1200
    movwf SEKUNDEN_LOW
    call warten
    goto blinken


    warten incf SEKUNDEN_LOW,F ;Inhalt+1 (Inkrementieren)
    incf SEKUNDEN_HIGH,F


    warten1 decfsz SEKUNDEN_LOW,F ;dekrement (-1 springe wenn 0)
    goto warten2 ;Sprung zur 1 Sekunden-Schleife
    decfsz SEKUNDEN_HIGH,F
    goto warten2
    retlw 0 ;Rückkehr zum blinken

    warten2 movlw H'FF'
    movwf LOOP1
    movlw H'FF'
    movwf LOOP2
    movlw H'05'
    movwf LOOP3

    gehe decfsz LOOP1,F ;Sprung, wenn LOOP1 = 0
    goto gehe
    decfsz LOOP2,F ;Sprung, wenn LOOP2 = 0
    goto gehe
    decfsz LOOP3,F ;Sprung, wenn LOOP3 = 0
    goto gehe
    goto warten1

    ;************************************************* *****************************

    vorber2 movlw HIGH 1800 ;Zeitschleife = 30 Minuten
    movwf SEKUNDEN_HIGH ;gemessen = 1802 Sec.
    movlw LOW 1800
    movwf SEKUNDEN_LOW
    call hallo
    goto blinken


    hallo incf SEKUNDEN_LOW,F ;Inhalt+1 (Inkrementieren)
    incf SEKUNDEN_HIGH,F


    hallo1 decfsz SEKUNDEN_LOW,F ;dekrement (-1 springe wenn 0)
    goto hallo2
    decfsz SEKUNDEN_HIGH,F
    goto hallo2
    retlw 0

    hallo2 movlw H'FF'
    movwf LOOP1
    movlw H'FF'
    movwf LOOP2
    movlw H'05'
    movwf LOOP3

    laufe decfsz LOOP1,F ;Sprung, wenn LOOP1 = 0
    goto laufe
    decfsz LOOP2,F ;Sprung, wenn LOOP2 = 0
    goto laufe
    decfsz LOOP3,F ;Sprung, wenn LOOP3 = 0
    goto laufe
    goto hallo1

    ;************************************************* *********************************

    vorber3 movlw HIGH 2400 ;Zeitschleife = 40 Minuten
    movwf SEKUNDEN_HIGH ;gemessen = 2402 Sec.
    movlw LOW 2400
    movwf SEKUNDEN_LOW
    call gisela
    goto blinken


    gisela incf SEKUNDEN_LOW,F ;Inhalt+1 (Inkrementieren)
    incf SEKUNDEN_HIGH,F


    gisela1 decfsz SEKUNDEN_LOW,F ;dekrement (-1 springe wenn 0)
    goto gisela2
    decfsz SEKUNDEN_HIGH,F
    goto gisela2
    retlw 0

    gisela2 movlw H'FF'
    movwf LOOP1
    movlw H'FF'
    movwf LOOP2
    movlw H'05'
    movwf LOOP3

    springe decfsz LOOP1,F ;Sprung, wenn LOOP1 = 0
    goto springe
    decfsz LOOP2,F ;Sprung, wenn LOOP2 = 0
    goto springe
    decfsz LOOP3,F ;Sprung, wenn LOOP3 = 0
    goto springe
    goto gisela1
    org 0x3FF
    retlw 0x80
    end

  8. #18
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    ... Kommt für eine bestimmte Zeit (z.B. 10 Sekunden) dieser Impuls nicht mehr, wird der Pieper aktiviert ...
    Das finde ich einen guten Ansatz, allerdings sind die zehn Sekunden nicht wirklich realistisch - wer sucht sein Modell schon nach zehn Sekunden? Hier ist die eingestellte Piepspause sicher ein besseres Maß. Für den Fall, dass ein Kanal für den Piepser frei ist ergibt sich ja eine ziemlich triviale Lösung: Fliegen: Signal (d.h. "Servo") Anschlag eine Seite, Verlust: Anschlag andere Seite. Ich denke für die übliche Vollbelegung der Kanäle an eine andere Lösung.

    Voraussetzung ist, dass das Modell nicht aus dem Sendebereich herausfliegt - das ist heutzutage eigentlich schon zu erwarten. Dann horcht der Piepser auf - beispielsweise - das Höhenruder. Selbst bei extremen Kunstflügen dürfte eine Sequenz von "Knüppel voll ziehen - voll drücken" im Sekundentakt für, sagen wir mal, zehn Mal wirklich nicht vorkommen. Da bräuchte der Pieps-Controller nur auf diese Sequenz zu hören - und schon weiß er, wann er angesprochen ist . . . oder?

    Nachtrag: Wenn die Signalanalyse der Servosignale Probleme macht, kann die zuletzt genannte Lösung auch mithilfe von zwei Mikrotastern realisiert werden, die an die Servohalterung oder sonstwie montiert sind und die Servo-Endstellung z.B. am Servohorn abfragen. Beispiel siehe Bild.

    Bild hier  
    Mini - Taster 3,5 x 6 mm Artikelpreis: 0.15 EUR
    Geändert von oberallgeier (14.09.2011 um 08:40 Uhr)
    Ciao sagt der JoeamBerg

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Okay - ich dachte, dass die Geschichte mit dem Taster vor jedem Start erfolgen soll, aber jetzt ist mir alles soweit klar. Und außerdem wirst Du Dir über die "features" der Schaltung ja auch schon gute Gedanken gemacht haben. Aber ein´ hab ich noch: Mit 3 DIP-Schaltern könnte man ja theoretisch nicht nur 3, sondern 8 Zeiten codieren...

    Und mit getrennten "Test"- und "Reset"-Tastern werden die Pins knapp: Beim Tiny13 (und allen anderen 8-Beinern) kann man nur 5 Pins nutzen, weil 2 für die Versorgungsspannung und einer als Reset-Eingang reserviert sind.

    Der PIC-Programmcode kam mir so vor, wie Dir wahrscheinlich Englisch - trotzdem vielen Dank!

    Ist den die Zuordnung von den einzelnen DIP-Schaltern, dem Taster und dem Piepser zu den Pins des Controllers fest (so wie in Deinem ersten Posting), oder wäre da noch etwas veränderbar?

    Grüße,

    Daniel

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Was ist das für ein Modell?
    Von mcrene im Forum Staubsaugerroboter / Reinigungs- und Rasenmähroboter
    Antworten: 1
    Letzter Beitrag: 09.12.2007, 18:10
  2. Farbsteuerung im HSV modell
    Von Jörn Arne im Forum Assembler-Programmierung
    Antworten: 5
    Letzter Beitrag: 05.10.2007, 23:40
  3. Funk Modell
    Von Nr. 5 im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 26.02.2007, 20:47
  4. NS5 als Modell?
    Von nemro im Forum Sonstige Roboter- und artverwandte Modelle
    Antworten: 4
    Letzter Beitrag: 01.08.2006, 19:14
  5. 3D-Modell aus Sensorwerten???
    Von Papa Schlumpf im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 9
    Letzter Beitrag: 08.06.2006, 22:15

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress