-         

Ergebnis 1 bis 7 von 7

Thema: Motoransteuerung mit Bedingung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    31.03.2008
    Ort
    Gorxheimertal
    Alter
    30
    Beiträge
    59

    Motoransteuerung mit Bedingung

    Anzeige

    Hi, also eins vorab, bin noch ziemlicher neueinsteiger in der Programmierung. Habe gestern meine RN-Control das ich seit ca. 3 monaten hab wieder rausgekramt um damit mein erstes ernsthafteres projekt zu realisieren. Und zwar komme ich mit den Bedingunegn (If/Else) und den Loops noch net zurecht.

    Also ham momentan nur ein Fahrgestell mit Kettenantrieb. Die beiden Getriebemotoren steuere ich mit dem Standard-Code aus dem Beispielsprogramm. Das funktioniert soweit auch.

    Jetzt sollen die Motoren aber stehen bleiben, sobald ein Hindernis im Weg ist (momentan soll er es erstmal über nen einfachen Taster "Ertasten" Und da ist das Problem, weil das Programm halt im Loop ist. Ich mach hier schon den halben Tag rum und da ich leider nicht weiß wonach ich in der Suche suchen soll, kann ich diese leider nicht benutzen

    danke im Vorraus

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Hallo Coleone,

    wie sieht deine Hardware (speziell Anschluß der Taster) und deine Software denn bis jetzt aus? Und was klappt nicht?


    Gruß Dirk

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    31.03.2008
    Ort
    Gorxheimertal
    Alter
    30
    Beiträge
    59
    Also mein Taster giebt einfach +5V auf einen Pin und dann sollen die Motoren sofort anhalten. Ich habe Als Code für die Motoren das aus dem Beispielsprogramm, aber da ist ja ein Loop drin, mit dessen Hilfe die Motoren beschleunigt und abgebremst werden.

    Hier mal der Code vom Motor
    Code:
    Config Portc.0 = Output                                     'Ein Pin wird aus Ausgang konfiguriert PC0 (also Pin0 von Port C)
    Config Pinb.2 = Input                                       'Ein Pin wird als Eingang definiert
    Portb.2 = 1                                                 'Interner Pullup Widerstand ein
    
    
    
        '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
       Do
          Pwm1a = I
          Pwm1b = I
    Waitms 40
          I = I - 5
    Loop Until I < 1
       Pwm1a = 0                                                'Linker Motor aus
       Pwm1b = 0                                                'rechter Motor aus
    
    End Sub
    Oben hab ich zunächst mal die Ports für die Taster zugewiesen und dann kommt der Teil für die Motoren. Hab da schon ne weile mit der If/Then/Else sache rumprobiert, aber ich bekomms net hin^^
    Hoffe du verstehst was ich meine

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    ...das ist die Anwendungsmöglichkeit schlechthin für einen INTERRUPT !

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    Ja, ein Interrupt wäre elegant.

    Alternativ könntest du innerhalb der Loops mit
    "If Pinb.2 = 1 then ..." den Taster abfragen und wenn er Highpegel hat die Motoren abschalten (Pwm1a = 0 Pwm1b = 0).

    Gruß Dirk

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    31.03.2008
    Ort
    Gorxheimertal
    Alter
    30
    Beiträge
    59
    Ahh Ok werd ich morgen gleich mal Probieren. Hab jetzt grad mal alles ohne das Beschleunigen, also nur mit Ein und Aus gemacht und das dann mit If/Then/Else und jetzt funktionierts auch so wie es soll, halt nur das die Motoren sofort vollgas geben^^

    danke schonmal. Aber hat jemand nen Link oder so, wo das mit den Interrupts erklärt wird, evtl mit beispielen oder so? Weil mit der Beschreibung aus dem Wiki komm ich net so wirklich klar

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Aber hat jemand nen Link oder so
    Als "oder so" kann ich das Buch von Roland Walter "AVR Mikrocontroller-Lehrbuch" sehr empfehlen. Viele andere dicke Schwarten nennen sich auch "Lehrbücher", aber dieses Werk ist m.E. mit Abstand das beste für Leute, die noch gar keinen Plan von der Materie haben.
    Unter www.rowalt.de gibt´s auch ein kleines Tutorial vom Autor - aber das Buch ist wirklich sein Geld wert.

Berechtigungen

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