-
-
Motoransteuern via RN CONTROL 1.4... Falscher Motor???
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
-
Erfahrener Benutzer
Fleißiges Mitglied
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.
-
Erfahrener Benutzer
Robotik Visionär
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.
-
Erfahrener Benutzer
Robotik Einstein
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.
-
Erfahrener Benutzer
Roboter Genie
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.
-
Erfahrener Benutzer
Robotik Visionär
Als Tipp BLDC. Die sind für kontinuierliches Drehen ausgelegt, wie bei CD/DVD Laufwerken (und HDD)
-
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...
-
Erfahrener Benutzer
Robotik Visionär
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.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen