Volgorde servo puls Futaba R118F 40mHz ontvanger

Discussie in 'Model elektronica' gestart door Lex Verkuijl, 23 jun 2024.

  1. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.678
    Locatie:
    Lelystad
    Op die manier is het gelukt de library's er in te krijgen, dank voor de aanwijzingen. :banana:De test sketch (TXT bestand) compileert zonder fouten :thumbsup:, ik ga eens mijn breadboardje aanpassen en testen.
     
  2. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.678
    Locatie:
    Lelystad
    It's working!! Hieronder een sreenprintje van de CPI inlees in de bestaande sketch ingevoegd en de pulseIn() op non aktief gezet.

    [​IMG]

    Die 6800 er tussen is nu de doorlooptijd in microseconde. Dus 6,8ms, stukken sneller als de 44ms eerst! Maar dat is nog niet de echter tijd, haal je de print kommando's er uit schiet dat naar 0,28 - 0,30ms. Hier moet nog wat functionaliteit bij komen wat de sketch vertraagd, maar ik denk dat er snelheid genoeg overblijft om inderdaad de 2e nano te kunnen skippen. Ik moet minimaal een doorlooptijd van 0.54ms overhouden om de stepper straks op zijn maximum rpm te kunnen laten draaien.

    @hmeijdam, nogmaals dank voor je hulp. Op deze manier inlezen had me bij andere shetches ook al veel problemen kunnen besparen! Ook blijkt dit een stabieler resultaat te geven als met pulseIn(), ook dat is heel wat waard.
     
    Peter Houweling en Bruno van Hoek vinden dit leuk.
  3. hmeijdam

    hmeijdam

    Lid geworden:
    29 jan 2010
    Berichten:
    1.909
    Locatie:
    Barneveld
    Leuk om te horen dat je er baat bij hebt. Succes met je duikboot.
     
    FreekS, Lex Verkuijl en Peter Houweling vinden dit leuk.
  4. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.678
    Locatie:
    Lelystad
  5. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.331
    Locatie:
    Boskoop
    Ik volg dit met interesse, ook ik ben vaak bezig met Arduino om PPM of PWM pulsen op te halen uit een RC-ontvanger.
    Moet ik dat zo begrijpen dat de Library de pulsen ook de achtergrond ophaalt (en daar toch minstens 10 tot 12 ms voor nodig heeft om de meest recente informatie op te halen), maar dat de transfer naar de loop maar 6,8 ms in beslag neemt?

    Overigens zie ik in Lex's sketch dat Pulse5 twee keer gebruikt wordt, voor verschillende functies, is dat de bedoeling?
     
  6. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.331
    Locatie:
    Boskoop
    Overigens heb ik bij een eerdere poging om een PPM-pulsetrein te vertalen naar individuele PWM-pulsen informatie gevonden over iets typisch voor Futaba 35/40 Mc zenders: de fail safe settings worden overgedragen naar de ontvanger via de lengte van de markeerpulsen. Normaal zijn die zo'n 400 microseconden, maar bij Futaba kunnen die dus variƫren. Als je met de opgaande pulsen zal dat geen invloed hebben denk ik, maar bij de neergaande pulsen kan dat dus wel zo zijn. Vraag me niet naar de bron van die informatie, dat heb ik niet opgeslagen (ergens op RCGroups :D).

    N.B.: als je met de PWM uitgangen als input naar de Arduino werkt heb je daar natuurlijk geen last van.
     
  7. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.678
    Locatie:
    Lelystad
    Max,

    De 6,8 ms komt door de print commando's die er ook in staan om eea zichtbaar te krijgen. Dat kost in verhouding veel tijd ondanks een boudrate van 115200. Haal je die prints van de kanalen er uit en print hij alleen de doorlooptijd haal je op 8 tot 10 microseconde voor puur alleen het inlezen van de pulsen. Dit word op de achtergrond ingelezen door als er een kanaal op high gaat dan de tijd te registreren tot hij weer low gaat. (vraag me niet hoe exact, dat doet de library) Dit gaat met tijdmeting en de loop draait gewoon op de hoogst mogelijke snelheid door. Ik heb ook wel eens naar PPM inlezen gekeken, maar dit gaat veel eenvoudiger.
     
    Laatst bewerkt: 30 jun 2024
  8. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.331
    Locatie:
    Boskoop
    Misschien niet meer nodig, maar hier is een sketch zonder de ondoorzichtigheid van het werken met een library. Ik heb die een tijd geleden ergens in een Arduino forum opgepikt, en vervolgens naar mijn inzicht vereenvoudigd. Het vereist wel een PPM stream als input, maar de tijd om de individuele kanalen op te nemen is kort omdat eigenlijk alleen de opgaande flank van elke PPM puls geregistreerd wordt, en de PWM puls berekend wordt door die te vergelijken met de vorige registratie. In de tussenliggende tijd kun je allerlei ander zaken in de loop uitwerken, zoals het serieel doorsturen van de pulslengtes in het voorbeeld.
    Code:
    // Ch[0] remains at 0.
    
    unsigned long int mark,oldmark=0,space;
    volatile int ch[7];
    int count=1;
    bool start = false;
    
    void setup() {
     
      Serial.begin(9600);
     
      pinMode(2, INPUT_PULLUP);
      attachInterrupt(digitalPinToInterrupt(2), read_me, RISING); // enabling interrupt at pin 2
    }
    
    void loop() {
    
      Serial.print(ch[1]); Serial.print("\t");
      Serial.print(ch[2]); Serial.print("\t");
      Serial.print(ch[3]); Serial.print("\t");
      Serial.print(ch[4]); Serial.print("\t");
      Serial.print(ch[5]); Serial.print("\t");
      Serial.print(ch[6]); Serial.print("\n");
    
      delay(100);
    }
    
    
    void read_me() { // ISR.
    
      mark=micros(); // store time value when PPM pin status rises.
      space=mark-oldmark; // calculating time between two peaks
      oldmark=mark;
      if (start) {
        ch[count]=space;
        count+=1;
        if (count>6) { // restrict channel value recording to 6 channels
          count = 1;
          start = false;
        }
      }
     
    // detect sync space and set start flag for channel recording from next spaces.
      if ((space>10000) && (space<20000)) start = true; // sync space detected.
     
    }
    
            
    
     
    Laatst bewerkt: 30 jun 2024
  9. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.678
    Locatie:
    Lelystad
    Ik heb deze sketch even opgeslagen mocht ik in de toekomst een ontvanger die een PPM signaal beschikbaar heeft willen inlezen. Dan maar eens testen, ziet er eenvoudig, handig om eens te testen.. Deze 40MHz ontvanger heeft geen PPM uitgang, dus ik hou het bij de huidige setup.
     
  10. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.331
    Locatie:
    Boskoop
    :)
    Veel zenders hebben een PPM uitgang, mocht je een dringende behoefte voelen........
     
  11. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.678
    Locatie:
    Lelystad
    @hmeijdam,

    Kan het zijn dat dit pinchange gebeuren met die ibrary's wel werkt op een Nano, maar niet op een Mega ? Ik heb de sketch nu omgezet naar de pinbezetting van een Mega, "byte pin[]" op inlees pinnen 33 - 45 en verder niets gewijzigd, en er wordt niets ingelezen. Weer terug op de Nano met corresponderende pinnen ingesteld weer wel. De sketch niet aanpassen en dan die pinnen op de Mega gebruiken geeft alleen op pin 7 en 8 een inlees.

    Nano: byte pin[] = {2, 3, 4, 7, 8, 11, 12};
    Maga: byte pin[] = {33, 35, 37, 39, 41, 43, 45};
     
    Laatst bewerkt: 10 jul 2024
  12. martin_12

    martin_12

    Lid geworden:
    28 jun 2014
    Berichten:
    89
    Ik praat in deze voor mijn beurt maar als de informatie die hier staat:
    https://github.com/RC-Navy/DigisparkArduinoIntegration/tree/master/libraries/DigisparkSoftRcPulseIn
    om precies te zijn:
    ----------------------------------------------------------------------------
    Design considerations:
    The SoftRcPulseIn library relies the TinyPinChange library. This one shall be included in the sketch as well, except for the ESP8266 where TinyPinChange is not needed.

    On the arduino MEGA (ATmega2560), as all the pins do not support "pin change interrupt", only the following pins are supported:

    • 10 -> 15
    • 50 -> 53
    • A8 -> A15
    On the arduino Lenardo, Micro and Pro Micro (ATmega32U4), as all the pins do not support "pin change interrupt", only the following pins are supported:

    • 0 -> 3 (external INT0, INT1, INT2 and INT3 are used as emulated Pin Change Interrupt)
    • 8 -> 11 (pin 11 is not available on the headers/connectors)
    • 14 -> 17 (pin 17 is not available on the headers/connectors)
    On other devices (ATmega328, ATtiny84, ATtiny85 and ATtiny167), all the pins are usable.

    On ESP8266, all the GPIO are usable, except GPIO16.
    ----------------------------------------------------------------------------

    klopt dan zou dat kunnen.
     
  13. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.678
    Locatie:
    Lelystad
    Aha ... dank voor de info. Ik ga even de pin layout door elkaar gooien, maar moet goed komen zo.
     
  14. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.678
    Locatie:
    Lelystad
    Het werkt weer op de Mega. Nu pinnen 9, 10, 11, A9, A11, A13, A15 daarvoor in gebruik.
     
  15. martin_12

    martin_12

    Lid geworden:
    28 jun 2014
    Berichten:
    89
    Da's mooi, :thumbsup:.
     
  16. max z

    max z Vriend van modelbouwforum.nl PH-SAM

    Lid geworden:
    4 dec 2009
    Berichten:
    2.331
    Locatie:
    Boskoop
    Als je toch van een 'gewone' Nano af wil stappen: er zijn verschillende Nano varianten die meer dan 2 external interrupt pins hebben, zie HIER. Daar staat de Nano Every (nog) niet bij, maar HIER kun je zien dat alle digital pins als external interrupts te gebruiken zijn.
    Je kunt dan met een ISR per kanaal een verandering van de input registreren, en met een simpele test vaststellen of het 0-naar-1 of 1-naar-0 is, en zo de pulslengte meten. Geen library nodig...:)
     
  17. Bruno van Hoek

    Bruno van Hoek Vriend van modelbouwforum.nl PH-SAM Forum veteraan

    Lid geworden:
    23 aug 2002
    Berichten:
    10.877
    Locatie:
    Almere, MVA (ex-Daedalus Amsterdam)/ PH-SAM/F23D
    Ik vind een Nano al een enorm ding, vandaar dat mijn standaard een Pro Mini is.
    Nano op expanderboard is wel mijn testomgeving.
     
  18. Lex Verkuijl

    Lex Verkuijl

    Lid geworden:
    30 okt 2004
    Berichten:
    4.678
    Locatie:
    Lelystad
    Dan kun je ook eens zoeken op Nano Supermini, is nog kleiner als de Pro Mini
     
  19. Bruno van Hoek

    Bruno van Hoek Vriend van modelbouwforum.nl PH-SAM Forum veteraan

    Lid geworden:
    23 aug 2002
    Berichten:
    10.877
    Locatie:
    Almere, MVA (ex-Daedalus Amsterdam)/ PH-SAM/F23D
    Leuke tip, ga ik uitzoeken!
     

Deel Deze Pagina