Olá. Gostaria de executar um projeto com base no arduino, porém não tenho nenhuma intimidade com as expressões usadas no compilador. Por mais que já tenha programado PIC, pelo ccs tudo de maneira bem básica. fiz uns testes no arduíno e nenhum resultado bom.. o que busco é incrementar 10 variáveis, cada uma com base nas 10 entradas digitais que receberao pulsos  no Max de 20hz em cada porta. Gostaria de exemplos para implementar isso.

Obs. Já tentei através da leitura do estado dos botões... digitalRead(), TB tentei comparar o estado antigo para o novo e percebendo a mudança de estado,  mas nenhuma com bom resultado.. não postei o código pois nenhum funcionou a contento, partimos da experiência de vcs em qual estratégia usar .. obrigado

Exibições: 903

Responder esta

Respostas a este tópico

CL, o que você usou pra injetar os sinais nos ports?

RV

usei um pic 16f877a oscilando em ciclo de 55ms (50ms baixo e 5ms alto) jogando na entrada de um optoacoplador 4n25 e ele liberando aproximadamente 3v para as 10 portas do arduino due

Nossa, as medições estão muito erradas então.

Tem osciloscópio para conferir esses pulsos?

Ou então uma anaisador lógico. 

Outra hipótese - polarização incorreta do acoplador ótico. 

Mostre o circuito.

CL, boa noite .

o que pode estar ocorrendo, é que com seu teste, todos ports provocam o interrupt ao ,mesmo tempo,

e o ucontrolador deve estar tendo problema para manusear estes múltiplos interrupts simultâneos.

Não sei se ele tem algum registrador interno onde guardaria a informação dos ports que causaram

interrupt.  Seria preciso uma pesquisa no datasheet do do SAM3X .

Mas para seu projeto tenho uma sugestão.

Vamos lá :

Premissas: 

Sequencia de pulso com frequência de 20 Hz e duty cycle de +- 6 ms.

No minimo de 50 ms, você pode ter um pulso de duração de 6 ms.

Existem 10 fontes diferentes de pulsos, e eles pode ser simultâneos.

Dai pensei assim:

Você utiliza 10 flip flop , sendo cada sensor ligado em cada set de cada  flip flop.

(CD4013 2 FF por Chip, CD 4043 4 FF por chip).

O sensor ( e podem ser vários simultâneos) ao sentir o objeto, ligam (set) o flip flop.

Cada saída do FF é ligada em uma entrada do Arduíno.

O Arduíno a cada 1 ms, lê todos os ports salva os valores lidos e envia um reset para todos os FF.

Assim você guarda em uma memoria temporária, (os FF), se passou algum objeto pelo sensor,

e assim poderá usar um Arduíno simples como um mini.

RV

Uma alternativa para isso.

Enquanto estiver contando a largura do pulso de uma porta, iniba todas as outras interrupções. 

Boa noite  José Gustavo Abreu Murta,

o projeto não precisa medir a largura do pulso de entrada, e somente saber se o sensor mudou

de nível. para de HIGH pra LOW.

RV

 

Beleza. 

Obrigado Rui pelos esclarecimentos

vamos ver se consigo lhe esclarecer.. o pulso produzido pelo pic esta na primeira foto. dele vai na entrada do acoplador. ok

na segunda foto seria o sinal de saída do acoplador que ira para o arduino due. 

na terceira foto mostro o esquema do acoplador da maneira atual, arduino em modo falling e pullup interno ativado

tb mostro o esquema de na quarta foto esquema de quando testei anteriormente de outra maneira  ( com arduino em modo rising e com pulldown externo) tendo resultado semelhante

Não gostei de nenhum dos dois circuitos com acopladores.

Siga esse tutorial :
https://electronics.stackexchange.com/questions/102884/how-to-calcu...

José o esquema que vc me passou agora, em relacao a 3°foto (meu esquema atual)  tem diferença que o resistor de pullup do meu circuito fica ativado dentro do mcu. E esse que me passou fica externo. Pode ser? E aí retiro o resistor de 1k do meu circuito. Correto? 

Bom dia, 

Não sabia que tinha ativado o resistor de Pullup na entrada. Isso é possível? 

Ou somente pode ativar o pullup quando é saída? Pode confirmar ?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço