-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: Zwei Getriebemotoren ansteuern

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357

    Zwei Getriebemotoren ansteuern

    Anzeige

    Ich möchte zwei Getriebemotoren (die an nem Motortreiber hängen) mit Bascom ansteuern.

    Ich brauche für jeden Motor 3 Pins.
    Um meine Hardware so modular wie möglich zu halten, möchte ich die Motoranschlüsse an alle möglichen Pins hängen können. D.h. ich brauche eine Software-PWM, oder?

    Leider kann ich mir das noch nicht so genau vorstellen, wie das dann als Code aussieht....

    Ich hätte dann zum Beispiel oBdA einen der Motoren an PA0, PA1 und PA2 hängen...

    Sagen wir über PA2 soll die PWM laufen. Wie ich die Drehrichtung über die anderen beiden Ports einstelle ist klar.

    Hat jemand ein Stückchen Code, das er mir für diesen Zweck geben kann? Oder einen Tipp, wie ich am besten das PWM Signal softwareseitig erzeuge und über einen beliebigen, von mir gewählten Port rausschicke?
    Unwissenheit ist ein Segen

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    29
    Beiträge
    1.099
    hallo

    hier ein code ist zwar allerdings für das RNVN2 gedacht aber macht ja nix ist das gleiche prinzip.


    Code:
    $regfile = "m8def.dat"
    $crystal = 7372800
    $baud = 9600
    $hwstack = 34
    $framesize = 34
    $swstack = 34
    
    Dim A As Word
    Dim B As Word
    
    
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8         'Pwm deklarieren
    
    Config Pinb.1 = Output                                        'Pins aufwählen
    Motor1_pwm Alias Portb.1
    Config Pind.4 = Output
    Motor1_in1 Alias Portd.4
    Config Pind.5 = Output
    Motor1_in2 Alias Portd.5
    
    
    Do
    
    
     Motor1_in1 = 1                                             'links
     Motor1_in2 = 0
    
    For A = 0 To 255
     Pwm1a = A
     Waitms 120
     Next A
    
     Motor1_in1 = 0
     Motor1_in2 = 1                                             'rechts
    
    For A = 125 To 255
     Pwm1a = A
     Waitms 220
     Next A
    
    
    Loop
    End

    der Code ist auch bei Download zu finden.


    das wichtigste ist eigentlich

    Pwm1a = 155 (wenn du das direkt machen willst oder wie oben geziegt dann fährt er beim ersten von 0V bis 12Votln und beim zweiten von 6V bis 12 Volt ist eigentlich gar nicht so schwer.)


    gruß
    patrick

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357
    Ok, das mit dem Pwm1a ist klar. So oder so ähnlich habe ich es auch schon gefunden.

    Aber wo deklariere ich da, über welchen Port ich das PWM Signal rausgebe? Übersehe ich das? Im Quelltext sage ich ja nur "Pwm1a = A"... Aber wo sage ich, über welchen Port/Pin?
    Unwissenheit ist ein Segen

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357
    Ich benutze übrigens einen ATMega32. Ich glaube das habe ich ganz vergessen zu erwähnen Aber ich glaube das ist für diese Fragestellung nicht ganz so wichtig.
    Unwissenheit ist ein Segen

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    29
    Beiträge
    1.099
    hallo

    ganz so wichitg ist das nicht(wenn man es berrücktsicht) es ändern sich nur die Pins, beim Atmega8 ist das PB1(OC1a) und PB2(OC1b) werden dort für die Pwm benutzt.

    Beim Atmega32 sind das die Pins PD.4 und PD.5 die für die PWM zunutzen sind.

    habe auch vergessen oben im Code steuerst du auch nur einen Motor nicht zwei.

    Pwm1a ist schon gesagt wo das PWM raus geht, genauso wie Pwm1b allerdings schreibe ich oben auch, das dieser Pinb.1(oder Pinb.2) = Output ist und nicht Input sonst wird es nicht funktionieren und du sucht dann den Fehler. Das is eigentlich schon die Dekleration dafür.


    Code:
    Config ------ Pinb.1----    = Output                                        'Pins aufwählen
    Motor1_pwm Alias ----- Portb.1-------
    Config  ----- Pind.4-----    = Output
    Motor1_in1 Alias   ------ Portd.4 -------
    Config       ------- Pind.5---------      = Output
    Motor1_in2 Alias    ----------- Portd.5----------
    habe die die Ports und Pins in der Deklaration mit ---------xxx---------makiert damit es einfacher wird.


    hoffe das du das so verstehst.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357
    Vielleicht habe ich mich falsch ausgedrückt... Ich will ja gerade nicht die Pins benutzen, die beim ATMega32 für PWM vorgesehen sind, daher wollte ich ja ein Software-PWM Signal haben, das ich dann über jeden beliebigen Pin ausgeben kann!
    Unwissenheit ist ein Segen

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    29
    Beiträge
    1.099
    das musste dann ausprobieren ob das klappt das kann ich dir nicht beantworten habe bis jetzt nur die vorgesehenen Pins benutzt.

    wenn es klappt kannste ja mal ausprobieren.

    gruß
    patrick

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357
    Hmm, ich wollte halt vorher wissen, ob / wie es geht, da ich sonst meine Kabel anders löten müsste.

    Der ATMega32 hat vier Pins, die für PWN Output vorgesehen sind.... (D4, D5, D7 und B3).

    Ich wollte gerne andere Pins benutzen, da ich mein Board so modular wie möglich halten möchte...
    Unwissenheit ist ein Segen

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    29
    Beiträge
    1.099
    jop das kann ich dir halt leider nicht genau ssagen ob es geht.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357
    Hmm, ich dachte mir, ob ich vielleicht, dass ich es über die Servo-Schnittstelle von Bascom machen kann...

    Config Servos = 1 , Servo1 = Porta.0 , Reload = 10

    und dann mit Servo(x) und waitms ein Signal erzeugen...

    Geht das nicht? Ein Servo arbeitet doch auch mit einem PWM Signal. Und bei dem Servo Befehl in Bascom kann ich ja auch den Output Pin exakt definieren..
    Unwissenheit ist ein Segen

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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