AVR OSD e periféricos

Nada mais interessante do que tirar uma foto de você mesmo do ponto de vista do seu modelo voando, ou do seu bairro, ou dos lugares onde passou as férias, ou então pilotar tendo a visão como se estivesse dentro do seu modelo (FPV). Divida estas imagens conosco!
Avatar do usuário
alexcmag
Equipe E-voo.com
Mensagens: 14827
Registrado em: Sex Fev 13, 2004 12:13 pm
Localização: Sao Paulo SP
Contato:

Mensagem por alexcmag »

Quanto aos minutos de latitude, você está certo.

Quando à longitude, no equador (pertinho de você) cada minuto dá perto dos 1853Km, mas por aqui pouco abaixo de 23 graus sul cada minuto de longitude dá uns 1700m.

No Estreito de Magalhães dá 1191m, e a 89 graus sul dá umas poucas centenas de metros. No polo sul, dá zero.
oliver.ntg
membro
Mensagens: 26
Registrado em: Qui Jul 08, 2010 11:40 am
Localização: Fortaleza, CE

Mensagem por oliver.ntg »

[quote:a008d1d8f6="alexcmag"]Quanto aos minutos de latitude, você está certo.

Quando à longitude, no equador (pertinho de você) cada minuto dá perto dos 1853Km, mas por aqui pouco abaixo de 23 graus sul cada minuto de longitude dá uns 1700m.

No Estreito de Magalhães dá 1191m, e a 89 graus sul dá umas poucas centenas de metros. No polo sul, dá zero.[/quote:a008d1d8f6]


HUmm, agora a ficha caiu, voce em razão!!!
Avatar do usuário
alexcmag
Equipe E-voo.com
Mensagens: 14827
Registrado em: Sex Fev 13, 2004 12:13 pm
Localização: Sao Paulo SP
Contato:

Mensagem por alexcmag »

Como disse, é para otimizar, no seu caso não vai fazer muita diferença, até na latitude onde estou o erro é menor do que as setas em 8 direções, mas se você for voar no RS, Patagônia, norte da Europa, etc. já dá uma diferença. Se for pra Lapônia então...

Depois que tudo estiver acertado, uma tabelinha de uns 23 ítens (dividindo a latitude por 4) já melhora a precisão mais o suficiente para navegar com pouco erro.
Avatar do usuário
TAZ
membro
Mensagens: 38
Registrado em: Sex Jan 11, 2008 8:56 am
Localização: Québec/Canadá

Mensagem por TAZ »

[quote:491b7a39d4="Antonio Garcia"][quote:491b7a39d4="TAZ"]
Procurei aqui no fórum um tópico sobre o seu OSD mas não encontrei. Você poderia passar o link?[/quote:491b7a39d4]

http://www.e-voo.com/forum/viewtopic.php?t=51316[/quote:491b7a39d4]
Obrigado! Maneiro o seu OSD!
FlyGIBA
membro
Mensagens: 11
Registrado em: Sex Ago 22, 2008 10:21 am
Localização: Curitiba, PR

OSD FlyGiba

Mensagem por FlyGIBA »

Oi Oliver.ntg,

Eu tb cheguei a fazer um OSD usando um Atmega644 operando a 20MHz... fiz o sistema de pixels parecido com o seu. Quando chegar em casa eu vejo e se tiver alguma coisa interessante eu posto aqui...

O mais interessante no meu projeto é q fiz um amplificador de video com um somador usando um OPAMP. Dai o video entrava na entrada direta e os caracteres (branco, preto, transparente) entravam na entrada invertida do OPAMP. Uma vez postei imagens do OSD nesse forum, dá uma olhada na qualidade do nivel do branco e preto... http://www.e-voo.com/forum/viewtopic.php?t=51316&postdays=&postorder=asc&start=150

Uma pergunta, alguém sabe algum distribuidor BOM pra comprar componentes? Eu vi que na Digikey eles possuem gyroscopios dual axis, sensores de pressão absoluta, magnetometros, sens. PIR, etc, porém o custo de envio é U$40,00, mais 60% de imposto aqui ( :shock: ).

Giba1
AVR rocks!!!
Avatar do usuário
Lt_Nelson
membro
Mensagens: 1179
Registrado em: Sáb Jan 06, 2007 9:18 pm
Localização: PREENCHER A SUA LOCALIZAÇÃO

