PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche Hilfe beim hacken von Modelcraft Servo MC-410 auf endlos Rotation



fraser9999
27.09.2016, 18:26
Hallo,

Habe 2 Servos vom Typ Modelcraft MC-410 die ich nach diversen
Anleitungen aus dem Netz auf endlos Rotation umgebaut haben.

Potentiometer entfernt , 2 Stk. 2.2K Ohm Wiederstände als Spannungsteiler
eingelötet und den Zahnrad Endanschlag entfernt , sowie
im großen Zahnrad die fehlenden Zähne mit einer Feile nachgefeilt.
(Zahnrad ist nur bis zum Anschlagspunkt mit Zähnen versehen!)

alles soweit so gut, Servos an PIC16F Microcontroller angeschlossen
und Software aufgespielt.

Servos drehen sich vor,zurück und bleiben auch stehen
wenn ich 1-2ms Impulse sende.

Sample Source der bei mir funktioniert:

__________________________________
#chip 16F628A, 4
#config OSC = INT
#config MCLR = OFF

DIR PORTB.5 OUT

main:
pulseout PORTB.5,100 10us
wait 20 ms
goto main
__________________________________



Jetzt zum Problem:

Wenn das Computer Programm komplexer wird, z.B
durch Unterprogramme mit Call Subroutine oder Gosub
Anweisungen , dann bleibt das Servo
nach ein paar Sekunden stehen und rührt sich
nicht mehr.

Sample Source der bei mir nicht funktioniert:

_______________________________________
'Chip und Takt
#chip 16F628A, 4

' Interner Takt
#config OSC = INT
' MCLR Pin as Digital Input Port nutzbar
#config MCLR = OFF
' Watchdog aus
#config WDT = OFF


'LED PIN
DIR PORTB.6 OUT

#define SoundOut PORTB.7

'Servo 1
DIR PORTB.4 OUT
'Sevo 2
DIR PORTB.5 OUT

dim za1 as integer

SET PORTB.6 ON

main:

call vor()
' wait 3000 ms

call re()
' wait 3000 ms

call re()
' wait 3000 ms

call vor()
' wait 3000 ms

call li()
' wait 3000 ms

call li()
' wait 3000 ms


goto main


sub vor
for za1 = 1 to 50
'Li vor
pulseout PORTB.5,200 10us
'Re vor
pulseout PORTB.4,100 10us
wait 20 ms
next
end sub

sub rue
for za1 = 1 to 50
'Li zurück
pulseout PORTB.5,100 10us
'Re zürück
pulseout PORTB.4,200 10us
wait 20 ms
next
end sub

sub re
for za1 = 1 to 50
'Li vor
pulseout PORTB.5,200 10us
'Re vor
'pulseout PORTB.4,100 10us
wait 20 ms
next
end sub

sub li
for za1 = 1 to 50
'Li vor
'pulseout PORTB.5,200 10us
'Re vor
pulseout PORTB.4,100 10us
wait 20 ms
next
end sub
__________________________________________________ __


Auch das ändern in gosub-return Anweisungen bringt leider nichts.


Ich benutze zur Programmierung
die Sprache Great Cow Basic (aktuelle Version)

Geprüft habe ich die Hard und Software mit einem
Oszilloskop das ein PWM Signal von ca. 20ms LOW
und 1-2ms High anzeigt.

Die Software wurde mit Oshonsoft Simulator IDE geprüft
und zeigt auch nornmales Verhalten.

Also: Servohardware funktioniert , Software funktioniert
wenn ein ganz simpler Sourcecode nur
die Motore ein und aus schaltet.

Was kann das Problem verursachen?

Hatte jemand schon mal den gleichen Fehler?

Bitte um Anregungen!


Vielen Dank!

Grüße Hermann

