PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motoransteuern via RN CONTROL 1.4... Falscher Motor???



_blumenKinD_
11.09.2009, 11:11
hallo,

ich habe ein problem und zwar möchte ich mit dem controllerboard "rn control 1.4" zwei elektromotoren ansteuern.

das ganze klappt auch soweit, da es in der demo ein beispielt dazu gab.

nun ist es aber allerdings so, dass wenn ich den parameter PWM=1023 einstelle der motor alles gibt was er hat... (glaub ca. 16k upm) und genau da liegt das problem! sobald ich die PWM runterfahre fährt er vielleicht langsamer aber man erkennt es nicht da er immer noch viel zu schnell ist... bein der einstellung PWM=150 tut sich nichts mehr... (ist das die schwellstrom grenze)

die motoren sind keiner last ausgesetzt... sie sollen nur spiegel rotieren lassen die relativ klein sind (wie beim zahnarzt ^^)...

nun stellt sich mir die frage, hab ich evlt. falsche motoren oder was kann ich einstellen um den motor auch mit z.b. 100 upm zu fahren?

da ich ein absoluter rookie bin auf dem gebiet würde ich mich um hilfestellungen freuen =)

grüße

_blumenKinD_

-------------------------------------------------------------------------------

ich füge noch den quellcode ein evtl. mache ich auch was in sachen programmierung falsch... ich will eigentlich nur wissen, ob diese kleinen motoren auch langsam fahren können oder wenn sie anfahren gleich richtig abegehen ^^

Quellcode:

' Programm für Tastenabfrage und Motoransteuerung

Declare Sub Motorgeschw1()
Declare Sub Motorgeschw2()
Declare Sub Motorgeschw3()
Declare Sub Motorgeschw4()
Declare Sub Motorgeschw5()
Declare Function Tastenabfrage() As Byte

$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32

Dim I As Integer
Dim N As Integer 'wird N benötigt?
Dim Ton As Integer

$crystal = 16000000 'Quarzfrequenz
$baud = 9600 'Baudgeschwindigkeit

Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage

Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein

Dim Taste As Byte

'Initialisierung der einzelnen Ports am Atmel für Motorsteuerung

Config Pinc.6 = Output 'Linker Motor Kanal1
Config Pinc.7 = Output 'Linker Motor Kanal2
Config Pind.4 = Output 'Linker Motor Puls-Weiten-Modulation (PWM)

Config Pinb.0 = Output 'Rechter Motor Kanal1
Config Pinb.1 = Output 'Rechter Motor Kanal2
Config Pind.5 = Output 'Rechter Motor Puls-Weiten-Modulation (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

I = 0
Print "Motorsteuerungs Programm"
Do

Taste = Tastenabfrage()
If Taste <> 0 Then

Select Case Taste
Case 1
Call Motorgeschw1 'Taste1 Motoren drehen mit Differenzgeschw. 1

Case 2
Call Motorgeschw2 'Taste2 Motoren drehen mit Differenzgeschw. 2

Case 3
Call Motorgeschw3 'Taste3 Motoren drehen mit Differenzgeschw. 3

Case 4
Call Motorgeschw4 'Taste4 Motoren drehen mit Differenzgeschw. 4

Case 5
Call Motorgeschw5 'Taste5 Motoren drehen mit Differenzgeschw. 5

End Select
End If

Waitms 100
Loop

End


'Diese Unterfunktion fragt die Tastatur am analogen Port ab

Function Tastenabfrage() As Byte
Local Ws As Word

Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)

If Ws < 500 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Ton = 550
Case 330 To 380
Tastenabfrage = 2
Ton = 500
Case 260 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 90 To 130
Tastenabfrage = 5
Ton = 350
' Case Else

End Select
Sound Portd.7 , 400 , Ton 'BEEP

End If


End Function


'Testet Motoren und Geschwindigkeitsreglung1

Sub Motorgeschw1()
'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
Loop Until I > 1023

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

'Testet Motoren und Geschwindigkeitsreglung2

Sub Motorgeschw2()
'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
Loop Until I > 1023

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

'Testet Motoren und Geschwindigkeitsreglung3

Sub Motorgeschw3()
'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
Loop Until I > 1023

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

'Testet Motoren und Geschwindigkeitsreglung4

Sub Motorgeschw4()
'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
Loop Until I > 1023

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

'Testet Motoren und Geschwindigkeitsreglung5

Sub Motorgeschw5()
'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
Loop Until I > 1023

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

Lync
11.09.2009, 13:24
Der Motor funktioniert auch nur in einem gewissen Bereich.
Wenn die maximale drehzahl bei 16000 liegt bekommst du den wahrscheinlich nicht unter 5000-6000.

Um den auf 100U/min zu bekommen musst du ein Getriebe verwenden, welches natürlich auch die maximale Drehzahl herabsetzt.

021aet04
12.09.2009, 10:04
Einen Tipp zu den Spiegeln hätte ich noch. Du könntest einen Spiegel von einer Scannerkassa (Strichcode) oder von einem Messgerät, dass mit einem Laserstrahl misst, nehmen. Vielleicht kommst du an soetwas ran (vielleicht als Ersatzteil). Oder du könntest auch eine PC Lüfter umbauen. Lüfterflügel ab, Motor aus dem Rahmen und auf den Motor die Spiegel kleben. Bei den Varianten sind Motoren drauf. In der Firma, in der ich arbeite, haben wir Durchmessermessgeräte, indem sich ein Spiegel rotiert. Der Spiegel ist fix am Motor montiert.

recycle
12.09.2009, 10:30
Je nachdem waqs du genau vor hast, könnten Schritmotoren die bessere Wahl für dich sein. Die wrst du zwar nicht auf do hohe Drehzahlen wie 16kU/min bekommen, dafür kannst du sie bei kleineren Drehzahlen aber genau mit der Geschwindigkeit laufen lassen, die du benötigst.
Wenn keine grosse Last benötigt wird reichen auch kleine Schrittmotore und die bekommst du z.B. bei www.pollin.de oder www.reichelt.de wahrscheinlich billiger als Getriebemotoren. Da Schrittmotore anders angesteuert werden, reicht der Motortreiber auf dem RN Control allerdings nicht für beide Motoren.

Bammel
12.09.2009, 10:44
schrittmotoren machen alerdings auhc "schritte" wie der name ja sagt dies führt dann ja auhc zum ruckeln der spiegels. welches duerchaus unerwünscht sein könnte. man könnte sowas zwar durch mikroschritt minimieren dies ist dann aber schonwieder net ganz so einfach.

021aet04
12.09.2009, 12:00
Als Tipp BLDC. Die sind für kontinuierliches Drehen ausgelegt, wie bei CD/DVD Laufwerken (und HDD)

_blumenKinD_
14.09.2009, 08:30
vielen dank für die vielen anregungen =)

ja schrittmotoren waren auch in überlegung, allerdings wollten wir kosten sparen und da wir unbedingt zwei motoren brauchen (soll ne lasershow werden). Das RN ControlBoard 1.4 kann zwei e-motoren oder ein schrittmotor ansteuern, somit haben wir uns für die elektormotoren entschieden.

Ein getriebe wäre ne möglichkeit... und E-motoren, die einfach einen kleineren grenzstrom besitzten und evlt. geringere drehzahlen aufweisen gibt es nicht?

ich habe auf diversen modellbau seiten geschaut, alledings gilt da, desto schneller desto besser...? hmm...

die im rechner verbauten FANs sind auch schrittmotoren? den die drehen teilweise recht langsam...

auch dachte ich, dass ich mit der PWM sogut wie alle geschwindigkeiten fahren könnte...


grüße

_blumenKinD_

--------------------------------------

zu den BLDC motoren, laufen die praktisch immer nur bei verschiedenen geschwindigkeiten? den wir bräuchten einen motor, bei dem wir die drehzahl per einlesen einer analogen spannung (poti) regeln... d.h. man soll die geschwindigkeiten regeln können von beiden motoren und somit geometrische figuren mit der lasershow projezieren können...

021aet04
14.09.2009, 10:41
In PC-Lüftern sind BLDC Motoren verbaut. Die haben die Elektronik schon integriert, da BLDC Motoren 3 Anschlüsse haben (wie bei Drehstrommotoren). Bei so niedrigen Drehzahlen würde ich ein Getriebe verwenden. Wenn du die Steuerung schon hast kannst du BLDC schon vergessen oder eine neue Steuerung kaufen (bauen). Ich würde es so machen, wie ich oben geschrieben habe. einen PC Lüfter nehmen. Die Flügel abschneiden und kleine Spiegel auf den Motor kleben (wo die Flügel befestigt waren). Den Rahmen solltest du ganz entfernen, dann musst du eine Befestigung basteln oder einen Teil des Rahmens entfernen, damit du die originalen Befestigungen nehmen kannst.

Wie willst du mit einer konstanten Drehzahl Figuren projezieren? Irgendwo habe ich einmal einen Bausatz gesehen, der 2 Spiegel mit Servos verstellt. Ich glaube es war bei Conrad, bin mir nicht sicher, es ist schon länger her.