Manual

do

Maker

.

com

Separador de moedas com Arduino

Separador de moedas com Arduino

Bacana esse separador de moedas, hum? Comecei uma série de artigos DIY; alguns serão projetos próprios, outros uma "kibada de leve". Mas justifico.

Esse separador de moedas que você está a contemplar passou pela minha timeline no facebook. Imediatamente comecei a assistir repitidas vezes, para reproduzí-lo. Supostamente seria fácil, pois o video parecia um tutorial. Parecia.

O original foi feito de papelão, o que é muito legal pelo fato do custo com a parte mecânica ser praticamente nulo, mas as medidas exibidas no video ora estavam erradas, ora faltavam. Daí passei um tempo enorme assistindo inúmeras vezes e acabei percendo que além do mais, tinha uma pequena falha que foi corrigida no papelão, mas não havia citação sobre o ocorrido. Quase desisti de fazer o projeto, mas pensei:

  • Já que estou tendo esse trabalho enorme, vou fazê-lo em MDF para que seja duradouro.

E assim o fiz; abri o QCad e comecei a traçar. Teve medida que eu peguei relacionando os pixels de um frame do video, sério. A roda que leva a moeda então, nem falo. Por sorte tenho conhecimento de desenho mecânico (inicio dos anos 90, quando ainda era na lapiseira 0.3, 0.5 e régua T na prancheta). Não tinha muitas lembranças, mas fazer um hexagono em uma circunferência para marcar os pontos não é nada complicado, a questão era ajustar o tamanho da entrada para que, quando passasse pelo limitador de borda,  a moeda já tivesse rolado para o lado interno do coletor. Não entenda como uma crítica ao projeto original (que é fantástico, mas ao clicar nas notificações de forma distraída, perdi a referência). O cara que criou esse separador é brilhante, só estou melhorando uma ideia que existe.

Já fiz também um sensor de moedas (leia aqui). Também fiz um separador com tampa de caixa de CD, é um modelo interessante também, mas perdi o artigo. Na época acho que tinha acabado de migrar do suhanko.com para manualdomaker.com.

Bom, tem muitos detalhes e no final ainda errei 2 medidas, mas uma é insignifcante e a outra, de fácil correção na peça pronta. Quando mandei cortar, já mandei fazer logo 10 conjuntos e pretendo vendê-los para ir financiando os próximos projetos, a correção já vai na peça para que você não tenha esse trabalho extra. Quanto ao erro que corrigi manualmente, é só para poder testar, já estou pedindo para cortar a peça de substituição. Na frente do coletor é necessário que haja um recipiente para receber as moedas a separar. Só consegui ter uma ideia boa depois de montar e analisar, então, as peças para criar essa parte também serão cortadas agora e vou mostrar a versão 2.0 desse projeto no próximo artigo relacionado, tenho convicção de que vocês gostarão muito.

Montagem do separador de moedas

Não tem nada na estrutura além de cola e madeira. O motor é dos mais baratos. É o motor de passo desse artigo, que utiliza um ULN2003 como controlador. O Arduino é um Nano e o código, o mais básico possível. Precisa de Arduino? - Não, mas nas evoluções desse projeto, sim. Usaremos essa mesma estrutura para posteriormente contabilizar os valores, provavelmente adicionando também um display 16x2 na tampa ou abaixo do coletor, por isso, vamos adicionando uma funcionalidade por vez, vai ser divertido. Serve qualquer Arduino, eu preferi o Nano.

Por que só tem 4 caídas se temos 5 moedas?

Dificilmente você vai acreditar, pois o projeto original só tinha 4 caidas e claro, é propício não ter mais trabalho do que basicamente copiar (não me recrimine, o Iberé do Manual do Mundo também se alimenta de ideias que existem. "Nada se cria, tudo se copia" é parcialmente verdade). Mas, temos uma situação interessante, que eu, na minha ignorância, não sei explicar a razão:

  • Moeda de 1 real, a maior.
  • Moeda de 25 centavos, a segunda maior.
  • Moeda de 50 centavos e a de 25 centavos antiga, a terceira maior.
  • Moeda de 5 centavos antiga e 10 centavos nova, o mesmo tamanho.
  • Moedas de 10 centavos antiga e de 5 centavos nova, o mesmo tamanho.

Como resolver isso? Bom, resolvi deixar que as de 5 e 10 caiam juntas.

Pintar o MDF

Eu sugiro que não faça pintura. Ele é  bem liso, de modo que as moedas não sofrem atritos perceptíveis e o funcionamento acabou sendo bem mais suave e funcional que em papelão, porque em papelão as moedas chegam a parar na rampa de descida em direção a seus respectivos receptores. Além disso, o coletor está bem encostado na peça da rampa, pintar fará com que o atrito seja maior.

Gavetas para as moedas

