PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lange Leitung - oder was?



manu418
12.10.2010, 15:07
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 (http://www.erdbeere.com/KS/) 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:


$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

uwegw
12.10.2010, 15:31
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).

PICture
12.10.2010, 16:09
Hallo!

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

MfG

manu418
13.10.2010, 16:09
Hallo,
vielen Dank für die hilfreichen Tipps! Das geht jetzt echt super \:D/ !

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 :-s .

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

MFG Manuel