Unregistriert
28.09.2016, 08:14
sowie
im großen Zahnrad die fehlenden Zähne mit einer Feile nachgefeilt.
(Zahnrad ist nur bis zum Anschlagspunkt mit Zähnen versehen!)
Klasse!


Servos drehen sich vor,zurück und bleiben auch stehen
wenn ich 1-2ms Impulse sende.
Genauere Angaben pro Servo wären wünschenswert. Ich kenne bei solcherart gehackten Servos ca. 1,5ms Pulse -> Servo bleibt stehen, 2ms Pulse -> max Speed vorwärts, 1ms Pulse -> max Speed rückwärts. (Vorwärts und rückwärts ist relativ).


Sample Source der bei mir funktioniert:
main:
pulseout PORTB.5,100 10us
wait 20 ms
goto main

Da wird nur ein Servo angesteuert. Bei zwei Servos kann die Stromversorgung in die Knie gehen und den µC dauern zurücksetzen. Also bitte Stromlaufplan zeigen



Wenn das Computer Programm komplexer wird, z.B
durch Unterprogramme mit Call Subroutine oder Gosub
Anweisungen , dann bleibt das Servo
nach ein paar Sekunden stehen und rührt sich
nicht mehr.

Im Code werden zwei Servos angesprochen auf PORTB.4 und PORTB.5. Welches rührt sich nicht mehr? Nach wieviel Sekunden genau nicht mehr. Oder rühren sich beide nicht mehr. Was machst Du, damit es wieder läuft?



Ich benutze zur Programmierung
die Sprache Great Cow Basic (aktuelle Version)

"Aktuelle Version" sagt nichts aus, schon gar nichts in 6 Monaten. Welche Version genau?



Geprüft habe ich die Hard und Software mit einem
Oszilloskop das ein PWM Signal von ca. 20ms LOW
und 1-2ms High anzeigt.

Mit welchem Program? Testprogramm oder das, mit dem es nach einigen Sekunden nicht mehr läuft? Was ist 1-2ms? Es sollten 1ms Pulse oder 2ms Pulse auf PORTB.4 und PORTB.5 zu sehen sein: Je nach Programmabschnitt.



Was kann das Problem verursachen?

Leider kenne ich die SW (Cowbasic) nicht. Ich tippe auf Stromversorgung.


Bitte um Anregungen!
Wenn Beschreibung von Abläufen und Fakten bitte detailgenau.

fraser9999
28.09.2016, 13:38
Hallo,

Vielen Dank für die zahlreichen Antworten.

Habe jetzt 2 alte Servos Typ Modelcraft S21 (auch gehackt) an die PIC16F Hardware angeschlossen
und siehe da, es läuft alles wunderbar.

Es kann also nur an den Servos Typ:MC-410 gelegen haben. (Modelcraft MC-410)


mit 1-2ms sind Pulse von 1 Millisekunden bis 2 Millisekunden gemeint
also Pulsweitenmodulation wie bei Standard Servos üblich.


Der Tip , das die Stromversorgung bei 2 Servos zusammenbricht scheint mir
wahrscheinlich. Es könnte sein das die MC-410 Servos mehr Strom brauchen
als die S21-Servos.


Zur Great Cow Basic Version, die ist Version 0.95


Testprogramm ist bei mir Oshonsoft PICSimulatorIDE von: www.oshonsoft.com


Stromlaufplan wie folgt

32069

leider etwas unscharf durch das verkleinern.

(ich weis leider nicht wie man hier große Bilder reinstellt,
bitte um Aufklärung)



Vielen Dank

Grüße Hermann

- - - Aktualisiert - - -

P.S.

zum Sourcecode der mit den Modelcraft MC-410 Servos nicht funktioniert.

das erste Unterprogramm wird ausgeführt, nähmlich " Call vor()".
alle zwei Servos drehen sich vorwärts und
bleiben dann nach ca. 3 Sekunden stehen bis
ich den PIC16 neu aus und wieder ein schalte.


noch etwas zur Stromversorgung:

ich verwende 4 Akkus Ansmann 1,2Volt 1000mAh
und komme auf 5,2Volt im voll geladenen Zustand.


Grüße Hermann

- - - Aktualisiert - - -

P.S

Link zum Foto : Schaltplan1.jpg

Link
https://pl.vc/1mjs0x

Direct Link
https://picload.org/image/rddaawwo/schaltplan1.jpg

oberallgeier
28.09.2016, 16:51
.. Servos Typ Modelcraft S21 .. es läuft alles wunderbar .. das die Stromversorgung .. zusammenbricht scheint mir wahrscheinlich ..Ich kenne weder den einen noch den andern Servotyp, insbesondere der Typ Modelcraft S21 sagt mir garnix. Aber unter meinen Servos ist z.B. ein Typ gleicher Größenordnung wie der MC-410, der bei einem Maximalstrom (des Labornetzteils) von 2,00 A lautstark knattert, bei 4,00 A aber ruhig läuft. Dabei frisst das Ding im Leerlauf grad mal knapp 130 mA, bei "höherer" Last, etwa 1 Nm, ein knappes Ampere. Gerade der Anfahrstrom oder der Strom beim teils unmerklichen Ruckeln im "Stillstand" kann ziemlich hohe, sehr kurze Spitzen erreichen. Bei Betrieb mit Akku, 5 Ah, max über 20 C *gg*, gibts bei diesen Servos keine Sorgen. Deine Ansmann 1,2V 1000 mAh scheinen mir aber diese klitzekleinen AAA-NiMH-Typen oder gar NiCd zu sein, da solltest Du vielleicht keine allzuhohen Stromabgaben erwarten. Was schreibt denn das Datenblatt zu diesen Akkus über die maximale Stromabgabe ? ?

Aus diesem und ähnlichen Gründen habe ich direkt zu Beginn meiner Programme praktisch stets ein ganz typisches, kurzes Blinken meiner Kontrolldioden stehen. Die zeigen insbesondere dieses "Reset"Blinken - also eine typische Blitzfolge wenn der Controller durch ähnliche Strommängel geresettet wird. Denn dies könnte ja auch auftreten.

fraser9999
29.09.2016, 13:37
Hallo,


Vergleichbare Akkus TYP: Ansmann HR03 (NIMH AAA 800mAH, 1.2 Volt)
maximal belastbar mit 1600 mAh

Datenblatt:
http://www.produktinfo.conrad.com/datenblaetter/1400000-1499999/001409257-da-01-en-ANSMANN_MICRO_LSD_AKKU_FLAT_TOP.pdf


da sich der Fehler nicht so leicht lösen lässt,
werde ich wohl auf andere Servos umsteigen
mit denen die Schaltung funktioniert.

Also Problem vorläufig gelöst!


Danke für eure Hilfe,

Grüße Hermann

fraser9999
29.09.2016, 15:39
Hallo,

nach vielem experimentierern mit dem Sourcecode
hab ich eine Notlösung gefunden
um die 2 Modelcraft Servos MC-410 zum laufen zu bringen.

Ich sende bei jeder Richtungsänderung durch ein Gosub-Return
Unterprogramm vorher einen Mitte-Pulse von 1,5 Millisekunden
und danach steuere ich die Servos wie gehabt.

Und sie laufen jetzt beide wie gewünscht.

Grüße Hermann

Peter(TOO)
29.09.2016, 18:28
Hallo Hermann,

Vergleichbare Akkus TYP: Ansmann HR03 (NIMH AAA 800mAH, 1.2 Volt)
maximal belastbar mit 1600 mAh
Da hat sich ein kleiner Fehler eingeschlichen:
Der maximale Entladestrom ist 1'600 mA
mAh geben eine Kapazität an.
Den Akku mit 800mAh kannst du also in minimal 0.5h leersaugen.

MfG Peter(TOO)