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.
Tags:
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!!!!
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.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por