- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Lange Leitung - oder was?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    11.03.2009
    Beiträge
    76

    Lange Leitung - oder was?

    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    ich habe vor kurzer Zeit mein STK500 bekommen und wollte natürlich etwas aus den neuen Möglichkeiten machen, die man mit uCs so hat. Als Einstiegsprojekt habe ich mir gedacht, ich könnte doch unsere Schiebetür vom Wohnzimmer zur Küche motorisieren. Da gibt es nämlich zwei Mankos:

    1. Steht die Tür immer auf wenn man es mal gemütlich habe will (und niemand will sie zumachen)
    2. Geht die Tür nicht auf, wenn man die Hände voll hat

    Das erste Problem wurde teilweise durch Anbringen eines Gewichts, das über eine Rolle und ein Stahlseil die Tür automatisch zuzieht, gelöst. Allerdings wurde eine Art Haltefeder, die die Tür im ganz geöffneten Zustand aufhält, dringelassen. Darum stand die Tür trotzdem noch oft genug auf.

    Gut, ich wollte also alles automatisieren, dazu habe ich

    - zuerst mal ein paar Kabel verlegt und den Motor angebracht.
    - dann Endschalter an den Endpunkten angebracht
    - einen Reedkontakt angebracht, der dafür sorgt, dass die Tür vorm erreichen des Endschalters per PWM abgebremst wird
    - zwei Aluminiumplättchen als Taster angebracht
    - nach dem erfolgreichen Testen der Schaltung auf dem Experimentierbrett alles auf eine Platine gebracht

    Es ergeben sich zwei Probleme:

    1. Als besondere Funktion sollte die Tür zugehen, wenn man zweimal vernehmlich Klatscht. Denn was bringt eine motorisierte Tür, wenn man im Sessel sitzt und die Tür aufsteht? Die ungefähre Schaltung ist hier zu finden. Das Ganze wurde über die beiden Analog Comparatoren realisert und hat bestens funktioniert. Jetzt ist es aber so, dass die Schaltung hinten in der Ecke in der Küche angebracht ist und auch da bleiben muss. Das heißt, ich müsste lange Kabel legen, um die Mikrofonsignale zur Schaltung zu transportieren. Das Signal verliert sich aber scheinbar, denn es geht so nicht mehr. Was kann man dagegen machen?

    2. Die Aluminiumplättchen als Taster sind zwar schön flach und dezent und schalten auch gut, aber irgendwie stimmt da was im Programm nicht. Veilleicht kennt sich auch in diesem Unterfroum jemand mit Bascom aus:

    Code:
    $regfile = "m8515.dat"
     $framesize = 32
     $swstack = 32
     $hwstack = 32
     $crystal = 2500000
     $baud = 9600
     ' Definieren der allgemeinen Einstellungen
    
    Led1 Alias Portb.0
    Config Led1 = Output
    Led2 Alias Porta.4
    Config Led2 = Output
    ' Anzeige: LED1 = Tür ist auf / zu; LED2 = Zeit zum zweiten Klatscher
    
    Endschalter_auf Alias Pina.0
    Config Endschalter_auf = Input
    Endschalter_zu Alias Pina.1
    Config Endschalter_zu = Input
    ' Definieren des absoluten Endschalters
    
    Reedkontakt Alias Pina.2
    Config Reedkontakt = Input
    ' Definieren der Vorabschaltung
    
    Taster Alias Pina.3
    Config Taster = Input
    ' Definieren der Taster zum Türöffnen / Türschließen
    
    Porta.0 = 1
    Porta.1 = 1
    Porta.2 = 1
    Porta.3 = 1
    ' Interne Pullups einschalten
    
    Config Portd.5 = Output
    Config Porte.2 = Output
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    ' Definieren der PWM - Ports
    
    Dim X As Integer
    Dim Y As Integer
    Dim K As Integer
    Dim A As Bit
    Dim B As Bit
    Dim C As Integer
    Dim D As Integer
    Dim E As Integer
    Dim F As Integer
    Dim G As Integer
    Dim H As Integer
    Dim I As Integer
    Dim J As Integer
    A = 0
    B = 0
    K = 0
    X = 0
    Led2 = 0
    Led1 = 0
    ' Definieren der Variablen
    Do
       If Acsr.aco = 1 Then
          Led2 = 1
          Do : Loop Until Acsr.aco = 0
          Waitms 50
          For Y = 1 To 20000
             If Acsr.aco = 1 Then
                C = 1
                Exit For
             End If
          Next
          Do : Loop Until Acsr.aco = 0
          If C = 1 Then
             K = K + 1
             If K = 2 Then K = 0
             C = 0
             Led1 = K
          End If
          Led2 = 0
       End If
       ' Doppelklatschabfrage: Bei zweimaligem Klatschen wird zu K immer 1 dazuaddiert
    
       If Pina.3 = 0 Then
          For Y = 1 To 450 : Next
          For Y = 1 To 30
             If Pina.3 = 0 Then J = 1
          Next
          If J = 1 Then
             J = 0
             K = K + 1
             If K = 2 Then K = 0
             Led1 = K
          End If
          Waitms 10
       End If
       ' Tasterabfrage: Beim Betätigen eines Tasters wird zu K immer 1 dazuaddiert
    
       If K = 0 And Endschalter_zu = 1 And A = 0 Then
          Compare1b = 0
          X = 0
          Do
             Compare1a = X
             X = X + 1
             Waitms 4
          Loop Until X = 256
          Do
             If Reedkontakt = 0 Then Exit Do
          Loop
          Do
             Compare1a = X
             X = X - 2
             Waitus 1000
          Loop Until X = 0
          If Endschalter_zu = 1 Then
             Do
                Compare1a = 63
             Loop Until Endschalter_zu = 0
          End If
          Compare1a = 0
          A = 1
          B = 0
          Waitms 200
       End If
       ' Abfrage zum Türschließen auf Schalterdruck bzw. Klatschen hin
    
       If K = 1 And Endschalter_auf = 1 And B = 0 Then
          Compare1a = 0
          X = 19
          Do
             Compare1b = X
             X = X + 1
             Waitms 100
          Loop Until X = 33
          Do
             Compare1b = X
             X = X + 1
             For Y = 1 To 6850
                If Reedkontakt = 0 Then Exit For
             Next
             If Reedkontakt = 0 Then Exit Do
          Loop
          For Y = 1 To 9
             Compare1b = X
             X = X + 1
             Waitms 65
          Next
          Do
             Compare1b = X
             X = X - 1
             Waitms 18
          Loop Until X = 23
          If Endschalter_auf = 1 Then
             Do
                Compare1b = 23
             Loop Until Endschalter_auf = 0
          End If
          Compare1b = 0
          B = 1
          A = 0
          Waitms 200
       End If
       ' Abfrage zum Türöffnen auf Schalterdruck bzw. Klatschen hin
    
       If Endschalter_zu = 1 And A = 1 Then
          Compare1a = 0
          X = 18
          Do
             Compare1b = X
             X = X + 1
             Waitms 95
          Loop Until X = 33
          Do
             Compare1b = X
             X = X + 1
             For Y = 1 To 6850
                If Reedkontakt = 0 Then Exit For
             Next
             If Reedkontakt = 0 Then Exit Do
          Loop
          For Y = 1 To 10
             Compare1b = X
             X = X + 1
             Waitms 65
          Next
          Do
             Compare1b = X
             X = X - 1
             Waitms 18
          Loop Until X = 23
          If Endschalter_auf = 1 Then
             Do
                Compare1b = 23
             Loop Until Endschalter_auf = 0
          End If
          Compare1b = 0
          B = 1
          A = 0
          K = 1
          Led1 = K
          Waitms 200
       End If
       ' Abfrage zum manuellen Türöffnen
    
       If Endschalter_auf = 1 And B = 1 Then
          Compare1b = 0
          X = 16
          Do
             Compare1a = X
             X = X + 1
             Waitms 2
          Loop Until X = 256
          Do
             If Reedkontakt = 0 Then Exit Do
          Loop
          Do
             Compare1a = X
             X = X - 2
             Waitus 1000
          Loop Until X = 0
          If Endschalter_zu = 1 Then
             Do
                Compare1a = 63
             Loop Until Endschalter_zu = 0
          End If
          Compare1a = 0
          A = 1
          B = 0
          K = 0
          Led1 = K
          Waitms 200
       End If
       ' Abfrage zum manuellen Türschließen
    
    Loop
    Das mit dem manuellen Türöffnen/schließen ist so zu verstehen, dass, wenn man die Tür so bewegt, dass der Endschalter nicht mehr betätigt wird, die Tür auf/zu geht, je nach vorheriger Stellung. Die Tür geht allgemein so schnell wie möglich auf und sehr langsam zu, damit sich das Seil nicht von der Rolle rollt, denn dann steht alles und wenn niemand den Stecker zieht, löst sich die H-Brücke in Qualm auf.

    Sorry, das es so lange geworden ist, aber ich denke, dass man nur so alles Nötige versteht. Wäre cool, wenn mir jemand da helfen könnte.

    MFG Manuel

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    Um die Entfernung zu überbrücken, solltest du den Vorverstärker direkt am Mikrofon anbringen. Dazu teilst du die Schaltung rechts neben dem Transistor auf. Der linke Teil (R1-R5, C3, MIC, T1) kommt dann direkt an das Mikrofon, der rechte Teil bleibt an der Zentraleinheit. Dazwischen dann ein geschirmtes, dreipoliges Kabel (für Signal, Spannungsversorgung und Masse).

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    73
    Beiträge
    11.077
    Hallo!

    ... und den Schirm nur an einem Ende des Kabels mit Masse verbinden.

    MfG

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    11.03.2009
    Beiträge
    76
    Hallo,
    vielen Dank für die hilfreichen Tipps! Das geht jetzt echt super \/ !

    Man kann jetzt aus 6m Entfernung noch gut auslösen. Das ist echt toll: Man sitzt im Sessel, klatscht und die Tür geht zu (oder auf)!

    Nur das zweite Problem macht mir noch zu schaffen, vorallem, da der Code für dieses Problem kinderleicht ist und eigentlich keinen Fehler enthalten kann .

    Naja, Hauptsache war eigentlich das mit dem Klatschen, vielen Dank nochmal!

    MFG Manuel

Berechtigungen

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

12V Akku bauen