mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM mit L293D funktioniert nur ohne Motor..


Autor: Toby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Ich habe schon erfolgreich nen Servo mit PWM gesteuert, aber jetzt habe 
ich hier einen DC-Motor, den ich auch gern in der Geschwindigkeit regeln 
möchte..

Habe dazu schon im Forum gesucht, und bin auf den Code unten gestossen. 
Diesen habe ich ein bisschen verändert.
Den PWM-Pin, also PB1 habe ich an den enable-Pin eines L293D 
angeschlossen,
dieser ist auch korrekt beschaltet.

Wenn ich nun eine LED an den Motor-Ausgang d. L293D anschliesse, blinkt 
sie , bei Taster1 wird sie ganz hell, und bei Taster2 geht sie ganz aus, 
so wie  geplant..Wenn ich nun den DC-Motor an den Ausgang hänge, läuft 
er die ganze Zeit, egal ob ich Taster drücke oder nicht, die gemessene 
Spannung ist hier immer 3V..??? (L293D mit 6V beschaltet)

Hier mein Code:
/* DC-Motor-Steuerung mit PWM, erster Test */
/* Tobias Weis 2008      */

#include <avr/io.h>
#include <util/delay.h>

main(){
  int x=0;
  /* Taster an PD0 und PD1 */
  DDRD=0x00;
  /* PullUps einschalten */
  PORTD=0xFF;
  
  /* Gesamter Port C als Ausgang */
  DDRC=0xFF;
  PORTC=0x00;
  
  /* Gesamter Port B als Ausgang */
  DDRB=0xFF;

  /* PWM-Einstellungen */
  TCCR1A |= (0<<COM1A0)|(1<<COM1A1)|(0<<COM1B0)|(1<<COM1B1)|(0<<FOC1A)|(0<<FOC1B)|(1<<WGM11)|(0<<WGM10);

  TCCR1B|=(0<<ICNC1)|(0<<ICES1)|(1<<WGM13)|(1<<WGM12)|(0<<CS12)|(0<<CS11)|(0<<CS10);

  ICR1H = 0xFF;
  ICR1L = 0xFF;

  // Kein Prescaler, Timer starten
  TCCR1B |= (1<<CS10);

  for(;;){
    if(!bit_is_set(PIND,0) && (bit_is_set(PIND,1))){
      OCR1A = 0xFFFF; // Volle 6V
    }

    if(!bit_is_set(PIND,1) && (bit_is_set(PIND,0))){
      OCR1A = 0x0000; // Aus
    }

    if(bit_is_set(PIND,0) && bit_is_set(PIND,1)){
      OCR1A = 0x7FFF; // Hälfte
    }
  } //for
  return 0;
} //main

Autor: Toby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass die Frequenz der PWM nicht stimmt? Ist sie evt. zu 
langsam??
Wie gesagt, mit der LED funktioniert es einwandfrei, sobald ich einen 
Motor dranhänge dreht sich das Teil aber einfach die ganze Zeit, egal ob 
ich PWM ein oder ausschalte...
Ich habe echt null ahnung, woran das liegen könnte..

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.