-         

Ergebnis 1 bis 4 von 4

Thema: ATtiny13 Problem mit PWM

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    16.04.2011
    Beiträge
    15

    ATtiny13 Problem mit PWM

    Anzeige

    Hallo,

    mit dem ATtiny13 erzeuge ich ein PWM Signal, welches über einen L293D die Leistung von Motoren regelt.
    Ist ein NXT Motor angeschlossen spinnt das PWM- Signal. Mal läuft der Motor schneller, dann langsam und ziemlich schnell erst mal gar nicht mehr. Ohne den ATtiny13, also ohne PWM, läuft der Motor ohne Probleme mit voller Leistung. Habe ich einen Motor mit geringerer Leistung angeschlossen scheint die PWM zu funktionieren.
    Ist in meinem Quellcode evtl. ein Fehler oder weiß jemand woher das kommen könnte?

    Code:
    $regfile = "attiny13.dat"                                 
    $crystal = 1200000
    $hwstack = 10
    
    Config Portb.0 = Output                                     'PWM M1
    Config Portb.1 = Output                                     'PWM M2
    Config Portb.3 = Input                                       'Poti M1
    Config Portb.4 = Input                                       'Poti M2
    
    Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc
    
    Dim Analog_m1 As Integer                                    
    Dim Analog_m2 As Integer
    
    Do
     'M1
     Analog_m1 = Getadc(3) 
                                        
     Select Case Analog_m1
      Case 0 To 200:
       Pwm0a = 140
      Case 201 To 400:
       Pwm0a = 100
      Case 401 To 600:
       Pwm0a = 60
      Case 601 To 800:
       Pwm0a = 40
      Case 801 To 900:
       Pwm0a = 20
      Case 901 To 1023:
       Pwm0a = 0
     End Select
    
     'M2 
     Analog_m2 = Getadc(2)        
                                
     Select Case Analog_m2
      Case 0 To 200:
       Pwm0b = 140
      Case 201 To 400:
       Pwm0b = 100
      Case 401 To 600:
       Pwm0b = 60
      Case 601 To 800:
       Pwm0b = 40
      Case 801 To 900:
       Pwm0b = 20
      Case 901 To 1023:
       Pwm0b = 0
     End Select
    
    Loop
    End
    Gruß
    stefan8010

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Am Programm wird der Fehler eher nicht liegen. Da es vom Motor abhängt, spricht das mehr dafür, dass mit dem stärkeren Motor irgendwie Störungen erzeugt werden. Ein paar Mögliche Fehlerursachen:
    1) die Versorgungsspannung bricht ein und der µC startet gelegentlich neu
    2) die Reset Leitung (vom ISP) fängt sich Störungen ein
    3) die AD Eingänge werden gestört

    Als Test könnte man an den einen noch freien Pin ggf. einen LED hängen. Am Anfang des Programms dann ein kurzes Blinken der LED einfügen, bevor der Motor startet. Ggf. reicht auch schon eine deutlich Verzögerung am Anfang des Programms um einen Reset festzustellen.

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.557
    Hi Stefan,

    wie hast Du den Motor versorgt? Ist die Motorversorgung (Netzteil, Batterie/Akkupack) die gleiche für Motor und Controller? Dann dürfte es ziemlich klar sein, dass Unterspannung bzw. Störungen beim Motorbetrieb der Grund für das "Spinnen" ist. Übliche, ziemlich störungsfreie Systeme haben für Controller und Verwandte eine von den übichen Verdächtigen wie Motoren, Servos etc. getrennte Versorgung. Dabei muss aber der GND aller Systeme auf eine gemeinsame Leitung gehen!

    Den Vorschlag von Besserwessi kann ich nur unterstützen. Ich habe prinzipiell in meinen Programmen sofort nach der Portdefinition eine kleine Blinkroutine eingefügt, die etliche kurze Blitze an einer Kontroll-LED generiert, bevor ich Timer definiere und Interrupts freigebe. Damit erkenne ich ziemlich sicher zufällige Interrupts.

    Viel Erfolg
    Ciao sagt der JoeamBerg

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    16.04.2011
    Beiträge
    15
    Hallo,

    Ist die Motorversorgung (Netzteil, Batterie/Akkupack) die gleiche für Motor und Controller?
    Ja. Habe die jetzt getrennt und alles funktioniert. Danke!

    Gruß
    stefan8010

Ähnliche Themen

  1. Attiny13 PWM problem
    Von qubico im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 28.08.2010, 22:09
  2. Pullup Problem ATTINY13
    Von chw-load im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 17.05.2009, 16:31
  3. attiny13 problem
    Von Bauteiltöter im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 25.07.2008, 15:04
  4. attiny13
    Von epos im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 28.05.2007, 13:31
  5. [gelöst]Problem mit Interrupt Attiny13
    Von OEP im Forum Assembler-Programmierung
    Antworten: 2
    Letzter Beitrag: 19.04.2007, 09:47

Berechtigungen

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