Não fiz. No primeiro momento, foram feitas em cartolina. Isso porque já cortei também um segundo projeto; um dispenser de moedas, que você entra com o valor e ele solta as moedas no valor correspondente ao solicitado. Quando eu montar, saberei o tamanho exato do suporte de moedas, então farei as gavetas. Daí separamos no separador e levamos as gavetas para o dispenser. Agora, chega de assuntar e vamos à brincadeira.

Montagem

Eu ia fazer um video mostrando minhas habilidades de chipanzé para colar as partes, mas vi minha filha (que está no maternal 3) fazendo a tarefa de casa e, bom, o princípio do uso de cola é o mesmo. Concluí que não é necessário video de colagem.

As peças foram feitas com os respectivos encaixes, de forma que não tem como montar errado, basta encaixar, ver se ficou certo, então passar cola e esperar secar. Vou só dar as recomendações iniciais.

A imagem abaixo mostra todas as fases descritas no restante do artigo. Use-a como referência visual para os respectivos parágrafos.

A peça que sobrepõe os ramais deve ser colada com perfeição, pois tem moeda com diferença mínima de tamanho e eventualmente poderá cair no lugar errado se colado de qualquer jeito. Não é um bicho de sete cabeças, apenas faça o trabalho com paciência e prazer.

Repare no canto direito. Os dois primeiros separadores tem um comprimento maior. Essa será a caixa que comportará o Arduino e o motor de passo. Encaixe e cole inicialmente uma das maiores (lado direito da bandeja, que é a peça maior) e a peça da esquerda (que é a menor). Para garantir o posicionamento, use fita crepe (será que é assim que escreve "crepe"?) até que seque a cola. A cola utilizada foi comprada no Kalunga, é amarela, atóxica e sem cheiro. Depois disso, cole os outros separadores. Por último, cole o fundo (do separador de moedas - da imagem acima).

Essa parte merece atenção também. Após ter colado a parte de sobreposição dos ramais, cole o motor de passo atrás, com o máximo de capricho. Tem aproximadamente 1mm de tolerância no encaixe e adicionei tolerância também ao inicio da canaleta pra garantir que a moeda caia do coletor, mas "perfeito" é perfeito. Por último, cole a tira de 180 graus o mais próximo possível do coletor, mas não deixe vazar cola ao comprimir a peça sobre a tampa. Basta uma fina e discreta camada de cola, não haverá esforço sobre essa peça, ela servirá apenas de guia.

Ao colar o motor de passo, evite também uma camada grossa de cola (usei cola quente para facilitar manutenção). Eu exagerei e acabei com um pequeno desnível angular, mas não influenciou no resultado final.  Sugiro mesmo a cola quente porque se precisar substituir o motor futuramente, basta jogar álcool isopropílico e aguardar uns 10 segundos. A cola se desprenderá com 0% de esforço. A cola quente não é a melhor opção, se puder, parafuse o motor.

A roda coletora não precisa de cola. Fiz o encaixe exatamente na medida do eixo do motor, e como ele tem dois chanfros, a roda não girará em falso, além de ficar bem justa. Se ainda assim desejar colar, tome cuidado para que a cola não desça pelo eixo. Utilize super-cola e uma pitada de bicarbonato de sódio. Veja que beleza de encaixe na imagem de referência acima.

Fiz um video pequeno para mostrar de perto como fica a montagem, no final do artigo tem um link para o canal DobitAoByteBrasil, que aliás, peço a gentileza de que deixem seu like e se inscrevam no canal. Nesse link no final do artigo tem o separador de moedas em ação.

https://youtu.be/-mRL9UkI9bo

Parte eletrônica

Para ser o mais simples possível, não tem botões nem nada. Simplesmente coloquei uma fonte de alimentação para o motor e Arduino. Quando ligar, logo começa a girar. Calma, esse é o primeiro nível do projeto, vamos avançar em outros artigos!

O motor de passo é o unipolar 28BYJ-48 (datasheet) e funciona em 5VDC. É bom que utilize uma fonte com boa corrente, mas ele não fará esforço. Quanto ao torque, ele suporta (teoricamente) 1.2kgf.cm. O coletor tem 7,5cm de raio, salvo erro, dá 160g de força na borda da roda. Mais que o suficiente para compensar o atrito e umas 4 moedas sendo carregadas (1 por entrada). O torque de saída é de apenas 300gf.cm, sugiro que comece ligando-o e depois coloque as moedas.

Eu "acho" que o modelo que tenho é 12v, porque está muito fraco ligado em 5v. Tanto que deixei apenas 2 fios ligados, porque estava parando de pouco em pouco. Não tenho especificação, esse modelo tem a versão de 5v e 12v e no corpo dele não está nem o modelo, portanto, após gravar o video mostrando o funcionamento, vou colocar em 12v pra ver se sai faísca e digo ao final do artigo.

