Bom dia galera, mais um projeto que está no forno.

Todo sonho de um hobista em eletrônica é criar suas placas de circuito impresso sejam elas um protótico ou uma placa definitiva.

Pois bem para encurtar a conversa e meu desafio. Quando iniciei eletrônica a bons anos atrás, fazíamos nossas montagens em ponte de ligações (creio que nem exista mais) ou em placas. Geralmente eram feitas a mão com caneta especiais ou senão com decalques. Este assunto já foi muito discutido tanto aqui no fórum e tantos outros lugares.

Acontece que com a modernização, vieram outras facilidades de se obter uma placa perfeita.

Tentei e consegui bons resultados com a transferência térmica, porém nunca acertava o time correto e sempre algo de errado saia, mais para trilhas grossas, sempre acabava saindo.

Mudei para o método da tinta fotosensível, onde nunca consegui fazer a mágica da remoção da tinta após a sensibilização. Tem vídeos na net que a pessoa, após a exposição da placa a luz ultravioleta, mergulham a placa na solução de barrilha leve (carbonato de sódio) e retira o excesso com a maior facilidade (isto nunca consegui fazer). Já experimentei mudar tempo de exposição, mudar mistura da solução de barrilha, enfim não consegui bons resultados.

Pesquisando mais na net, me chamou a atenção o método com Dry Film, que assemelha a tinta fotossensível. Comprei o material e fui aos testes. Muito bom resultado, embora o segredo todo parece estar na laminação, do resto até o momento parece o melhor método para quem sonha com as tais placas.

Fiz uma outra pesquisa rápida na net e juro que decepcionei com os preços de uma laminadora (plastificadora), aí porque não tentar fazer uma ? E eis o desafio.

Com apenas 20,00 comprei uma unidade fusora da impressora laser da Lexmark 342. Perfeito, tudo o que se precisa. Dois rolos, uma super lâmpada que aquece o rolo de alumínio  e tudo reunido num pequeno espaço que será depois acondicionado numa caixa e com custo bem baixo.

Eis a laminadora:

 

    

O primeiro desfio foi a parte mecânica, onde através de duas molas pude ajustar os cilindros.

O segundo desafio foi em acionar este rolo (movimentar) e acreditem este pequeno e singelo motor de passo 28BYJ-48 (graças ao redutor) e o driver ULN 2003, deram conta do recado.

Gostaria de fazer uma programação no arduino (meu fraco) e espero a contribuição de vocês.

Ficaria assim:

botão L/D (3) - Um único botão para ligar e desligar;

led 1 (4) - verde;

led 2(5) - vermelho;

relé 1 (6) - (ligar lâmpada);

relé 2 (7) - (ligar cooler);

stepper motor; (8,10,9,11)

O ciclo seria:

Ao primir o botão 1; ligaria o led 1 (indicando que o sistema foi ligado) e o relé 1 (que ligará a lâmpada para aquecimento do cilindro);

Após um tempo determinado (ex. 10 segundos); permanecem ligados L1 e RL1 e liga também L2 (dizendo que a lâmpada foi aquecida e o motor foi acionado) e o stepper motor  numa velocidade

a ser definida em único sentido).

Ao primir novamente o botão 1, desliga o rele 1. e o led2 e ligando o relé 2, mantendo ligado o motor stepper e o led1. Após 30 segundos desliga o motor stepper, o led 1 e o relé 2, estando assim pronto para mais um ciclo.

Este projeto está aberto a discuções e sugestões. Espero poder contar com a ajuda dos mestres em programação. 

Uma foto do motor stepper:

  

Exibições: 2661

As respostas para este tópico estão encerradas.

Respostas a este tópico

Bom dia José, 

retomei o código, tive um avanço, quando pulso a primeira vez o botão, ele liga o led1 (ok), liga rele 1 (ok), espera por 10 segundos (ok), e deveria ligar o motor, e o led mais não acontece: 

Poderia me dar uma ajuda ? 

Obrigado.

http://pastebin.com/4zXz6TAA

  1. int passos = 30;
  2.  
  3. const int stepsPerRevolution = 500;
  4. Stepper myStepper(stepsPerRevolution, 8,9,10,11);

500 passos por volta?? Que motor de passo é esse ??

http://labdegaragem.com/forum/topics/tutorial-arduino-motor-de-pass...

Para calcular o número de passos do motor interno  para girar uma volta do eixo externo (com redução) :

(64 * 25792)/405 =  4075,7728395..

