PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motoransteuerung mit PWM



cb01
27.03.2006, 00:40
Hi,
ich bin noch ziemlicher Anfänger,was das Thema Atmel und Bascom angeht...
Ich möchte gerne einen DC Motor mit Hilfe einer PWM und eines Mega8 Ansteuern,ich hätte das ganze gerne so,das der Motor langsam von Aus bis zu einer bestimmten Geschwindigkeit hochgeregelt wird.

Ich habe mir bereits den code im Wiki angeschaut,so vom Grundprinzip her ist mir das ganze auch klar,aber ich weiß nicht wie ich das ganze nun dazu kriege,das er es hochregelt.



$regfile = "m8def.dat"
$crystal = 3686400

Config Pinb.1 = Output

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

Do


Loop

End

Ich würde mich sehr freuen,wenn mir jemand evtl. einen kurzen Beispiel Code geben könnte,woran ich erkennen kann,wie das funktioniert...

Vielen Dank und viele Grüße

Chris

GMB
27.03.2006, 13:33
Möchtest du ihn über einen Poti steuern?!

Oder soll er nach einem Sollwert geregelt werden?!?!

Das Grundprinzip ist einfach, das du in "PWM1a" und "PWM1b" Werte reinschreibst, wie auch im Artikel beschrieben, z.B.:

PWM1a = 200

Je nachdem dreht sich der Lüfter dann schneller oder langsamer...

Aber erklär doch nochmal genauer, was du wissen möchtest... ;-)

cb01
27.03.2006, 14:21
Hi,
ok war vielleicht doch etwas umständlich erklärt...also das ganze soll später dann in einem fahrenden Modellauto "werkeln",sprich das Fahrzeug hält an(dem Atmel wird der Strom "geklaut"),und wenn er dann wieder Strom kriegt soll er das Fahrzeug langsam auf Höchstgeschwindigkeit beschleunigen,dafür fehlt mir allerdings noch eine Idee,wie genau ich das mit Bascom realisiere.

Viele Grüße

Chris

sigo
27.03.2006, 14:28
Du kannst die PWM einfach mit einer For-Next-Schleiße hochfahren.

Hier ist ein Beispiel:

Enable Interrupts
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1

'ich hab eine 10-Bit-PWM genommen, du kannst aber auch 8 bit nehmen

Dim I As Word ' Laufvariable

For I = 0 To 1023 ' bei 8 Bit PWM entsprechend ...to 255
Pwm1a = I

waitus 10
' <--- Hier kannst du einen Wert für eine Wartezeit in µs eintragen.
' So kannst die die Geschwindigkeit der Rampe einstellen

Next I
Do

' PWM auf maximum lassen und Warteschleiße, bis der Saft abgedreht wird..
Loop

Gruß sigo

GMB
27.03.2006, 15:06
So ähnlich hätte ich es auch gemacht, sigo!!

So wird es auch klappen, vorher aber ausprobieren, mit welcher Frequenz dein Motor am besten klar kommt, und ob du ne Glättung brauchst, etc!!

cb01
27.03.2006, 15:30
Moin,
vielen Dank für die schnelle Hilfe!!!!...

Gruß

Chris