PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : telco2108 bei 7,2V und 3500 mA ?



phreak
05.07.2005, 03:07
hi rn-control und rn-motor funktionieren inzwischen *freu*

hab an dem rn-motor einen 7,2V akku hängen, wenn ich jetzt versuche einen schrittmotor anzusteuern, leuchtet die led.
das bedeutet, das die spannung zu niedrig liegt?
oder lieg ich da falsch *gg*

danke schonmal ;)

phreak
05.07.2005, 04:16
hmmm komisch selbst wenn garkein motor am RN-Motor angeschlossen ist leuchtet die kontroll led oO ???

Frank
05.07.2005, 09:54
Das ist logisch, denn wenn nix dran hängt fließt klein Strom. Da die LED immer leuchtet wenn Strom niedriger als Sollwert ist, leuchtet diese in diesem Fall auch (0 < Soll).
Wenn der Motor stark genug für dich dreht, ist übrigens eine leuchtende LED auch ok.

05.07.2005, 14:18
Also ich werde nochmal kurz auf alles eingehen was wir aufgebaut haben...und das Problem das sich ergiebt.

Das RN-Control ist per I2C mit dem RN-Motor verbunden. RS232 hängt am RN-Motor. Und ich programmier per ISP, das Steuerboard. Soweit funktioniert alles. Ich kann programmieren, ich kann das Programm uploaden und einige Befehle schon ausprobieren, mithilfe der taster. Hier das Programm welches ich benutze....


Declare Sub Motortest()
Declare Sub Lauflicht()
Declare Sub Aendereslaveid()
Declare Sub Motoran()
Declare Function Tastenabfrage() As Byte


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


Dim I As Integer
Dim N As Integer
Dim Ton As Integer

$crystal = 16000000 'Quarzfrequenz
$baud = 9600

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

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


Const Ref = 5 / 1023 'Für Batteriespannungsberechnung

Const Befehl_maxstrom = 1
Const Befehl_referenzspannung = 2
Const Befehl_stop = 3
Const Befehl_drehrichtung = 4
Const Befehl_schrittanzahl_drehen = 5
Const Befehl_endlos_drehen = 6
Const Befehl_einzigen_schritt = 7
Const Befehl_geschwindigkeit = 8
Const Befehl_ausschalten = 9
Const Befehl_einschalten = 10
Const Befehl_konfiguration_zeigen = 11
Const Befehl_sleep_modus = 12
Const Befehl_motor_selektieren = 13
Const Befehl_schrittmotormodus = 14

Const Motor_links = 0
Const Motor_rechts = 1

Const I2crnmotorslaveadr = &H56 'I2C SlaveAdresse von RN-Motor Erweiterung
Const I2crnmotorsreadlaveadr = &H57

Dim Taste As Byte
Dim Volt As Single

Dim I2cdaten(6) As Byte 'Array um Befehlsfolge auszunehmen
Dim Lowbyte As Byte
Dim Highbyte As Byte
Dim Schritte As Long
Dim Temp As Byte
Dim Ltemp As Long
Dim Umdrehungen As Single
Dim Fahrstrecke As Word

Dim Geschwindigkeit As Byte





' 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

Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1

Geschwindigkeit = 250
I2cinit

Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein


I = 0
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Print
Print "**** RN-CONTROL 1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print "Weitere passende Zusatzboards bei www.robotikhardware.de"
Print
Do




Taste = Tastenabfrage()
If Taste <> 0 Then

Select Case Taste
Case 1
'Motorstrom auf 200mA begrenzen
I2cdaten(1) = 10 'Kennung muss bei RN-Motor immer 10 sein
I2cdaten(2) = Befehl_maxstrom 'Befehlscode
I2cdaten(3) = Motor_links '1 Parameter
I2cdaten(4) = 900 / 10 '2 Parameter (hier Milliampere /10 in diesem Fall wird 200mA eingestellt)
I2csend I2crnmotorslaveadr , I2cdaten(1) , 5 'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
I2cstop

'Halbschrittmodus
' I2cdaten(1) = 10 'Kennung muss bei RN-Motor immer 10 sein
' I2cdaten(2) = Befehl_schrittmotormodus 'Befehlscode
' I2cdaten(3) = 1 'Beide Motoren Halbschrittmodus
' I2csend I2crnmotorslaveadr , I2cdaten(1) , 5 'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)


'Motor einschalten
I2cdaten(1) = 10 'Kennung muss bei RN-Motor immer 10 sein
I2cdaten(2) = Befehl_einschalten 'Befehlscode
I2cdaten(3) = Motor_links '1 Parameter
I2csend I2crnmotorslaveadr , I2cdaten(1) , 5 'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)

'Taste 1 Zeigt Bateriespannung über RS232 an
Case 2
Call Motortest 'Taste 2 Motoren beschleunigen und abbremsen
Case 3
Call Lauflicht 'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein


End Select
Sound Portd.7 , 400 , 500 'BEEP
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)
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
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
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
End Select
Sound Portd.7 , 400 , Ton 'BEEP

End If

' If Ws < 1023 Then
' Select Case Ws
' Case 895 To 910
' Tastenabfrage = 1
' Ton = 550
' Case 870 To 894
' Tastenabfrage = 2
' Ton = 500
' Case 650 To 690
' Tastenabfrage = 3
' Ton = 450
' Case 450 To 480
' Tastenabfrage = 4
' Ton = 400
' Case 220 To 280
' Tastenabfrage = 5
' Ton = 350
' End Select
' Sound Portd.7 , 400 , Ton 'BEEP
' End If

End Function


Sub Aendereslaveid()
I2cdaten(1) = 10 'Kennung muss bei RN-Motor immer 10 sein
I2cdaten(2) = 15
I2cdaten(3) = 99 '1 Parameter Sicherheitskennung
I2cdaten(4) = 99 '2 Parameter Sicherheitskennung
I2cdaten(5) = &H58 'Hier neue Slave ID Eintragen
I2csend I2crnmotorslaveadr , I2cdaten(1) , 5 'Befehl wird gesendet (es müssen immer 5 Bytes gesendet werden, auch wenn weniger Parameter notwendig sind)
End Sub


'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


Pwm1a = 1000
Pwm1b = 1000
Waitms 5000
Pwm1a = 0 'Linker Motor aus
Pwm1b = 0 'rechter Motor aus
End Sub


'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
Sub Lauflicht()

Config Portc = Output
Portd = 0
For N = 1 To 10
For I = 0 To 7
Portc.i = 0
Waitms 100
Portc.i = 1
Next I
Next N
Config Portc = Input
End Sub


Taste 2, funktioniert. Taste 3 ebenfalls. Bei Taste 1, also der ansteuerung des Motorboards ist im Hyperterminal folgendes zu lesen:



RN-Motor ST I2C- Firmware 1.6c (c) robotikhardware.de

Referenzspannung = 2.5
SlaveId = Hex 56
Linker Motor Drehrichtung: 0
Linker Motor maximaler Strom : 0.09999996
Linker Motor Geschwindigkeit:5
Linker Motor PWM-Vorgabe im Stillstand:0
Linker Motor aktueller PWM-Wert :0

Rechter Motor Drehrichtung: 0
Rechter Motor maximaler Strom : 0.09999996
Rechter Motor Geschwindigkeit:5
Rechter Motor PWM-Vorgabe im Stillstand:0
Rechter Motor aktueller PWM-Wert :0
Motor:0 Max. Strom:0.899999973 Max-ADC=188
OK
Motor:0 ein
OK


RN-Motor liefert also ein OK zurück. Der Strom mit 900mA müsste ja passen. Was mir sorgen macht ist die Spannung. Heisst "Max-ADC=188" das die Spannung bei 1,88 Volt liegt? Wie kann ich die den ändern? Mit meinem Programm? Jedes Board ist mit einem Akkupack mit 7,3 Volt und 3300mA versehen. Ich will meine Motoren mit mindestens 6 Volt ansteuern. Wo geht das jetzt.

Hoffe ich hab alles erklärt,
danke für die Aufmerksamkeit.
Nimrott

05.07.2005, 14:30
Nein ADC=188 ist mehr ein interner Wert der nur für mich bei der Fehlerdiagnose wichtig ist/war. Du solltest nur auf die eingestellten Stromwerte achten, dann stimmt das schon. Auf die Spannungen musst du garnicht achten, denn der Strom ist bei Schrittmotoren entscheident. Die richtige Spannung ergibt sich automatisch.

Gruß Frank

nimrott
05.07.2005, 14:38
sollte ich jetzt also bei der Stromstärke von 900mA
also "I2cdaten(4) = 900 / 10" mal höher gehen ? Damit die Spannung höher wird ? Da trau ich mich eigentlich nicht ran, weil der Motor wie gesagt nur mit 1000mA laufen soll.

05.07.2005, 14:51
Ich kenn den Motor nicht. Aber wenn er 900mA verträgt, dann kannst du auch 900 mA einstellen (also I2cdaten(4) = 900 / 10)

Man muss die Motoren aber nicht mit vollem Strom ansteuern. Wenn er seine Arbeit auch mit ca. dem halben Strom schafft, dann nimm erstmal die Hälfte. Erhöht Akkus-Fahrzeit

05.07.2005, 15:02
Aber er fährt ja ÜBERHAUPT NICHT,
nicht bei 200mA, und nicht bei 900mA.
nur das gelbe LED leuchtet

nimrott
05.07.2005, 15:40
An was kann denn das noch liegen, das meine Motoren nicht laufen?
Frank du hast phreak mal geschrieben dass
rot -- 10
schwarz -- 20
gelb -- 30
grün -- 40

gelb und grün hab ich auch schon vertauscht. Ich stecke gerade einfach, weil ich nicht weis was ich noch machen soll...soll ich irgendwas messen oder überprüfen? Oder liegts an der programmierung ?
das rn-motor meldet ja aber zurück das der motor angeschalten wurde.....

Frank
05.07.2005, 16:32
Ach ja, du hattest das hier gepostet:

http://hardstyle-gfx.de/2108.jpg

Du kannst auch nochmal folgenden Anschluss ausprobieren:

rot -- 10
schwarz/weiss -- 20
grün -- 30
gelb/weiss -- 40

Verbinden musst du rot/weiss+schwarz
und grün/weiss + gelb

So könnte es auch gehen wenn sich bislang nix tut.

Gruß Frank

nimrott
05.07.2005, 17:41
Haben voller Hoffnung ausprobiert...haben auch versucht 30 und 40 wieder zu tauschen hat sich leider nichts getan :-(
Bist du sicher dass der Quelltext so klappt, oder muss ich noch dem Motor sagen wiviele schritte er fahren soll ?
Könnte es auch erst funktionieren wenn ich statt 7,2 Volt Akku, einen mit z.B. 14 Volt nehme ? Müsste ich mir aber erst einen kaufen.

nimrott
05.07.2005, 20:34
Hab gerade eben gesehen dass ich auf dem rn-motor
auf Jumper 1 und 2 jeweil eine Kurzschlussbrücke setzten soll wenn ich
schrittmotoren betreibe....hab ich jetzt mal getan---funktioniert immer noch nicht.

Auszug aus dem rn-motor:

LED signalisiert wenn die Betriebsspannung nicht ausreicht um den Schrittmotor-Nennstrom (also
maximale mögliche Leistung) bei der gewählten Geschwindigkeit zu erreichen.

Ich krieg halt mein Motor nicht zu laufen....egal was ich mach. ich hab schon hunderte kombinationen von geschwindigkeit und stromstärke ausprobiert....dreht sich kein stück. Soll ich jetzt meine Betriebsspannung erhöhen oder muss 7 V reichen ?

Frank
05.07.2005, 21:06
Ich kenne die Nennspannung deines Motors nicht genau. Wenn es unter 10V ist, dann sollten deine 7V den Motor schon zum drehen bringen. 9V oder 12V ist natürlich noch idealer.
Drehen tut sich der Motor erst wenn du noch den Endlos-Schrittbefehl gibts (siehe beiliegendes Beispiel, glaube auf Taste 2 oder 3 war das).
Ohne diesen Befehl dreht sich nix. Aber wenn Strom fließt und Motor richtig angeschlossen ist merkt man das sich die Welle am Motor nur noch schwer drehen läßt. Solange sich die leicht dreht, ist irgendwas bei dir noch falsch.