Isto é , são necessários aproximadamente 4075 passos  no motor de passo interno, para uma volta no eixo externo. Esse valor pode ter uma pequena variação devido as folgas nas engrenagens (que são muitas). 

 

Dá uma estudada:

http://labdegaragem.com/forum/topics/tutorial-arduino-motor-de-pass...

Como sugerido anteriormente, decidi fazer por partes o projeto, 

Assim consegui fazer com que: 

Através de um botão iniciasse o processo, ligando o (led1), ligando a lampada do fusor para aquecimento (rele1), ligando o led2 (indicando que o processo está em aquecimento) e deveria ligar o motor (segunda parte).

Após um tempo pre ajustado o mesmo deverá:

permanecer com o motor ligado, permanecer com o led1 ligado (indicando o seu funcionamento),  permanecer com o rele1 ligado (aquecedor), desligar o led2 (em aquecimento) e ligar o led3 (pronto para introdução da PCI/uso).

Após o uso, o desligamento deverá seguir a seguinte ordem:

ao primir o botao2 (desligamento), o mesmo deverá manter led1 ligado (sistema ainda em funcionamento), desligar rele1 (lampada de aquecimento), desligar led3 (pronto para uso), permanecer com o motor ligado, ligar rele2 (ligara cooler de resfriamento), ligará led4 (sistema em arrefecimento). 

O scktech abaixo, está seguindo esta ordem, porém se pressiornar os botões na ordem ao contrária exemplo se primir botao2 antes do botao1, ele cai na parte direta do resfriamento, e também se primir botao1 depois do seu tempo ele volta a acender a lampada de aquecimento.

Após a etapa do resfriamento, motor, led1, led4 e rele2 desligarão.

Deveria ter (se não existe uma função de somente execute isto se já tiver acontecido isto) e também (não execute isto antes disto), trocando em miúdos, botão2 não faça nada antes da conclusão da primeira etapa, e também se apertar botao1 após a conclusão de sua tarefa, não faça mais nada antes da segunda etapa. 

http://pastebin.com/VXMeq7QK

Bom a segunda parte exigira um pouco mais de estudo.

Nascimento, quanto aos botões, acho que deveria ver o que precisa estar no botão 2, pois algumas coisa você pode deixar no automatico como o resfriamento por exemplo.

mas para fazer o botão 2 funcionar só depois que o botão estiver ligado, você pode fazer assim

int statusButton;//estado do botão

//liga o botão 1 caso o status do botão for igual a zero
if (var1 == HIGH && statusButton == 0) {
statusButton = 1:
...
}
//liga o botão 2 caso o status do botão for igual um
var2=digitalRead(botaodesliga); // ler o valor enviado pelo botão
if (var2 == HIGH && statusButton == 1) {
statusButton = 0:
...
}

Oba Tiago, boa noite.

É assim, eu até pensei em instalar um LM35 para monitorar a temperatura e dependendo da resposta desligar a lâmpada e fazer o controle PID dela, mais aí ia ficar chique demais.

Como a utilização é rápida, não teria tanta necessidade. O resfriamento no caso, seria para prolongar a vida do equipamento, uma vez que a lâmpada é halôgena.

Quantos aos botões, vou dar uma estudada melhor e tentar inserir no scketch ok, depois posto o resultado.

Valeu.

 

Com o tempo vc vai implementando novas funcionalidades, por hora acho que o mais importante eh o basico, e a partir do basico pode ser que alguem ajude na implementacao e ou correcao do que ja existe.

Vc pretende fazer um PCB em quanto tempo, digamos 50mmx100mm?

Boa noite Akira,

O tamanho do rolo é de 22cm, isto significa que a largura máxima é 22cm agora o comprimento não tem limite. Interessante do dry film que não faz sujeira e é de fácil aplicação. Tentei fazer com o ferro de passar esquentando de leve, mais não fica a mesma coisa que uma laminadora. 

Depois farei a PCI para a máquina e também acondicionarei numa caixa de madeira. 

Assim que for saindo os resultados irei postando aqui no fórum ok.

Estou mesmo trabalhando no básico, no momento tentando ajustar os botões e depois incrementar o motor de passo. 

Valeu, se tiver alguma idéia será sempre bem vinda

José Antônio, informe onde parou . E o que esta dando errado. 

Vou comentar linha por linha para você entender como o programa funciona e espero indicar como resolvê-lo.

José, boa noite,

Parei exatamente aqui.

http://pastebin.com/VXMeq7QK

Mais uma vez, obrigado pela ajuda.

J.Antonio

Boa tarde José Antônio. 

Seu programa esta compilando sem erros. 

Todo botão é um dispositivo de entrada (input). Por que configurou o botaodesliga como saída (output) ? Se é um botão, ele precisa ser configurado como INPUT. 

pinMode(botaoliga,INPUT);
pinMode(botaodesliga, INPUT);  ( já corrigido) 

É interessante usar uma rotina de debounce nos botões. O ruido das chaves, pode resultar em falsos estados. Faça o teste com esse exemplo, para aprender.

Monte com um led e um botão somente. Se não entender, avise. 

https://www.arduino.cc/en/Tutorial/Debounce

Velocidade de 60 RPM estará adequada ?

myStepper.setSpeed(60);

Como fez a montagem dos leds e dos relés ? Os leds e os relés estão sendo acionados corretamente ? 

digitalWrite(led1, HIGH); // indica sistema ligado
digitalWrite(rele1, HIGH); // lampada ligada
digitalWrite(led2, HIGH); // lampada aquecendo

A função delay é configurada em milisegundos, portanto para 15 segundos, o valor deve ser de 15000. 

delay(15000); // espera 15 segundos para 

Seu botão de desliga não irá funcionar se configura-lo como OUTPUT ( como citado acima) 

 var2=digitalRead(botaodesliga); // ler o valor enviado pelo botão

Faça as correções e me avise se ainda tiver problema. Depois a gente insere a rotina de avanço do motor de passo. 

Boa noite José, 

Vamos lá. Eu li algo esta noite passada e havia testado um código para evitar os ruídos. Entendi o funcionamento na prática, isto é, o para que serve, mais no código vi que ele dá um tempinho (este que vou postar e é mais simples de se entender) tem um tempo de apenas 20 ms. 

Olha ai, bem simples o código:

int led=2; // led no pino 13
int botao=13; // botão no pino 12
int var=0; // valor instantaneo enviado pelo botão
int var2=0; // valor guardado
int estado=0; // guarda o valor 0 ou 1 (HIGH ou LOW)
void setup()
{
pinMode(led,OUTPUT);
pinMode(botao,INPUT);
}
void loop()
{
var=digitalRead(botao); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
if ((var == HIGH) && (var2 == LOW)) {
estado = 1 - estado;
delay(20); // de-bouncing
}
var2=var;
if (estado == 1) {
digitalWrite(led, HIGH); // liga o led
} else {
digitalWrite(led, LOW); // desliga o led
}
}

Continuando: 

Já corrigi em meu código também o INPUT do botão sem problemas, inclui um deboucing no código, gostaria de saber se está certo, ao menos o código continua sendo compilado ("sem erros"), e na sequencia operacional correta. Quanto ao tempo também tenho a noção 15000 (15s).

Com o debouncing;

http://pastebin.com/EQ9dLJeS

Bom, quanto ao motor, antes de incrementar este monte de led indicativo e os relés, havia testado com um daqueles códigos do tutorial que você fez sobre o motor stepper.

Também fiz o teste em separado somente com o motor e o arduino acoplado ao cilindro do fusor e cheguei a esta velocidade razoável de 60 RPM.

Agora falta-me mesmo incrementar o motor.

Já fiz o esquemático e a placa no Eagle faltando mesmo a programação, antes de se fazer a PCI para a máquina.

Bom vamos lá, reanimei novamente,

J.Antonio 

Nascimento, você pode usar o millis no lugar do delay para definir um intervalo de tempo para acionar a refrigeração

//fora do setup e do loop

const long interval = 1000; // tempo para acionar a refrigeração
unsigned long previousMillis = 0; //inicia a contar de zero

int statusButton;//estado do botão

//liga o botão 1 caso o status do botão for igual a zero
if (var1 == HIGH && statusButton == 0) {
statusButton = 1:

if (currentMillis - previousMillis >= interval) {//faz a contagem do tempo atual em relação ao intervalo.
previousMillis = currentMillis;// armazena o ultimo intervalo e converte em currentMillis

//coloque aqui a ação do resfriamento

  }

}

ve ai se você consegue desenvolver alguma coisa, mas primeiro trabalha com o botão, e depois veja se vale a pena usar o millis, mas eu recomendo sempre usar ele no lugar do delay, pois o arduino pode fazer mais de uma coisa ao mesmo tempo.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço