-         

Ergebnis 1 bis 6 von 6

Thema: Atmega 32 - 4 Motoren mittels Software PWM

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    18.07.2007
    Ort
    Düsseldorf
    Beiträge
    14

    Atmega 32 - 4 Motoren mittels Software PWM

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Liebe Mitglieder des Forums,

    ich wende mich mit ein paar Fragen an Euch, da ich nicht weiß ob meine Idee mit einem Mega32 so überhaupt durchführbar ist.
    Es soll ein mobiler Robot gebaut werden, der mit Ultraschall- und Näherungssensoren ausgestattet ist. Der Antrieb soll über 4 DC-Getriebemotoren geschehen, ähnlich wie bei einem Fußball Robot mit Omniwheels.
    Ich möchte bereits vorhandene Bauteile und Motoren verwenden um die Baukosten gering zu halten.
    Jetzt zu meinem ersten Problem:
    Die Motoren sollen über einen Atmega32 mittels PWM gesteuert werden. Die Sensoren sollen irgendwann einmal über ein zweites Atmega32 Board mittels I2C mit dem ersten Atmega32 Board kommunizieren.
    Für meinen jetzigen Bedarf würde es reichen 4 Motoren mit einem Atmega32 per PWM zu steuern und zusätzlich noch einen Ultraschall Sensor abzufragen.
    Da der mega32 nicht genug Hardware PWM Ausgänge hat, habe ich daran gedacht, diese Aufgabe über Software PWM zu realisieren. Leider habe ich keinen Ahnung wie ich das Problem angehen soll. Ich wäre dankbar, wenn mir mal jemand auf die Sprünge helfen könnte bzw. einen solchen Code Schnipsel in Bascom zukommen lassen könnte.
    Früher habe ich einige kleinere Projekte in Assembler programmiert, glaube aber, daß der Aufwand in Assembler für dieses Projekt zu groß ist. Ich möchte die Programmierung vorerst in Bascom vornehmen, muß also Bascom erst noch lernen.
    Vielen Dank für jeden Input
    Gunni

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.254
    Hallo gunni7909,

    schau mal ins Datenblatt, der Mega32 hat 4 Hardware-PWM-Kanäle.
    Brauchst du jetzt noch einen Code-Schnipsel für SW-PWM?

    Gruß, Michael

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    18.07.2007
    Ort
    Düsseldorf
    Beiträge
    14
    Hallo,
    wenn ich das Datenblatt richtig verstanden habe, hat der mega32 zwar 4 Hardware PWM, dann ist aber kein Timer mehr für andere Aufgaben verfügbar. Einen Timer für die Sensoren hätte ich gerne frei.
    Das ist ja der Grund, warum ich auf SW PWM ausweichen wollte.
    Also für eine SW Lösung wäre ich schon dankbar.
    Viele Grüße
    Gunni7909

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.254
    Hallo gunni7909,

    Einen Timer für die Sensoren hätte ich gerne frei.
    ich würde dazu keinen Timerinterrupt verwenden.
    US-Sensoren liest man z.B. mit einem Pin-Change Interrupt aus. (Int0 oder Int1)

    Also für eine SW Lösung wäre ich schon dankbar.
    das wäre eine Variante:
    Code:
    $crystal = 16000000
    $regfile = "m8def.dat"
    
    Ddrc.0 = 1
    Ddrc.1 = 1
    
    
    Dim Bla As Byte
    Dim Pwma As Byte
    Dim Pwmb As Byte
    Pwmb = 10
    Pwma = 127
    Do
    Bla = Bla + 1
    If Bla > Pwma Then
    Portc.0 = 1
    Else
    Portc.0 = 0
    End If
    
    If Bla > Pwmb Then
    Portc.1 = 1
    Else
    Portc.1 = 0
    End If
    
    
    Loop
    End
    Gruß, Michael

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    18.07.2007
    Ort
    Düsseldorf
    Beiträge
    14
    Hallo Michael,
    vorerst danke für Deine Antwort.
    Ich werde die SW Lösung mal ausprobieren. Zur Abfrage der US Sensoren:
    Ich stelle mir vor, daß ich aus der Sensorabfrage einen analogen oder digitalen Wert erhalte, der der Entfernung proportional ist. Wie soll ich da den Pin Change Int nutzen ? Ich muß doch den US in gewissen Zeitabständen abfragen und dann das Ergebnis an den Prozessor weiter leiten bzw verarbeiten.
    Viele Grüße
    gunni7909

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.254
    Hallo gunni7909,

    Es gibt verschiedene US-Sensoren. Neuere haben z.B. einen I2C-Bus, ältere geben vielleicht nur einen Puls aus. Der SRF04 ist so einer:
    http://www.roboter-teile.de/datasheets/srf04.pdf
    Du mißt dann z.B. nur die Pulslänge zwischen der Low-High-Flanke und der High-Low Flanke und hast die Entfernung.

    Gruß, Michael

Berechtigungen

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