Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Thema hat 21 Antworten
und wurde 3.092 mal aufgerufen
 Bascom
Seiten 1 | 2
DesignDevil Offline




Beiträge: 17

06.04.2013 13:50
#16 RE: Problem mit Servo Routine Antworten

Also es gäbe noch eine Möglichkeit, nämlich den Servoimpuls händisch zu erzeugen und nicht die Bascom Befehle hierfür zu benutzen.

Ich habe dies auch immer so gemacht über (Beispiel):

For I=0 to 50
Pulseout PortB, 0, 500
Waitus 20000
Next

Schau dir einfach mal den befehl Pulseout an. Natürlich müsstest du die Werte ausprobieren/anpassen. Aber Du hättest dann definitiv Kontrolle über den Portpin.

Apropos - was mir noch einfällt, hast du mal den Servo-Pin nach dem Disable mal auf 0 gesetzt? Ich glaub zwar nicht das das was ändert - aber es ist so ein Gedanke das ich das mal probieren würde.


xenton Offline




Beiträge: 807

06.04.2013 13:52
#17 RE: Problem mit Servo Routine Antworten

Hi Sven,

es sollte gehen, wenn Du nicht die Bascom-Routine benutzt sondern eine eigene.
Im Internet findet sich bestimmt eine Vorlage dafür.
Da kannst Du dann sicherlich nach Belieben aus und ein schalten was Du willst.
Ich habe auch schon die Erfahrung gemacht, daß die komplexeren Bascom-eigenen Routinen manchmal nicht das gelbe vom Ei sind.
In einfachen Fällen funktionieren die zwar gut aber sobald man ins Eingemachte geht hakts. In meinem konkreten Fall hat die GetRC5 Routine den Programmablauf so verlangsamt, daß von der Helligkeitssteuerung per PWM nur einzelene Blinker übrig geblieben sind.

Gruß, Martin

[EDIT]: Uups, da war wohl jemand schneller...

>>> Hilfe! Mein Ball ist umgefallen! <<<

http://www.microtruckracing.de - http://mwww.mikro-rc.de


Sven Löffler Offline

Admin


Beiträge: 3.760

06.04.2013 16:15
#18 RE: Problem mit Servo Routine Antworten

Der Tipp war klasse ! Vielen Dank !

So, ich habe es nun mit dem Puleout Befehl gemacht. Die passenden Werte habe ich gefunden. Wie kann ich denn nun den Puls ausschalten ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 

'*************************************************************************************************
'* *
'* Servo Tiny Kieswerk *
'* *
'* Controller ist ein Tiny13 *
'* *
'*************************************************************************************************
 
$regfile = "Attiny13.dat" ' Controller ist ein Tiny13
$crystal = 4800000 ' 4,8 Mhz Takt
 
$hwstack = 10
$framesize = 10
$swstack = 20
 
Config Pinb.0 = Input ' Ein- / Ausgänge definieren
Config Pinb.1 = Input
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
 
Taster_zu Alias Pinb.0
Taster_auf Alias Pinb.1
Gruen Alias Portb.3
Rot Alias Portb.4
 
Enable Interrupts
 
Dim I As Byte
 

 
Portb.0 = 1 ' Interne Pullups ein
Portb.1 = 1
Portb.2 = 0
Portb.3 = 1
 
' Werte von 40 - 75 = 90° Drehung
 

For I = 0 To 50
Pulseout Portb , 2 , 800
Waitms 20
Next
 

 
Taster_abfrage_zu:
Do
If Taster_auf = 0 Then
Gosub Luke_zu
Else
Goto Taster_abfrage_auf
End If
 
Loop
 

Taster_abfrage_auf:
Do
If Taster_zu = 0 Then
Gosub Luke_auf
Else
Goto Taster_abfrage_zu
End If
Loop
 
End
 

Luke_zu:
For I = 0 To 50
Pulseout Portb , 2 , 800
Waitms 20
Next
' Hier müsste wohl was hin ...
Return
 
Luke_auf:
For I = 66 To 95
Pulseout Portb , 2 , 1400
Waitms 20
Next
' Hier müsste wohl was hin ...
Return
 


zampes Offline



Beiträge: 88

06.04.2013 18:02
#19 RE: Problem mit Servo Routine Antworten

Hallo Sven,
ich habe Dein Programm einmal mit einen Attiny25 und einem analog Servo getestet.
Es funktioniert mit ein paar Änderungen an den Servowegwerten ohne Probleme.
Wenn die Position angefahren wurde hören die Impulse auf.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
 

 
'*************************************************************************************************
'* *
'* Servo Tiny Kieswerk *
'* *
'* Controller ist ein Tiny13 *
'* *
'*************************************************************************************************
 
$regfile = "Attiny25.dat" ' Controller ist ein Tiny13
$crystal = 8000000 ' 4,8 Mhz Takt
$hwstack = 40
$swstack=16
$framesize=32
 

 
Config Pinb.0 = Input ' Ein- / Ausgänge definieren
Config Pinb.1 = Input
Config Portb.2 = Output
Config Portb.3 = Output
Config Portb.4 = Output
 
Taster_zu Alias Pinb.0
Taster_auf Alias Pinb.1
Gruen Alias Portb.3
Rot Alias Portb.4
 
Enable Interrupts
 
Dim I As Integer
 

Portb.0 = 1 ' Interne Pullups ein
Portb.1 = 1
Portb.2 = 0
Portb.3 = 1
Portb.4 = 1
 
' Werte von 40 - 75 = 90° Drehung
 
'----- Servo Mittelstellung ----
For I = 0 To 50
Pulseout Portb , 2 , 3300 ' Servo Mittelstellung
Waitms 20
Next
 

 
Taster_abfrage:
 
Do
If Taster_auf = 0 Then
Gosub Luke_zu
End If
 
If Taster_zu = 0 Then
Gosub Luke_auf
End If
Loop
 

Luke_zu:
 
Gruen = 0
Rot =1
 
For I = 0 To 50
Pulseout Portb , 2 , 2300 ' Servo rechts
Waitms 20
Next
Return
 
Luke_auf:
 
Gruen = 1
Rot = 0
 
For I = 0 To 50
Pulseout Portb , 2 , 4300 'Servo links
Waitms 20
Next
Return
 

 

End
 

 




Gruß Dirk


Sven Löffler Offline

Admin


Beiträge: 3.760

07.04.2013 18:17
#20 RE: Problem mit Servo Routine Antworten

Das ist echt interessant...

Wenn ich einen Tiny13 nutze, und das Programm so aufspiele, habe ich trotzdem noch einen Servoimpuls da. Und zwar bei dem Unterprogramm "Luke zu" Gerade da, wo es nicht sein sollte. Das ist echt verflixt.


Sven Löffler Offline

Admin


Beiträge: 3.760

07.04.2013 18:28
#21 RE: Problem mit Servo Routine Antworten

So, ich habe die For - To Schleifen jetzt nochmal rausgenommen. Da ändert sich bei mir garnichts ...


Sven Löffler Offline

Admin


Beiträge: 3.760

07.04.2013 21:16
#22 RE: Problem mit Servo Routine Antworten

Fehler gefunden ... ich hatte statt Taster einen Schalter dran. Das brachte das Programm durcheinander.


Seiten 1 | 2
 Sprung  

disconnected Mikromodell-Chat Mitglieder Online 1
Xobor Xobor Community Software
Datenschutz