- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 41

Thema: Bascom: Schrittmotorsteuerung mit Drehencoder?

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    02.04.2009
    Beiträge
    78

    Bascom: Schrittmotorsteuerung mit Drehencoder?

    Hallo Leute ich hab mal wieder eine Frage, bin lausiger Programmier-Anfänger:

    Ich will einen Schrittmotor steuern, der 48 S/U hat und per A3967 getrieben wird, also mit Enable, Dir und Step. Die Hardware steht und funktioniert, hab ein kl. Testprogramm damit laufen.
    Code:
      ' Stepper_test1.bas - Testprogramm  für A3967 Platine mit Dir Step und Enable
    
    $regfile = "attiny2313.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 8000000                                          'Quarzfrequenz
    $baud = 9600
    
    
    
    Declare Sub Key_pressed
    Dim I As Long
    Config Timer1 = Timer , Prescale = 1
    Enable Timer1
    Timsk.toie1 = 1
    Dim Timer1_reload As Word
    Portd.4 = 1                                                 ' Pullup Widerstand ein   für Enable - ****Enable =0 bedeutet Motor On!!!!  ****
    Enable Interrupts
    
    Config Pind.2 = Output
    Stepper_takt Alias Portd.2
    
    Config Pind.4 = Output
       Stepper_enable Alias Portd.4
       Portd.4 = 0                                              'sprich Motor ON
    
    On Timer1 Isr_timer1
    
     ' Step/Takt auf PD.2 / Taster auf PD.3 / Enable auf PD4 / Richtung auf PD5 /
    
               '***********Hauptschleife:**********
    
    Do
    
    
    
    Loop
    
    End
    
    
    
    Isr_timer1:
       Timer1_reload = 45536                                    ' Vorgabe für 400 / sec
       Timer1 = Timer1_reload
       Toggle Stepper_takt
    Return

    Der Schrittmotor soll nun aber mittels eines Drehencoders langsamer und schneller gemacht werden, die Routine hab ich aus dem Hoffmann-Buch.

    Code:
    '-----Deklarationen fuer Drehimpulsgeber:
    Config Portd.0 = Input : Encoder_a Alias Pind.0             'Encoder Signal B  an Pin 2
    Config Portd.1 = Input : Encoder_b Alias Pind.1             'Encoder Signal A  an Pin 3
    Config Pind.3 = Input : Taster1 Alias Pind.3
    
    Pind.0 = 1                                                  'Pullups für den Drehencoder
    Pind.1 = 1
    Pind.3 = 1
                                                                'LED-Outputs:
    Config Portd.2 = Output : Portd.2 = 0                       'das ist Pin 6   alles mit Pulldown
    Config Portd.5 = Output : Portd.5 = 0                       ' Pin 9
    Config Portb.4 = Output : Portb.4 = 0                       ' Pin 16
    Led_gelb Alias Portd.2
    Led_gruen Alias Portd.5
    Led_rot Alias Portb.4
    
    ' BASCOM-Programm
    ' Stefan Hoffmann 2009
    ' Drehimpulsgeber/Encoder     mit ENCODER-Befehl
    '
    ' In: Drehimpulsgeber an d.0 und d.1 sowie Taster
    
    Dim Wert As Word
    Wert = 100
    Dim Zustand As Byte
    
    Do
    Zustand = Encoder(pind.0 , Pind.1 , Linksroutine , Rechtsroutine , 1)
    
       If Wert > 100 Then Led_rot = 1
    
       If Wert < 100 Then Led_gruen = 1
    
       If Taster1 = 0 Then Led_gelb = 1
                                              'Zu Testzwecken
    Loop
    End
    
    Linksroutine:
    Decr Wert
    Return
    
    Rechtsroutine:
    Incr Wert
    Return
    Ich schnall einfach nicht, wie ich diese Routine mit einer Timer-Takterzeugung verheiraten kann. Der Takt ist doch konstant, und die Encoder-Routine braucht das doch als Variable, oder?

    Habt ihr eine Idee, wie man so was lösen kann?

    Vielen Dank für Anregungen!

    MM08

    (PS: - ich hatte schon einen anderen Code in Arbeit - s. Link und wieder verworfen, weil ich da schließlich vor dem gleichen Problem stand und kein Takt rauskam. Jetzt will ich das Ganze mal abspecken und klein und möglichst einfach wieder anfangen.)
    Geändert von MrMiffy08 (13.10.2012 um 12:47 Uhr)

Ähnliche Themen

  1. Schrittmotorsteuerung LB1845 und atmega48 in BASCOM
    Von chris155 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 09.05.2010, 18:41
  2. Wie Drehencoder anschließen ?
    Von Blamaster im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 07.09.2009, 19:01
  3. Menüsteuerung mit Drehencoder ?
    Von Blamaster im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 25
    Letzter Beitrag: 30.06.2009, 22:34
  4. Drehencoder auswerten
    Von MartinFunk im Forum C - Programmierung (GCC u.a.)
    Antworten: 11
    Letzter Beitrag: 16.05.2007, 16:05
  5. Drehencoder Panasonic
    Von Mr-400-Volt im Forum Software, Algorithmen und KI
    Antworten: 0
    Letzter Beitrag: 04.02.2007, 20:47

Berechtigungen

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

Labornetzteil AliExpress