PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PWM - Servo



Greuth
27.01.2006, 09:21
HI @ll,


(Neulingfrage mit Bascon)

Wer kann mir ein fertiges Programm schreiben wo ich mit 1 Taster den Servo rechtsrum drehen kann solange ich den taster gedrückt halte.
Und einen 2 Taster dreht dann den Servo linksrum solange ich es gedrückt halte. Wenn ich keine der beiden Tastern drücke, soll der Servo stehenbleiben.

Benutze einen ATmega8 und Bascon zu programmieren.

Ratber
28.01.2006, 20:17
Bascom macht es einem mit vielen Makros sowas von Einfach.
Das sind allenfalls 10-15 Minunten Arbeit (5-7 Minuten für die Bemerkungen und das Drapieren) wenn man sich damit einwenig auseinandersetzt.


Da !


'Einfacher Servosteuerung über 2 Taster.
'
'Minimum,Maximum und Schrittweite sind Servospezifisch und müssen auf das
'jeweilige Modell angeglichen werden.
'Verzögerung ist Geschmackssache sowie der Startwert
'Das Programm ist absichtlich einfach gehalten um die Funktion zu verdeutlichen.
'also keine ausgefeilte Tastenabfrage oder sonstige Optimierung.
'
'Ratber
'================================================= ==============================

$regfile = "M8def.dat"
$crystal = 8000000
$baud = 19200

Config Servos = 1 , Servo1 = Portb.1 , Reload = 10
Enable Interrupts 'Ist nötig
Config Portb.1 = Output 'Servoausgang
Config Pind.6 = Input 'Taster 1
Config Pind.7 = Input 'Taster 2
Portd.6 = 1 'Pullup aktiviert
Portd.7 = 1 'Pullup aktiviert

Dim Ist As Byte
Dim Minimum As Byte
Dim Maximum As Byte
Dim Schrittweite As Byte
Dim Pause As Byte

Minimum = 35 'Rechter Anschlag
Maximum = 155 'Linker Anschlag
Schrittweite = 1 'Schrittweite beim erhöhen
Pause = 150 'Verzögerungszeit in ms damits steuerbar bleibt
Ist = Minimum 'Einfach nur Definierter Startwert

Do
If Pind.6 = 0 Then
Ist = Ist + Schrittweite
If Ist > Maximum Then Ist = Maximum
End If

If Pind.7 = 0 Then
Ist = Ist - Schrittweite
If Ist < Minimum Then Ist = Minimum
End If

Servo(1) = Ist
Waitms Pause
Loop

End


Meine gute Tat fürs Wochenende ist damit abgegolten :wink:


Edit:Kleine Korrektur am Code.
Pullups aktiviert.

Greuth
29.01.2006, 15:33
DANKE für Deine schnelle Hilfe und mühe, werde es morgen direkt mal testen und Bericht erstatten ob es funktioniert hat.

Greuth
30.01.2006, 09:22
So hab es mal getestestet... aber es tut sich nichts :-(

wenn ich denn Ausgang auf den Speaker stelle, höre ich einen piep ton mit gleichmäßigen Intervalle von pausen. Also denke ich mal das es i.O ist oder? Hört man eigentlich einen unterschied wenn ich auf denn Taster drück?

Info zum Servo: Servo ist von Conrad. Hab dem schwarzen Kabel am Ausgang angeschlossen und der rest (weiß/rot) auf separater Spannungsquelle 5V.

Hoffe du kannst mir ein paar tipp geben, den Fehler zu finden.

Danke

Dirk
30.01.2006, 09:50
Vorsicht:

Schwarz ist zumindest bei den Standard-Servos von CONRAD (ES-030) GND (Minus, Masse), gelb ist der PWM-Eingang und rot ist plus.
Wenn du eine getrennte Stromquelle nimmst, muss GND von Spannungsquelle und Controller verbunden sein.

Gruss Dirk

Guy
30.01.2006, 10:13
Eine einfache Regel, bei den Servos ist der Plus immer in der Mitte. Das hat den Grund, dass wenn du den Servo falsch in den Empfänger einsteckst funktioniert gar nichts, es geht aber auch nichts kaputt.

Greuth
30.01.2006, 10:46
Also ich habe 3 Adern schwarz, rot und weiß. Rot auf +5V anklemme und den schwarzen auf 0V. Wenn ich kurz mit der weißen Adern an +5V komme, mach der Servo einen takt. Also gehe ich davon aus, das der Servo i.O. Schließe ich es aber am Portb.1 an und drücke einen Taster... tut sich nichts :-( <-- liegt der Fehler am programm?

Ratber
30.01.2006, 13:58
Nein ,ganz bestimmt nicht.

Ich habs mit nem alten S15 von Conrad getestet (Daher auch die Werte 35/155) und der läuft einwandfrei.

Lauft der Mega auch mit 8 Mhz ?

Greuth
31.01.2006, 09:32
Ich benutze den internen. also 1 Mhz oder?

oder können die Eingänge defekt sein? Wenn ich ein anderes Programm einlese wo ich mit einen Taster ne LED an und aus machen, leutet die LED unterschiedlich hell! Wie kann ich testet ob nicht der atmega8 defekt ist?

FlashCube
31.01.2006, 13:01
falls es dich beruhigt: ich habe genau das gleiche problem mit den servos...
und das mit der LED uns dem Taster kenn ich auch...

Ratber
31.01.2006, 13:37
@Greuth


Geh einfach in den Programmer von Bascom und stell das Fusebit auf 8 Mhz Intern.

Greuth
31.01.2006, 16:12
Wo genau stelle ich den Fusebit unter Bascon ein?

Greuth
31.01.2006, 16:23
Dann hab ich noch eine frage über mein SiSy Avr-Board und zwar,

wenn ich das LPT Karbel an PC anschliese und gleichzeitige die 9V Blockbatterie angeschlossen habe, geht die Power LED langsam aus!
Sie nach einen kurzschluss aus oder? Wenn ich das LPT Karbel abmache, leute die Power LED normal.

Betriebssystem XP. Oder liegt es an der Stromversorgung des LPT-Anschluss?

Zum Servo, wenn ich es am Portb.1 anschließe, höre ich in Servo dauert ein leises taken, ohne das sich die welle bewegt!

Ratber
31.01.2006, 16:57
wenn ich das LPT Karbel an PC anschliese und gleichzeitige die 9V Blockbatterie angeschlossen habe, geht die Power LED langsam aus!
Sie nach einen kurzschluss aus oder? Wenn ich das LPT Karbel abmache, leute die Power LED normal.

Ja sieht nach kurzem aus aber wie haste dann Programieren können ?


Ohne Saft wird das Sisy-Board kaum laufen und die Schnittstelle liefert eigentlich nicht genug dafür.



Wo genau stelle ich den Fusebit unter Bascon ein?

Wenn du auf der Oberfläche bist (Bascom) dann schau mal oben die Iconleiste.
Eine ist für den Programmer (Grübes Rechteck)
Drauf klicken dann kommt eine auswahl .
Du nimmst Manual prgramm.

Dann öffnet sich der Programmer.
Oben sollte der Controller angezeigt werden der im Boards steckt.
Wenn nicht dann haste schon längst ne Fehlermeldung.

Wenn das gelöst ist dann auf den Reiter "Lock an fuse Bits" gehen.
Ist der Controller ansprechbar dann liest das Programm kurz die Werte ein.

In der Dritten Gruppe ("Fusebits" zwischen "Lockbits" und "Fusebits High") findest du unten das Fusebit A987.
Das stellst du auf "0100 Internal RC Oszillator 8 Mhz" und schau hin ob es auch da steht bevor du mit dem Button "Write FS" (Rechts am Rand des Fensters.Nur Anwählbar wenn was geändert wurde) die Fusebits neu schreibst.


********
HINWEIS
********

Finger weg von den anderen Fuse und Lockbits wenn du nicht absolut sicher bist was du tust.

Man kann sich hier schnell mal ausschließen.

Greuth
02.02.2006, 22:36
Erstmal ein dickes Lob am Ratber, denn durch seine Hilfe habe ich es geschafft.
Ohne ihn würde ich jetzt bestimmt mein Borad vor Wut in die Ecke schmeißen.
- D A N K E -

Ratber
02.02.2006, 23:52
Yo,kein Problem.





@All

Hab oben das Programm noch um die internen Pullups ergänzt.
(Ich nehme bei Tasten meist eigene Widerstände wegen der Leitungslängen)