Modelbouwforum.nl


Ga terug   Modelbouwforum.nl > Algemeen Modelbouw > Model elektronica

Reageren
 
Discussietools Weergave
Oud 3 mei 2009, 12:43   #31 (permalink)
 
Sleurhutje's schermafbeelding
 
Lid sinds: 2 juni 2006
Locatie: Beverwijk Roepnaam: Jeroen
Leeftijd: 42
Berichten: 22.187
Weblogartikelen: 2
Standaard

Citaat:
Oorspronkelijk geplaatst door xyz Bekijk bericht
Komen de start van een pulzen naar de servo's uit een ontvanger allemaal tegelijk of zijn die verschoven van elkaar ?

Bart,
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.
Sleurhutje is nu online   Met citaat reageren
Oud 3 mei 2009, 12:48   #32 (permalink)
 
Sleurhutje's schermafbeelding
 
Lid sinds: 2 juni 2006
Locatie: Beverwijk Roepnaam: Jeroen
Leeftijd: 42
Berichten: 22.187
Weblogartikelen: 2
Standaard

Citaat:
Oorspronkelijk geplaatst door rixo Bekijk bericht
Is het wel nodig om alle 6 signalen tegelijk te kunnen meten? Misschien is het mogelijk om een PPM (Puls Positie Modulation) signaal uit de ontvanger te halen. Anders zou dit ook moeten lukken met 6 diodes en een weerstand.
Dat gaat niet lukken. Dan moet je er ook een condensatortje mee in serie zetten zodat je een naald krijgt voor elke flank die gegenereerd wordt. Als je alleen diodes en weerstanden gebruikt en één van de zes ingangen is al hoog, dan zal een volgende opgaande flank geen effect hebben totdat alle andere ingangen laag zijn.
__________________
Ik discussieer niet, ik probeer je uit te leggen waarom ik gelijk heb.
Sleurhutje is nu online   Met citaat reageren
Oud 3 mei 2009, 12:50   #33 (permalink)
 
Cheeta's schermafbeelding
 
Lid sinds: 8 juli 2003
Locatie: Mijdrecht
Leeftijd: 24
Berichten: 8.246
Standaard

Citaat:
Oorspronkelijk geplaatst door Sleurhutje Bekijk bericht
Bij Spektrum op de AR7000 en AR9000 is een zogenaamde servo sync in gebruikt. de signalen naar de servo's worden allemaal gelijktijdig gestart.
hoe dit te ondervangen dan?

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
Cheeta is offline   Met citaat reageren
Oud 3 mei 2009, 13:21   #34 (permalink)
 
Sleurhutje's schermafbeelding
 
Lid sinds: 2 juni 2006
Locatie: Beverwijk Roepnaam: Jeroen
Leeftijd: 42
Berichten: 22.187
Weblogartikelen: 2
Standaard

Citaat:
Oorspronkelijk geplaatst door Cheeta Bekijk bericht
hoe dit te ondervangen dan?

tevens ik neem aan dat ze ook een microcontroller gebruiken dus dan zal er een kleine delay in moeten zitten...
Geen idee hoe ze het signaal precies opbouwen. In ieder geval is de informatie op basis van Wireless USB met meer zendvermogen. De uiteindelijke informatiesnelheid is vele malen hoger dan bij enkel het uizenden van PPM/PCM signaal. Het is immers digitaal en elke positie kun je als harde getallen doorsturen. Uiteindelijk maakt de ontvanger hier weer servosignaal van. Omdat de waarden opgeslagen zijn in de ontvanger, is het eenvoudig(er) om alle servo's gelijktijdig te sturen.

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.
Sleurhutje is nu online   Met citaat reageren
Oud 3 mei 2009, 13:29   #35 (permalink)
rixo
Guest
 
Berichten: n/a
Standaard

Citaat:
Oorspronkelijk geplaatst door Sleurhutje Bekijk bericht
Dat gaat niet lukken. Dan moet je er ook een condensatortje mee in serie zetten zodat je een naald krijgt voor elke flank die gegenereerd wordt. Als je alleen diodes en weerstanden gebruikt en één van de zes ingangen is al hoog, dan zal een volgende opgaande flank geen effect hebben totdat alle andere ingangen laag zijn.
Je hebt gelijk. Dit werkt alleen bij ontvangers waar de servo signalen elkaar niet overlappen.

@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.
  Met citaat reageren
Oud 3 mei 2009, 13:32   #36 (permalink)
 
Cheeta's schermafbeelding
 
Lid sinds: 8 juli 2003
Locatie: Mijdrecht
Leeftijd: 24
Berichten: 8.246
Standaard

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
Cheeta is offline   Met citaat reageren
Oud 4 mei 2009, 21:25   #37 (permalink)
 
Cheeta's schermafbeelding
 
Lid sinds: 8 juli 2003
Locatie: Mijdrecht
Leeftijd: 24
Berichten: 8.246
Standaard

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];
                                            }
                                            
                                    }
                
            }
        }
    }
http://pastebin.com/m651aa81
__________________
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
Cheeta is offline   Met citaat reageren
Oud 4 mei 2009, 22:13   #38 (permalink)
 
Cheeta's schermafbeelding
 
Lid sinds: 8 juli 2003
Locatie: Mijdrecht
Leeftijd: 24
Berichten: 8.246
Standaard

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
            }


  
    }
    }
http://pastebin.com/m3851d3b0
__________________
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
Cheeta is offline   Met citaat reageren
Ga terug   Modelbouwforum.nl > Algemeen Modelbouw > Model elektronica
Reageren

Discussietools
Weergave

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Uit
Pingbacks are Uit
Refbacks are Uit



Alle tijden zijn GMT +2. Het is nu 09:01.


Powered by vBulletin®
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.6.0
Vendor Tools vBulletin Plugins by Drive Thru Online, Inc.
(c) Modelbouwforum.nl, 2002-2012
One of the largest message boards on the web !