schick mal dein code und welche frequens der quarz hat vlt lässt sich da der fehler finden
das 2 verschiedene (analoge) Servos den selben fehler haben halt ich für unwahrscheinlich deswegen wird der fehler im programm liegen
Hallo Community
Ich möchte erst mal erwähnen, dass ich ein Bascom-Einsteiger bin.
Mein Problem ist folgendes: Ich habe versucht ein Servo mit dem Beispielcode von Bascom und mit dem Beispielcode aus dem Buch "Roboter selbst bauen" (Ulli Sommer) anzusteuern. In beiden fällen zuckt es zufällig hin und her oder dreht bis zum Anschlag und versucht weiter zu drehen. Dabei wird der Servo ganz heiß aber nicht der Motor sondern der Silizium-Chip.
Leider hatte ich bis jetzt nur diese 2 Beispiele, weil (noch) kein Internet in meiner Wohnung hab, und das Beispiel aus dem Wiki nicht anschauen konnte und die Beispielcodes auch nicht posten kann.
Aber ich habe schon haufen sachen ausprobiert. 2 Verschiedene Controllerboards, 2 verschiedene (analoge) Servos, mit und ohne externer Stromzufuhr. Am Ende kommt das gleiche raus - entweder zuckt der Servo oder steht still aber der Silizium-Chip wird immer heiß.
Ich kann mir schon denken dass der eine oder andere schreiben wird, dass ich das Beispiel ausm Wiki ausprobieren soll. Sollte es damit gehen, wieso wird es in den anderen zwei Fällen heiß?
Danke im Voraus
schick mal dein code und welche frequens der quarz hat vlt lässt sich da der fehler finden
das 2 verschiedene (analoge) Servos den selben fehler haben halt ich für unwahrscheinlich deswegen wird der fehler im programm liegen
Das ist ja das Problem, dass ich im Moment nur ganz zufällig ans Internet dran komme, natürlich kein USB-Stick mit Code o.ä. dabei.
Ich besitze dieses Board
http://shop.myavr.de/Baus%C3%A4tze%2...p.php&artID=47
Frequenz-3.6864 (wenn ich mich richtig erinnere)
bei einem anderen Board ATmega16 mit 10MHz Quarz.
Hab mal auf die Schnelle Bascom installiert.
Die Ausgänge habe ich auch andere ausprobiert.Code:'----------------------------------------------------------------------------------------- 'name : servos.bas 'copyright : (c) 1995-2005, MCS Electronics 'purpose : demonstrates the SERVO option 'micro : 90S2313 'suited for demo : yes 'commercial addon needed : no '----------------------------------------------------------------------------------------- $regfile = "2313def.dat" ' specify the used micro $crystal = 4000000 ' used crystal frequency $baud = 19200 ' use baud rate $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 'Servo's need a pulse in order to operate 'with the config statement CONFIG Servos we can specify how many servo's we 'will use and which port pins are used 'A maximum of 14 Servos might be used 'The SERVO statements use one byte for an interrupt counter and the TIMER0 'This means that you can not use TIMER0 anymore 'The reload value specifies the interval of the timer in uS 'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 Config Servos = 1 , Servo1 = Portb.0 , Reload = 10 'as an option you can use TIMER1 'Config Servos = 2 , Servo1 = Portb.0 , Servo2 = Portb.1 , Reload = 10 , Timer = Timer1 'we use 2 Servos with 10 uS resolution(steps) 'we must configure the port pins used to act as output Config Portb = Output 'finally we must turn on the global interrupt Enable Interrupts 'the servo() array is created automatic. You can used it to set the 'time the servo must be on Servo(1) = 10 '10 times 10 = 100 uS on 'Servo(2) = 20 '20 times 10 = 200 uS on Do Loop Dim I As Byte Do For I = 0 To 100 Servo(1) = I Waitms 1000 Next For I = 100 To 0 Step -1 ' Servo(1) = I Waitms 1000 Next Loop End
In dem Code habe ich anderen Quarz und anderen µC eingetragen.
Bei dem zweiten Beispiel kann ich mich nur an "Pulseout , 2 , ... k.A." in den letzten Zeilen erinnern
Wie sieht denn die schaltung aus?
Bei mir war es so, das die soviel strom gezogen haben das der µC immer neu gestartet ist, und dadurch der servo immer auf ausgangsstellung und dann halt rumzucken, oder auch bis zum mechanischen anschlag bis der kaputt ging. Waren billige teile, aber konnte das ganze erst mit 6000µF C lösen, und ner diode damit die nichtmehr den µC strom klauen.
LG raz
Die Schaltung ist standart und die bevorzuge ich auch:
rote Leitung an 4,5V extern, braune leitung an die geminsame Masse von Spannungsregler des Boards und der externen Batterie. und die Signalleitung (orange) an den Signalport.
Aber wenn ich die rote Leitung an die Versorgungsspannung von µC anklemme, ändert sich nix bzw. Servo wird heiß.
Ich hab mir jetzt die Quelcodes aus dem Wiki auf ein DIN A4 Blatt abgeschrieben und werde die ausprobieren.
P.S. erst nächste Woche habe ich wieder Internet
Irgendwie mache ich was falsch, egal bei welchem code. Das ausm Wiki hat bei mir auch nicht funktioniert.
Un hier ist der Code aus dem Buch von Ulli Sommer wobei die Servos heiß werden.
Was mache ich dabei falsch?Code:'Servo.bas 'Microcontroller $regfile = "m32def.dat" 'hier habe ich m8def.dat eingetragen $crystal = 16000000 'und hier 3686400 'Servo Config Porta.2 = Output Declare Sub _servo() Dim Servo_pos As Word Dim Servo_pos_save As Word Dim Multiplikator_servo As Byte Dim Setup As Word Dim X As Byte Multiplikator_servo = 15 Setup = 3900 'Servo Ansteuerung For X = 1 To 50 Servo_pos = 128 'Servo in Mittelstellung fahren Call _servo() Next X Sub _servo() Servo_pos_save = Servo_pos * Multiplikator_servo 'Pulseout berechnen Servo_pos_save = Setup + Servo_pos_save Pulseout Porta , 2 , Servo_pos_save Waitms 10 'kurze Pause (5 bis 20ms) End Sub
Ich bezweifel das das direkt an den Codes liegt, da die Codes im Wiki erprobt sind (geh ich ganz stark von aus!). Hast du mal den Stromkreis überprüft? Vielleicht liegt ja da der Hund begraben.....
Ich bin auch 100% sicher, dass die Codes funzen. Aber vielleicht passt es irgendwie mit der Quarzfrequenz nicht oder dem Prescaler usw.
Bin schon total verzweifelt.
Lesezeichen