Aqueles que pretendem construir um projeto mais complexo (neste caso, quero dizer com mais DOFs, como um bípede humanóide, hexapod, e outros) podem encontrar dificuldades se estiverem usando um Arduino UNO ou similar, a menos que tenham um Mega. Foi o que aconteceu comigo quando eu estava trabalhando no meu projeto bípede.



     Depois de pesquisar várias alternativas, sem mudar a placa, eu encontrei este IC: TLC5940.

 

     Ele é vendido como um LED driver de 16 canais, mas com esta biblioteca pode controlar 16 servo motores, tão fácil quanto o "servo sweep". Mas não só é isso: pode-se conectar vários ICs em série e expandir ainda mais (eu ainda não tentei, mas parece ser muito fácil). O que você perde de sua placa são 5 pinos.

     Você pode encontrar este IC em um breakout e também em um PWM shield, ou fazer o seu próprio com custo muito baixo (menos de R$ 4,00 por chip). Isto significa que você pode comprar 20 chips pelo preço de um PWM shield. :)

     Bem pessoal, o material necessário para fazer este trabalho está abaixo:


Arduino (utilizei o ONU);
• 1x TLC5940 IC (16 canais);
resistores de 2.2k;
jumpers;
alimentação externa para os servos;
protoboard;
servos (quantos você quiser controlar ou sua necessidade de projeto).

 

     No meu exemplo, eu utilizei apenas 6 servos. Mas você pode facilmente adicionar mais nos canais restantes.

 

 

     Que confusão de fios! É um pouco difícil de entender as conexões na foto acima. Devido a isso eu fiz um esquema no Fritzing. Mas, antes disso, vamos dar uma olhada nos pinos do IC.

 

     Agora, vamos às conexões... Siga a sequência de cores e pinos abaixo.

 

     • IC pinos 1 até o 15 e o pino 28: são os canais de saída, onde você conecta o fio de sinal do servo. Você tem que adicionar um resistor pull-up de 2.2k em cada canal e ligar ao 5V, para tornar possível o controle dos servos.
     • IC pino 16 - XERR (não utilizado neste caso).
     • IC pino 17 - SOUT (não utilizado neste caso).
     • IC pino 18 - GSCLK: fio marrom ligado ao pino 3 do Arduino;
     • IC pino 19 - DCPRG: ligado a 5V;
     • IC pino 20 - IREF: colocar nele um resistor de 2,2 k e conectar ao GND;
     • IC pino 21 - VCC: ligado a 5V;
     • IC pino 22 - GND: conectado a GND;
     • IC pino 23 - BLANK: fio laranja ligado ao pino 10 do Arduino;
     • IC pino 24 - XLAT: fio amarelo ligado ao pino 9 do Arduino;
     • IC pino 25 - SCLK: fio azul conectado ao pino 13 do Arduino;
     • IC pino 26 - SIN: fio verde ligado ao pino 11 do Arduino;
     • IC pino 27 - VPRG: conectado a GND.

 

     Como você vai utilizar muitos servos, vai precisar de uma fonte de alimentação externa para eles. Não se esqueça de ligar o GND dos servos ao GND do Arduino, para ter um GND comum.

     Nota: No início eu estava tendo problemas para fazer os servos girarem de 0 a 180 º (eles apenas iam de 0 a 90º). Eu pesquisei em muitos fóruns e encontrei algumas pessoas com o mesmo problema. Mas ninguém tinha a solução. Depois de mudar alguns valores no arquivo tlc_servos.h, eu resolvi este problema. Assim, se alguém tiver o mesmo problema, deve mudar o SERVO_MIN_WIDTH de 204 para 120 e o SERVO_MAX_WIDTH de 410 para 475.

     Por enquanto, é isso aí...

 

     P.s.: o vídeo fiz apenas para mostrar que isto realmente funciona. Realizei os testes apenas com 6 servos de cada vez, mas funcionou perfeitamente em todos os canais.

Exibições: 17049

Responder esta

Respostas a este tópico

 J. Eduard onde a gente acha esse ci por R$4,00?grato.

No eBay. No Brasil você não encontra.

