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
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.
'################################################# #############
'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
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
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
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.
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
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.
Lesezeichen