PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motorsteuerung H-Brücke L293 und PWM von einem ATTiny2313



Alex20q90
24.12.2005, 11:28
Hallo,
Frohe Weihnachten erstmal!


ich bekomms nicht gebacken :


$regfile = "2313def.dat" 'AT90S2313
$crystal = 2000000 'Quarz 8MHz

Ddrb.0 = 1
Motor1v Alias Portb.0
Enable Interrupts

Dim I As Integer

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up

'Config Pind.5 = Output

'to set the PWM registers, just assign a value to the compare A and B registers
Compare1a = 128
'Compare1b = 200



Reset Motor1v
I = 0

Do
'Or for better reading :
Pwm1a = I
'Pwm1b = 200

Incr I
Waitms 100
Loop

End



Ich hab schon einiges versucht den Motor den Speed zu regeln, aber er dreht immer gleich schnell.

Habe als Anschaltung das Beispiel im RN-Wissen.Archiv genommen.

Beide enabled an PD.5 (PWM)
Motor 1 A = PB.0
Motor 1 B = PB.1
Motor 2 A = PB.2
Motor 2 B = PB.3

Der Incr I hab ich mal eingebuat um zu schaun ob die Drehzahlregelung läuft ! Aber der Motor dreht immer gleich schnell :(

Wo hab ich den Fehler

linux_80
24.12.2005, 12:13
Hallo,
normalerweise sollte sich der Motor in diesem Fall gar nicht drehen !

Du musst alle beteiligten Ports auf output stellen, auch die PWM ausgänge,
um eine Drehrichtung einzustellen, muss mind. ein Port auf 1 sein,
bei Reset wird der Port auf 0 gesetzt, also sind in deinem Programm beide Seiten auf 0, deshalb sollte der Motor stehen.
Das er sich trotzdem dreht, kann sein, weil die Ausgänge auf eingang gestellt sind.

Probier mal beim PWM einstellen Clear Down anzugeben, sonst muss man immer rückwärts rechnen mit den Werten relativ zur Geschwindigkeit.

Torsten_G
24.12.2005, 15:22
Hi Alex,

das dürfte Deine konstante Geschwindigkeit sein, Compare1b hast Du ja auskommentiert:

Compare1a = 128

Versuch mal, einen anderen Wert ins Compare1a-Register schreiben, ob sich dann was ändert.

Viele Grüße

Torsten

Alex20q90
25.12.2005, 16:42
Hi,

ich hab mehrere verschidene werte versucht! ist beidesmal gleich!

Ich hab nun versucht selber ein pwm zu erzeugen


Set Pwmout
Waitms I
Reset Pwmout
J = 255 - I
Waitms J


Mit I gebe ich den PWM-Speed von 0 bis 255 vor! Nun klappt alles wie ich es brauch!

Die Steuerung mit dem 2313 wird von einem anderen AVR später über rs232 gesteuert. Habe also alles für den speed frei!

Ärgerlich ist es aber trotzdem das die Hardware-PWM nicht läuft!

Grüße
Alex

Alex20q90
25.12.2005, 16:49
Hi,

ich hab mehrere verschidene werte versucht! ist beidesmal gleich!

Ich hab nun versucht selber ein pwm zu erzeugen


Set Pwmout
Waitms I
Reset Pwmout
J = 255 - I
Waitms J


Mit I gebe ich den PWM-Speed von 0 bis 255 vor! Nun klappt alles wie ich es brauch!

Die Steuerung mit dem 2313 wird von einem anderen AVR später über rs232 gesteuert. Habe also alles für den speed frei!

Ärgerlich ist es aber trotzdem das die Hardware-PWM nicht läuft!

Grüße
Alex