www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM für Schrittmotorsteuerung


Autor: Alexander L. (yelram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo liebe Gemeinde!

Ich bin Anfänger im Programmieren von µC und brauche Hilfe. Zu machen 
habe ich ein Programm welches mir einen Schrittmotor über eine PWM 
steuert. Der Motor soll sozusagen über eine Rampe anfahren.
µC = PIC 18f4525 mit 40Mhz.

Was ich aus dem Datenblatt und dem Forum rauslesen konnte, benötigt die 
PWM den Timer2. Getestet wird das ganze an der LED des RC2 Pins an 
meinem Test Board. Im Moment ist es leider so, dass die LED entweder 
ständig auf "1" oder ständig auf "0" ist, was nicht meinen Vorstellungen 
entspricht.

Ziel wäre es:
blinkender Zustand -> einige Sec. auf "1" -> blinkender Zustand -> LED 
aus.

Der folgende Code ist mit Hilfe des Datenblattes und den Infos aus 
diesem Forum erstellt worden, hat aber sicher noch unzählige Fehler in 
sich, da ich noch nicht so geübt darin bin.

void initalizePWM()
{
  //Port Einstellungen
    TRISC=0x00;             //PORTC als Ausgang definieren
    PORTC=0x00;             //PORTC Inhalt löschen

  //CCP/PWM Modul Einstellungen
    CCP1CON=1;              //jede steigende Flanke
    PR2=0xFF;               //max. Periode (0-255 bei Timer2) 8 Bit
    PWM1CON=0x2F;
    CCPR1L=128;             //CCPR1L/CCPR1H=Duty Cylce???

  //Timer 2 Einstellungen
    T2CONbits.T2CKPS1=1;     //Timer 2 prescaler:
    T2CONbits.T2CKPS0=1;
//  T2CONbits.TOUTPS3=1;     //Timer 2 postscaler:
//  T2CONbits.TOUTPS2=1;
//  T2CONbits.TOUTPS1=1;
//  T2CONbits.TOUTPS0=1;
    PORTC=0x04;
    T2CONbits.TMR2ON=1;      //Timer 2 an

}

void main()
{
}

Wenn mir jemand helfen kann, ich würde mich über hilfreiche Kommentare 
freuen.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht übersehe ich ja auch was.
Aber ich wüsste nicht wirklich, was jetzt ein Schrittmotor mit PWM zu 
tun hat.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alexander L. schrieb:
> habe ich ein Programm welches mir einen Schrittmotor über eine PWM
> steuert. Der Motor soll sozusagen über eine Rampe anfahren.

Ein Schrittmotor wird z.B. so angesteuert:

Timerinterrupt:
  static int phase =0;
  if(phase == 0)
    Phase 1;
  if(phase == 1)
    Phase 2;
  if(phase == 2)
    Phase 3;
  if(phase == 3)
    Phase 4;

  phase++;
  if(phase == 4)
    phase=0;
Ende

Je schneller du den Interrupt wiederholen lästt, umso schneller dreht 
der Schrittmotor. Hat erst mal nix mit PWM zu tun.
:-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.