Olá pessoal, alguém sabe como ler um sinal de servo ( pulsein() ) e transformar a largura de pulso em um valor em bytes ( 0 a 255 )?

Olá.

Primeiramente gostaria de dizer e como podem ver ( risos ) sou iniciante com arduino pois sempre utilizei PIC e aprendi da forma mais errada possível que foi em PIC-BASIC mas modéstia parte me viro muito bem com o PIC.

Mas como vi um grande potencial no arduino estou a me atualizar.

Estou com um grande problema em transformar a frequência em largura de pulso lida em algo que eu possa utilizar.

Estou lendo o sinal de um receptor RC e de acordo com o valor lido será o valor da pausa em que o programa irá utilizar.

Tentei algo escroto e funcionou, porem a rotina ficou muito lenta e o mais estranho é que todo o código está trabalhando em cima do tempo desta variável, o que não deveria pois está dentro de um IF .

Estou utilizando o Arduino Mega

O ch2 é o canal em questão e o valor lido é salvo na variável pot1 e após a conversão salva o valor na variável pausa.

Inicialmente a ideia era ter uma variável de " 0 a 255 " onde utilizaria de 0 a 150 pois são esses valores que preciso e assim jogaria dentro do delay() 

A saída brilho apenas implementei como teste para ter certeza ( e tive ) que o código esta lendo constantemente dentro dos IFs.

Se alguém puder dar uma força eu agradeço.   

Exibições: 406

Anexos

Responder esta

Respostas a este tópico

Boa noite Ricardo, seja bem vindo !

Primeiramente, o pessoal do fórum vai falar para você não colocar o seu código no corpo da mensagem e sim para anexar como arquivo (particularmente eu não gosto assim pois quem quiser ajudar tem que fazer o download do código, mas são costumes aqui do fórum).

Segundo, pesquise sobre a função MAP do arduino, ela faz isso pra você.

https://www.arduino.cc/reference/pt/language/functions/math/map/

Olá André, boa noite.

Muito obrigado pela dica de não postar o código, e aproveito para pedir desculpa a todos pois não sabia, vou ver se consigo editar isso.

A respeito da função a qual me passou acho que é por ai mesmo, muito obrigado vou testar amanhã para ver.

Olá André.

Muito obrigado, a função MAP me ajudou bastante não só no problema apresentado como também em uma implementação adicional.

Muito obrigado.

Não sei se entendi bem mas se você quer transformar um PWM em valor binário ou decimal basta aplicar o sinal em um filtro RC e sua saída na entrada analógica do Arduino.Aí basta ler o valor. 

Olá Américo, boa noite.

O sinal a qual estou lendo é por largura de pulso com uma frequência um pouco diferente  e não PWM cru , pela lógica de muitos geradores de sinal para servo seria sim PWM cru mas esse receptor não sei porque é diferente dos que conheço e envia um sinal com uma modulação diferente ( porem percebi que a resposta e a precisão desse rádio RC é espetacular ).

O rádio é um hitec aurora 9.

Olá Américo.

Muito obrigado, testei sua sugestão também e funcionou porém o resultado foi mais satisfatório com a função MAP.

Muito obrigado. 

Boa noite Ricardo, 

Acho importante que informe as especificações do seu control remoto. (frequencia do pulso, largura max e min do pulso - Duty cycle, , etc). 

Referência sobre a função pulsein:

https://www.arduino.cc/reference/en/language/functions/advanced-io/...

Talvez isso poderá ser útil pata você:

http://labdegaragem.com/forum/topics/desvendando-controle-remoto-rf

http://labdegaragem.com/profiles/blogs/tutorial-descodificando-cont...

http://labdegaragem.com/forum/topics/projeto-alarme-sem-fio-arduino...

Achei o modelo do seu RC HITEC Aurora 9:

https://hitecrcd.com/products/aircraft-radios-receivers-and-accesso...

Modulação : 

  • AFHSS 2.4GHz / PPM / QPCM 

Resolution = 1024 

Manual = https://hitecrcd.com/images/products/pdf/17_Aurora_9_manual.pdf

O melhor Fórum sobre Rádio Contole com todo tipo de informação:

https://www.rcgroups.com/forums/index.php

Sobre Protocolos de Radio Controle: 

https://www.rcgroups.com/forums/showthread.php?2301242-The-Beginner...

Olá Jusé Gustavo.

Muito obrigado pelas pesquisas, vão ser de muita ajuda, o problema foi sanado com a função que nosso querido André apresentou ( MAP ).

Muito obrigado.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço