PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RN Control 1.4 m32 - Motor ansteuern



HeXPloreR
10.11.2012, 21:50
Hallo Leute,

ich hab mal wieder ein Problem, diesmal sind es Motoren an der RN-Control 1.4 m32:

Das Testprogramm habe ich draufgeladen, und einen Motor angeschlossen.

Wenn ich nun den taster T2 drücke um den Testlauf zu starten, fährt der Motor auch hoch, aber er wird nicht wieder langsamer :shock:
Laut Code zählt er I bis > 1023 dann geht er in die nächste Schleife und zählt auch wieder runter.
Aber Motor fängt direkt an zu drehen, und wird mit steigendem I-Wert langsamer, dann beim Schleifenwechsel kommt ein kleiner Ruck, und dann gehts andersrum - mit sinkendem I-Wert wird der Motr wieder schneller. Dann kommt der Beep, wo eigentlich der Motor wenigstens aufhören müsste zu drehen.:-k

Ich habe kurzer Hand ein Print in jeder Schleife eingebaut, und eines nach beenden des runterzählens.

Mache ich was falsch? Wurde der Testcode vielleicht zwischenzeitlich abgeändert?
Anscheinend wird das PWM nicht richtig ausgegeben, bzw benutze ich es falsch.

Ausschnitt des Originalcode (nur mit eingebautem Print):


' Für Motorentest
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02 'Prescaler = 8

'Testet Motoren und Geschwindigkeitsreglung
Sub Motortest()
'Linker Motor ein
Portc.6 = 1 'bestimmt Richtung
Portc.7 = 0 'bestimmt Richtung
Portd.4 = 1 'Linker Motor EIN

'Rechter Motor ein
Portb.0 = 1 'bestimmt Richtung rechter Motor
Portb.1 = 0 'bestimmt Richtung rechter Motor
Portd.5 = 1 'rechter Motor EIN


I = 0
Do
Pwm1a = I
Pwm1b = I
Waitms 40
I = I + 5
Print I
Loop Until I > 1023

Wait 3
Do
Pwm1a = I
Pwm1b = I
Waitms 40
I = I - 5
Print I
Loop Until I < 1
Print "fertig"
Pwm1a = 0 'Linker Motor aus
Pwm1b = 0 'rechter Motor aus
Wait 3
End Sub

- - - Aktualisiert - - -

Einen L293D hat es nun schon gekostet...ich fürchte an der Platine hat schon jemand rumgelötet.
Um überhaupt erstmal den ISP nutzbar zu machen musste ich drei schlecht bis garnicht verlötete Kontakte am ISP-Stecker (nach)löten und den Kondensator C11.
Der Kondensator C10 auf der Rückseite der Platine wurde wohl auch schon mal getauscht oder wenigstens nachgelötet.

Ich habe jetzt einen kleineren Motor gewählt, der die Leistung des (neuen) L293 nicht überstapaziert.

Das Problem mit dem PWM bleibt aber bestehen.

HeXPloreR
11.11.2012, 01:06
Nun habe ich den Code angepasst das der Motor beschleunigt und wieder langsamer wird.

Pwm1a und Pwm1b, am Ende der Motorsub, habe ich als Ursache dafür identifiziert das der Motor nachdem er runtergefahren ist wieder mit (anscheinend) vollem Pwm anfährt und vorallem auch an bleibt - obwohl die Sub schon verlassen wurde und das Programm wieder in der Tasterabfrage ist.
Dazu habe ich das Lauflicht auf die ersten 6 Ports reduziert, damit der Motor nicht mit anläuft wenn das Lauflicht auf PortC 6 und 7 stehen würde.


I = 1020
Do
Print I
Pwm1a = I
Pwm1b = I
Waitms 40
I = I - 5
Loop Until I < 5

Print "wait 3"
Wait 3

Do
Print I
Pwm1a = I
Pwm1b = I
Waitms 40
I = I + 5
Loop Until I > 1015

Print I
Print "fertig"
Wait 3
'Pwm1a = 0 'Linker Motor aus
'Pwm1b = 0 'rechter Motor aus
I = 0
Print "nochmal fertig"
Wait 3
End Sub

Kann jemand dazu noch was sagen?
Vielleicht hat jemand noch einen Tipp warum der µC so reagiert beim Pwm?