-
        

Ergebnis 1 bis 8 von 8

Thema: Schrittmotor mit ATmega8 und Assembler

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.03.2005
    Beiträge
    199

    Schrittmotor mit ATmega8 und Assembler

    Anzeige

    Hallo.Kann mir jemand helfen.Wie kann ich Impulse für einen unipolares Schrittmotor mit Assembler programmieren.
    Danke
    Gruß Michi

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.08.2004
    Ort
    484..
    Alter
    27
    Beiträge
    339
    Hi,
    das kommt ganz darauf an, welche Elektronik du für die Ansteuerung verwendest, Das häufigste sind wohl L293 oder L297/L298. Einen Schrittmotor direkt an den µC anzuschließen ist normalerweise nicht möglich, weil der µC es nicht schafft das zu schalten.
    Am bequemsten ist die Ansteuerung mit L297/L298. Da muss man dur einige Pins setzen und immer wieder einen kurten Impuls auf die Steuerleitung setzen.
    Etwas schwieriger ist es bei der L293 Schaltung. Da muss man immer in bestimmten Zyklen ganze Steuerbytes senden.
    Interessantes dazu findest du auch hier.

    *********
    MFG
    ProgDom
    * human knowledge belongs to the world *

    www.domspage.de - Robotik - TobiSAt8

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.03.2005
    Beiträge
    199
    Ich mache das eigentlich etweder mit vier Transistoren oder mit ULN2803.
    Mit Bascom habe ich das schon gemacht. Ich will es halt mal mit Assembler versuchen. Am Steuerstromkreis wird mein uC angeschlossen und damit schalte ich den Hauptstromkreis in dem ein Schrittmotor angeschlossen ist.
    Danke für den Link.
    Gruß Michi.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.08.2004
    Ort
    484..
    Alter
    27
    Beiträge
    339
    Kannst du denn schon Assembler programmieren ?
    Denn Assembler muss man genauso lernen wie C++ oder ähnliche Programmiersprachen. Einfach so ein Quellcode hilft selten.
    Es gibt gut Assemblertutorials die du über die Suche oder unter dem Linksverzeichnis findest.
    * human knowledge belongs to the world *

    www.domspage.de - Robotik - TobiSAt8

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.03.2005
    Beiträge
    199
    Ich bin dabei es zu erlernen.
    gruß Michi

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.05.2005
    Ort
    Chemnitz
    Alter
    28
    Beiträge
    104
    Du musst dein Port als erstes als Ausgang konfigurieren. Dazu fuellst du das entsprechende DataDirectionRegister (DDR) mit 0xFF (fuer PortA z.B.: ldi DDRA, 0xFF). Dann brauchst du noch eine Prozedur, welche eine bestimmte Zeitspanne abwartet, z.B. mit Timer/Counter0. Wie man den einstellt ist im Datenblatt beschrieben. Dann laedst du in einer Schleife das entsprechende Port Register (z.B.: PortA) mit den folgenden Werten:

    richtunga: ldi motor, 0x09
    out PORTA, motor
    call warte
    ldi motor, 0x0A
    out PORTA, motor
    call warte
    ldi motor, 0x06
    out PORTA, motor
    call warte
    ldi motor, 0x05
    out PORTA, motor
    call warte
    jmp richtunga

    "motor" ist nur ein Hilfsregister. Die Werte kann man sich ableiten, wenn man weiß wie die Motoren funktionieren. Das ist ja in dem oben genannten Link erklaert. Fuer eine andere Drehrichtung einfach die Werte in der entgegengesetzten Reihenfolge ausgeben (0x05, 0x06, 0x0a, 0x09).

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.03.2005
    Beiträge
    199
    funktion warte hast du aber schon vordifiniert oder? und richtunga?
    gruß Michi.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.05.2005
    Ort
    Chemnitz
    Alter
    28
    Beiträge
    104
    Ich hab jetzt nur das Stueck aus meinem Programm kopiert, was unmittelbar zeigt wies funktioniert. Die Funktion "warte" ist natuerlich definiert und liegt am Ende meines Programms. "richtunga" ist nur ein label, da ist egal wies heißt, bei mir eben richtung a, weils noch richtungb (eben die andere) gibt. Wenn dus umbenennst muss natuerlich der name auch noch nach "jmp" stehen. Durch einen Interrupt kann man die Schleife verlassen, sonst muesste man nochwas einbauen.

Berechtigungen

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