Olá amigos,
Meu hobby principal é o cultivo de cogumelos e para tanto necessito construir um equipamento de laboratório chamado agitador magnético sem motor. Esse agitador é um equipamento utilizado em laboratório para promover a mistura ou agitação de líquidos por intermédio de uma barra magnética que fica imersa dentro do líquido que está sendo agitado.Este agitador tem um perfil extremamente baixo e é livre de manutenção devido á ausência de partes móveis.
Um campo magnético rotativo (criado por bobinas energizadas) atuando externamente e logo embaixo da barra magnética , faz com que essa barra se mova, agitando o líquido, conforme o seguinte esquema simplificado :
http://www.cogumelohobby.com/motor_de_passo/agitador.jpgFoto de um equipamento industrializado, parecido com o que pretendo construir :
http://www.cogumelohobby.com/motor_de_passo/agitador_sem_motor.jpgPoderiam por favor ajudar a alterar um código escrito em assembler publicado na Revista Elektor (vide links mais abaixo) para poder ser usado neste projeto de agitador ?
Este controlador foi originalmente projetado para controlar um motor de passo unipolar por meio de um PIC.
O que pretendo controlar então não seria um motor de passo , mas na verdade acionar sequencialmente 4 eletro-imãs (4 bobinas) montados em formato de quadrado, conforme esquema seguinte:
http://www.cogumelohobby.com/motor_de_passo/bobinas.jpgEstas bobinas quando acionadas na sequência correta, criam um campo magnético giratório à semelhança de um motor.
Cada conjunto de 4 bobinas dentro do agitador, promove a agitação de um frasco somente.
Ao se adicionar mais conjuntos de 4 bobinas cada , será possível agitar mais frascos no mesmo equipamento e todos sincronizados ao mesmo tempo, conforme o desenho seguinte, onde existem 6 conjuntos com 4 bobinas cada um:
http://www.cogumelohobby.com/motor_de_passo/base_com_6_bobinas_internas.jpgVista lateral em corte mostrando um único conjunto de 4 bobinas dentro do equipamento:
http://www.cogumelohobby.com/motor_de_passo/bobinas_dentro_da_base.jpgEssas 4 bobinas se comportariam como um motor de passo com um passo de 90 graus, onde o rotor seria a barra magnética e o estator seria as 4 bobinas acionadas em seqüência pelo controlador do motor de passo.
O acionamento do campo magnético giratório dessas bobinas precisaria ser feito da seguinte forma :
O campo magnético precisa girar somente em um único sentido.O circuito original da revista permite girar o motor de passo nos dois sentidos.
O campo giratório deve alternar entre uma rotação mais lenta de cerca de 59 rpm por 5 segundos e uma rotação mais rápida de cerca de 234 rpm por 45 segundos, depois retornando para os 59 rpm por 5 segundos, e assim por diante, alternando as rotações com os respectivos tempos citados acima indefinidamente, enquanto a alimentação do circuito estiver ligada.
Essas velocidades tão específicas citadas acima são resultantes de cálculos mostrados mais adiante.
Essa diminuição por 5 segundos em rotação baixa à cada intervalo de 45 segundos na rotação alta permite recolocar em giro qualquer barrinha magnética que não esteja mais acompanhando o campo magnético rotativo criado pelas 4 bobinas (a barra fica apenas vibrando no lugar, sem agitar)
Vide adiante os links para dois pequenos vídeos mostrando o funcionamento de um agitador desse tipo . Notar a diminuição temporária na rotação da barra magnética dentro do copo de vidro . Por medida de economia no tamanho dos arquivos, estou mostrando nesses vídeos apenas alguns segundos antes e depois do momento em que o agitador reduz a rotação para capturar as barrinhas “desgarradas”.
CONTROLADOR PUBLICADO NA REVISTA ELEKTOR
O controlador de motor de passo publicado no site da revista Elektor usa um PIC12C508, programado em assembler para acionar um motor de passo unipolar de 6 fios com velocidade fixa.
Artigo da Revista Elektor em português :
http://www.cogumelohobby.com/motor_de_passo/Controlador-de-motor-de-passo-com-pic.pdfO mesmo artigo da Revista Elektor , porém em inglês:
http://www.cogumelohobby.com/motor_de_passo/Stepper_motor_controller_with_PIC.pdfNesse artigo ,o código fonte permite fazer com que o motor de passo gire em uma velocidade fixa, mas essa velocidade fixa pode ser modificada pela alteração de uma constante binária (conforme tabela fornecida no artigo) no código fonte.A alteração da constante binária promove a alteração do tempo de duração de cada passo em milisegundos.
Endereço do código fonte original:
http://www.cogumelohobby.com/motor_de_passo/PasPas12C508SourceEnglish.txtEste circuito , em teoria, poderia ser usado para o acionamento destas bobinas, porém precisaria de algumas alterações para ser adaptado para funcionar conforme descrevi acima , adicionando as duas velocidades de rotação distintas.É aqui que começam minhas dúvidas referentes à essas alterações no código, pois não tenho o conhecimento suficiente para tal.
MINHAS DÚVIDAS:
1) Gostaria de excluir uma parte do código, deixando apenas o necessário de código para girar em um único sentido , pois o equipamento deverá girar sempre em um único sentido.Seria realmente necessário excluir a parte do código que se refere ao sentido de rotação não desejado, ou não seria necessário essa exclusão ?
Do jeito que está, o código original permite girar um motor de passo nos dois sentidos.
2) As principais alterações necessárias no código são as relacionadas ao ciclo de alternância de velocidades citadas abaixo , onde o motor deve realizar esse ciclo indefinidamente.
CICLO DE FUNCIONAMENTO DESEJADO:
O ciclo de funcionamento que deve ser repetido indefinidamente é o seguinte :
Ao ser ligada a alimentação do circuito, o agitador deve funcionar inicialmente à 59 rpm por 5 segundos e depois à 234 rpm , permanecendo nesta rotação maior por 45 segundos. Na sequencia, deve reduzir novamente para 59 rpm , mantendo essa rotação por 5 segundos. Retornar então á rotação maior por 45 segundos , depois ao mais lento por 5 segundos e assim por diante, fazendo isso enquanto o circuito estiver sendo alimentado .
3) Uma dúvida mais básica , gostaria de saber se todos os terminais terra dos dois circuitos (fonte de alimentação e controlador do motor de passo) devem ser ligados juntos ?
4) Segundo o projeto original , será preciso apertar sempre um botão para que o motor comece a girar , porém gostaria que o circuito voltasse a ligar automaticamente em caso de falta de energia elétrica , sem precisar apertar nenhum botão . Como fazer isso ?
5) Como fazer também para que o circuito seja acionado tão logo a alimentação inicial seja ligada, sem precisar acionar qualquer botão, girando em um único sentido e na velocidade mais baixa inicialmente ? Que alterações devem ser feitas ao código para conseguir isto ?
6) Os pontos L e R (que giram o motor para um lado ou outro) do esquema deveriam ser aterrados para conseguir que o motor sempre inicie o funcionamento quando for alimentado ? Precisaria usar um resistor limitador nestes pontos ? Se afirmativo, qual seria o valor mais adequado ? Ou isso poderia ser feito alterando o código ?
Dois pequenos filmes que fiz, mostrando o funcionamento de um agitador comercial , mostrando a diminuição de velocidade :
Pretendo construir o circuito que utiliza 4 transistores , de acordo com o artigo da revista.Se possível gostaria de substituir por transistores TIP 120.
CÁLCULO TEÓRICO DA ROTAÇÃO DO MOTOR DE PASSO UNIPOLAR :
Em um outro site , encontrei informações sobre como calcular a rotação de um motor de passo, conhecendo o tempo de duração do pulso e o ângulo de cada passo :
http://www.radiolocman.com/shem/schematics.html?di=33475Aqui , um trecho extraido do site acima :
On the motor it states that each step is 7.5 degrees per step, so that makes 48 steps for one full revolution.
4 phases/step x 3 ms/phase x 48 steps/revolution = 576 ms/revolution
Converting to revolutions/second we get roughly 1.736
1.736 revolutions/second x 60 seconds/minute = 104.16 RPM, not a bad speed.
Traduzindo o texto e adicionando algumas observações ficaria assim :
No motor está escrito que cada passo é de 7,5 graus por passo, de modo que são necessários 48 passos para uma revolução completa.
4 fases/passo x 3 ms/fase x 48 passos/revolução = 576 ms / revolução
Para converter 576ms/volta para número de voltas/segundo fazemos o seguinte:
1 volta = 576 ms = 0,576 segundos (576 dividido por 1000).
Fazendo uma regra de três temos:
1 volta ------0,576 segundos
x voltas ---- 1 segundo
onde x = 1/ 0,576 = 1,736 voltas
teremos que x = 1,736 voltas/segundo.
Para converter voltas/segundo para voltas/minuto (rpm) ,multiplicar por 60 :
1,736 rotações por segundo x 60 segundos / minuto = 104,16 RPM .
Seguindo o raciocínio acima e usando 90 graus como valor para cada passo (4 bobinas separadas 90 graus entre si) , com 4 passos por volta, e substituindo os diversos valores de milisegundos da tabela, encontrei os seguintes valores de rpm:
Constante binária Tempo em ms Rotação final calculada
10010010 1 ms 3750 rpm
10010011 2 ms 1875 rpm
10010100 4 ms 938 rpm
10010101 8 ms 469 rpm
10010110 16 ms 234 rpm
10010111 32 ms 117 rpm
10011000 64 ms 59 rpm
10011001 128 ms 29 rpm
As duas últimas constantes binárias foram calculadas por mim, pois não existem na tabela original.
Se os todos os cálculos e raciocínio acima estiverem certos, as rotações mais adequadas ao meu projeto seriam 234 rpm na velocidade alta e 59 rpm na velocidade baixa .
Minha idéia seria modificar o código original , inserindo os 5 segundos de funcionamento do controlador na velocidade mais baixa (59 rpm com 64 ms de duração do passo) mais os 45 segundos de funcionamento na velocidade mais alta (234 rpm com 16 ms de duração do passo) e fazer essas rotações com os respectivos tempos de funcionamento ficarem se alternando em um loop infinito. Seria como usar uma constante binária por um certo tempo de funcionamento seguida do uso de outra constante binária pelo outro tempo. Meu problema seria inserir esses ciclos e fazer tudo funcionar direito depois.Qualquer outra idéia sobre como fazer isso , será bem vinda.
Alguém por favor poderia escrever todas as alterações necessárias no arquivo asm , pois não consigo alterar o código conforme gostaria e deixar esse código pronto para ser compilado apenas ?
Ou então deixar os campos para troca das constantes binárias em branco , pois talvez as duas constantes escolhidas para as duas velocidades (alta e baixa) não funcionem de acordo com o desejado e precisem ser alteradas.
Desculpem o “livro” que acabei escrevendo para fazer essas perguntas , porém pretendi ser o mais claro possível e também mostrar o máximo de detalhes.
Obrigado pela ajuda e se ainda tiverem qualquer dúvida sobre o que pretendo fazer, por favor escrevam, pois estou a disposição,
Um abraço à todos ,
Wilson R. Bastazini