Re: OSD FlyGiba

Mensagem por Lt_Nelson »

[quote:bc38506ed4="FlyGIBA"]
Uma pergunta, alguém sabe algum distribuidor BOM pra comprar componentes? Eu vi que na Digikey eles possuem gyroscopios dual axis, sensores de pressão absoluta, magnetometros, sens. PIR, etc, porém o custo de envio é U$40,00, mais 60% de imposto aqui ( :shock: ).

Giba1[/quote:bc38506ed4]

www.sparkfun.com

Na Digikey se for por courier (UPS, Fedex, etc):
((US$40,00+componentes)*dolar*1,60+R$200,00)*ICMS

[]s
50W, 150W, 300W, 600W, 900W, 1200W, 3000W
oliver.ntg
membro
Mensagens: 26
Registrado em: Qui Jul 08, 2010 11:40 am
Localização: Fortaleza, CE

Re: OSD FlyGiba

Mensagem por oliver.ntg »

[quote:062487a342="FlyGIBA"]Oi Oliver.ntg,

Eu tb cheguei a fazer um OSD usando um Atmega644 operando a 20MHz... fiz o sistema de pixels parecido com o seu. Quando chegar em casa eu vejo e se tiver alguma coisa interessante eu posto aqui...

O mais interessante no meu projeto é q fiz um amplificador de video com um somador usando um OPAMP. Dai o video entrava na entrada direta e os caracteres (branco, preto, transparente) entravam na entrada invertida do OPAMP. Uma vez postei imagens do OSD nesse forum, dá uma olhada na qualidade do nivel do branco e preto... http://www.e-voo.com/forum/viewtopic.php?t=51316&postdays=&postorder=asc&start=150

Uma pergunta, alguém sabe algum distribuidor BOM pra comprar componentes? Eu vi que na Digikey eles possuem gyroscopios dual axis, sensores de pressão absoluta, magnetometros, sens. PIR, etc, porém o custo de envio é U$40,00, mais 60% de imposto aqui ( :shock: ).

Giba1[/quote:062487a342]

Giba;
Alem da SPARKFUN voce pode comprar algumas coisas interessantes neste site:

[url]http://www.sureelectronics.net/index.php[/url]

Já comprei la e é confiavel, so demora por ser na china. Aqui no brasil a farnell pelo menos vende em pequenas quantidades... e tem os sensores de pressao da .... esqueci agora, mas postei o codigo do sensor diferencial que comprei.
Gostei das imagens do seu OSD, muito bom. Tem como colocar esquematico? PErcebi em campo que a caixa muito preta pode atrapalhar a visualização de alguns detalhes durante o voo, por isso preferi deixar a caixa preta, mas não se sobrepondo de forma absoluta à imagem de fundo.
Hoje testei novo algoritimo e deu tudo certo, vou postar umas imagens e videos assim que puder.
Achei muito bacana ter trabalhado com o horizonte artificial, vai ser meu proximo passo.
FlyGIBA
membro
Mensagens: 11
Registrado em: Sex Ago 22, 2008 10:21 am
Localização: Curitiba, PR

OSD FlyG

Mensagem por FlyGIBA »

