annuncio

Comprimi
Ancora nessun annuncio.

E-OSD & Multiwii

Comprimi
X
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • #16
    @ U.Sentenza.
    Se il segnale è quello che ha rilevato Jonny-paletta quì, se quello riportato di 2.5mS è il periodo si tratta di un pwm a 400Hz di ampiezza 320mV.
    Ciao.
    Daniele.

    Commenta


    • #17
      Originariamente inviato da U.Sentenza Visualizza il messaggio
      Ciao, il segnale è in pwm, ma non so altro (è per questo che ho costruito un buffer semplice e applicato un condensatore in uscita), Certamente devo approfondire prima di procedere con un convertitore pwm analogico con range da 0 a 5V.

      Vai tranquillo, appenta ho l'occasione giusta ne compro 2 o 3 per esperimenti vari!(comunque grazie)


      Ho cercato in rete e non ho trovato lo schema elettrico, purtroppo non riesco a dirti nulla.
      Domanda: che micro è montato sull'OSD?


      Grazie per i complimenti,

      - si, va collegato un filo sul pin "RX" dell'OSD (pin 30) e collegato al TX di arduino o simili (naturalmente se le alimentazioni dell'OSD e di arduino sono diverse bisogna collegare anche il "gnd")
      - si, ho operato solo sulla 1.9
      grazie per le info appena ho un attimo mi metto all'opera


      Sent from my iPhone using Tapatalk

      Commenta


      • #18
        @ Jonny-Paletta
        U.Sentenza, è un casino integrare l'E-OSD anche nella 1.7?
        Io sul quad monto la 1.7, vola alla grande e sinceramente non mi và di sostituirla... vero Servo?
        Penso si possa fare, anche se attualmente non ho molto tempo...
        Facciamo una cosa: la 1.9 integra nel file config.h la configurazione della 1.7 (#define STAB_OLD_17), provala, se poi non va, vedrò di fare qualcosa!

        @ Danielxan
        Se il segnale è quello che ha rilevato Jonny-paletta quì, se quello riportato di 2.5mS è il periodo si tratta di un pwm a 400Hz di ampiezza 320mV.
        sembra 10 volte più piccolo di quello ch mi aspettavo!(320mv... pochissimi!)
        comunque sulla mia ricevente (tournigy) il segnale medio prelevato all'uscita del chip A7105 va da 1,3V a 2,3V.
        A questo punto ocorre pensare a qualcosa che riesca a integrare tutti i tipi di riceventi a prescindere dalla frequenza del PWM...

        Penso che l'unica strada percorribile si quella di contare il tempo che trascorre fra il fronte di salita e quello di discesa del segnale PWM, e forzare tramite pulsanti il setup su eeprom dello 0% e del 100%.

        Si può fare

        Commenta


        • #19
          @ U.Sentenza
          Il segnale sulla tua ricevente lo hai visualizzato con un'oscilloscopio?
          Facendo un periodimetro si può rilevare il duty-cycle in ingresso, poi quello in uscita lo generi tu con il modulo pwm del pic impostando un valore adeguato eventualmente usando una tabella di conversione in eeprom.
          La frequenza del pwm in ingresso non è importante.
          Ciao.
          Daniele.

          Commenta


          • #20
            E-OSD flashato

            A breve i test onboard
            FLYDRONE X4M - FLYDRONE X6M spyder -FLYDRONE mini
            FLYDRONE AXN FPV
            GOPRO HERO2 - FUTABA T9Z WC2 - FRSKY 2.4GHZ www.Flydrones.ch

            Commenta


            • #21
              Premetto che l'ho provato senza collegarlo all'arduino, ma l'altezza e l'RSSI a barrette io non li vedo... come mai?

              Non è possibile inserire una banda che oscura lo sfondo come nell'OSD originale?
              La funzione di poter spostare i valori a piacimento la trovavo molto utile... come anche la banda "grigia" perche in caso lo sfondo sia troppo chiaro rischi che i volori scritti in bianco non li leggi più o a fatica...
              Ultima modifica di Jonny-Paletta; 23 dicembre 11, 23:39.
              FLYDRONE X4M - FLYDRONE X6M spyder -FLYDRONE mini
              FLYDRONE AXN FPV
              GOPRO HERO2 - FUTABA T9Z WC2 - FRSKY 2.4GHZ www.Flydrones.ch

              Commenta


              • #22
                @Danielxan
                Il segnale sulla tua ricevente lo hai visualizzato con un'oscilloscopio? <-No, nessun oscilloscopio utilizzato.
                Facendo un periodimetro si può rilevare il duty-cycle in ingresso, poi quello in uscita lo generi tu con il modulo pwm del pic impostando un valore adeguato eventualmente usando una tabella di conversione in eeprom.
                La frequenza del pwm in ingresso non è importante. <- esatto
                @Jonny-Paletta
                Premetto che l'ho provato senza collegarlo all'arduino, ma l'altezza e l'RSSI a barrette io non li vedo... come mai?

                Non è possibile inserire una banda che oscura lo sfondo come nell'OSD originale?
                La funzione di poter spostare i valori a piacimento la trovavo molto utile... come anche la banda "grigia" perche in caso lo sfondo sia troppo chiaro rischi che i volori scritti in bianco non li leggi più o a fatica...
                Tranquillo tutto ok, per poter visualizzare i dati devi necessariamente collegarlo all'arduino con il multiwii 1.9 in quanto vengono passati alcuni parametri relativi alla visualizzazione dei dati.
                Esattamente questi:

                // ATTENTION: these should not be commented
                // OFF=0; ON=1 E-OSD setup
                #define BGndTXT 0 // now only 0 is supported
                #define BGndGRAP 0 // now only 0 is supported
                #define VisTemp 1 // only baro BMP085 installed (temperature display)
                #define VisBaro 1 // only baro installed (altimeter display)
                #define VisRSSI 1 // display radio signal

                senza questi non si vede nulla!

                Per la seconda domanda, come vedi sopra esistono 2 parametri che ora non utilizzo:
                #define BGndTXT 0
                #define BGndGRAP 0

                il primo rende grigio lo sfondo delle 2 righe di testo,
                il secondo la parte grafica, ma li stò implementando in questi giorni!

                (sto litigando con lo spazio, il micro è pieno...)

                Per la posizione, rendere modificabili le posizioni, occorrerebbe più spazio sul micro, fammi sapere cosa intendi fare e vedrò di farlo!

                Commenta


                • #23
                  Mah se non è un casino, potresti spiegare come fare a posizionare il testo nel display, così che poi noi tester possiamo mettere il testo dove ci piace di più...

                  Io lo monterò su un aereo da FPV, ma su quello non ho nessun arduino ne multiwii a bordo

                  Peccato che il micro sia già pieno, se no ti potevi sbizzarrire
                  FLYDRONE X4M - FLYDRONE X6M spyder -FLYDRONE mini
                  FLYDRONE AXN FPV
                  GOPRO HERO2 - FUTABA T9Z WC2 - FRSKY 2.4GHZ www.Flydrones.ch

                  Commenta


                  • #24
                    Beh, non è così semplice...
                    ora provo a spiegare:
                    if ((line >= 40) && (line < (48))) // prima linea di testo da 40 caratteri
                    {
                    TCNT0=0;
                    while(TCNT0<213); //wait ~7.5us from H-sync
                    tmpch=line-40;// R3
                    //PORTB.1=1;
                    //--> BgngTxt=pak_buf0[2]&0x04;
                    /*if ((pak_buf0[2]&0x04)==4) //codice che si occupa dello sfondo in grigio
                    {
                    DDRB.1=1;
                    PORTB.1=0;
                    } */
                    #asm// da qui vengono scritti i dati sul segnale video per la prima linea
                    clr r15 // zero register
                    ldi r18,40 // counter downto 0
                    ldi r27,high(_line_buffer)
                    ldi r26,low(_line_buffer) // XL
                    ldi r17,8
                    // main cycle: spdr=oem6x8[8*line_buffer[cnt]+subline]
                    write_str:
                    ld r16,X+ mul r16,r17 // line_buffer[cnt]*8
                    clc ldi r31,high(2*_oem6x8) ldi r30,low(2*_oem6x8) // ZL
                    add r30,r0 adc r31,r1 clc add r30,r3 adc r31,r15
                    lpm r16,Z out SPDR,r16 dec r18 brne write_str
                    // wait_t:
                    // in r16,SPSR sbrs r19,7 rjmp wait_t in r16,SPDR
                    #endasm // fine prima linea
                    //PORTB.1=0;
                    //--> BgngTxt=pak_buf0[2]&0x04;
                    /*if ((pak_buf0[2]&0x04)==4) //codice che si occupa dello sfondo in grigio
                    {
                    TCNT0=0;
                    while(TCNT0<20);
                    DDRB.1=0;
                    }*/

                    }
                    else if ((line >= 52) && (line < (60// seconda linea di testo da 40 caratteri {
                    TCNT0=0;
                    while(TCNT0<203); //wait ~7.5us from H-sync // 10 pts each condition
                    tmpch=line-52;// R3
                    //PORTB.1=1;
                    //--> BgngTxt=pak_buf0[2]&0x04;
                    /*if ((pak_buf0[2]&0x04)==4) //codice che si occupa dello sfondo in grigio
                    {
                    DDRB.1=1;
                    PORTB.1=0;
                    } */

                    #asm// da qui vengono scritti i dati sul segnale video per la seconda linea
                    clr r15 // zero register
                    ldi r18,40 // counter downto 0
                    ldi r27,high(_line_buffer+40)
                    ldi r26,low(_line_buffer+40) // XL
                    ldi r17,8
                    // main cycle: spdr=oem6x8[8*line_buffer[cnt]+subline]
                    write_str1:
                    ld r16,X+ mul r16,r17 // line_buffer[cnt]*8
                    clc ldi r31,high(2*_oem6x8) ldi r30,low(2*_oem6x8) // ZL
                    add r30,r0 adc r31,r1 clc add r30,r3 adc r31,r15
                    lpm r16,Z out SPDR,r16 dec r18 brne write_str1
                    // wait_t:
                    // in r16,SPSR sbrs r19,7 rjmp wait_t in r16,SPDR
                    #endasm // fine seconda linea
                    //PORTB.1=0;
                    //--> BgngTxt=pak_buf0[2]&0x04;
                    /*if ((pak_buf0[2]&0x04)==4) //codice che si occupa dello sfondo in grigio
                    {
                    TCNT0=0;
                    while(TCNT0<20);
                    DDRB.1=0;
                    }*/

                    }
                    qui sopra c'è il codice che si occupa della posizione sul video delle righe di testo (per ora solo 2)
                    Per poterlo alzare o abbassare, occorre modificare le linee seguenti:
                    ...
                    if ((line >= 40) && (line < (48))) // prima linea di testo da 40 caratteri
                    ...
                    else if ((line >= 52) && (line < (60// seconda linea di testo da 40 caratteri

                    Vanno modificati i numeri 40-48 e 52-60.
                    L'intervallo fra le coppie va lasciato di 8.
                    Poi va ricompilato il tutto.
                    Per la posizione delle informazioni sulle righe invece è un casino, vanno modificate le istruzioni print e intos presenti nel file.



                    P.S.
                    Allego immagine relativa alla memoria disponibile
                    File allegati
                    Ultima modifica di U.Sentenza; 24 dicembre 11, 15:25.

                    Commenta


                    • #25
                      Originariamente inviato da U.Sentenza Visualizza il messaggio
                      Allego immagine relativa alla memoria disponibile
                      Si però vedo uno 0% sull'uso della eprom, non è possibile spostare ad esempio la parte del set caratteri 8x6 in eprom e richiamarla con una routine di lettura?

                      Te lo chiedo da ultra-noob per quel che riguarda gli AVR.
                      Ciao.
                      Daniele.

                      Commenta


                      • #26
                        @ Danielxan
                        Si però vedo uno 0% sull'uso della eprom, non è possibile spostare ad esempio la parte del set caratteri 8x6 in eprom e richiamarla con una routine di lettura?

                        Te lo chiedo da ultra-noob per quel che riguarda gli AVR
                        Hai perfettamente ragione, è proprio quello che stò tentando di fare

                        Inizialmente l'ho modificato per fargli fare 2 cose in croce e quindi non mi importava!

                        Commenta


                        • #27
                          Non sò se per gli AVR è la stessa cosa, ma ad esempio il compilatore che uso io per i PIC dalla versione Lite a quella commerciale c'è un 15% di differenza di spazio utilizzato a parità di sorgente.
                          Ciao.
                          Daniele.

                          Commenta


                          • #28
                            Sarebbe interessante avere una sorta di warning quando la lipo scende sotto ad un certo voltaggio sempre che sia fattibile...
                            FLYDRONE X4M - FLYDRONE X6M spyder -FLYDRONE mini
                            FLYDRONE AXN FPV
                            GOPRO HERO2 - FUTABA T9Z WC2 - FRSKY 2.4GHZ www.Flydrones.ch

                            Commenta


                            • #29
                              Ottimo, metto in cantiere anche questo!

                              Commenta


                              • #30
                                domada tecnica

                                ciao io ho aggiornato un g-osd, ed ho impiegato un po' di tempo per capire come fare, ma mi piacerebbe aggiungerlo al multiwii come hai fatto tu sfruttando anche i dati del gps, pensi sia possibile realizzare questo mio sogno?
                                grazie
                                Gennaro

                                Commenta

                                Sto operando...
                                X