PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servo mit ATmega8



Björn
25.07.2005, 21:18
Hallo,

ich möchte ein Servo mit einem ATmega8 ansteuern.
Der Code:



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

Config Portb = Output

Enable Interrupts

Config Servos = 1 , Servo1 = Pinb.0 , Reload = 10

Do
Servo(1) = 150
Loop


Das Servo gibt aber kein Lebenszeichen von sich.

Gruß, Björn

uwegw
25.07.2005, 21:29
bei servo(1) = 150 steuerst du den servo genau in die neutralposition... schalt mal mit etwas wartezeit zwischen 100 , 150 und 200 hin und her...

Björn
25.07.2005, 21:46
Ok, diesen Code habe ich eben getestet:





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

Config Portb = Output

Enable Interrupts

Config Servos = 1 , Servo1 = Pinb.0 , Reload = 10

Do
Servo(1) = 150
WaitMs 2000
Servo(1) = 100
WaitMs 2000
Servo(1) = 150
WaitMs 2000
Servo(1) = 200
WaitMs 2000
Loop


Ergebnis das gleiche. Der Code müsste doch eigentlich gehen, sodass der Fehler nur Hardwareseitig liegen kann - oder?

Gruß, Björn

uwegw
25.07.2005, 22:14
richtiger pin? stromversorgung ok? zuckt der servo einmal kurz wenn man den strom einschaltet?

Björn
26.07.2005, 12:39
Stromversorgung OK, Pin richtig, Servo gibt Geräusche von sich bei einschalten und bei beühren der Kontakte.

Gruß, Björn

Björn
15.09.2005, 14:52
Moin, moin!

Muss das Thema nochmal aufgreifen, da es immer noch nicht funktioniert.



$regfile = "m32def.dat"
$crystal = 8000000

Config Portc = Output

Enable Interrupts

Config Servos = 1 , Servo1 = Pinc.1 , Reload = 10

Do
Servo(1) = 150
WaitMs 2000
Servo(1) = 100
WaitMs 2000
Servo(1) = 150
WaitMs 2000
Servo(1) = 200
WaitMs 2000
Loop


Das ist der Code, Controller ist ein ATmega32 - beim Stromanschluss zuckt das Servo kurz.

Gruß, Björn

linux_80
15.09.2005, 21:00
Hallo,
kannst du den Servo verdrehen, wenn das Programm läuft,
bzw. geht das eher leicht oder mit widerstand ?
Das Programm würde ja nicht schlecht ausschaun, hab ein Testprogramm gefunden, das genauso initialisiert.
Ist bestimmt alles richtig verkabelt ?
Hast Du etwas womit Du den Takt an diesem Pin überprüfen kannst (weiss nicht ob ein Multimeter schon drauf reagiert) ?

Björn
15.09.2005, 21:02
Naja zum Takt prüfen müsste doch eine LED gehen, oder nicht?

Gruß, Björn

ShadowPhoenix
15.09.2005, 21:55
Led mit PWM? Ich weiß nicht so recht...
Wie es scheint, ist der Servo defekt, oder der Chip.
Versuch's mal mit einem anderen Servo (billig).
Dein Programm sieht sauber aus.

Björn
15.09.2005, 21:58
Ja ich habe schon ein billig Servo von Conrad probiert, das hat noch nicht mal beim Einschalten einen Mux von sich gegeben.

Gruß, Björn

linux_80
15.09.2005, 22:20
Hi,
also ich hab grad mal mit deinen Code probiert, der tut wirklich nix !
Dann hab ich mein kleines Testprogramm hergenommen und langsam verglichen, ist ja nicht viel,
und der einzige unterschied um es zum laufen zu bringen ist, diese Zeile:


Config Servos = 1 , Servo1 = Portc.1 , Reload = 10

statt: Servo1 = Pinc.1 !

und schon gehts :-)

Björn
15.09.2005, 22:23
Ok werde das ganz morgen mal testen - danke!

Stimmt ja, Pin -> Eingang; Port -> Ausgang :D

Gruß, Björn

Björn
18.09.2005, 21:43
Tja, diese kleine Veränderung hat das Problem gelöst :D

Vielen Dank, es geht jetzt. ;)

Kurze Frage noch: Was sind die beiden maximal Ausschlagswerte?

Gruß, Björn

linux_80
18.09.2005, 21:49
Kurze Frage noch: Was sind die beiden maximal Ausschlagswerte?
ich glaub, das kann man nicht so pauschal sagen,
da hilft wohl nur ausprobieren,
ich hab da gestern in 'nem anderen thread ein kleines TestPrg gebastelt, mit dem man über UART im Terminal die Werte per Hand eintippt, und schaut wo der Servo landet.

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=115522#115522

Björn
19.09.2005, 17:42
Danke, aber ich kann im Terminal von Bascom irgendwie keine Zahlen eingeben?

Gruß, Björn

Björn
20.09.2005, 19:10
Benutzt du ein anderes Terminal Programm oder wie?

Gruß, Björn

linux_80
20.09.2005, 19:44
Hola,

unter Windows HyperTerminal, nix besonderes.

Björn
20.09.2005, 20:10
Und wie kann man da bitte Zahlen eingeben?

Gruß, Björn

ShadowPhoenix
20.09.2005, 20:13
Im Untermenü "Übertragung", da steht was von Datei Senden zB

linux_80
20.09.2005, 20:31
Und wie kann man da bitte Zahlen eingeben?

Einfach Verbindung öffnen, und die Zahlen auf der Tatstatur tippen, ;-)
anschliessend Enter drücken, damit der AVR die eingabe übernimmt.

Wo liegt das problem ?

Björn
20.09.2005, 20:37
Eben das geht nicht - wenn ich auf der Tastatur tippe passiert nix.
(Der Fokus ist auf dem Textfeld :D )

Gruß, Björn

linux_80
20.09.2005, 21:38
verwendest Du mein Programm dafür,
dann muss doch zumindest nach dem Reset das Hallo kommen ?
kommt das ?
Evtl. hast Du nur das Echo deaktiviert, gesendet wird es aber trotzdem !

Björn
20.09.2005, 21:45
Ja, ich verwende dein Programm und das "Hallo" kommt auch.

Gruß, Björn

Björn
20.09.2005, 22:00
So, mit dem Echo das geht jetzt. Trotzdem reagiert das Servo nicht, weshalb ich mal davon ausgehe, dass es beim Senden Probleme gibt.

Gruß, Björn