update:
so der buboter hat schon seine erste fahrversuche hinter sich.
diesmal über einen mega8 & l293D. gesteuert wurde das ganze über die Steuerungsplatine (also kann man noch von keinem roboter sprechen eher von einem steuerbaren fahrzeug, diese funktion wollt ich eh implementieren, d.h ich lieg im soll!)
Testaufbau & komponenten
der Testaufbau ist ein bisschen konfus. ein mega8 boar hab ich vor jahren von Ebay geholt, dran hängt ein 08/15 Steckbrett wo der l293D hängt.
die steuerungsplatine ( 4Taser gegen masse) für vor/zurück/links/rechts
verbunden mit den 08/15 stecker für alle gängigen roboternetz boards.
Programm
derzeit halt so hingepfuscht, damit es funktioniert, wollt eigentlich alles mit pwm machen, aber da ich pwm noch nie verwendet hab und ein paar kleinere probleme beim programmieren hatte wird pwm zwar initialisiert aber nicht verwendet im programm.
schau mir das dämnächst noch genauer an, vielleicht hat wer ja tipps?!
wollt pwm hauptsächlich pwm für die kurvenfahrt verwenden
ein motor auf vollast der andere auf halber last.
Sensorik
wird der nächste punkt sein!
d.h. steuerbares fahrzeug mit antikolision! Buboter
offene fragen probleme
pwm - wie richtig initialisieren, damit die motoren solange laufen wie ich die taste drücke?!
steuerung - bei meinem derzeitigen progamm ist es derzeit so, dass ich nur eine taste gleichzeitig gedrückt werden kann. ist die einzige möglichkeit interrupst?! dann brauch ich wahrscheindlich nen größeren mega mit mehreren interrups.
aja ein video ist unter http://www.file-upload.net/download-..._0196.AVI.html abrufbar leider bissi dunkel worden.
ich meld mich wieder
mfg
piri
Code:
$regfile = "m8def.dat"
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
$hwstack = 34
$framesize = 34
$swstack = 34
Config Pinc.0 = Input
Taster_vor Alias Pinc.0
Config Pinc.1 = Input
Taster_zuruck Alias Pinc.1
Config Pinc.2 = Input
Taster_links Alias Pinc.2
Config Pinc.3 = Input
Taster_rechts Alias Pinc.3
Config Pinb.1 = Output
Motor1_pwm Alias Portb.1
Config Pind.6 = Output
Motor1_in1 Alias Portd.6
Config Pind.7 = Output
Motor1_in2 Alias Portd.7
Config Pinb.2 = Output
Motor2_pwm Alias Portb.2
Config Pinb.0 = Output
Motor2_in1 Alias Portb.0
Config Pinb.5 = Output
Motor2_in2 Alias Portb.5
'Pulup ein
Portc = &B11111111
'PWM Frequenz Initialisieren
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Dim I As Word
Do
Debounce Taster_vor , 0 , Vor
Debounce Taster_zuruck , 0 , Zuruck
Debounce Taster_links , 0 , Links
Debounce Taster_rechts , 0 , Rechts
Loop
Vor:
Motor1_in1 = 0 'Drehrichtung Motor 1
Motor1_in2 = 1 'Drehrichtung Motor 1
Motor2_in1 = 1 'Drehrichtung Motor 2
Motor2_in2 = 0 'Drehrichtung Motor 2
Motor1_pwm = 1
Motor2_pwm = 1
If Taster_vor = 0 Then
Gosub Vor
Else
Gosub Brems
End If
Return
Zuruck:
Motor1_in1 = 1 'Drehrichtung Motor 1
Motor1_in2 = 0 'Drehrichtung Motor 1
Motor2_in1 = 0 'Drehrichtung Motor 2
Motor2_in2 = 1 'Drehrichtung Motor 2
Motor1_pwm = 1
Motor2_pwm = 1
If Taster_zuruck = 0 Then
Gosub Zuruck
Else
Gosub Brems
End If
Return
Links:
Motor1_in1 = 1 'Drehrichtung Motor 1
Motor1_in2 = 0 'Drehrichtung Motor 1
Motor2_in1 = 1 'Drehrichtung Motor 2
Motor2_in2 = 0 'Drehrichtung Motor 2
Motor1_pwm = 1
Motor2_pwm = 1
If Taster_links = 0 Then
Gosub Links
Else
Gosub Brems
End If
Return
Rechts:
Motor1_in1 = 0 'Drehrichtung Motor 1
Motor1_in2 = 1 'Drehrichtung Motor 1
Motor2_in1 = 0 'Drehrichtung Motor 2
Motor2_in2 = 1 'Drehrichtung Motor 2
Motor1_pwm = 1
Motor2_pwm = 1
If Taster_rechts = 0 Then
Gosub Rechts
Else
Gosub Brems
End If
Return
Brems:
Pwm1a = 0
Pwm1b = 0
Waitms 2
Motor1_in1 = 0 'Drehrichtung Motor 1
Motor1_in2 = 0 'Drehrichtung Motor 1
Motor2_in1 = 0 'Drehrichtung Motor 2
Motor2_in2 = 0
Return
End
Lesezeichen