![]() |
| | |||||||
| Registreer | Adverteerders | FAQ | Ledenlijst | Interessegroepen | Zoeken | Berichten van vandaag | Markeer forums als gelezen |
![]() |
| | Discussietools | Weergave |
| | #31 (permalink) |
| Lid sinds: 2 juni 2006 Locatie: Beverwijk Roepnaam: Jeroen Leeftijd: 42
Berichten: 22.187
Weblogartikelen: 2 | Bij Spektrum op de AR7000 en AR9000 is een zogenaamde servo sync in gebruikt. de signalen naar de servo's worden allemaal gelijktijdig gestart.
__________________ Ik discussieer niet, ik probeer je uit te leggen waarom ik gelijk heb. |
| | |
| | #32 (permalink) | |
| Lid sinds: 2 juni 2006 Locatie: Beverwijk Roepnaam: Jeroen Leeftijd: 42
Berichten: 22.187
Weblogartikelen: 2 | Citaat:
__________________ Ik discussieer niet, ik probeer je uit te leggen waarom ik gelijk heb. | |
| | |
| | #33 (permalink) | |
| Lid sinds: 8 juli 2003 Locatie: Mijdrecht Leeftijd: 24
Berichten: 8.246
| Citaat:
tevens ik neem aan dat ze ook een microcontroller gebruiken dus dan zal er een kleine delay in moeten zitten...
__________________ Mvg. Alwin ►Trucks: Liebherr LTM1090/2 [Bouwfase], Scania VSB met stenentrailer, Scania Torpedo Bergingswagen ►De Asfalt Rockers Liever 8 plofjes, dan 6 die er klappen | |
| | |
| | #34 (permalink) | |
| Lid sinds: 2 juni 2006 Locatie: Beverwijk Roepnaam: Jeroen Leeftijd: 42
Berichten: 22.187
Weblogartikelen: 2 | Citaat:
Nadeel van alle servo's tegelijk sturen is dat de totale verbruikte stroom door de servo's enorm kan toenemen. Voordeel is dat alle servo's gelijktijdig verplaatsen en er geen verschil is tussen bijv. linker- en rechterrolroeren. Dat is dus een overweging die je moet maken. Wedstrijdenvliegers kicken op synchroon lopende servo's.
__________________ Ik discussieer niet, ik probeer je uit te leggen waarom ik gelijk heb. | |
| | |
| | #35 (permalink) | |
| Guest
Berichten: n/a
| Citaat:
@Cheeta Misschien is het handig om te vertellen wat voor ontvanger je gebruikt. Vaak zijn de servo signalen zoals in jouw plaatje verschoven ten opzichte van elkaar. Dit heeft als voordeel dat de belasting op de voedingslijn (doordat de servo's naar een nieuwe positie gaan) gespreid is. | |
|
| | #36 (permalink) |
| Lid sinds: 8 juli 2003 Locatie: Mijdrecht Leeftijd: 24
Berichten: 8.246
|
voornamelijk robbe, f-14 etc en graupner mx-16s. maar ook assan 2.4ghz modules. ik wil toch vrij universeel blijven.
__________________ Mvg. Alwin ►Trucks: Liebherr LTM1090/2 [Bouwfase], Scania VSB met stenentrailer, Scania Torpedo Bergingswagen ►De Asfalt Rockers Liever 8 plofjes, dan 6 die er klappen |
| | |
| | #37 (permalink) |
| Lid sinds: 8 juli 2003 Locatie: Mijdrecht Leeftijd: 24
Berichten: 8.246
|
Maar goed poging228272382381 :P. Ik heb nu dit programma maar krijg mijn timer niet lopend???? wat doe ik fout? kan zo gauw niets vinden.. compiler geeft ook geen meldingen. Code: #include <system.h>
#pragma DATA 0x2007, 0x3F3A
#pragma CLOCK_FREQ 20000000
unsigned char pwm_in_buf[8] = {0,0,0,0,0,0,0,0};
unsigned char pwm_in_val[8] = {0,0,0,0,0,0,0,0};
char states = 0;
char timer_temp;
char timer1;
void main()
{
// 76543210
trisa = 00000000b;
trisb = 00001111b;
trisc = 00000000b;
trisd = 00000000b;
trise = 00000000b;
porta = 00000000b;
portb = 00000000b;
portc = 00000000b;
portd = 00000000b;
porte = 00000000b;
char i = 0;
//Timer2 instellen
clear_bit( t2con, T2CKPS1 ); //prescaler rate 1:16
clear_bit( t2con, T2CKPS0 ); //Set timer 2 postscaler rate
clear_bit( t2con, TOUTPS3 ); //postscaler rate 1:16
clear_bit( t2con, TOUTPS2 );
clear_bit( t2con, TOUTPS1 );
clear_bit( t2con, TOUTPS0 ); //Set timer 2 mode (enable or disable)
set_bit( t2con, TMR2ON ); //enable timer 2
// init
// timer 1 moet draaien en de snelheid hangt
// af van de in te lezen pwm signalen
while(1)
{
set_bit(portb,6);
delay_ms(10);
clear_bit(portb,6);
}
{
if (tmr2 < 128)
clear_bit(portb,7);
else
set_bit(portb,7);
}
for(i=0;i<4;i++)
{
if ((portb ^ states) & (1 << i))
{
// set nieuwe staat in geheugen
states = (states & ~(1 << i)) | (portb & (1 << i));
// verandering
if (portb & (1 << i))
{
// rising edge
// zet startwaarde in buffer
pwm_in_buf[i] = tmr2;
}
else
{
// falling edge
// bereken tijd in ticks
timer_temp = tmr2;
if(timer_temp < pwm_in_buf[i])
{
// overflow geweest - moet even creatief gerekend worden.....
timer_temp = pwm_in_buf[i] - timer_temp;
pwm_in_val[i] = 0 - timer_temp;
}
else
{
// geen overflow geweest
pwm_in_val[i] = timer_temp - pwm_in_buf[i];
}
}
}
}
}
__________________ Mvg. Alwin ►Trucks: Liebherr LTM1090/2 [Bouwfase], Scania VSB met stenentrailer, Scania Torpedo Bergingswagen ►De Asfalt Rockers Liever 8 plofjes, dan 6 die er klappen |
| | |
| | #38 (permalink) |
| Lid sinds: 8 juli 2003 Locatie: Mijdrecht Leeftijd: 24
Berichten: 8.246
|
updateje... Fout gevonden echter nu nog even kijken waarom ik het signaal dat ik lees niet correct is.. gaat ergens wat fout. meet wel een signaal maar lijkt erop dat ik meerdere malen een overflow krijg... aangezien het signaal veranderd naar verloop van tijd oftewel meet wel wat. Maar leest dit niet correct in. Code: #include <system.h>
#pragma DATA 0x2007, 0x3F3A
#pragma CLOCK_FREQ 20000000
unsigned char pwm_in_buf[8] = {0,0,0,0,0,0,0,0};
unsigned char pwm_in_val[8] = {0,0,0,0,0,0,0,0};
char states = 0;
char timer_temp;
char timer1;
void main()
{
// 76543210
trisa = 00000000b;
trisb = 00001111b;
trisc = 00000000b;
trisd = 00000000b;
trise = 00000000b;
porta = 00000000b;
portb = 00000000b;
portc = 00000000b;
portd = 00000000b;
porte = 00000000b;
char i = 0;
char x = 0;
char servo1 = 230; //Waarde Servo 1
char servo2 = 70; //Waarde Servo 2
char servo3 = 150; //Waarde Servo 3
char servo4 = 120; //Waarde Servo 4
char freq = 12; //Waarde Frequentie PWM. (Standaard = 20 (50hz))
//Timer2 instellen
set_bit( t2con, T2CKPS1 ); //prescaler rate 1:16
set_bit( t2con, T2CKPS0 ); //Set timer 2 postscaler rate
set_bit( t2con, TOUTPS3 ); //postscaler rate 1:16
set_bit( t2con, TOUTPS2 );
set_bit( t2con, TOUTPS1 );
set_bit( t2con, TOUTPS0 ); //Set timer 2 mode (enable or disable)
set_bit( t2con, TMR2ON ); //enable timer 2
// init
// timer 1 moet draaien en de snelheid hangt
// af van de in te lezen pwm signalen
while(1)
{
{
if (tmr2 < 128)
clear_bit(portb,7);
else
set_bit(portb,7);
}
for(i=0;i<8;i++)
{
if ((portb ^ states) & (1 << i))
{
// set nieuwe staat in geheugen
states = (states & ~(1 << i)) | (portb & (1 << i));
// verandering
if (portb & (1 << i))
{
// rising edge
// zet startwaarde in buffer
pwm_in_buf[i] = tmr2;
}
else
{
// falling edge
// bereken tijd in ticks
timer_temp = tmr2;
if(timer_temp < pwm_in_buf[i])
{
// overflow geweest - moet even creatief gerekend worden.....
timer_temp = pwm_in_buf[i] - timer_temp;
pwm_in_val[i] = 0 - timer_temp;
}
else
{
// geen overflow geweest
pwm_in_val[i] = timer_temp - pwm_in_buf[i];
}
}
}
}
for(x=0;x<30;x++) //Start Pulstrein
{
set_bit(porta,0); //Opgaande flank Servo 1
delay_10us(pwm_in_val[1]); //Signaal Servo 1 (70 - 230)
clear_bit(porta,0); //Neergaande flank Servo 1
delay_ms(1); //Vertraging nodig voor zuiver werken servo en PIC
set_bit(porta,1); //Opgaande flank Servo 2
delay_10us(servo2); //Signaal Servo 2 (70 - 230)
clear_bit(porta,1); //Neergaande flank Servo 2
delay_ms(1); //Vertraging nodig voor zuiver werken servo en PIC
set_bit(porta,2); //Opgaande flank Servo 3
delay_10us(servo3); //Signaal Servo 3 (70 - 230)
clear_bit(porta,2); //Neergaande flank Servo 3
delay_ms(1); //Vertraging nodig voor zuiver werken servo en PIC
set_bit(porta,3); //Opgaande flank Servo 4
delay_10us(servo4); //Signaal Servo 4 (70 - 230)
clear_bit(porta,3); //Neergaande flank Servo 4
delay_ms(freq); //PWM Breedte bepalen tussen 45Hz en 62Hz
}
}
}
__________________ Mvg. Alwin ►Trucks: Liebherr LTM1090/2 [Bouwfase], Scania VSB met stenentrailer, Scania Torpedo Bergingswagen ►De Asfalt Rockers Liever 8 plofjes, dan 6 die er klappen |
| | |
| ||||||
![]() |
| Discussietools | |
| Weergave | |
| |