Vario sonoro usando FrSky DHT-U
[quote:4d81d33010="MacCross"][quote:4d81d33010="Rudolf"]O MSP tem como enviar 2 saídas complementares...[/quote:4d81d33010]
:o Dá pra fazer isso com o Arduino e Tone?
[/quote:4d81d33010]
Sei não. Nunca mexi com o Arduino...
Pesquise na geração de sinais PWM.
[quote:4d81d33010]
Aquele esquema que eu descobri só não torra o TR se o indutor tiver uma resistencia consideravel (o que deve ser verdade para 39mH). Será que acha isso na Santa Efigenia?
[/quote:4d81d33010]
Acho que sim, provavelmente na Dabi ou na Mult (ambas na Timbiras, entre a Santa Ifigênia e a Rio Branco).
[quote:4d81d33010]
O alarme é este:
[url]http://www.ebay.com/itm/Self-adhesive-Wireless-Magnetic-Sensor-Burglar-Door-Window-Entry-Alarm-90-dB-TR-/181206294931?pt=LH_DefaultDomain_0&hash=item2a30bca193[/url]
vem com pilhas, tem um integrado, reed, Tr, indutor e piezo (alem da caixa, imã, fita dupla face... :lol: )[/quote:4d81d33010]
Consegui 2 campainhas de telefone público. Berra que é uma beleza :)
:o Dá pra fazer isso com o Arduino e Tone?
[/quote:4d81d33010]
Sei não. Nunca mexi com o Arduino...
Pesquise na geração de sinais PWM.
[quote:4d81d33010]
Aquele esquema que eu descobri só não torra o TR se o indutor tiver uma resistencia consideravel (o que deve ser verdade para 39mH). Será que acha isso na Santa Efigenia?
[/quote:4d81d33010]
Acho que sim, provavelmente na Dabi ou na Mult (ambas na Timbiras, entre a Santa Ifigênia e a Rio Branco).
[quote:4d81d33010]
O alarme é este:
[url]http://www.ebay.com/itm/Self-adhesive-Wireless-Magnetic-Sensor-Burglar-Door-Window-Entry-Alarm-90-dB-TR-/181206294931?pt=LH_DefaultDomain_0&hash=item2a30bca193[/url]
vem com pilhas, tem um integrado, reed, Tr, indutor e piezo (alem da caixa, imã, fita dupla face... :lol: )[/quote:4d81d33010]
Consegui 2 campainhas de telefone público. Berra que é uma beleza :)
Não sabendo que era impossível, foi lá e fez
Ontem fiz o primeiro teste com o bichinho. Tinha algumas arestas que foram devidamente decepadas.
Fiquei impressionado com a resolução do novo vario da FrSky, que tem resolução de 10cm. Ergo o cidadão bem devagar, e a indicação de altitude aumenta proporcionalmente. Chique!
Suspendo ou desço o avião rapidamente e percebo o atraso que você me mostrou. Ainda não sei se é assim mesmo ou tem que ser melhorado.
Ainda tem alguns pontos a ser olhados com mais carinho. Quem sabe hoje eu consigo terminar o protótipo prá ser testado na pista no sábado?
Fiquei impressionado com a resolução do novo vario da FrSky, que tem resolução de 10cm. Ergo o cidadão bem devagar, e a indicação de altitude aumenta proporcionalmente. Chique!
Suspendo ou desço o avião rapidamente e percebo o atraso que você me mostrou. Ainda não sei se é assim mesmo ou tem que ser melhorado.
Ainda tem alguns pontos a ser olhados com mais carinho. Quem sabe hoje eu consigo terminar o protótipo prá ser testado na pista no sábado?
- MacCross
- membro
- Mensagens: 633
- Registrado em: Dom Dez 07, 2008 8:32 pm
- Localização: Santana de Parnaíba, SP
[quote:b4ad8ce04e="Rudolf"]Suspendo ou desço o avião rapidamente e percebo o atraso que você me mostrou.[/quote:b4ad8ce04e]
[quote:b4ad8ce04e="Rudolf"]Também não fiz nenhuma média da altitude conforme conversamos
[/quote:b4ad8ce04e]
Ué? E de onde poderia vir esse atraso?
Será que do sensor FrSky fazendo média por conta própria?
[quote:b4ad8ce04e="Rudolf"]Também não fiz nenhuma média da altitude conforme conversamos
[/quote:b4ad8ce04e]
Ué? E de onde poderia vir esse atraso?
Será que do sensor FrSky fazendo média por conta própria?
O protótipo tá pronto prá ser testado em campo e fizemos um videozinho prá mostrar como está:
[yt]igkyPC1QtUQ[/yt]
O piloto e testador é meu filho e no comando da câmera está minha filha :)
Um controlador MSP430 recebe a serial do transmissor DHT, que possui diversos dados de telemetria, tais como altitude, tensão da bateria e nível do sinal de rádio (RSSI) que chega ao receptor e no transmissor.
Dentro do planador só é preciso o receptor e um vario (altímetro) de alta resolução (10cm), ambos da FrSky. Fica bem leve :)
Nunca ouvi um vario de verdade. Sendo assim, o som gerado pelo controlador se baseia nas informações que recebi do Fabio (alemão do e-voo). Espero ter entendido certo.
De brinde o controlador indica (por som) quando a bateria está com nível baixo.
Abraços,
Rudolf
[yt]igkyPC1QtUQ[/yt]
O piloto e testador é meu filho e no comando da câmera está minha filha :)
Um controlador MSP430 recebe a serial do transmissor DHT, que possui diversos dados de telemetria, tais como altitude, tensão da bateria e nível do sinal de rádio (RSSI) que chega ao receptor e no transmissor.
Dentro do planador só é preciso o receptor e um vario (altímetro) de alta resolução (10cm), ambos da FrSky. Fica bem leve :)
Nunca ouvi um vario de verdade. Sendo assim, o som gerado pelo controlador se baseia nas informações que recebi do Fabio (alemão do e-voo). Espero ter entendido certo.
De brinde o controlador indica (por som) quando a bateria está com nível baixo.
Abraços,
Rudolf
Olá Sobral,
Gostei da idéia do indutor, deve gerar surtos de tensão altos, tem que tomar cuidado com o TR. Pode ser colocado um resistor em série com indutor e talvez um zener (com diodo em série) entre +5V e Q1-C para limitar a tensão no TR (formando um snubber) ou um outro circuito snubber (RCD), que vai aumentar a quantidade de componentes. Tem que ser considerado também a potência ou tensão máxima do buzzer, que não sei se é fácil conseguir esta informação.
Sugiro este tipo de indutor:
http://www.tcind.com.br/zoom.asp?id=44
http://www.tcind.com.br/upimagens/Catalindutorfixo8HY.pdf
Se não encontrar no valor, mas com mesmo núcleo, você pode reenrolar e obter o valor desejável.
até mais
Naldo
Gostei da idéia do indutor, deve gerar surtos de tensão altos, tem que tomar cuidado com o TR. Pode ser colocado um resistor em série com indutor e talvez um zener (com diodo em série) entre +5V e Q1-C para limitar a tensão no TR (formando um snubber) ou um outro circuito snubber (RCD), que vai aumentar a quantidade de componentes. Tem que ser considerado também a potência ou tensão máxima do buzzer, que não sei se é fácil conseguir esta informação.
Sugiro este tipo de indutor:
http://www.tcind.com.br/zoom.asp?id=44
http://www.tcind.com.br/upimagens/Catalindutorfixo8HY.pdf
Se não encontrar no valor, mas com mesmo núcleo, você pode reenrolar e obter o valor desejável.
até mais
Naldo
[quote:b4154b4a49="Naldo"]Olá Rudolf!
Qual é o tempo entre amostras?
[/quote:b4154b4a49]
Depende do tempo que o Rx envia. O Sobral pode dar mais informações sobre isso.
[quote:b4154b4a49]
As contas são realizadas a cada amostra que chega?
[/quote:b4154b4a49]
As contas são feitas a cada 50ms, independente da taxa de recepção.
[quote:b4154b4a49]
São muito complexas?
[/quote:b4154b4a49]
Né não:
#define FATOR 2
#define LIMITE_TOM 3*FATOR
#define TEMPO_CICLO 50
// A variável Altitude é atualizada na rotina Serial()
for( ; ; ){
Pressao=-10.0*Altitude;
lowpassFast = lowpassFast + (Pressao - lowpassFast) * 0.1*FATOR;
lowpassSlow = lowpassSlow + (Pressao - lowpassSlow) * 0.05*FATOR;
toneFreq = (lowpassSlow - lowpassFast) * 50;
toneFreqLowpass = toneFreqLowpass + (toneFreq - toneFreqLowpass) * 0.1;
Freq = constrain(toneFreqLowpass, -500, 500);
ddsAcc += Freq * 100 + 2000;
if((Freq > LIMITE_TOM && ddsAcc > 0) || Freq < -LIMITE_TOM)
Som((int)Freq + 510);
else
Som(0);
do{
vIdle();
ChecaHardware();
Serial();
}while(Tempo<UltimoTempo+TEMPO_CICLO);
UltimoTempo+=TEMPO_CICLO;
}
Qual é o tempo entre amostras?
[/quote:b4154b4a49]
Depende do tempo que o Rx envia. O Sobral pode dar mais informações sobre isso.
[quote:b4154b4a49]
As contas são realizadas a cada amostra que chega?
[/quote:b4154b4a49]
As contas são feitas a cada 50ms, independente da taxa de recepção.
[quote:b4154b4a49]
São muito complexas?
[/quote:b4154b4a49]
Né não:
#define FATOR 2
#define LIMITE_TOM 3*FATOR
#define TEMPO_CICLO 50
// A variável Altitude é atualizada na rotina Serial()
for( ; ; ){
Pressao=-10.0*Altitude;
lowpassFast = lowpassFast + (Pressao - lowpassFast) * 0.1*FATOR;
lowpassSlow = lowpassSlow + (Pressao - lowpassSlow) * 0.05*FATOR;
toneFreq = (lowpassSlow - lowpassFast) * 50;
toneFreqLowpass = toneFreqLowpass + (toneFreq - toneFreqLowpass) * 0.1;
Freq = constrain(toneFreqLowpass, -500, 500);
ddsAcc += Freq * 100 + 2000;
if((Freq > LIMITE_TOM && ddsAcc > 0) || Freq < -LIMITE_TOM)
Som((int)Freq + 510);
else
Som(0);
do{
vIdle();
ChecaHardware();
Serial();
}while(Tempo<UltimoTempo+TEMPO_CICLO);
UltimoTempo+=TEMPO_CICLO;
}
Não sabendo que era impossível, foi lá e fez
- MacCross
- membro
- Mensagens: 633
- Registrado em: Dom Dez 07, 2008 8:32 pm
- Localização: Santana de Parnaíba, SP
[quote:5d05c57950="Rudolf"]O protótipo tá pronto prá ser testado em campo e fizemos um videozinho prá mostrar como está: ...[/quote:5d05c57950]
Ficou ótimo Rudolf. Parabens!
Mas o video não aparece no post, pelo menos pra mim. Acho que vc tem que digitar só o código do seu video no youtube em vez do endereço completo (no seu caso igkyPC1QtUQ), fica assim: [yt ] igkyPC1QtUQ [ /yt] (coloquei espaços para poder aparecer). Sugiro que edite.
O que vc usou para fazer bip?
O som do vario está ótimo.
[yt]2HFGNAlIjhk[/yt]
Montei um vario KK para o Marcelo, funciona; não consigo entender isto:
[code:1:5d05c57950]ddsAcc += toneFreq * 100 + 2000;[/code:1:5d05c57950]
Explica pra mim, por favor.
Queria silenciar quando proximo de zero climb rate e não tou conseguindo.:(
Naldo
Indutor... comprei este:
[url]http://www.ebay.com/itm/320563728470?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649[/url]
A altitude na telemetria FrSky faz parte dos frames user data. Especificamente a altitude é enviada (teoricamente) a cada 200ms (a maior taxa de atualização dos user frames, protocolo disponivel no site da FrSky).
Abrç
Ficou ótimo Rudolf. Parabens!
Mas o video não aparece no post, pelo menos pra mim. Acho que vc tem que digitar só o código do seu video no youtube em vez do endereço completo (no seu caso igkyPC1QtUQ), fica assim: [yt ] igkyPC1QtUQ [ /yt] (coloquei espaços para poder aparecer). Sugiro que edite.
O que vc usou para fazer bip?
O som do vario está ótimo.
[yt]2HFGNAlIjhk[/yt]
Montei um vario KK para o Marcelo, funciona; não consigo entender isto:
[code:1:5d05c57950]ddsAcc += toneFreq * 100 + 2000;[/code:1:5d05c57950]
Explica pra mim, por favor.
Queria silenciar quando proximo de zero climb rate e não tou conseguindo.:(
Naldo
Indutor... comprei este:
[url]http://www.ebay.com/itm/320563728470?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649[/url]
A altitude na telemetria FrSky faz parte dos frames user data. Especificamente a altitude é enviada (teoricamente) a cada 200ms (a maior taxa de atualização dos user frames, protocolo disponivel no site da FrSky).
Abrç
[quote:72d6915b93="MacCross"]
Mas o video não aparece no post, pelo menos pra mim. Acho que vc tem que digitar só o código do seu video no youtube em vez do endereço completo (no seu caso igkyPC1QtUQ), fica assim: [yt ] igkyPC1QtUQ [ /yt] (coloquei espaços para poder aparecer). Sugiro que edite.
[/quote:72d6915b93]
Veja se melhorou.
[quote:72d6915b93]
O que vc usou para fazer bip?
[/quote:72d6915b93]
Campainha de telefone público. Parece que se acha fácil na Mult.
[quote:72d6915b93]
Montei um vario KK para o Marcelo, funciona; não consigo entender isto:
[code:1:72d6915b93]ddsAcc += toneFreq * 100 + 2000;[/code:1:72d6915b93]
Explica pra mim, por favor.
[/quote:72d6915b93]
Esta parte do código não fui eu que escrevi, copiei daquele tópico do RcGroups que você me indicou.
Bão, entendi que ddsAcc é quem dá a taxa de "som/sem som" quando o planador sobe. Quanto maior for toneFreq, mais rápido ddsAcc estoura o limite de um número positivo (15 bits) e passa a ser negativo (e cancela o som). Vai aumentando até que volta a ser positivo (e volta a mostrar o som). Achei o método simples e eficiente :)
[quote:72d6915b93]
Queria silenciar quando proximo de zero climb rate e não tou conseguindo.:(
[/quote:72d6915b93]
Vou dar uma olhada na rotina que você está usando prá ver se consigo ajudar.
Mas o video não aparece no post, pelo menos pra mim. Acho que vc tem que digitar só o código do seu video no youtube em vez do endereço completo (no seu caso igkyPC1QtUQ), fica assim: [yt ] igkyPC1QtUQ [ /yt] (coloquei espaços para poder aparecer). Sugiro que edite.
[/quote:72d6915b93]
Veja se melhorou.
[quote:72d6915b93]
O que vc usou para fazer bip?
[/quote:72d6915b93]
Campainha de telefone público. Parece que se acha fácil na Mult.
[quote:72d6915b93]
Montei um vario KK para o Marcelo, funciona; não consigo entender isto:
[code:1:72d6915b93]ddsAcc += toneFreq * 100 + 2000;[/code:1:72d6915b93]
Explica pra mim, por favor.
[/quote:72d6915b93]
Esta parte do código não fui eu que escrevi, copiei daquele tópico do RcGroups que você me indicou.
Bão, entendi que ddsAcc é quem dá a taxa de "som/sem som" quando o planador sobe. Quanto maior for toneFreq, mais rápido ddsAcc estoura o limite de um número positivo (15 bits) e passa a ser negativo (e cancela o som). Vai aumentando até que volta a ser positivo (e volta a mostrar o som). Achei o método simples e eficiente :)
[quote:72d6915b93]
Queria silenciar quando proximo de zero climb rate e não tou conseguindo.:(
[/quote:72d6915b93]
Vou dar uma olhada na rotina que você está usando prá ver se consigo ajudar.
Não sabendo que era impossível, foi lá e fez
- MacCross
- membro
- Mensagens: 633
- Registrado em: Dom Dez 07, 2008 8:32 pm
- Localização: Santana de Parnaíba, SP
[quote:46b5c427e4="Rudolf"]Veja se melhorou...
Campainha de telefone público. Parece que se acha fácil na Mult....
Quanto maior for toneFreq, mais rápido ddsAcc estoura o limite de um número positivo (15 bits) e passa a ser negativo (e cancela o som). Vai aumentando até que volta a ser positivo (e volta a mostrar o som). Achei o método simples e eficiente :)...
Vou dar uma olhada na rotina que você está usando prá ver se consigo ajudar.[/quote:46b5c427e4]
Rudolf
1 Agora sim, aparece o video.
2 Ótima solução.
3 Obrigado pela explicação, era o "byte" que me faltava.
4 Esse silencio é para o vario KK. Já tentei :
[code:1:46b5c427e4]if (toneFreq > 0 && ddsAcc > 0)
{
tone(2, toneFreq + 510);
}
else
{
noTone(2);
}[/code:1:46b5c427e4] mas não gostei do resultado
Abrç
Campainha de telefone público. Parece que se acha fácil na Mult....
Quanto maior for toneFreq, mais rápido ddsAcc estoura o limite de um número positivo (15 bits) e passa a ser negativo (e cancela o som). Vai aumentando até que volta a ser positivo (e volta a mostrar o som). Achei o método simples e eficiente :)...
Vou dar uma olhada na rotina que você está usando prá ver se consigo ajudar.[/quote:46b5c427e4]
Rudolf
1 Agora sim, aparece o video.
2 Ótima solução.
3 Obrigado pela explicação, era o "byte" que me faltava.
4 Esse silencio é para o vario KK. Já tentei :
[code:1:46b5c427e4]if (toneFreq > 0 && ddsAcc > 0)
{
tone(2, toneFreq + 510);
}
else
{
noTone(2);
}[/code:1:46b5c427e4] mas não gostei do resultado
Abrç