- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 33 von 33

Thema: Pro-Bot 128 mit Bascom

  1. #31
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    30
    Beiträge
    661
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Ich ahb jetzt mal ein neues paar Encoder bestellt. Ich muss den linken irgentwie durchgeschmört haben da er ja immer auf Ground zieht.
    MfG Martinius

  2. #32
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    30
    Beiträge
    661
    gut jetzt funktioniert alles ich hatte bei meiner ISP erweiterung ausversehen eine dünne leiterbahn durchtrennt. Habe übrigens den Pro-Bot 128 mit einem
    Spannungsregler versehen werde die Anleitung bald auf meiner Website posten.
    MfG Martinius

  3. #33
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    27.09.2009
    Alter
    30
    Beiträge
    661
    Der Wahnsinn kommt wieder über mich selbst das Einfachst Programm zum Abfahren einer Strecke funktioniert nicht. Ich weiß keinen rat mehr weiß einer
    Wo ein Fehler stecken könnte ?

    Code:
    $regfile = "m128def.dat"       'es handelt sich um einen ATmega128
    $framesize = 42
    $swstack = 32
    $hwstack = 32
    $crystal = 14745600       'Systemtakt 14.7456 MHZ
    
    Encoderled Alias Portb.0       'es wird auf beide Encoder der Radencoder
    Config Encoderled = Output       'zugegriffen
    
    Encoderleft Alias Pine.7
    Config Encoderleft = Input
    Encoderleft = 1
    
    Encoderright Alias Pine.6
    Config Encoderright = Input
    Encoderright = 1
    
    Motorleft Alias Portb.6       'Motor-PWM-Leitung-Links
    Config Motorleft = Output
    
    Motorright Alias Portb.5       'Motor-PWM-Leitung-Rechts
    Config Motorright = Output
    
    Motorenable Alias Portb.7       'Motorenable
    Config Motorenable = Output
    
    Encoderled = 0       'Die Encoder-Leds sind wieder über Ground Angeschlossen
    Motorenable = 0       'Motoren sind aus
    
    Declare Sub Moveatspeed(byval Sleft As Byte , Byval Sright As Byte)       'Stelt die Motor-PWM ein
    Declare Sub Encled(byval Status As Byte)       'schaltet die Encoder-Led bei 1 ein
    Declare Sub Intodometrie()       'konfiguriert die Encoder der Odmetrie
    Declare Sub Go(byval Speed As Byte , Byval Dis As Word)       'Roboter fährt eine bestimmte Strecke in cm
    Dim Encleft As Word       'der Zwischenspeicher für die Werte des linken Odometrie Encoders
    Dim Encright As Word       'der Zwischenspeicher für die Werte des rechten Odmetrie Encoders
    Dim Encoderenable As Byte       'nur wenn diese Varriable 1 werden die Odometrie-Encoder-Impulse gezählt
    Encoderenable = 1       'Die Odometrie-Encoder-Impulse werden im Grundzustand gezählt
    Call Intodometrie()
    Call Go(220 , 1000)
    Do
    
    
    
    
    Loop
    
    End
    
    
    Sub Encled(byval Status As Byte)       'Eigentlich unnötig aber der Vollständigkeit halber
    If Status = 1 Then
    Encoderled = 1
    Elseif Status = 0 Then
    Encoderled = 1
    End If
    
    End Sub
    
    
    Sub Intodometrie()       'Konfiguriert die Odometrie
    
    Encleft = 0       'Encleft wird zurückgesetzt
    Encright = 0       'Encright wird zurückgesetzt
    Encoderenable = 1       'die Odometrie-Encoder-Impulse können nun gezählt werden
    Call Encled(1)       'die Encoder-Leds werden eingeschaltet
    On Int7 Encoleft       'wenn ein Impuls vom linken Encoder kommt zu Encoleft springen
    On Int6 Encoright       'wenn ein Impuls vom rechten Encoder kommt zu Encoright springen
    Config Int7 = Falling       'springen wenn Ground ist
    Config Int6 = Falling       'springen wenn Ground ist
    Enable Int7       'Int7 freischalten
    Enable Int6       'Int6 freischalten
    Enable Interrupts       'Interrups aktivieren
    End Sub
    
    
    Sub Moveatspeed(byval Sleft As Byte , Byval Sright As Byte)       'Sub zur Regelung der Motorgeschwindikeiten
    
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1       'Timer 1 wird als zwei 8-Bit PWM Leitungen mit dem Prescaler 1 konfiguriert
    Start Timer1       'Timer 1 wird gestartet
    Motorenable = 1       'Motoren werden entsperrt
    
    Compare1a = Sright       'PMW-A entspricht der linken Geschwindikeit
    Compare1b = Sleft       'PWM-B entspricht der rechten Geschwindikeit
    
    End Sub
    
    Sub Go(byval Speed As Byte , Byval Dis As Byte)
    
    Local Strecke As Long
    Local Relencoder As Long
    Local Encodersp As Long
    Call Moveatspeed(speed , Speed)
    Encleft = 0
    Encright = 0
    
    Strecke = Dis / 12
    Strecke = Strecke * 6
    Strecke = Strecke * 2
    
    
    Do
    Relencoder = Encleft + Encright
    Relencoder = Relencoder / 2
    
    Loop Until Relencoder >= Strecke
    Call Moveatspeed(128 , 128)
    Waitms 10
    
    
    
    
    
    End Sub
    
    Encoleft: 'Interrupt-Rotine die ausgelöst wird wenn links ein Odometrie-Encoder-Impuls kommt
    If Encoderenable = 1 Then
    Encleft = Encleft + 1
    End If
    Return
    
    Encoright:       'Interrupt-Rotine die ausgelöst wird wenn rechts ein Odometrie-Encoder-Impuls kommt
    If Encoderenable = 1 Then
    Encright = Encright + 1
    End If
    Return
    Danke
    MfG Martinius

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

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

Labornetzteil AliExpress