Habe ich gerade so gemacht mit dem LiPo. Auch kein Erfolg. Ich dreh' noch durch.
Habe ich gerade so gemacht mit dem LiPo. Auch kein Erfolg. Ich dreh' noch durch.
Ich habe genau die gleichen Servos für meine Kamerahalterung in Betrieb, von jedem eins.
Auch an einem Mega32 und es funktioniert einwandfrei.
Ich bin fast sicher, dass es an der Versorgungsspannung liegt.
Entweder Verkabelung oder Spannungseinbrüche.
Hast Du ein Oszi zur Hand?
Roland
Robotik & Arduino Homepage
http://www.ardumega.de
Nein, habe ich leider nicht.
Ich habe gerade mal anstatt des LiPos ein Netzteil drangehängt. Auch nichts.
Du sagst, die 3 Mini - Servos funktionieren einwandfrei !
Die 3 Grossen nicht, aber an deinem Heli tadellos !
Wenn Du alle Servos abziehst und nur ein Grosses dort ansteckst, wo sonst ein Mini - Servo war, funktioniert es dann ?
Probiere aber alle 3 Grossen einzeln aus, evtl. ist ja eins defekt .
Roland
Robotik & Arduino Homepage
http://www.ardumega.de
Ich habe die ganze Zeit schon zwischen einem kleinen und einem großen gewechselt. Also, ich hatte immer nur einen Servo am System. Habe dann den kleinen an dem Port angeschlossen um zu sehen ob wirklich ein Servo-Signal anliegt, habe dan den kleinen abgezogen und den großen dran gehängt (am selben Port). So habe ich das mit allen dreien gemacht und die Versorgungsspannung jeweils den Tipps entsprechend aufgebaut.
Nachtrag: Habe auch noch ein stärkeres Netzteil probiert (max 1,5 A). Auch keine Änderung!
Geändert von dirty_bird_981 (05.01.2012 um 19:45 Uhr)
Hallo,
die Pins auf den Erweiterungsports sind standardmäßig alle als Eingang konfiguriert.
Bist Du Dir also sicher das die I/O Ports richtig konfiguriert sind und auch richtig schalten?
(Ausgang! Nicht nur einfach bei nem als Eingang konfigurierten Pin den Pullup hin und her schalten!)
Falls das OK ist, schalte mal einen der Pins langsam an und aus (mit 3 Sekunden pause dazwischen) und mess die Spannung mit einem Multimeter.
Häng dann auch mal eine LED über einen Widerstand (470 Ohm bis 2K Ohm) dran und schau ob die blinkt.
MfG,
SlyD
Geändert von SlyD (06.01.2012 um 13:33 Uhr)
Ich denke mal wenn die kleinen Servos an einem Port funktionieren dann ist dieser korrekt geschaltet. Aber zur Sicherheit hier trotzdem mal mein Code:
void ServoInit(void);
{
DDRC |= IO_PD6;
DDRC |= IO_PC4;
DDRC |= IO_PC6;
servo1_pos_d=12;
servo2_pos_d=5;
servo3_pos_d=22;
}
void servo(int servo_nr,int position, int speed)
{
switch (servo_nr)
{
case 1:
servo1_pos_d=position;
break;
case 2:
servo2_pos_d=position;
break;
case 3:
servo3_pos_d=position;
break;
}
}
------------------------------------------------
und dies steht in der Timer-ISR in der rp6controllib.c
if(servo_timer>servo1_pos_d) PORTD &= ~IO_PD6; else PORTD |= IO_PD6;
if(servo_timer>servo2_pos_d) PORTC &= ~IO_PC4; else PORTC |= IO_PC4;
if(servo_timer>servo3_pos_d) PORTC &= ~IO_PC6; else PORTC |= IO_PC6;
if(servo_timer<200) servo_timer++; else servo_timer=0;
Lesezeichen