Muito boa sua dica!!! Estou tentando montar uma aranha com 6 patas, ouseja, vou precisar de 18 portas; como o TLC5940 tem somente16 tive que ligar um ao outro  e quebrei a cabeça depois de muito tempo descobri  que para o funcionamento é preciso editar a bribioteca tlc_config.h e alterar a quantidade de  NUM_TLCS  por ter que usar 2 tlc no meu coloquei  2. também enfrentei o mesmo problema que o seu SERVO_MIN_WIDTH de 204 para 120 e o SERVO_MAX_WIDTH de 410 para 475. depois posto fotos da placa confeccionada.

Esse CI é realmente difícil de achar por aí. Por outro lado, tem o 74HC595 que é mole de achar, quase toda casa de eletrônico tem, e funciona igual só que com 8 bits. Como ele também pode ser ligado em série, acho que dá para usá-lo da mesma forma para controlar motores. Eu já liguei 10 em série para um projeto, comandando um monte de LEDs RGB com apenas 3 fios do Arduino. No meu blog tem alguns posts sobre o assunto. Dá só uma sacada na protoboard (tive que emendar duas, das grandes, prá dar certo):

Algumas fotos de 2 tlc5940 ligados. minha plaquinha ficou muito feia e amadora demais, mas funciona perfeitamente! OS tlcs são ótimos e de fácil programação dá para ligar "infinitos" servos leds e motores basta somente adicionar mais tlc. O legal dele e que ocupa apenas 5 portas digitais. CAra como vc se entende nessa montueira de fios dá  até medo rsrs . Um abraço e bons projetos

Olá, Nadiel! A montagem da sua placa ficou legal, e o mais importante é que ela funcione bem. Montei o circuito na proto mas com o intuito apenas de mostrar o funcionamento deste CI, e fazer mais adiante um "servo shield" caseiro (algo como você fez). Muito obrigado por postar sua experiência aqui, com certeza ajudará outros que venham a testar este CI, que na minha opinião é bem fácil de manusear, e com a biblioteca fica tão fácil de usar quanto o simples "sweep servo". Quando der posta mais fotos aí do seu projeto, que parece ser bem interessante. E, só por curiosidade, quais são os servos que você está utilizando? Aproveitando para adicionar mais informações: testei este CI com duas marcas de servo (Hitec e Tower Pro) e o pulso mínimo e máximo são diferentes para as duas [marcas], mas com alguma persistência encontra-se os valores ideais.

Olá, eu usarei o TOWER PRO MG996-R comprei 22 unidades na china saiu por R$ 9 aproximadamente cada unidade. Aqui no brasil está custando mais de 35 cada um. Agora estou aguardando ansiosamente a chegada do produto e torcendo para não ser taxado na viagem rsrs... O que vc acha deste modelo de servo? servira bem no TLC5490? abraço.

Eu tenho dois Tower Pro MG995. Eles são bem fortes, só que consomem bastante corrente. Já o MG996-R é pra ser uma versão melhorada do que citei. O preço que você pagou foi excelente, e acredito que não terás problema algum na comunicação com o TLC5940, talvez tenhas que ajustar o pulso máximo e mínimo, mas isso não é problema.

Olá cara vc conseguiu valores pre este tipo de servo?Para ir de 0 A  180, tentei vários mas não consegui, alguma dica?, obrigado.

Olá, Rafael!

Não tenho os valores para este servo motor, mas neste site (http://starter-kit.nettigo.pl/2012/01/tlc5940-czyli-co-najmniej-16-...) o cara utilizou, se eu não me engano, os servos HXT900 e definiu SERVO_MIN_WIDTH 177 e SERVO_MAX_WIDTH 571. Nunca utilizei os servos HXT900, mas é possível que tenham a mesma eletrônica que os SG90 (por favor, me corrijam se eu estiver enganado), por isso acho que vale a pena testar inicialmente com estes valores. Se não der certo, o método a seguir é tentativa-erro-tentativa. Foi desta forma que cheguei aos valores ideais para os servos da Hitec.

Sem mexer na biblioteca, eu consegui uma abertura maior colocando 255 ao invés de 180 graus que é o limite...

Mas Valeu a dica aí, ajudou bastante!!

ola poderia me mandar um esquema de ligação para eu faser uma dessa para mim

e pode me esclarecer uma duvida 

você pode controlar os motores servos individuais ou ñ todos responderão juntos a um comando do Arduíno

por favor preciso de ajuda 

poderia me ajudar 

meu e-mail 

zoowltar@hotmail.com

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço