PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MD23 Motorcontroller Optischen Drehsensor anklemmen Wie??



xaua246
22.10.2009, 21:45
Am MD23 Motorcontroller Pin: Vcc, Ground (gemeinsam), Hall A Vin, Hall B Vin

Am optischen Geber: Ground (gemeinsam), 5V+, 4 Inpulse pro Motorumdrehung (Impulse = 3,8V, ansonsten 0,6V)

Ich habe MD23 drehzahlprogramm versucht - es zeigt keine Impulse
Ich habe den Geber auch schon an 12V (Vcc) angeschlossen, Signal ist dann 8V,
Muss ich beide Hall anschliessen oder habe ich das falsche Signal - - was kann ich versuchen

021aet04
24.10.2009, 12:05
Was für ein optischer Geber? Wäre nicht schlecht wenn du schreibst Welchen Motor, welchen Geber und eventuell das Programm posten. Sonst kann man nicht helfen.

xaua246
24.10.2009, 16:11
Normal wird Md23 mit Motor EMG30 betrieben http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=164

Ich will Md23 mit diesen 12v Motor mit opt. Drehgeber (normal 5V)
Bild ist angehängt

Bascom Programm:

'################################################# #############
'md23drehzahl.bas
'
'Das Programm demonstriert wie das Motorboard MD23
'über I2C von RN-Control angesteuert wird
'
'Die Tasten haben in dem Demo folgende Funktion:
'Taste 1: Motor 1 stoppen
'Taste 2: Motor 1 kleinere Geschwindigkeit
'Taste 3: Motor 1 volle Geschwindigkeit Mode 0
'Taste 4: Ausgabe der Impulsanzahl über RS232 (Drehgeber) und Umdrehungen
'Taste 5: Zähler für Impulse auf 0 setzen
'
'Autor: Frank (roboternetz.de)
'Verwendet wurden: RN-Control & MD23 (robotikhardware.de)
'Weitere Beispiele sind im Roboternetz gerne willkommen!
'################################################# #############

$programmer = 12 'MCS USB (Zeile weglassen wenn anderer Programmer)





' -------------- RN-Control übliche _____________________
Declare Function Tastenabfrage() As Byte

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

$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Scl = Portc.0 'Ports fuer IIC-Bus
Config Sda = Portc.1

Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Dim Taste As Byte
Dim Ton As Integer

I2cinit
Start Adc
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Print
Print "**** RN-CONTROL V1.4 *****"
Print "Demoprogramm zum Motorboard MD23"
Print "RN-Control als auch MD23 gibts bei robotikhardware.de"
Print
' -------------- Ende RN-Control übliche _____________________



Declare Sub Md23_writeregister(byval Register As Byte , Byval Wert As Byte)
Declare Function Md23_impulse(byval Motor As Byte) As Long
Const Md23_slaveid = &HB0
Dim Umdrehungen As Long
Dim Zaehler As Long



Wait 1
Md23_writeregister 16 , &H32 'Automatische Timout Abschaltung deaktivieren
Md23_writeregister 15 , &H0 'Mode 0
Print "Automatische Timout Abschaltung deaktiviert"



Do
Taste = Tastenabfrage()
If Taste <> 0 Then

Select Case Taste

Case 1:
Md23_writeregister 0 , 128


Case 2
Md23_writeregister 0 , 10
Wait 3
Md23_writeregister 0 , 255
Case 3
Md23_writeregister 0 , 255

Case 4
Zaehler = Md23_impulse
Umdrehungen = Zaehler / 360
Print "Impulse: " ; Zaehler ; " Umdrehungen: " ; Umdrehungen

Case 5
Md23_writeregister 16 , &H20 'Zähler auf 0 setzen




End Select
Sound Portd.7 , 400 , 500 'BEEP
End If

Waitms 100
Loop

End




' Diese Unterfunktion fragt die Tastatur am analogen Port ab
' Sollte beim betätigen einer Taste kein Quittungston kommen, dann
' muss die die Tastenabfrage (Select Case Anweisung in Funktion )
' an ihr Board angepaßt werden. Widerstandstoleranzen sorgen in
' Einzelfällen manchmal dafür das die Werte etwas anders ausfallen
' Am besten dann den WS wert mit Print für jede Taste ausgeben lassen

Function Tastenabfrage() As Byte
Local Ws As Word

Tastenabfrage = 0
Ton = 600
Ws = Getadc(7)
' Print "ws= " ; Ws
If Ws < 1010 Then
Select Case Ws
Case 400 To 455
Tastenabfrage = 1
Ton = 550
Case 335 To 380
Tastenabfrage = 2
Ton = 500
Case 250 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 100 To 130
Tastenabfrage = 5
Ton = 350
End Select
Sound Portd.7 , 400 , Ton 'BEEP
End If

End Function








'Schreibt in Register ein Wert
Sub Md23_writeregister(byval Register As Byte , Byval Wert As Byte)


I2cstart
I2cwbyte Md23_slaveid
I2cwbyte Register 'Leseregister festlegen
I2cwbyte Wert 'Leseregister festlegen
I2cstop
End Sub




Function Md23_impulse(byval Motor As Byte) As Long
Local W1 As Byte
Local W2 As Byte
Local W3 As Byte
Local W4 As Byte
Local Impulse As Long
Local I2cread As Byte


I2cread = Md23_slaveid + 1

If Motor = 1 Then
I2cstart
I2cwbyte Md23_slaveid
I2cwbyte 2 'Leseregister festlegen
I2cstop
Else
I2cstart
I2cwbyte Md23_slaveid
I2cwbyte 6 'Leseregister festlegen
I2cstop
End If

I2cstart
I2cwbyte I2cread
I2crbyte W1 , Ack
I2crbyte W2 , Ack
I2crbyte W3 , Ack
I2crbyte W4 , Nack
I2cstop

Impulse = 0
Impulse = Impulse Or W1
Shift Impulse , Left , 8
Impulse = Impulse Or W2
Shift Impulse , Left , 8
Impulse = Impulse Or W3
Shift Impulse , Left , 8
Impulse = Impulse Or W4


Md23_impulse = Impulse
End Function

021aet04
24.10.2009, 17:30
Da das Programm vermutlich funktioniert (da es ein Demoprogramm ist) würde ich das Programm erneut auf den µC laden und danach messen.
Wenn du ein Messgerät mit Frequenzmessung hast kannst du messen ob du das Drehzahlsignal eigentlich am µC hast. Wenn du keines hast miss einmal mit der Gleichspannungsfunktion am PL3 die Spannung im Stillstand zwischen Anschluss 5 (GND) und 2 bzw 3. Du solltest 5V haben. Danach miss die Spannung (oder Frequenz) auf den gleichen Messpunkten wenn der Motor dreht. Du solltest eine Frequenz messen können (oder eine Spannung von ca 2,5V messen.

xaua246
25.10.2009, 15:49
das drehzahlsignal ist da - ich messe die Impulse bisher an rn-control über int0 PortD das funktioniert.
Ich muss wissen, wie ich den Drehgeber: Masse, +(5v oder 12v), Signal
am Md23 anschliesse: Masse, 12V, Hall a, Hall b
Ich Habe schon mit der Hand langsam gedreht, ich bekomme keine Reaktion der Md23 drehimpulse über die Testsoftware

021aet04
27.10.2009, 20:20
Wie du den Motor am MD23 anschließt? Einfach anstecken. Da das Board und der Motor laut Robotikhardware zusammen passen musst du nur den Motor anschießen. Stimmt die Adresse? Sonst würde mir nichts einfallen.