Esse é o link (http://giba1.webs.com/avrosd.htm) pro meu código OSD no AVR. Esse código não está pronto e é apenas para referência, pra quem estiver fazendo OSD com Atmega.

Note que eu usei a INT0 no sincronismo horizontal e INT1 no vertical do LM1881.

Eu criei uma tabela ASCII com os caracteres em binário chamada TABLETRAS[7][128] que fica na memória de programa.

Dai cada texto q eu quero mostrar na tela eu uso um array na memória RAM, por exemplo TEXTO1[8]={"Teste"} e o DBTEXTO1[7][8] é atualizado na rotina principal com o correspondente binario usando a tabela em binario TABLETRAS com os simbolos correspondentes. Eu atualizo o DBTEXTO na rotina principal, pq se for fazer isso dentro da interrupção a função "pgm_read_byte" acaba atrasando muito e fica um espaço grande entre as letras. Fazendo do jeito q eu fiz fica um espaço mínimo. Na verdade preciso até inserir um delay pras letras nao grudarem muito.

Sei que a explicação ta meio confusa, mas é difícil mesmo explicar um código fonte. Qquer coisa é só perguntar.

obs. quando eu achar mais um tempo eu desenho e posto um esquema do circuito... inclusive com o amplificador somador do video.

----
Giba1
AVR rocks!!!
oliver.ntg
membro
Mensagens: 26
Registrado em: Qui Jul 08, 2010 11:40 am
Localização: Fortaleza, CE

Re: OSD FlyG

Mensagem por oliver.ntg »

[quote:d93207736e="FlyGIBA"]Esse é o link (http://giba1.webs.com/avrosd.htm) pro meu código OSD no AVR. Esse código não está pronto e é apenas para referência, pra quem estiver fazendo OSD com Atmega.

Note que eu usei a INT0 no sincronismo horizontal e INT1 no vertical do LM1881.

Eu criei uma tabela ASCII com os caracteres em binário chamada TABLETRAS[7][128] que fica na memória de programa.

Dai cada texto q eu quero mostrar na tela eu uso um array na memória RAM, por exemplo TEXTO1[8]={"Teste"} e o DBTEXTO1[7][8] é atualizado na rotina principal com o correspondente binario usando a tabela em binario TABLETRAS com os simbolos correspondentes. Eu atualizo o DBTEXTO na rotina principal, pq se for fazer isso dentro da interrupção a função "pgm_read_byte" acaba atrasando muito e fica um espaço grande entre as letras. Fazendo do jeito q eu fiz fica um espaço mínimo. Na verdade preciso até inserir um delay pras letras nao grudarem muito.

Sei que a explicação ta meio confusa, mas é difícil mesmo explicar um código fonte. Qquer coisa é só perguntar.

obs. quando eu achar mais um tempo eu desenho e posto um esquema do circuito... inclusive com o amplificador somador do video.

----
Giba1[/quote:d93207736e]

Precisa explicar nao, nao fiz muito diferente não.....
Uma dica, nao use matrizes multi-dimensionais, demora mais pra carregar os valores a partir delas. no meu caso criei matrizes constantes, contendo os caracteres e as figuras, dentro de uma rotina de conversão carrego em matrizes na memoria RAM.
A utilização de variáveis voláteis, no seu caso o "temp" é uma grande sacada, pelo menos no compilador que uso, pois ele usa um registrador que dixa a coisa muito rápida, de forma que é necessário gerar uns NOPs pra gerar um espaço, como voce disse.
O meu sistema já esta totalmente funcional, pretendo testar este final de semana e postar mais detalhes aqui.
Outro detalhe importante, fuja de utilizar floats, prefira utilizar ints e se nao tiver jeito o long int, pois as operações consomem uma quantidade absurda de memoria. Pra que tenha uma ideia a operação de raiz quadrada que calcula a distancia no meu programa consome cerca de 21% da memoria do mega168
FlyGIBA
membro
Mensagens: 11
Registrado em: Sex Ago 22, 2008 10:21 am
Localização: Curitiba, PR

OSD FlyG

Mensagem por FlyGIBA »

Falai Oliver.ntg,

É bom conversar com outras pessoas q tb entendem do assunto.
Não entendi o q vc quis dizer com as matrizes multidimensionais. Você ta falando da matriz TABLETRAS[7][128] na memoria de programa?

Normalmente eu fujo de floats, porém nessa aplicação eu tinha bastante memória de programa e não tenho problema de tempo, pois as operações ficam no loop principal q de nada afeta as rotinas do OSD.

Uma coisa: no meu programa da pra substituir aquele monte de PORTC= temp;temp <<=1; por uma MACRO pro código ficar mais limpo. Outra sacada: usando o ponteiro P=&DBTEXTO1[0][0]; dentro da interrupção eu deixo o acesso sequencial da memoria bem mais rápido também. O switch( line ) tb ajuda na velocidade.

Dica: Uma forma de aumentar a velocidade de calculos de funcoes matematicas complexas é usando tabelas. Por exemplo, vc usa uma tabela de n pontos pra converter um numero na sua raiz quadrada, se o resultado dessa raiz ficar entre dois pontos da tabela, vc pode aproximar por interpolação... se vc olhar no meu código tem uma tabela de divisao por 7 (u8 DIVby7[56]).

Quando eu tiver algum tempo vou continuar o projeto, porém eu precisava de alguns componentes q só encontramos no exterior... vou ver como faço pra conseguir... talvez compre na Digikey mesmo...mas enquanto isso vou pensando em outras coisas.

Abraço
AVR rocks!!!
Responder