Hi,
versuchs mal, wenn du deine Ausgangsregister setzt...
Also beim mega8: DDRB.1=1 (für OCA1)
und über 5Mhz kann das sig nicht haben, da du nur 4Mhz Takt hast..
Hi Leutz!
Ich experimentiere gerade mit dem PWM Signal und hab folgenden Bascom-Code:
Das Signal scheint von meinem Mega8 erzeugt zu werden, denn die Motoren drehen sich. Doch da sie immer mit voller Geschwindigkeit laufen, denke ich, dass das PWM Signal zu hoch frequentiert ist. Der L293D verkraftet ja nur bis 5 MHz. Wie kann ich das Signal auf die 5 MHz anpassen, so dass ich die Geschwindigkeit steuern kann?Code:$regfile = "m8def.dat" $crystal = 4000000 $baud = 9600 Dim A As Byte A = 0 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64 Do If A < 255 Then A = A + 1 Compare1a = A Waitms 500 Print A Loop End
MFG!
Hi,
versuchs mal, wenn du deine Ausgangsregister setzt...
Also beim mega8: DDRB.1=1 (für OCA1)
und über 5Mhz kann das sig nicht haben, da du nur 4Mhz Takt hast..
Hallo rapo!
Nochmal langsam bitte! Das das Signal nur bis 4 Mhz läuft is jetzt klar aber wo stelle ich diese Ausgangsregister ein?
Der PWM hat eine Frequenz von 4.000.000/64/256 also ca. 244 Hz.
Da der Pin aber nicht als Ausgang gesetzt ist passiert an ihm auch nix. Deshalb:
DDRB.1=1;
Heißt: im Data-Direction-Register-B (also von Port B) wird Pin 1 als Ausgang fesetzt. "=0" hieße Eingang.
Der Motor müsste jetzt entweder vom stehen innerhalb von ca. 2 Minuten entweder lasam anlaufen, bis zum Maximum oder genau das Gegenteil. Und nach diesen 2 Minuten dann in dem Zustand bleiben (2Minuten und 3 Sekunden )
MFG Moritz
www.free-webspace.biz/update
Danke für die Hinweise!
Mein Code sieht jetzt so aus:
Der Motor dreht sich auch und ändert ab und zu die Geschwingkeit... Aber das sieht eher willkürlich aus. Wie groß ist denn die Rasterweite bei "Compare1a"? Läuft sie wirklich nur bis 255 oder gehts da noch weiter?Code:$regfile = "m8def.dat" $crystal = 4000000 $baud = 9600 Dim A As Byte A = 0 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64 Ddrb.1 = 1 Do If A < 255 Then A = A + 1 Compare1a = A Waitms 200 Print A Loop End
Die Geschwindigkeit ändern im sinne von mal schneller mal langsamer? Das würde mich sehr wundern!
Ja es geht mehr, Timer 1 hat 10 Bit! Du musst oben statt "Pwm = 8" "Pwm = 10" schreiben, dann werden die 10 Bit des PWMs ausgenutzt, also Werte von 0 bis 1023. Der Mega8 kann mit bestimmten Konfigurationen bis zu 16 Bit, aber keine Ahnung wie das unter Bascom geht
MFG Moritz
www.free-webspace.biz/update
Naja es gab einige male ein Rucken des Motors, danach lief er wieder auf volle Leistung....
Mit dem Code möchte ich eigentlich bewirken, dass der Motor immer schneller läuft. Stimmt der Code dafür?
Hm, also er ruckelt und gibt dann vollgas? Er sollte wie gesagt entweder stehen und dann schneller bis VOllgas. UNd Vollgas halten oder genau das Gegenteil tun. SChreibt doch mal bitte statt DDRB... oben über Config Timer1... das hier:Naja es gab einige male ein Rucken des Motors, danach lief er wieder auf volle Leistung....
Config Pinb.1 = Output
Sollte das geilche bewirken, aber hier bin ich mir sicherer, dass es klappt, oder schreib einfach DDRB=255.
Häng doch an den port statt der Motorschaltung mal ne LED mit Widerstand und überprüfe was passiert.
Ansonsten weiß ich auch nicht mehr. Überprüf nochmal die Ports, nciht das er an am falschen Pin hängt oder so.
MFG Moritz
www.free-webspace.biz/update
Also das Ruckeln kam durch einen Wackelkontakt in der Stromversorung. Ist jezt aber behoben!
Der Motor dreht die ganze Zeit auf vollen Touren. Die ersatzweise angeschlossene LED blinkt rasend schnell, sie leuchtet fast ständig...
Wird die Geschwindigkeit überhaupt über das Compare1a gesteuert?
Achja auch die Änderungen bewirken nichts...
Also das Ruckeln kam durch einen Wackelkontakt in der Stromversorung
Hast du die Fusebits richtig eingestellt? Externes Quarz? Kommt am PC was vom AVR im Terminal an? Ein Flackern solltest du bei über 200Hz kaum noch wahrnehmen.Die ersatzweise angeschlossene LED blinkt rasend schnell, sie leuchtet fast ständig...
Kann ja nicht sein, das wir den Fehler nicht finden, hab mich scheinbar zu lange nicht mehr mit Bascom beschäftigt. Probier einfach mal den Code hier aus und setz für Compare1a mal andere Werte.
Code:$crystal = 4000000 $regfile = "m8def.dat" Config Portb = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 Enable Interrupts Do Compare1a = 128 Compare1b = 128 Loop
MFG Moritz
www.free-webspace.biz/update
Lesezeichen