- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: 4x DC Motoren über 2x L293D per PWM ansteuern

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72

    4x DC Motoren über 2x L293D per PWM ansteuern

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich habe hier ein Entwicklerboard mit einem Atmega644 und 20 MHz, verbunden mit 2x L293D mit denen ich 4x kleine DC Motoren ansteuern möchte.

    Ich habe leider das Problem, dass ich mit der PWM nicht weiter komme. Ich füge hier den Code an, vielleicht kann mir jmd. helfen:


    Code:
    Hallo,
    
    leider startet mein Atmega644 nach dem Print "Ctrl v.0.1" immer wieder 
    neu...
    
    Ich möchte 4 DC Motoren in der Richtung und über 4x PWM in der 
    Geschwindigkeit regeln - aber da stimmt was nicht!
    
    
    '################################################################
    '
    ' Control  v. 0.1
    ' -------------------------------------
    '
    ' Stand: 21.02.2013, ATmega644
    '
    '
    
    '################################################################
    
    
    
    '--------------------------------------------------------------------------
    ' Compilerinstruktionen und Compilerdirektiven
    '--------------------------------------------------------------------------
    
    $regfile = "m644def.dat"
    $crystal = 20000000
    $hwstack = 64
    $swstack = 64
    $framesize = 64
    $baud = 9600
    
    '--------------------------------------------------------------------------
    ' Definition von Ressourcen
    '--------------------------------------------------------------------------
    
    Led Alias Portd.2                                           ' rote LED
    
    
    'Treiber L293 oben (1) / Timer2
    1_pwm1_z Alias Portd.7
    1_m1a_z Alias Portc.3
    1_m1b_z Alias Portc.4
    
    1_pwm2_f Alias Portd.6
    1_m2a_f Alias Portc.7
    1_m2b_f Alias Portc.6
    
    
    'Treiber L293 unten (2) / Timer0
    2_pwm1_p Alias Portb.3
    2_m1a_p Alias Portb.1
    2_m1b_p Alias Portb.2
    
    2_pwm2_t Alias Portb.4
    2_m2a_t Alias Portb.0
    2_m2b_t Alias Portc.5
    
    
    
    
    '--------------------------------------------------------------------------
    ' Definition von Konstanten
    '--------------------------------------------------------------------------
    
    
    
    '--------------------------------------------------------------------------
    ' Definition von Variablen und Datentypen
    '--------------------------------------------------------------------------
    
    '---- PWM für A293D ----
    Dim 1z As Integer
    Dim 1f As Integer
    Dim 2p As Integer
    Dim 2t As Integer
    
    
    
    '--------------------------------------------------------------------------
    ' Konfiguration und Basiseinstellungen
    '--------------------------------------------------------------------------
    
    
    ' Timer2 für PWM 8Bit L293D (1) "oben"
    Config Timer2 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    
    ' Timer0 für PWM 8Bit L293D (2) "unten"
    Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    
    
    
    '---- Timer ----
    
    
    '---- Outputs ----
    Config Led = Output
    
    
    'Treiber L293 oben (1) / Timer2
    Config 1_pwm1_z = Output                                    'OC2A
    Config 1_m1a_z = Output
    Config 1_m1b_z = Output
    
    Config 1_pwm2_f = Output                                    'OC2B
    Config 1_m2a_f = Output
    Config 1_m2b_f = Output
    
    
    'Treiber L293 unten (2) / Timer0
    Config 2_pwm1_p = Output                                    'OC0A
    Config 2_m1a_p = Output
    Config 2_m1b_p = Output
    
    Config 2_pwm2_t = Output                                    'OC0B
    Config 2_m2a_t = Output
    Config 2_m2b_t = Output
    
    
    
    
    '---- Interrupts ----
    Enable Interrupts
    Enable Timer0
    Enable Timer2
    
    
    
    '--------------------------------------------------------------------------
    ' Init
    '--------------------------------------------------------------------------
    
    1_m1a_z = 0                                                 ' L293D Zoom OFF
    1_m1b_z = 0
    '1z = 150                                                    ' Anfangsgeschwindigkeit für PWM L293D
    'Ocr2a = 1z
    
    1_m2a_f = 0                                                 ' L293D Focus OFF
    1_m2b_f = 0
    '1f = 150                                                    ' Anfangsgeschwindigkeit für PWM L293D
    'Ocr2b = 1f
    
    2_m1a_p = 0                                                 ' L293D PAN OFF
    2_m1b_p = 0
    '2p = 150                                                    ' Anfangsgeschwindigkeit für PWM L293D
    'Ocr0a = 2p
    
    2_m2a_t = 0                                                 ' L293D TILT OFF
    2_m2b_t = 0
    '2t = 150                                                    ' Anfangsgeschwindigkeit für PWM L293D
    'Ocr0b = 2t
    
    Led = 1
    
    Print "Ctrl v.0.1"
    
    
    '--------------------------------------------------------------------------
    ' Hauptprogramm
    '--------------------------------------------------------------------------
    
    
    Do
    
    2_m2a_t = 1
    2_m2b_t = 0
    
    Ocr0b = 150
    
    
    
    
    Loop
    
    End

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo,

    ich bringe die 20 Mhz, Prescaler und meine 4 Motoren nicht in den Einklang!

    Nichts rührt sich! Welche Frequenz sollte ich wählen?

    Danke,
    Christoph

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    ich bringe die 20 Mhz, Prescaler und meine 4 Motoren nicht in den Einklang!
    Code:
    ' Timer0 für PWM 8Bit L293D (2) "unten"
    Config Timer0 = Pwm , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    Das Kommando stellt den Phase Correct PWM Modus des Timer0 ein.
    Der Systemtakt ist 20MHz. Du teilst den Takt für den Timer0 mit dem Timer Prescaler durch 8

    20Mhz / 8 = 2,5MHz
    Der Timer0 wird also mit 2,5MHz getaktet.

    Pro Takt verändert der Timer sein Zählregister TCNT0 um eins.
    Das 8 Bit Register TCNT0 zählt mit 255 Takten von 0 auf 255. Mit den nächsten 255 Takten wird TCNT0 im Phase Correct Modus wieder runtergezählt (254, 253 ... 0).

    In diesem Timerzyklus mit 510 Takten wird ein PWM Zyklus erzeugt.
    Die eingestellte PWM Frequenz ist also 2500000Hz / 510 = ca. 4901 Hz

    Falls du das alles schon wußtest, stell eine klare Frage.

    Nichts rührt sich!
    Hab mich nicht durch den Code durchgewühlt, da der Schaltplan fehlt. Vielleicht hast du ja nur was falsch angeschlossen?
    Oder das Jtag Interface auf Port C ist nicht abgeschaltet?

    Welche Frequenz sollte ich wählen?
    5KHz könnte passen. Die optimale Frequenz hängt von deinem Motor ab und ist so einfach nicht zu beantworten.

    Konzentrier dich doch erstmal auf einen Motor und bring den zum Laufen. Das macht den Code auch erstmal übersichtlicher.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo!

    Danke für deine Hilfe und deine Erklärung! - Es war das JTAG Interface.

    Der Motor dreht jetzt zwar immer und das von Anfang an... Ich denke, dass ist ein Frequenzproblem!

    Danke und Gruß
    Christoph

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 31.01.2013, 15:32
  2. 2 Motoren ansteuern mit Timer PWM-Signal!
    Von feel_the_bas im Forum Motoren
    Antworten: 3
    Letzter Beitrag: 30.03.2010, 20:35
  3. L293D mit PWM ansteuern -> funzt aber net
    Von raschky im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 24.07.2007, 04:51
  4. Hilfe! PWM, PIC, L293D, Motor ansteuern ...
    Von ltCheebigt3 im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 25.11.2005, 15:12
  5. 3V Motoren mit 12V PWM ansteuern?
    Von BlackBox im Forum Motoren
    Antworten: 11
    Letzter Beitrag: 30.07.2004, 07:08

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad