Converter sinal de Radio RC para controlar motor de passo

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Converter sinal de Radio RC para controlar motor de passo

Mensagempor clayton braga » 12 Nov 2007 08:44

Bom Galera estou com um problemão e não sei como fazer, estou iniciando em programação de pic e preciso converter o sinal de um receptor desses de aeromodelismo em um sinal de pulso e direção para controlar um drive de motor de passo.

Ja procurei alguns circuitos pra fazer isso mas não achei nada então acho que vou ter que fazer isso com um pic. Para quem não conhece esse tipo de controle remoto, o sinal que o receptor envia é um pwm com o pulso variando de 1 a 2 ms ou seja 1ms o motor estaria todo para esquerda, 1,5ms ele posiciona no meio e 2ms ele gira todo para a direita. ou seja tenho que ler esse sinal e gerar um sinal de pulso e direção proporcional para posicionar o motor de passo.

Vou ficar muito grato se alguem puder me ajudar.
clayton braga
 
Mensagens: 3
Registrado em: 12 Jun 2007 12:58

Re: Converter sinal de Radio RC para controlar motor de pass

Mensagempor phophollety » 12 Nov 2007 08:57

clayton braga escreveu:Bom Galera estou com um problemão e não sei como fazer, estou iniciando em programação de pic e preciso converter o sinal de um receptor desses de aeromodelismo em um sinal de pulso e direção para controlar um drive de motor de passo.

Ja procurei alguns circuitos pra fazer isso mas não achei nada então acho que vou ter que fazer isso com um pic. Para quem não conhece esse tipo de controle remoto, o sinal que o receptor envia é um pwm com o pulso variando de 1 a 2 ms ou seja 1ms o motor estaria todo para esquerda, 1,5ms ele posiciona no meio e 2ms ele gira todo para a direita. ou seja tenho que ler esse sinal e gerar um sinal de pulso e direção proporcional para posicionar o motor de passo.

Vou ficar muito grato se alguem puder me ajudar.


Imagem

Legal, o pulso varia conforme a posição.

Imaginenos que usaremos pic rodando a 1mip

Pode fazer desta maneira:

Usando interrupção, sempre na borda de subida inicie um contador por sofware (16 bits) que incrementa por um loop (isto é ruim, trava o processamento)

Ou:

No vetor de interrupção, zere um timer (8 bits com preescaler 1:8 deve bastar) bem na borda de subida, altera a interrupção para a borda de descida e espere a interrupção ocorrer novamente (faça outra coisa se puder, controlar o motor por exemplo) quando ocorrer você vai lá e captura o valor do TMR que vai ser proporcional a largura de pulso do servo.

Há outros modos,

[]s
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor clayton braga » 12 Nov 2007 10:40

Obrigado phophollety pela ajuda, mas será que eu estaria pedindo demais se voce ou alguém pudesse me enviar um exemplo de código? (de preferencia em C) como disse estou começando a programar pic e ainda e estou meio cru nisso, se não, não tem problema ja tenho pelo menos um ponto de partida pra pesquisar a respeito.

obrigado pela ajuda.
clayton braga
 
Mensagens: 3
Registrado em: 12 Jun 2007 12:58

Mensagempor phophollety » 12 Nov 2007 21:03

clayton braga escreveu:Obrigado phophollety pela ajuda, mas será que eu estaria pedindo demais se voce ou alguém pudesse me enviar um exemplo de código? (de preferencia em C) como disse estou começando a programar pic e ainda e estou meio cru nisso, se não, não tem problema ja tenho pelo menos um ponto de partida pra pesquisar a respeito.

obrigado pela ajuda.



Divirta-se!

(Se está aprendendo a programar PIC aprende do jeito certo, ASM!)

http://www.infolaser.net/franpr/tecnica ... sckit.html

[]s
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor ze » 13 Nov 2007 07:03

vendo os pulsos do fofo, me veio à mente:
RB3=entrada do pulso (enrtada de captura do timer1)
unsigned int med_larg_pulso()
{
unsigned int larg=0;
while(!RB3);while(RB3);while(!RB3);//desconsidera 1º pulso
while(RB3) larg++;
return larg;
}
Obs: função teórica digitada no local. Falha, avise.
Vai retornar um valor proporcional à largura. Se faltar pulso vai travar na função. (tem como colocar timeout)
Uma solução mais elegante seria usar captura do timer1. Requer leitura do data sheet. Fá-lo-ei eventualmente em momentos futuros.
Se já está no C, siga em frente!!
Abraço.
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor phophollety » 13 Nov 2007 08:38

lellis escreveu:vendo os pulsos do fofo, me veio à mente:
RB3=entrada do pulso (enrtada de captura do timer1)
unsigned int med_larg_pulso()
{
unsigned int larg=0;
while(!RB3);while(RB3);while(!RB3);//desconsidera 1º pulso
while(RB3) larg++;
return larg;
}
Obs: função teórica digitada no local. Falha, avise.
Vai retornar um valor proporcional à largura. Se faltar pulso vai travar na função. (tem como colocar timeout)
Uma solução mais elegante seria usar captura do timer1. Requer leitura do data sheet. Fá-lo-ei eventualmente em momentos futuros.
Se já está no C, siga em frente!!
Abraço.



Aaaa isso não vale!!! Tem que ser em ASM! ehehhehehe

(sadismo :twisted: :twisted: )
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor ze » 13 Nov 2007 10:03

já que é pra sofrer, faça em código hex direto no buffer do programador.

Por incrível que pareça, conheço alguem que o fez!! Isto foi há muitos anos nos primórdios da internet. Era um PIC16C_algumacoisa com eeprom. Havia tempo e paciência. Haviam clientes compreensivos.

Para aumentar o desafio:
Faça em binário. Sem olhar no set de instruções. Com uma luva de boxe. Com venda nos olhos. Comece pelo final. Passe pelo começo. Finalize pelo meio.
:evil: :twisted: :evil: :twisted: :evil: :twisted: :evil: :twisted: :evil: :twisted: :evil: :twisted: :evil: :twisted: :evil: :twisted:
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor clayton braga » 13 Nov 2007 10:48

hehehehehe em binário é F*** imagina o tamanho do programa??? ia até dar calo nos dedos hehehehehe e depois que eu terminasse eu podia aposentar ja porque ia ta velhinho.

vou tentar mesmo no C porque é mais facil de aprender e depois quando precisar de alguma função muito especifica ai eu tento fazer em ASM eu tenho um livro de programação em pic com assempler mas é muito sofrido fazer assim pra quem ta começando heheheh na minha opniao é melhor aprender em c pra familiarizar com o pic e depois aprofundar no assembler.
clayton braga
 
Mensagens: 3
Registrado em: 12 Jun 2007 12:58

Mensagempor phophollety » 13 Nov 2007 11:29

clayton braga escreveu:hehehehehe em binário é F*** imagina o tamanho do programa??? ia até dar calo nos dedos hehehehehe e depois que eu terminasse eu podia aposentar ja porque ia ta velhinho.

vou tentar mesmo no C porque é mais facil de aprender e depois quando precisar de alguma função muito especifica ai eu tento fazer em ASM eu tenho um livro de programação em pic com assempler mas é muito sofrido fazer assim pra quem ta começando heheheh na minha opniao é melhor aprender em c pra familiarizar com o pic e depois aprofundar no assembler.


iiii, esse tópico é velho, tem longas discussões disto por aqui, o fato é, depois que estiver beleza em C nunca mais vai querer tocar em ASM hehehe
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil

Mensagempor RobL » 13 Nov 2007 15:15

Só para aproveitar a corona mas sem discutir:
C e ASM são inseparáveis, ou seja, formam o casal ideal.
RobL
Dword
 
Mensagens: 1546
Registrado em: 20 Fev 2007 17:56

Mensagempor phophollety » 13 Nov 2007 19:45

RobL escreveu:Só para aproveitar a corona mas sem discutir:
C e ASM são inseparáveis, ou seja, formam o casal ideal.


Taí!

Dessa eu gostei! uahuahuhau

Mas nossa, esse tópico desvirtuou total o assunto!

Daqui a pouco um modera da um jeito...
"3 minutes of boring code review means 3 hours less fixing LSD (Little Stupid Detail)" Dr. Mike Smith
"Dê-me um ponto de apoio e uma alavanca e moverei o mundo" Arquimedes
"Quando vejo um Alfa Romeo passar eu tiro o meu chapéu" Henry FORD.
Avatar do usuário
phophollety
Dword
 
Mensagens: 1511
Registrado em: 15 Out 2006 13:00
Localização: Santo André São Paulo, Brasil


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x