-         

+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: miniatur kurzhubSCHALTER

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    12.01.2010
    Beiträge
    64

    miniatur kurzhubSCHALTER

    Anzeige

    hallo zusammen, ich Suche einen Schalter (nicht Taster!) in der größe der standard taster, also ca 5*5mm.

    So ein bisschen wie der hier (der aber taster ist)
    http://www.conrad.de/ce/ProductDetai...77820362812416

    Ich muss damit aber ein/ausschalten können, tasten reicht nicht.
    Ich finde nichts, hat da jemand einen Tip?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Hm, ich wüsste nicht, dass es sowas gibt.
    Wertest Du den Taster über einen µC aus? Dann könntest Du das softwareseitig lösen. Ansonsten müsste sich sowas auch über eine diskret aufgebaute Digitalschaltung machen lassen.

    Gruß,
    askazo

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    JK-Flipflop war das glaub ich als ext. Bauteil.
    Aber in der grösse nen Schalter wird schon vom mechanischen her schwierig. Feder, Rastpunkt etc. muss ja alles mit rein.
    #ifndef MfG
    #define MfG

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    12.01.2010
    Beiträge
    64
    hmm das problem ist, dass es eine extrem kleine schaltung ist und softwareseitig mit taster vielleicht(!?) schwierig wird, weil alles auf einem attiny13 ist und der schon fast voll... außerdem hab ich wenig ahnung (und sammle sie noch) was interrupts/sleep modes angeht und wüsste nicht, wie ich das dann noch codeeffizient umsetzen müsste... oder könnte mir da jemand ein kleines codebeispiel für den attiny13E geben, bei dem man per taster in den sleep(standby?) mode bzw wieder heraus kommt?

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    12.01.2010
    Beiträge
    64
    falls nicht wäre dann die nächste bauteilsuchfrage:
    woher einen SMD(oder seehr kleinen) JK FlipFlop bekommen? vorallem weil die ja meist als 3er oder 6er etc in einem gehäuse sitzen.. ich habe halt ein platzproblem

    edit: mir fällt auf, dass der ja auch nur dann sinn macht, wenn es im code auf dem tiny13 gelöst ist. insofern hat sich die frage beinahe erledigt. der schalter sollte mechanisch von der batterie trennen.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.11.2006
    Beiträge
    463
    Zur möglichen Softwarelösung:
    Man könnte den µC beim Abschalten in den Power-Down-Modus schicken und (völlig ohne Interrupt-Pin) einfach z.B. alle 200 ms per Watchdog aufwachen, kurz den IO-Pin mit dem Taster prüfen und wieder einschlafen, wenn der Knopf nicht gedrückt wurde. Der Stromverbrauch im Power-Down-Modus ist so gering, dass das auch bei Batteriebetrieb in den meisten Fällen kein wirkliches Problem ist. Falls der INT0-Pin nicht anderweitig benötigt wird, dann kann man auch direkt über einen Interrupt auf diesem Pin aufwachen und sich so noch die paar µA für den Watchdog-Oszillator sparen.

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Zitat Zitat von ExXeQtor
    ... ich habe halt ein platzproblem ... mechanisch von der batterie trennen ...
    Das Platzproblem höre ich schon von Anfang an raus. MUSS es eine mechanische Trennung sein, oder willst Du "nur" Batteriestrom sparen? Was hängt denn alles dran und was für eine Batterie hast Du dafür? Manchmal ist ein bisschen mehr Umfeldbeschreibung hilfreich. Also bitte mehr Hintergrund.

    Zitat Zitat von ExXeQtor
    ... nur ... wenn es im code auf dem tiny13 gelöst ist ...
    Die Schaltung (klick), mit der ich theoretisch einige hundert bis etliche tausend Betriebsstunden aus einem 9V-Block errechne, lässt sich mit SMD-Bauteilen ziemlich einfach aufbauen. Bei 10 nA (nano!) Stromverbrauch im Standby kann man damit viele Aufgaben lösen. Natürlich hatte ich die Lösung mit dem Sleep/PowerDown auch schon gemacht. Sobald da weitere Verbraucher angeschlossen sind, ist der Verbrauch dann meist trotzdem so hoch, dass dieser Weg oft nicht gangbar ist. Wäre die im Link genannte Schaltung - mit Taster - für Dich ein gangbarer Weg ? Die funktioniert mit dem tiny13 sicher ebensogut wie mit meinem tiny85.
    Ciao sagt der JoeamBerg

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    12.01.2010
    Beiträge
    64
    hallo danke für die antwort!
    die gesamte elektronik kommt in ein 3er microzellengehäuse. darin sind 2 AAA microzellen (und damit ~2,8Volt) und im dritten block die elektronik. die passt bisher auch rein, ich habe noch platz für einen taster o.ä.
    Die schaltung oben ist dafür wohl leider schon zu groß(auch wenn ich smd bauteile nehme, weil ich mich auf einer entsprechen kleinen platine befinde).
    Die mechanische lösung habe ich deshalb gesucht, weil es (sofern es einen so kleinen schalter gäbe) die platzsparendste lösung ist, da es nur darum geht, das ganze ding über nacht ausschalten zu können (wobei ausschalten entweder power down oder eben wirklich physisch von der batterie trennen heißen kann).

    Also es geht dabei in erster linie um batteriestromsparen, da die schaltung aber auch so im schnitt nur alle 15 minuten ca 60mAs verbraucht (und dazwischen im sleep mode ist) wäre es wohl nicht allzuschlimm, wenn beim "ausschalten" auch lediglich ein sleep mode vorherrscht. Der einzige sonstige verbraucher hängt einem transistor, der vom tiny angesteuert wird. was ich da verliere ist nicht der rede wert.

    Mit dem sleep mode habe ich aber das problem der fehlenden erfahrung mit (externen) interrupts bzw dem sleep mode (das was ich bislang verwende ist größtenteils ein gebastel aus tips) und würde dann fragen müssen:

    wie machen(codebeispiel)?
    Wie mit einem taster den attiny13E in den sleep- und aus dem sleep mode holen?

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Zitat Zitat von ExXeQtor
    ... würde dann fragen müssen:
    wie machen(codebeispiel)?
    Wie mit einem taster den attiny13E in den sleep- und aus dem sleep mode holen?
    Na das ist der Stand, mit dem ich auch drangegangen war. Aber schon ok, erst das main - wirklich unwesentliche Dinge wie Timerinitialisierung und -nutzung habe ich weggelassen. Es ist nur I/O-Definition, Tastenabfrage und die Sache um PCI und sleep drin. Überall wo Punkte sind (..........) wurde etwas weggebraten *ggg*. Ach so, ja - nutzen wird Dir das nix, weil ich keinen tiny13E kenne und deshalb garnichts zu diesem exotischen Bauteil sagen kann.

    Bitte beachten: im folgenden stehen Mustertexte - nur als Beispiel für Buchstaben in einer Reihe und ohne Ziel für irgendeine Funktion. Der Text ist ohne Gewähr für irgendeine Funktion. Die Unschädlichkeit dieses Textes ist weder nachgewiesen noch wird sie zugesichert. Jede Verwendung des Textes durch Dritte ist erst nach eingehender Prüfung sinnvoll, weil er voller Fehler steckt. Jedwede Ähnlichkeit des Textes mit einer Programmiersprache ist rein zufällig und nicht gewollt. © bei mir.

    Code:
    /* >> 
      Sicherung 13apr09 1730   ..\C2\Cpcrt13\Cpcr13_a12.c
     ===================================================================================
      Target MCU        : ATtiny 13
      Target Hardware   : Pcr 13
      Target cpu-frequ. : 9,6 MHz, interner Oszillator
     ===================================================================================
    ....
     ===================================================================================
      *** Versionsgeschichte:
     ====================
     a12 13apr09 1720 Zeithorizont Izthrznt wieder eingeführt - als Korrekturmöglichkeit
    ......
     ===================================================================================
    Alle möglichen Portanschlüsse am ATtiny 13 :
                   ==============          ===
            dW, /RESET, (PB5)   1   20   Vcc                   
     PCINT3, CLKI, ADC3,(PB3)   2   19   (PB2), SCK, T0, ADC1, PCINT2
           PCINT4, ADC2,(PB4)___3   18___(PB1), MISO, INT0, AIN1, PCINT1, OC0B
                          GND   4   11   (PB0), MOSI, AIN0, PCINT0, OC0A
    --------------------==========-----------------------
    Vorgesehene/belegte Anschlüsse am ATtiny 13 :
                ==================                                  v
                /RESET, (PB5)   1   20   Vcc                         
                   rLED,(PB3)   2   19   (PB2)                       
        Taster, PCINT4, (PB4)___3   18___(PB1)                       
                          GND   4   11   (PB0), gLED                                  */
    /* ============================================================================== */
    #include <stdlib.h>              
    #include <avr/io.h>              
    #include <avr/interrupt.h>       
                                     
    #include "CpcrT13_com_a12.h"     // commonvariable
    #include "CpcrT13_tmr_a12.c"     // Routinen, Initialisierung etc
    ......
    // =================================================================================
    // =================================================================================
    
    
    // =================================================================================
    // ===  HAUPTProgramm ==============================================================
    // Initialisierungen
                             
      int main(void)
    {        
    ...........
    // Pins/Ports als Ein- (0) oder Ausgänge (1) konfigurieren, Pull Ups (1) aktivieren
    //   A = Ausgang, E = Eingang ohne , EU = Eingang MIT PullUp
      DDRB  = 0b11101111;   // Aus- + Eingänge definieren
      PORTB = 0b00011001;   //    und Port/Pull Ups (1)  aktivieren
    .....................
    // ================================================================================
    // ===>>> Beispiel Tastenabfrage #####################>>>>>>>>
    /*  while (1)
          { if ( ! (PINB & (1 << PINB5)) )      // Taste abfragen auf SCK 
              { PORTC |=  (1<<PC4); }   // LED auf PC4/MISO einschalten
            else
              { PORTC &= ~(1<<PC4); }   // LED auf PC4/MISO ausschalten  }     */
    // ########### Ende der Tastenabfrage auf MISO/PB4 #####################
    ........................................                                  
      sei();                // Abschluss der Initialisierung, erlaube Interrupts
                              
      while (1)
      {                       
        schlaf_PI4 ();      // Schlafen mit PCI auf PinB3 => Controller "wacht" auf,
                            //   wenn PB4 auf GND gezogen wird  
    .....................................
      }                       
                                      
      return 0;                       
    }                                 
    // =====  Ende Testabschnitt
    // ================================================================================
    Code:
    /* >> 
      Sicherung 13apr09 1730   ..\C2\Cpcrt13\CpcrT13_tmr_a12.c ###>>> noch nicht
     ===================================================================================
      Target MCU        : tiny 13
      Target Hardware   : pacer 13
      Target cpu-frequ. : In der Quelle wählbar
     ===================================================================================
            Enthaltene Routinen:        Nur Timer
    ......................
      ISR(PCINT0_vect)              // Vektor ??
      void schlaf_PI4 (void)        // Controller in Ruhemodus, aufwachen durch PCINT4
    .......................
     ===================================================================================
    ........................
     ================================================================================ */
    
    
    // ================================================================================
    // ===  Nicht unterbrechbare ISR für PCINT ========================================
    ISR(PCINT0_vect)                // Vektor 3 (1 ... 3 !!!)
    {                                
    //
    // Hier könnten anhand einer Bittabelle (uint8_t wird sicher reichen)
    //   Verzweigungen zu verschiedenen Programmen erledigt werden, damit WÄHREND
    //   des Programmlaufs derselbe Taster für unterschiedliche Zwecke verwendet
    //   werden kann/darf.           
    //                               
      return;                      // Einfach "ret" -> bedeutet "Aufwachen" vom sleep
    }                               
    // ================================================================================
    
    
    // ================================================================================
    // ===  Ruhemodus fuer tiny 13 ===================================================
    //  Aufgabenstellung: Controller setzen auf PinChangeInterrupt
    //                    PCI aktivieren für PB4/PCINT4
    //                    Sleepmodi setzen
    //                    Sleepmodus aktivieren
      void schlaf_PI4 (void)        // Controller in Ruhemodus, aufwachen durch PCINT4
      {	                          
      GIMSK   |=  (1<<PCIE);        // PinChangeInterrupt enable
      PCMSK   |=  (1<<PCINT4);      // PinChangeInterrupt auf Pin PB4/PCINT4
      sei();                          
      MCUCR   |=  (1<<SM1)|(1<<SE);
      asm volatile ("sleep");         
      GIMSK   &= ~(1<<PCIE);        // PinChangeInterrupt disable
      return;                         
      }                               
    // ================================================================================
    
    
    // ================================================================================
    // =====  ENDE    Subroutinen  ====================================================
    // ================================================================================

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    12.01.2010
    Beiträge
    64
    sorry, ich hatte aus dem "efficient" ein e gemacht, gemeint war der 13V... tschuldigung...
    Dazu fällt mir aber noch ein - weiß hier jemand was der unterschied zwischen dem attiny 13v 10su und 10ssu ist irgendwie bin ich zu Blind dazu etwas zu finden.

    den code gucke ich mir heut abend mal genauer an, wenn ich ein bisschen mehr zeit habe. Herzlichen dank!
    Soweit ich das bisher aber richtig erkannt habe, bist du durchgängig im sleep und weckst den µC nur kurzzeitig mit einem tastendruck auf. wie würdest du ihn denn mit derselben taste wieder einschlafen lassen? einfach eine bool variable mitzählen (gerade/ungerade) und eine schleife?

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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