- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 41

Thema: Bascom: Schrittmotorsteuerung mit Drehencoder?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.01.2007
    Ort
    westliches Pannonien
    Beiträge
    123
    Ja, Super! Ihr seid klasse!

    Mein 2.0.7.3 macht den Code so geändert jetzt auch!

    Vielen, vielen Dank!

    Wie schön, dass hier so viele hilfreiche Leute am Werk sind, die ihr Wissen mit anderen teilen.....


    Diese Antwort in dem anderen Faden läßt allerdings den Schluß zu,
    daß das Problem erledigt ist, oder?

    MfG

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    02.04.2009
    Beiträge
    78
    Hallo zusammen,
    @HeXPloreR - danke für den Hinweis mit Port und Pin, das half schon mal weiter. DIe mit : getrennten Anweisungen hatte ich mal irgendwo gesehen und sofort falsch zur Regel erklärt. Ich gewöhn mir das sofort wieder ab!

    Ja, den Encoder nutze ich wie im Buch - mit der Änderung dass die Kontakte jeweils noch 100nF gegen GND als Entprellung bekommen haben. UNd Pullups sind im zweiten Code drin, ich benutze den eingebauten Taster auch, ebenfalls mit Pullup, die schalten ja alle gegen GND.

    @Rone -
    (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.)
    ist ja schon eine Weile her; das "erledigt" bezog sich auf die unklare Fehlermeldung des Compilers, die dann endlich weg war. Die grundsätzliche Problematik die sich danach stellte war, dass keine sinnvolle Funktion dabei herauskam. Ich mach dazu noch mal einen abschließenden Beitrag in dem anderen Thread.

    Was hier jetzt übrig ist, ist dass die beiden Teilcodes funktionieren, aber ich noch keine Ahnung habe wie ich den Drehencoder Code mit dem Rest so verknüpfe dass der Takt für den Schrittmotor im ersten Teil sich dadurch regeln läßt. Dazu eine Idee? Ich bin mit Variablen &Co nicht sehr erfahren, was man da so anstellen kann.

    Vielen Dank für weitere Hilfe!
    Geändert von MrMiffy08 (14.10.2012 um 11:06 Uhr)

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.07.2009
    Beiträge
    405
    Ich habe mal ein Board geroutet da hat es mit den Kondensatoren am Encoder nicht geklappt - ohne dann schon.
    Meine Idee war das im encoder Befehl ein entprellen schon integriert ist?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    02.04.2009
    Beiträge
    78
    Hallo dussel,

    das wäre schön und würde zwei Teile einsparen. Ich habe den selben Encoder (ALPS STEC12E) mit und ohne 100nF ausprobiert, beides hat die gleiche Wirkung. Ich versuche morgen mal das dezidiert zu beschreiben.

    Wichtiger wäre mir allerdings die Problematik der "Verheiratung" der beiden Code-Stücke zu etwas sinnvollem. Dazu jmd Anregungen?

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Soltau - Niedersachsen
    Alter
    46
    Beiträge
    1.369
    Wie wäre es denn wenn Du die Codestücke ordnest - also die Teile der Encoderabfrage dort hin schreibst wo zum beispiel die Ports und Subs definiert/deklariert werden...deine Encoderabfrage mit in die do loop der (leeren) Hauptschleife kopieren oder ausschneiden. Die do loop vom encoder vorher im einzelprogramm kann man komplett auskommentieren ( '( ...auskommentierter codetext... ') oder normal mit ' ) oder entfernen. Die Subs bleiben wo sie sind.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    02.04.2009
    Beiträge
    78
    Ok, ich versuch's mal.


    Code:
      ' Testprogramm  für A3967 Platine mit Dir Step und Enable
    
    $regfile = "attiny2313.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 8000000                                          'Quarzfrequenz
    $baud = 9600
    
    
    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
    
                    ' Inputs: Drehimpulsgeber an d.0 und d.1 sowie Taster an d.3
    '-----Deklarationen fuer Drehimpulsgeber:
    Config Pind.0 = Input 
        Encoder_a Alias Pind.0             'Encoder Signal B  an Pin 2
    Config Pind.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 stellvertretend für Step, Dir, Enable
                    ' In der endgültigen Hardware liegen: Step/Takt auf PD.2 / Taster auf PD.3 / Enable auf PD4 / Richtung auf PD5 /
    Config Portd.2 = Output 
        Portd.2 = 0                       'das ist Pin 6   - alles mit Pulldown   -  steht für Step/Takt
    Config Portd.5 = Output 
        Portd.5 = 0               ' Pin 9  - der hier steht für Dir
    Config Portb.4 = Output 
        Portb.4 = 0                       ' Pin 16   -  diese Led steht für Enable
    
    Led_gelb Alias Portd.2
    Led_gruen Alias Portd.5
    Led_rot Alias Portb.4
    
    
    On Timer1 Isr_timer1        'Deklaration der Timerroutine
                    
        
    Dim Wert As Word
    Wert = 100                          'willkürlich gewählter Startwert
    Dim Zustand As Byte
    
           '***********Hauptschleife:**********
    Do
    
    Zustand = Encoder(Pind.0 , Pind.1 , Linksroutine , Rechtsroutine , 0)
    
       If Wert > 100 Then Led_rot = 1
    
       If Wert < 100 Then Led_gruen = 1
    
    Loop
    
    End
    
    
    Isr_timer1:
       Timer1_reload = 45536                                    'Vorgabe für 400 / sec
       Timer1 = Timer1_reload
       Toggle Led_gelb        '= Stepper_takt
    Return
    
    
    Linksroutine:
    Decr Wert
    Return
    
    Rechtsroutine:
    Incr Wert
    Return
    So, und beim Starten dieses Codes leuchtet zunächst die gelbe Led (ist klar, Timer1), und beim Drehen je eine Raste leuchtet grün und in die andere rot, gehen aber nicht wieder aus. Dies jeweils egal mit Encoder mit 100nF gegen GND oder ohne und ebenso mit dem Pollin-Drehencoder ohne Kondensatoren, der hier schon mehrfach angesprochen wurde und der mehr oder weniger Ärger macht.
    Ich habe an der Encoder-Routine mal hinten die 1 auf 0 geändert, weil ich ja das Prog ja weiter laufen lassen will. Mit 1 stoppt es hier wohl.

    Wie bekomme ich es hin dass rot und grün wieder ausgehen?
    Uind eben das Grundproblem - wie bekomme ich schnelleren/langsameren Takt an D2/Led_Gelb aufgrund Links/Rechtsdrehung hin?

    Vielen Dank für Eure Anregungen!
    Geändert von MrMiffy08 (16.10.2012 um 22:19 Uhr) Grund: paar Fehlerchen

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von HeXPloreR
    Registriert seit
    08.07.2008
    Ort
    Soltau - Niedersachsen
    Alter
    46
    Beiträge
    1.369
    die LEDs gehen nicht aus weil Du sie nur einschaltest wenn > oder < ... einfach noch ne bedingung mit dazu schreiben die ausschaltet wenn > oder < jeweils dazu. leider wenig zeit grade...

    EDIT: Kann es sein, das unter jedes IF auch ein END IF muss?
    Geändert von HeXPloreR (17.10.2012 um 16: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
  •  

12V Akku bauen