PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe bei Code



AndreasMüler
29.06.2010, 11:10
Hi Leute
Ich besitze ein rncontrol1.4 board. Dafür habe ich mir eine erweiterungsplatine für den HIGH Power Motortreiber gekauft um 2 zusätzliche Motoren anzusteuern.
Um Jetzt die Platine anzusprechen habe ich den V+ Pol mit dem Positiven Pol des Netzteiles Vrbunden. Auf dem PIN PWm hab ich den 7Pin des C-Portes angeschlossen. AUF dem Pin DIR den 8 Pin und GND habe ich mit dem 9 Pin verbunden sowie auch mit dem negativen Pol des Netzteiles.
http://www.robotikhardware.de/download/rncontrol14.pdf
http://www.robotikhardware.de/download/High_PowerMotortreiber18V15.pdf
Das ist jetzt noch der Code den ich am Mikrokntroller gespeichert habe:


'################################################# ##
'rncontroltest.BAS
'für
'RoboterNetz Board RN-CONTROL 1.4
'Das neue preiswerte Controllerboard zum experimentieren
'
'Aufgabe:
' Dieses Testprogramm testet gleich mehrere Eigenschaften auf dem Board
' Den verschiedenen Tasten sind bestimmte Funktionen zugeordnet
' Taste 1: Zeigt Batteriespannung über RS232 an
' Taste 2: Angeschlossene Motoren beschleunigen und abbremsen
' Taste 3: Einige male Lauflicht über LED´s anzeigen. Am I2C-Bus
' darf in diesem Moment nichts angeschlossen sein
' Taste 4: Zeigt analoge Messwerte an allen Port A PIN´s über RS232 an
''Taste 5: Zeigt digitalen I/O Zustand von PA0 bis PA5 an
' Ser gut kann man aus dem Demo auch entnehmen wie Sound ausgegeben wird,
' wie Tasten abgefragt werden und wie Subroutinen und Funktionen angelegt werden
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de oder robotikhardware.de
'################################################# ######

Declare Sub Motortest()

Declare Sub Motorboard

Declare Function Tastenabfrage() As Byte
$regfile = "m32def.dat"
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
Dim Taste As Byte
Dim Volt As Single
' 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
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.1 *****"
Print "Das neue Experimentier- und Roboterboard"
Print
Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 2
Call Motortest 'Taste 2 Motoren beschleunigen und abbremsen
'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
Case 4
Call Motorboard

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)
If Ws < 1010 Then
Select Case Ws
Case 410 To 450
Tastenabfrage = 1
Ton = 550
Case 340 To 380
Tastenabfrage = 2
Ton = 500
Case 265 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

'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
I = 0
Do
Pwm1a = I
Pwm1b = I
Waitms 40
I = I + 5
Loop Until I > 1023
Wait 1


End Sub






'Nebencode



$regfile = "m32def.dat" '
$framesize = 40
$swstack = 40
$hwstack = 40
$crystal = 16000000

'Quarzfrequenz
Config Pinc.7 = Output
Motorboard_richtung Alias Portc.0

Config Pinc.6 = Output
Motorboard_pwm Alias Portc.4

Dim Compare As Word
Dim B As Word
Dim Down As Word
Pwm = 40

' Für Motorboardtest


'Ports für linken Motor
Config Pinc.7 = Output 'PWM-Signal
Config Pinc.6 = Output 'DIR-Pin




Dim Motorboard As Word

Sub Motorboard()
'Linker Motor ein
Portc.6 = 1 'bestimmt Richtung
Portc.7 = 0 'bestimmt Richtung
Portc.4 = 1 'Linker Motor EIN

I = 0
Do
Pwm1a = I
Pwm1b = I
Waitms 40
I = I + 5
Loop Until I > 1023
End Sub





Dim P As Word

Dim Count As Integer
Count = 1
Do
For P = 1 To 1023
Dim Led_rot As Integer
Toggle Led_rot
Waitms 25
Next P
Wait 2
Dim Led_gruen As Integer
Toggle Led_gruen
Toggle Motorboard_richtung
Loop


Bitte um Hilfe


Lg Andy

Jaecko
29.06.2010, 11:20
Und was ist jetzt die Frage bzw. das Problem?

Hubert.G
29.06.2010, 11:30
Das es wahrscheinlich nicht funktioniert.

Auf dem PIN PWm hab ich den 7Pin des C-Portes angeschlossen. AUF dem Pin DIR den 8 Pin
im Code:

Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
Ich kann zwar kein BASCOM aber das ist irgend wie nicht schlüssig.

TheDarkRose
29.06.2010, 11:54
Das ist das Beispielprogramm was am RN-Control bei der Auslieferung oben ist. Damit kann er auch nichts anfangen.

@Andreasmüller
Hast du dich jetzt endlich mal mit den Grundlagen beschäftigt? Z.b. eine LED blinken lassen oder solche kleinen Sachen.


PS. Es gibt [code] Tags!!!!!

Richard
29.06.2010, 12:22
Das es wahrscheinlich nicht funktioniert.

Auf dem PIN PWm hab ich den 7Pin des C-Portes angeschlossen. AUF dem Pin DIR den 8 Pin
im Code:

Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
Ich kann zwar kein BASCOM aber das ist irgend wie nicht schlüssig.

Richtig, hatte ich ja schon bemerkt.PWM gehört auf Pin D.4 (Motor 1)
Der Richtungspin (Dir) der Motorsteuerung muss auf Pin C.7.. aber
erkläre das einmal jemanden der absolut NULL Grundlagen Wissen
hat. Er kann halt Geistig nicht nachvollziehen was da genau wie abläuft
und dann ist es sehr schwer zu verstehen. :-(

Klein Anfangen und z.B. eine LED Blinken lassen, zuerst nur ein/aus
schalten, später in einer Schleife, noch später mit einem Timer,
noch später........Erst einmal schauen was passiert wie/warum
und was passiert wenn etwas geändert wird und warum passiert es!

Jeder ist ähnlich angefangen zu lernen und verstehen. Jeder hat
dafür mehr oder weniger (Jahre) gebraucht, einfach so ist noch
kein "Meister vom Himmel" gefallen.

Übrigens, der Poster hatte erwähnt das er mehrere Motoren steuern
wollte, das geht natürlich nur mit mehren Motorsteuerungen UND
nicht mit jedem Board. Pro Motor muss es einen eigenen PWM
Ausgang geben.......

Wie auch immer, wenn der Motortreiber !richtig! angeschlossen wird,
funktioniert das ganze auch tadellos. :-)

Gruß Richard