Dá pra converter ele pra bipolar e conseguir 250% mais força. Legal? Vou fazer um artigo mostrando como, espero que acompanhe.

Bem, na referência que me inspirou fazer essa reprodução melhorada, vi que estava sendo usado um motor DC. Depois de passar por essa experiência com o motor, percebi que ele não usava nenhum tipo de redução mecânica, por isso ele colocava algumas poucas moedas para não haver atrito.

Para montar, utilizei uma fonte chaveada, mas poderia ser um carregador de tomada, só que teria que fazer derivação no cabo para ir o USB ao Arduino e jumpers para a alimentação do motor. Ou arriscar alimentar diretamente no 5v do Arduino, mas não acho uma boa ideia.

A fonte chaveada que usei é 12v, então alimentei o Arduino com um cabo com conector jack utilizando um shield expansor de IO. Não tenho certeza porque não rastreei o circuito, mas pode ser que o 5v fornecido no shield tenha mais corrente do que os 5v direto do Arduino (se estiver saindo direto do regulador de tensão para o shield).

Para alimentar o motor, usei uma fonte step down regulada em 5v. É um circuito básico e descomplicado, não precisa de placa nem nada especial, como você vê na imagem de coluna, ao início do artigo.

A abertura superior da caixa do separador de moedas é o suficiente para colocar uma mão relativamente gorda igual a minha, então acredito que posso afirmar que utilizar cola de madeira  na parte frontal não será um problema para o dia que eventualmente seja necessário dar manutenção no circuito, mas utilizar cola quente garantirá que você solte a parte frontal facilmente, caso deseje um acesso mais espaçoso.

Código

Da mesma forma, o código nesse momento tem como único propósito, girar o motor. Só.

int left  = 0;
int right = 1;
int stop  = 9;

int pins[4];
int estados[4][8];

void Steps(int steps, int direction)
{

if (direction == left){
    for (int j=0;j<steps;j++){
        for (int i=0; i<8;i++){
            delay(5);
            digitalWrite(pins[0],estados[0][i]);
            digitalWrite(pins[1],estados[1][i]);
            digitalWrite(pins[2],estados[2][i]);
            digitalWrite(pins[3],estados[3][i]);
        } 
    }
}
else if (direction == right){
    for (int j=0;j<steps;j++){
        for (int i=8; i>-1;i--){
            delay(5);
            digitalWrite(pins[0],estados[0][i]);
            digitalWrite(pins[1],estados[1][i]);
            digitalWrite(pins[2],estados[2][i]);
            digitalWrite(pins[3],estados[3][i]);
        }
    }
}
else{
    digitalWrite(pins[0],0);
    digitalWrite(pins[1],0);
    digitalWrite(pins[2],0);
    digitalWrite(pins[3],0);
}
}

void setup(){
    for (int i=8;i<12;i++){
        pinMode(i,OUTPUT);
        pins[i-8] = i;
    }
    //4 pins, 8 states
    //PIN 0
    int j = 0;
    estados[j][0] = 0;
    estados[j][1] = 0;
    estados[j][2] = 0;
    estados[j][3] = 0;
    estados[j][4] = 0;
    estados[j][5] = 1;
    estados[j][6] = 1;
    estados[j][7] = 1;

    //PIN1
    j = 1;
    estados[j][0] = 0;
    estados[j][1] = 0;
    estados[j][2] = 0;
    estados[j][3] = 1;
    estados[j][4] = 1;
    estados[j][5] = 1;
    estados[j][6] = 0;
    estados[j][7] = 0;

    //PIN2
    j = 2;
    estados[j][0] = 0;
    estados[j][1] = 1;
    estados[j][2] = 1;
    estados[j][3] = 1;
    estados[j][4] = 0;
    estados[j][5] = 0;
    estados[j][6] = 0;
    estados[j][7] = 0;

    //PIN3
    j = 3;
    estados[j][0] = 1;
    estados[j][1] = 1;
    estados[j][2] = 0;
    estados[j][3] = 0;
    estados[j][4] = 0;
    estados[j][5] = 0;
    estados[j][6] = 0;
    estados[j][7] = 1;
}

void loop()
{
    Steps(500,right);
    Steps(0,stop);
    delay(10);
}

Faça o upload para o Arduino Nano. Depois disso, desligue o cabo do Arduino e alimente-o como disposto mais acima. Tão simples que nem comunicação serial está sendo utilizada. Ao ligar, já pode começar a brincar com suas moedas. Ah, e antes que eu me esqueça, faça uma caixinha de papelão ou cartolina, apenas para receber as moedas nesse primeiro momento.

Veja o video do projeto no momento atual  (clicando aqui) e se inscreva no canal, valendo um S9 virtual :)

Se alguém encontrar por aí o video de referência e puder citar na página Manual do Maker, agradeço!

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.