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

ola

para quantos servos é essa placa?

se for para mais de 20 poderia me passar a lista de peças e um esquematico

para eu confeccionar uma para meu projeto

estou fazendo uma inseto robô

desde já obrigado

meu e-mail para contato é 

zoowltar@hotmail..com

eu comprei 2 desses tlc5940 e quero fazer uma placa pra 32 servos como a sua, voce poderia passar o esquema do circuito da sua placa?

Olá, Marcos! Infelizmente não possuo um esquema de circuito. Apenas testei o CI fazendo as conexões na protoboard.

Olá, Mauro! Escolhi o TLC5940 porque não tenho muita experiência em programação, e com ele isto ficou fácil. O 74HC595 parece ser muito bom, mas ainda não testei (e sempre bom conhecermos alternativas, o que também amplia nossos conhecimentos). A sua proto ficou muito doida!!!

Do ponto de vista da programação acho que não existe diferença entre usar um e outro. A vantagem do 595 é que se acha em qualquer botequim (de eletrônica, claro). Eu já fiz a lib para controlar LED RGB, display numérico, dia desses eu faço uma prá controlar um monte de motor.

Realmente a proto desse projeto ficou muito louca. Eram 100 devices ligados num Arduino Duemillanove...

Acho muito massa a ideia de expandir um Arduino Duemilanove (ou UNO, que é o que tenho). Tenho uma série de CIs em casa para esta finalidade. Um ponto negativo disto é que os modelos de placa que citei têm pouca memória para gravação do código, o que me fez adquirir também, recentemente, um Arduino Mega 2560. Mas para códigos "mais leves" ainda é mais interessante utilizar o UNO ou similar com vários CIs, fica muito mais doido!!!!

Eu tenho placas prontas que montei do 74hc595, mas nunca consegui usar ele com Servo, vc poderia me orientar, eu testo e publico aqui o resultado.



Nunca utilizei o 74HC595, mas encontrei alguma coisa em outra comunidade que participo. Dê uma olhada http://letsmakerobots.com/node/3829 (em inglês).

Sim, eu tinha lido já!
Ele tentou uma variável com apenas 2 portas do Arduino, mas encontrou alguns erros de time, tentei replicar o teste dele mas nao deu certo.

Quantos Amperes esse Ci consegue fornecer de corrente para cada servo?

Voce não alimentará os servos com o ci a alimentação é indepedente só não esquecer de ligar o negativo da alimentação extena ao GND do controlador afim de ter um GND em comum. o ci somente fornecerá o sinal para cada servo. O Unico lugar no Brasil que voce encontra este ci TLC5940 a venda, e no MErcado livre. Tem somente um vendedor que tem este ci que sou eu mesmo :) . UM abraço.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço