Hallo!
Ich habe folgendes Problem. Wie in der angehängten Software wird ein Servo von einem ATtiny 13 gesteuert um damit auf der Modellbahn Weichen, oder Tore zu steuern. Mit den Potis werden die Endlagen eingestellt, die eigentlich eingehalten werden sollen.
Nun ist es beim Einschalten aber so, daß das Servo kurz über die Eine Endlage zuckt um dann in der gewünschten Lage stehen zu bleiben.
Kann man dies irgendwie unterdrücken??? Oder liegt das am Servo generell? Kenne dieses Phänomän noch gut von der Lenkung meines Ferngesteuerten Auto beim Einschalten, nur macht es hier nichts aus, da keine mechanische Endlage in der Mittelstellung erreicht wird.
Kann man das vierhindern, indem ich den zuerst auf high oder low lege und dann erst als Servo freigebe???
Hat vielleicht noch jemand eine Idee, wie ich das verwendete kleine Conrad-Servo langsamer aber dennoch gleichmäßig laufen lassen kann?
Evtl. ein kleines Beispiel?
Viele Grüße
und schon mal danke für Eure Mithilfe
Sven
Code:'----------------------------------------------------------------------------------------- 'name : Schuppentor_Servotiny13.bas 'copyright : (c) 2007 SZ 'purpose : Endlage über Potis einstellbar ' Ansteuerrung über PB1 'micro : TINY13 'Minimum : 35 for most small Conrad-Servos '----------------------------------------------------------------------------------------- $regfile = "attiny13.dat" ' specify the used micro $crystal = 9600000 ' used crystal frequency '$baud = 19200 ' use baud rate '$sim $hwstack = 32 ' default use 32 for the hardware stack $swstack = 10 ' default use 10 for the SW stack $framesize = 40 ' default use 40 for the frame space Config Servos = 1 , Servo1 = Portb.0 , Reload = 10 '--------------------------Config AD - Wandler-------------------------------------- Config Adc = Single , Prescaler = Auto , Reference = Avcc 'For this chip you can use the additional param : 'Config Adc = Single , Prescaler = Auto, Reference = Internal 'The reference param may be : 'OFF : AREF, internal reference turned off 'AVCC : AVCC, with external capacitor at AREF pin 'INTERNAL : Internal 2.56 voltage reference with external capacitor ar AREF pin Enable Interrupts 'Ist nötig Config Portb.0 = Output 'Servoausgang Config Pinb.1 = Input 'Auf/ZU Config Pinb.2 = Input 'Jumper Config Debounce = 20 'Tastenentprellung 20ms 'Interne Pullup Widerstände einschalten Portb.1 = 1 Portb.2 = 1 Dim Minimum As Byte Dim Maximum As Byte Dim Spg_p1 As Word Dim Sresult As Word Dim Flag As Bit '-----------------------------Sub Deklaration------------------------------------- Declare Sub Poti_1 Declare Sub Poti_2 Start Adc Flag = 0 Minimum = 35 'Rechter Anschlag Maximum = 155 'Linker Anschlag Do Gosub Taster_up Loop End '******************************************************************************* Taster_up: 'Debounce Pinb.1 , 1 , Pr 'try this for branching when high(1) Debounce Pinb.1 , 1 , Aus_up , Sub 'Taster offen Debounce Pinb.1 , 0 , Ein_up , Sub 'Taster gedrückt Return '******************************************************************************* 'Unterprogramm Taste Up Ein_up: Gosub Poti_1 Return '******************************************************************************* 'Unterprogramm Taste Up Aus_up: Gosub Poti_2 Return '******************************************************************************* Sub Poti_1 Spg_p1 = Getadc(2) 'Spannung an Poti Sresult = Spg_p1 / 8 Sresult = Sresult + 35 If Sresult < 35 Then Servo(1) = Minimum End If If Sresult = 35 Then Servo(1) = Sresult End If If Sresult > 35 Then Servo(1) = Sresult End If If Sresult > 155 Then Servo(1) = Maximum End If End Sub '******************************************************************************* Sub Poti_2 Spg_p1 = Getadc(3) 'Spannung an Poti Sresult = Spg_p1 / 8 Sresult = Sresult + 35 If Sresult < 35 Then Servo(1) = Minimum End If If Sresult = 35 Then Servo(1) = Sresult End If If Sresult > 35 Then Servo(1) = Sresult End If If Sresult > 155 Then Servo(1) = Maximum End If End Sub







Zitieren

Lesezeichen