Zitat Zitat von Relaxed
... denke aber, dass die PWM-Ausgabe in Ordnung ... 5V und einen 24V Motor. Bei beiden besteht das gleiche Problem ...
Das klingt ja eher so, als sei die PWM eben nicht in Ordnung. Keine Ahnung wie Du den L293 am arduino angeschlossen hast. Aber ich habe hier (m)einen Schaltplan und dazu gibts auch den Code für die Ansteuerung von zwei Motoren. Im Schaltplan ist eine funktionierende Anbindung des L293D, der Controller ist ein m328 (mitunter ein m168er), im Code die dazugehörige Software. Möglicherweise hilft es Dir, wenn Du diesen Code mit Deinem vergleichst. . . . .

Code:
/* >> 
 . . . . . 
 ===================================================================================
  Target MCU        : siehe main
  Target Hardware   : MiniD0
  Target cpu-frequ. : In der Quelle wählbar
 ===================================================================================
        Enthaltene Routinen:        Alle Motorroutinen
. . .
  void TC0PWM_init(void) //Init Timer/Counter0 für Erzeugung des PWM-Signals
  void setPWMrechts(uint8_t speed)        //Geschwindigkeit rechter Motor
  void setPWMlinks(uint8_t speed)         //Geschwindigkeit linker Motor
  void Mrechtsvor(void) //Motor dreht im mathematischer Drehsinn
  void Mrechtszur(void) //Motor 1,2 dreht im Uhrzeigersinn
  void Mrechtsstop(void) //Motor  aus
  void Mlinksvor(void) //Motor dreht im mathematischer Drehsinn
  void Mlinkszur(void) //Motor 3,4 dreht im Uhrzeigersinn
  void Mlinksstop(void) //Motor  aus 
 ===================================================================================
  *** Versionsgeschichte:
 ====================
 x32 11Okt10 1730 In ~tst~/RC5t_17: Bitanalyse "just in time" - LÄUFT gut
        Ausgabe nur als dezimale Darstellung von Adress- und Befehlsbyte
 x00 01Nov09 1910 Übernahme des Originals, aus dem Directory 
 . . .
 ===================================================================================
  *** Aufgabenstellung : Software für R3D01    
  Original:        . . . .
 ===================================================================================
 
 ================================================================================ */
 
// =================================================================================
// =================================================================================
 void TC0PWM_init(void) //Init Timer/Counter0 für Erzeugung des PWM-Signals
 {
   TCCR0A |= (1<<COM0A1)|(1<<COM0B1);   //Clear/set OC0A/OC0B on Compare Match,
                                        //    doc S102 , OC0A/OC0B ist Port PD6/D5
   TCCR0A |= (1<<WGM01)|(1<<WGM00);     // Fast PWM, TOP=0xFF=dez255,     doc S104
                //  das ergibt aus 20 MHz mit Prescaler 1/64  1220 Hz
   TCCR0B |= (1<<CS01)|(1<<CS00);       // Prescaler ist clk/64           doc S106
   TIMSK0 &= ~(1<<OCIE0A)|(1<<OCIE0B); // Tmr/Cntr0 Oput CompB Match intrrpt dsabld
   TIMSK0 &= ~(1<<TOIE0);  // Tmr/Cntr0 Overflow interrupt disabled
   OCR0A     = 0;                       // PWM auf Null setzen
   OCR0B     = 0;                       // PWM auf Null setzen
}            
// =================================================================================
void setPWMrechts(uint8_t speed)        //Geschwindigkeit Motor 12 (rechter)
{OCR0B = speed;}                        //  PWM auf PD5/OC0B, korrig. 24mrz09
// =================================================================================
void setPWMlinks(uint8_t speed)         //Geschwindigkeit Motor 34 (linker)
{OCR0A = speed;}                        //  PWM auf PD6/OC0A, korrig. 24mrz09
// =================================================================================
 
// =================================================================================
// Motoransteuerung mit dem L293D, hier werden die Drehrichtungen gesetzt 
//   Anschlüsse M168 für R3D01 für die Motoransteuerung (Stand 24mrz09 1410) :
//   Motor 12 ist in Fahrtrichtung rechts (Kennzeichen 1 Punkt)
//   Motor 34 ist in Fahrtrichtung links  (Kennzeichen 2 Punkte)
/*                                 
  (E7)  _|-- 1,2 Guz, PD4___6   23___PC0, SFH 5110, IN irDME 1-2    
                      . . . . . . . . . . . .
               XTAL1  PB6___9   20___VCC
               XTAL2  PB7  10   19   PB5, SCK                           
  (E6) PWM 1,2 uz+Guz,PD5  11   18   PB4, MISO,  _|-- 1,2  uz, Taster1  
  (E5) PWM 3,4 uz+Guz,PD6__12   17___PB3, MOSI, Reserve 2               
  (E8)   _|-- 3,4  uz,PD7  13   16   PB2                                
  (E9)   _|-- 3,4 Guz,PB0  14   15   PB1                                          */
//                -----------------------
//  Drehrichtungsbefehle für Motor 1,2 = "rechter" Motor
 void M12pos (void)             // Mot12 dreht im Uhrzeigersinn = neg. math.
 { PORTB  |=  (1<<PB4);  PORTD  &= ~(1<<PD4);  mdir12 = 1; }
//             r r r r r r r Motor 1,2 = rechter Motor r r r r r r
 void M12neg (void)             // Mot12 dreht im mathematisch positiven Drehsinn
 { PORTB  &= ~(1<<PB4);  PORTD  |=  (1<<PD4);  mdir12 = -1; }
//             r r r r r r r Motor 1,2 = rechter Motor r r r r r r
 void M12stp (void)             // Motor 12 aus
 { PORTB  &= ~(1<<PB4);  PORTD  &= ~(1<<PD4); }
//                -----------------------
//  Drehrichtungsbefehle für Motor 3,4 = "linker" Motor
 void M34neg (void)             // Mot3,4 dreht im Uhrzeigersinn = neg. math.
 { PORTB  |=  (1<<PB0);  PORTD  &= ~(1<<PD7);  mdir34 = 1; }
//             l l l l l l l Motor 3,4 = linker Motor l l l l l l
 void M34pos (void)             // Mot3,4 dreht im mathematisch positiven Drehsinn
 { PORTB  &= ~(1<<PB0);  PORTD  |=  (1<<PD7);  mdir34 = -1; }
//             l l l l l l l Motor 3,4 = linker Motor l l l l l l
 void M34stp (void)             //  Motor 12 aus
 { PORTB  &= ~(1<<PB0);  PORTD  &= ~(1<<PD7); }
//
// - - - - - - - Übersetzungstabelle für "alten" Code
  void Mrechtsvor (void)        
  {  M12pos ();  return; }                    
  void Mrechtszur (void)        
  {  M12neg ();  return; }                    
  void Mrechtsstop (void)       
  {  M12stp ();  return; }                    
  void Mlinksvor (void)         
  {  M34neg ();  return; }                    
  void Mlinkszur (void)
  {  M34pos ();  return; }                    
  void Mlinksstop (void)
  {  M34stp ();  return; }                    
// =================================================================================
 
// =================================================================================
// =====  ENDE    Subroutinen  =====================================================
// =================================================================================
Immerhin: dieser Antrieb in meine beiden autonomen Dosen R2D03 und R3D01/MiniD0 läuft und läuft und läu...