-
        

Ergebnis 1 bis 4 von 4

Thema: BuBoter - Steuerbares Farzeug mit AntiKolision

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.05.2006
    Beiträge
    144

    BuBoter - Steuerbares Farzeug mit AntiKolision

    Anzeige

    hallo.

    eines meiner schon länger gedacht prokjekten ist nun in Arbeit!

    derzeitiges Ziel:
    steuerbares Fahrzeug mit Antikolison, also mehreren Sensoren damit Kolison nicht vorkommen.
    umschaltbar auf automatik modus: Fahrzeug fährt eigenständig im Raum herum.

    Mechanik
    2 antriebs räder die direkt am Motor hängen
    1 drehbares Rad
    also insgesamt 3 räder

    Steuerung
    gedacht L293 für die Motorsteuerung
    Sensoren sind Lichtsensoren oder abstandssensoren die ab ca 10cm ein objekt erkennen können (schon getestet, später mehr dazu)
    steuerbarer Modus: entweder IR oder funk, für den anfang sollten mal taster mit kabel herhalten.
    die Steuerung übernimmt ein mega8

    was schon fertig ist
    das grundgestell für meinen BuBoter ist schon fertig, bin schon gestern damit herumgefahren; (jedoch nur mit 2 Schalter die direkt 12V zum Motor geschalten haben; aber schon ein kleiner erfolg - die sichtbaren erfolge sind ja sehr wichtig bei solchen projekten!!!)

    Material verbrauch derzeit
    1 Holzplatte ca 230x15 ; aus restbestand Modellbau
    2 Motoren; aus ausgeschlatetetn Geräten
    3 Räder alle ausm Baumarkt so ca 5€


    jetzt überleg ich mir gerade die Steuerung, will mal pwm weglassen und einfach 2 schleifen bauen um gerade aus und kurvenfahrn in einem geht.ca so

    wenn taste für links & vorwärts gedrückt
    dann
    motor1 =1
    Motor2= 1
    (also geradeausfahrt)
    wait 100ms
    motor1=0
    MOtor2=1
    (also links fahrt)
    loop

    wird zwar bissi ruckel sollte aber gehn

    mfg
    piri
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken img_0192.jpg   img_0194.jpg  
    meine aktuellen Projekte
    Sternenhimmel
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=31439
    BuBoter - Roboter mit Antikolision
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=31632

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.05.2006
    Beiträge
    144
    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
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken img_0195.jpg  

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    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.
    Ich will mich jetzt nicht streiten, ob dein Controller die 4 Befehle in der Hauptschleife bei 16 MHz nur einige hundertausendmal oder sogar mehrere Millionen mal abfragen kann.
    Aber so schnell, dass er es nicht mitbekommt, wirst du den Taster sicher nicht wieder loslassen können.

    Einen externen Interrupt brauchst du nur, wenn der Controller den Taster mehr oder weniger automatisch überwachen soll.
    Für deinen Zweck wird es sicher reichen, wenn du die Pins an denen Taster hängen in der Schleife abfragst. Das machst du ja eigentlich auch schon.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.05.2006
    Beiträge
    144
    hallo

    wieder mal ein kleines update.

    die kabelgebundene steuerung war nur eine notlösung!
    hab mir heute überlegt wie ich das am einfachsten realisieren könnte via funk oder ir. hab mich für ir entschieden und die in Bascom implementierte rc5 abfrage verwendet.
    zum glück hab ich eine all in one fernbedienung, denn von den standard drückern kann fast keiner rc5 bei mir jedenfalls.

    zur abfrage hab ich ein programm auf meinen mega8 geladen um zu schauen welcher code bei welcher taste rüberkommt und dann die richtigen cods einfach in den schleifen abgefragt.

    der einzige nachteil ist:
    warten bis eine taste akzeptiert wird (dürft halt so sein bei rc5)

    jedenfalls hie rmal mein programm
    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000
    $lib "mcsbyte.lbx"                                          'Quarzfrequenz
    $baud = 9600
    $hwstack = 34
    $framesize = 34
    $swstack = 34
    
    
    
    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
    
    Config Pind.2 = Input
    Config Rc5 = Pind.2
    
    
    
    
    
    'RC5 initialisieren
    Enable Interrupts
    Dim Adress As Byte , Command As Byte
    
    
    
    
    Do
    
    
    
    Getrc5(adress , Command)
       Waitms 5
    
    If Command = 80 Then
    Gosub Vor
    End If
    
    If Command = 209 Then
    Gosub Zuruck
    End If
    
    If Command = 85 Then
    Gosub Links
    End If
    
    If Command = 214 Then
    Gosub Rechts
    End If
    
    If Command = 255 Then                                       ''keine taste gedrückt 255 d.h für bremse/stop
    Gosub Brems
    End If
    
    
    
    
    
    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 Command = 80 Then
          Gosub Vor
          Else
    
    
          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 Command = 209 Then
          Gosub Zuruck
    
          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 Command = 85 Then
          Gosub Links
    
          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 Command = 214 Then
          Gosub Rechts
    
          End If
    
        Return
    
    Brems:
    
        Motor1_pwm = 0
        Motor2_pwm = 0
    
        Return
    
    
    
    End
    eventuell bau ich dann eine eigene steuerung für meinen buboter, jedoch fürn anfang ist rc5 mehr als ausreichend!!!

    so gehts weiter
    die Sensoren werden demnächst im programm abgefragt
    ein akku wir den buboter mit strom versorgen
    die erste testplatine wird entwickelt

    mfg
    piri
    meine aktuellen Projekte
    Sternenhimmel
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=31439
    BuBoter - Roboter mit Antikolision
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=31632

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •