PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : servo in Bascom (arbeitet nur zwischen 20-100us)



robin
02.02.2008, 19:23
Hi, ich weis, dieses Thema wurde schon so oft angesprochen, deswegen entschuldige ich mich im voraus, falls dies jemandem nicht passt.

ich habe folgendes Problem:

ich verwende einen Mega 168 mit 20Mhz, wenn ich in bascom nun ein Programm mit servo befehl schreibe, hab ich nur die werte von 6-24 zur Verfügung, die restlichen sind außerhalb des überreiches des Servos. Verwende ich ein Programm, dass ich hier im Forum gefunden habe, in dem die servos mit einer case Bedingung und dem waitus befehl gesteuert werden, muss ich die waitzeit auf 20-100 ändern, alles andere ist wieder außerhalb des Wertebereichs. ist das normal? weil eigentlich ja die werte zwischen 500 und 2000 liegen sollten.

ich verwende einen 5€ servo vom C, kann es vielleicht daran liegen? was anderes fällt mir im Moment nicht ein.


$regfile = "m168def.dat" ' the used chip
$crystal = 20000000 ' frequency used

Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Portd = Output
Config Lcd = 16 * 2

Config Portb = Output
Enable Interrupts

Dim Us As Word
Dim Ad1 As Word


Do

Ad1 = Getadc(0)
Portb.1=1

Select case Ad1
Case Is < 50 : Waitus 10
Case 51 To 100 : Waitus 20
Case 101 To 200 : Waitus 30
Case 201 To 300 : Waitus 40
Case 301 To 400 : Waitus 50
Case 401 To 500 : Waitus 60
Case 501 To 600 : Waitus 70
Case 601 To 700 : Waitus 80
Case 701 To 800 : Waitus 90
Case 801 To 900 : Waitus 100
Case 901 To 1000 : Waitus 110
Case Is > 1001 : Waitus 120
End select

Portb.1=0

Waitms 15

Cls
Lcd Ad1

Loop

End 'end program

recycle
02.02.2008, 23:09
Der Steuerpuls für eine Servo sollte eigentlich zwischen 1 und 2 ms liegen.

Bei dem Befehl "Waitus" dürfte es sich um µS handeln, d.h. du verwendest Steuerpulse zwischen 0,01ms und 0,12ms.

Seltsam, dass der Servo auf die minimalen Steuerpulse überhaupt unterschiedlich reagiert.
Könnte es sein, dass die Fusebits deines Controllers nicht richtig eingestellt sind und der tatsächlich auf 8MHz oder sogar nur auf 1MHz läuft?

robin
03.02.2008, 10:51
jetzt weis ich wo ran es liegt, aber eine frage, welche Einstellung muss ich verwenden, um einen 20Mhz Quarz verwenden zu können?