PWM an ATmega8 und L293D

Gast #443388
Lesenswert?

Hallo zusammen,

ich hoffe mir kann jemand helfen!!!

Warum bekomme ich mit folgendem Programm am Ausgang des L293 nur max 1V, 
obwohl ich 9V Versorgungsspannung habe?

; TIMER 2 an PORT OC2

.include "m8def.inc"


    .def  temp  = r16    ;
    .def  temp4  = r17    ;
    .def  akku1  = r18    ;
    .def   temppwm = R19
    .def   soll   = R20

        ldi temp, LOW(RAMEND)      ; LOW-Byte der obersten RAM-Adresse
        out SPL, temp
        ldi temp, HIGH(RAMEND)      ; HIGH-Byte der obersten RAM-Adresse
        out SPH, temp
    ldi  soll, 255

schlei:
    rcall  motor
    ;subi  soll,1
    ;cpi    soll,3
    ;brsh  end
    ldi    soll, 250
end:  rcall  wait
    rcall  wait


    rjmp  schlei      ;



 motor:
         sbi    DDRB,3

    sbi    PORTC,4
    sbi    DDRC, 4

    cbi    PORTC,5
    sbi    DDRC, 5


    ldi temppwm,(1<<COM21)|(1<<COM20)|(0<<WGM21)|(1<<WGM20)|(0<<CS22) 
|(0<<CS21) |(0<<CS20)
    out TCCR2,temppwm

    ; Zählumfang Timer2
    ldi temppwm,255
    out TCNT2,temppwm


    ; Startwerte
    ;ldi soll, 100


    out     OCR2,soll  ; neuer Vergleichswert nach Compareregister
;    ldi soll, 50
;    rcall  wait

    ret

Bin für jeden Tip super dankbar.

Danke und Gruß
Markus
Gast #443393
Lesenswert?

Ich habe gerade mal getestet, wenn ich PB3 auf 1 setze, d.h. wenn ich 
kein PWM mache, sondern stur auf High setze, dann bekomme ich auch nur 
1,1 V am Ausgang des L293.

Hat jemand ne Idee, woran das liegen könnte?
Gast #443467
Lesenswert?

Ein Schaltplan ist glaube ich nicht unbedingt nötig:

ich habe PB3 direkt mit Enable1 verbunden, genauso PC4 -> Input1 und PC5 
-> Input2.

Stromversorgung 9V, mit 7805 auf 5V für uC, VS und VSS des L293D mit 9V 
versorgt.

Output 1+2 an Motor gehängt.

Das ist die ganze Verkabelung (ohne Kondesatoren für uC).

Ist das falsch?
Gast #443622
Lesenswert?

Markus,
hast Du alle GND-Pins des L293 angeschlossen?

Zum Code: Mit dem Startwert für TCCR2 wird bestimmt nichts passieren, 
denn damit wird der Timer abgeschaltet (alle CS = 0).
Weiterhin hast Du die invertierte Ausgabe gesetzt (beide COM = 1), und 
Dein Soll von 255 bringt, selbst wenn der Timer laufen würde, Dauernull 
am Ausgang.

Gruß Johannes
Gast #443909
Lesenswert?

@Mattias

das siehst du richtig. sollte ich PWM lieber auf einen Enable-Eingang 
legen?

@Johannes

ich habe verschiedene Startwerte für TCCR2 usw. ausprobiert. Ich habe 
wohl eine Version erwischt, die gerade nicht so funktioniert.
Ich habe nur zwei GND des L293 angeschlossen. Die anderen zwei habe ich 
offen gelassen. Ist das ein Fehler?
Werde mal alle vier anschließen...
Gast #444482
Lesenswert?

@Markus

Wo GND dransteht, muss normal auch GND anliegen. Es sei denn, das 
Datenblatt sagt Dir genau, welcher GND der richtige für die Logik ist.

@Matthias

Ganz ab davon, dass es für einen Motor mit Eisenanker eh sinnig ist, mit 
der PWM unter 5kHz zu bleiben - welche Spec des L293 rät dazu? Ich 
entnehme dem Datenblatt jeweils <1µs Enable- und Disable-Zeit, was 
theoretisch so zirka 100kHz PWM ermöglichen sollte.

Ich gebe zu, das Teil noch nicht selber in die Limits gescheucht zu 
haben.

Gruß Johannes

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren