Criar sinal diferencial

Bzaina

1st Folding then Sex
Bom dia

Estou a usar um arduino para controlar um servo-drive. Uso os pins de step e direcção para o controlar. No entanto o cabo faz de antena e tenho muito ruído.. mesmo sem enviar nada o motor mexe-se :D Assim falaram-me em usar um sinal diferencial, com um flip flop tipo D ou outro integrado que faça o que pretendo. Alguém sabe que integrado fará o efeito? Se for com o flip flop, alguém me pode dar umas luzes de como a coisa funciona?

Já agora, porque não poderia (segundo me foi recomendado) usar o sinal de step e direcção referenciados à massa do arduino no servo drive?
 
Viva.

Sim é PWM. Não faço ideia do tipo de ruído que apanho. Sou muito inexperiente, só estou agora a começar nisto :D

Em relação ao flip flop D, sabes alguma coisa?

Do que me lembro e já andei a ver, apenas serve para guardar estados.. não estou a ver como possa criar um sinal diferencial a partir do sinal do arduino!
Qualquer solução era bem-vinda :D
 
Última edição:
O cabo tem pouco mais de 2m.. Mas vai ter mais. Só estou a ver se consigo controlar como deve ser. As terras/GND estão bem ligadas.
 
Última edição:
Estás a usar níveis TTL no cabo (0V-5V)?

É que para um sinal diferencial precisas de três fios, dois para o sinal (+V, e -V) e GND (Massa/terra), este último de preferência como blindagem....

Podes tentar primeiro, transmitir o sinal como 0V-12V, por exemplo para diminuir a rácio sinal ruído primeiro.... usando comutação por transistor ou FET na saída->cabo->redutor de tensão...

Experimenta primeiro usar um cabo de rede, nomeadamente usares um dos pares entraçados a ver se melhora.
 
Estou a usar um arduino para controlar um servo-drive. Uso os pins de step e direcção para o controlar. No entanto o cabo faz de antena e tenho muito ruído.. mesmo sem enviar nada o motor mexe-se :D

E tens/consegues ter a certeza que é ruído externo/interferência electromagnética a provocar isso?

Não poderão ser simplesmente ligações pouco sólidas de cabos? A mim já me aconteceu várias vezes com o Arduino, pois não faço PCBs cada vez que monto algo novo, simplesmente uso os cabos que estivem à mão/breadboard, e é normal que algum cabo se solte ou não fique com ligação sólida aos pinos do Arduino.
 
Não são ligações pouco sólidas de cabos. O cabo está soldado na ficha CN1 do servo drive e a outra ponta também está em condições. O cabo é um cabo de rede.

Outra coisa, o que estou a enviar para o servo drive é "Code + Pulse Train". Estou a controlar a posição, enviando os pulsos e a direcção para dois pinos com a posição que pretendo.

Neste momento tenho isto:
https://onedrive.live.com/redir?resid=BC51E5061596761D!13017

E quero passar para isto:

https://onedrive.live.com/redir?res...authkey=!AMBQ-aP4C4Tkz1Q&v=3&ithint=photo,JPG

Mas preciso de conectar os sinais negados.. este é o meu problema.
Recomendaram-me utilizar um flip flop tipo D mas não estou a conseguir perceber como ligá-lo uma vez que não tenho o sinal de clock.

O que vem do arduino é um GND, Pulso, Direcção e Enable (a placa é assim, não tenho "acesso" a mais nada).
 
Bem, não estou a perceber lá muito bem que tipo de conexões estás a usar...

O que eu percebi:

Tens 3 sinais: Pulso que suponho que seja o PWM
Direcção
Enable

Dissestes que usas cabo de rede. Nesse cabo de rede usas os pares entrançados respetivos para cada sinal?

Por exemplo: Laranja -> Sinal de Enable , LaranjaRisca -> GND.
Verde -> Sinal de direcção, VerdeRisca -> GND.

Para criares um sinal diferencial precisas de uma fonte simétrica, tipo +12, GND e -12 e depois usas lógica discreta como Ampops ou algum tipo de line driver...

Do lado do emissor colocas um ampop em buffer com ganho 1 não inversor, e a saída gera o sinal +. -> http://www.electronics-tutorials.ws/opamp/opamp_3.html
Adicionalmente colocas um outro ampop em modo inversor com ganho -1 e a saída gera o sinal -. -> http://www.electronics-tutorials.ws/opamp/opamp_2.html

Ligas depois o + ao cabo, por exemplo laranja e tens de ligar o - ao respectivo par do cabo entraçado...

Agora do lado do receptor, não sei o que tens, se tens o tal Hitachi que aceita sinais diferenciais....

Os flip flops não fazem nada disso...


Edit:

Antes de fazeres ainda qualquer coisa, adiciona do lado do servo uma resistência de 10K entre o sinal e GND em cada fio, a ver se melhora. Pode ser que os problemas que tenhas, se deva ao facto do sinal "flutuar" porque não tens pull-downs...
 
Última edição pelo moderador:
Acho que estava enganado:

O que eu pretendo pode ser feito também com os pull-downs mas aí vai haver passagem de corrente pelas resistências e eu queria evitar isso.

No esquema que eu pretendo, quero o sinal e o sinal negado. Daí o flip flop, para poder ter Q e Qnegado e ligar a F-PC e F-PCnegado respectivamente.

Já andei a pesquisar melhor e concluí duas coisas:

- "sinal diferencial" não deve ser bem aquilo que eu quero :D peço desculpa pelo erro.
- há uma forma de usar o flip flop tipo D sem o sinal de clock, para permitir que o sinal de Data saia em Q e a sua negação em Qnegado. Tenho que ir estudar a tabela de verdade a ver se encontro alguma coisa.
 
Isso parece que o duty Cycle do sinal PWM esta a variar, fazendo o motor vibrar.
Como estas a fazer o código para o PWM ?
Se puderes vê o sinal no osciloscópio.

Cumps
 
Será que podes postar o circuito exactamente como tens ligado?

Pelo que percebi, quando não envias nada para o servo, devido ao cabo estar a fazer de antena o servo trabalha.

Entretanto disseste que ("falaram-me em usar um sinal diferencial") podias usar um sinal diferencial. Mas eu digo, isso vai resolver o problema? Acho que não. O problema pelo que percebi é que quando não estás a enviar sinal nenhum ele está a funcionar. Portanto não faz sentido enviares um sinal diferencial.

Uma solução que vejo logo assim à primeira era usares um MOSEFT de modo a tentar isolar o sinal que vem dos fios para a entrada do arduino. O MOSFET estaria a trabalhar como um interruptor. Necessitas é de uma alimentação nessa zona.

Já tentas-te enrrolar os fios entre eles (onde vai o sinal e o GND)? Para tentar anular esse efeito? Já tentas-te usar cabos isolados? (por exemplo, aproveitar dois condutores de um cabo de rede? (pois o cabo de rede é isolado)

O Arduino consegue fornecer corrente suficiente ao servo?

Relativamente a teres um sinal negado: Não consegues fazer isso através de programação, enviando o sinal PWN negado para outro pino output do Arduino? É que outra solução, tipo usares o flip-flop, ou até mesmo uma porta NOT (apenas, porque não?) necessitas de forneceres aliementação ao integrado.

Outra solução seria usares um tipo circuito(zinho) simples, que não precisa de clock, que tem uma caracteristica particular, mas que para o caso talvez te safe: Non-overlap.

Cumps.
 
Última edição:
Adicionalmente à questão, se OP diz que actualmente o cabo só tem dois metros, e é para ter mais, e já há problemas, há algo mesmo mal....
 
Boas,
Fiquei com alguma curiosidade para saber como estás com este problema atualmente.

Uma possível solução podia passar por utilizares um cabo com malha, e ligares a malha à massa.

Cumps.
Masterpiece
 
Boa tarde.

Nunca mais disse nada neste tópico porque entretanto estive de férias e não tinha acesso às coisas como deve ser.

O que eu tinha ligado era isto:

https://onedrive.live.com/redir?resid=BC51E5061596761D!20700

CN1 é a ficha do servo-driver.
Quando eu parava de enviar comandos ao servo, o motor continuava a movimentar-se, aleatoriamente tanto na direcção como na duração do movimento.

Agora o que tenho é isto:

http://1drv.ms/1A03UrS

Desta forma já não há movimentos (pelo menos ainda não houve) após deixar de enviar comandos ao servo.

Obrigado a todos e peço desculpa pela minha nabice! :D
Até ver, o problema está resolvido.
Vamos ver como se desenvolve a coisa daqui para a frente.
 
Não. As transições do "clock" são criadas pelo pulso que vem do arduino. Desta forma não preciso de um clock.

Sim, depois pelo que já tinham aqui respondido eu percebi que podia :D Mas aqui "indicaram-me" o flip flop e pronto assim ficou...
 
Back
Topo