Forum: Mikrocontroller und Digitale Elektronik PIC 16F84 Problem


von Michael Z. (michael_93)


Lesenswert?

Hallo

ich steuere mit meinem PIC einen Schrittmotor
ich habe ihn so programmiert, dass wenn man Taster1 gedrückthält der 
Motor links herum läuft und bei Taster2 rechts herum. Sobald man den 
jeweiligen Taster wieder loslässt hört der Motor auf sich zu drehen.

Mein Problem ist, dass nach dem ich ihn ein paar mal in beide Richtungen 
gedreht habe, gibt er geräusche von sich und ich kann ihn nur noch in 
die zuletzt verwendete richtung drehen

wo liegt mein problem?
ist es ein programmierfehler oder ist mein motor kaputt??

von glaskugel (Gast)


Lesenswert?

1. Schaltplan ???
2. Programm ???

von Joachim (Gast)


Lesenswert?

Aha, da ist er wieder.



1. Geruchstest.

2. Auch wenn er nicht nach Amp. stinkt bedeutet das gar nichts. Hänge 
ihn ab ud miß die Motorwicklungen mit einem Multimeter nach. Die 
Widerstandswerte müssen annähernd gleich sein, weder hochohmig, noch 
beinahe 0 Ohm.

3. Mir ist in früherer Yeit 3x der L297 Schrittmotortreiber 
kaputtgegangen... Ändere dein Programm so ab, daß du gaaanz langsam mit 
dem Multimeter an den Ausgängen der Treiberstufe die Schaltstufen 
mitverfolgen kannst.

4. Ich weiß jetzt nicht auswendig ob der 16F84 einen Watchdog hat. Aber 
das wird wohl eher nicht das Prob. sein. Und ohne Veröffentlichung 
deines Quellcodes kann dir eh niemand helfen (wiederladen des 
Timer-Registers zur Impulserzeugung vergessen? Interrupt-Flag 
zurückgesetzt?).

5. Bist du sicher, daß der PIC noch 100% funktioniert 
(Induktionsspannung...)? Kannste mit dem PIC wenigstens noch ne LED 
blinken lassen?



Joachim

von Michael Z. (michael_93)


Lesenswert?

also der PIC funktioniert noch einwandfrei ich habe andere programme 
getestet
hier ist mein programm:


main
  call  INIT      ;Beginne mit der Initialisierung des PICs


A0    btfss  Taster0
    goto  A1
    goto  Linkslauf
A1    btfss  Taster1
    goto  A0
    goto   Rechtslauf

    goto  A0

;********************************************************************
; Linkslauf bei gedrückter Taster0 Betätigung                    *
;********************************************************************

Linkslauf
L1    call  Phase1    ;Springe in Phase1
    btfss  Taster0
    return      ;springe zurück
    goto  L2    ;gehe zu L2

L2    call  Phase2    ;Springe in Phase2
    btfss  Taster0
    return      ;springe zurück
    goto  L3    ;gehe zu L3

L3    call  Phase3    ;Springe in Phase3
    btfss  Taster0
    return      ;springe zurück
    goto  L4    ;gehe zu L4

L4    call  Phase4    ;Springe in Phase4
    btfss  Taster0
    return      ;springe zurück
    goto  L1    ;gehe zu L1

;********************************************************************
;  Rechtslauf bei gedrückter Taster1 Betätigung                     *
;********************************************************************

Rechtslauf
R1    call  Phase2    ;Springe in Phase1
    btfss  Taster1
    return      ;springe zurück
    goto  R2    ;gehe zu R2

R2    call  Phase1    ;Springe in Phase2
    btfss  Taster1
    return      ;springe zurück
    goto  R3    ;gehe zu R3

R3    call  Phase4    ;Springe in Phase3
    btfss  Taster1
    return      ;springe zurück
    goto  R4    ;gehe zu R4

R4    call  Phase3    ;Springe in Phase4
    btfss  Taster1
    return      ;springe zurück
    goto  R1    ;gehe zu R1

;********************************************************************
;  Setze Phase 1                                                    *
;********************************************************************

Phase1     bcf    I11
    bcf    I12

    bsf    PH1
    call  delay

    bsf    I11
    bsf    I12

    return

;********************************************************************
;  Setze Phase 2                                                    *
;********************************************************************

Phase2     bcf    I11
    bcf    I12

    bsf    PH2
    call  delay

    bsf    I11
    bsf    I12

    return


;********************************************************************
;  Clear Phase 1                                                    *
;********************************************************************

Phase3     bcf    I11
    bcf    I12

    bcf    PH1
    call  delay

    bsf    I11
    bsf    I12

    return
;********************************************************************
;  Clear Phase 2                                                    *
;********************************************************************

Phase4     bcf    I11
    bcf    I12

    bcf    PH2
    call  delay

    bsf    I11
    bsf    I12

    return


;********************************************************************
;* ENDE                                                             *
;********************************************************************
    END         ;Ende

von Joachim (Gast)


Lesenswert?

Viele goto's drinne... aber meinetwegen. Ansonsten ist der Code ok 
(zumindest das was du veröffentlicht hast und ohne die Hardware zu 
kennen (weil immer noch kein Schaltplan dabei, gell?).

>gibt er geräusche von sich und ich kann ihn nur noch in
>die zuletzt verwendete richtung drehen
Wird der Motor in die andere Rchtung denn bestromt? Sprich: merkt man 
Vibrationen wenn man an den Motor langt oder die Welle festhält?


Wie gesagt, nimm einen Multimeter und kuck genau nach was die Ausgänge 
der Treiberstufe machen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.