codificador controlado movimento
descrição
controle de rotação simples, com o motor de engrenagens que tem um codificador de duas fases montado no veio do motor eléctrico. Durante os testes eu queimei o 16F84A tive e para isso eu usei um 16F628A. O programa ainda está na memória de um 16F84A, com a versão especial.
projeto
Sem giudico este projecto acabou com ele, Eu ainda tenho algumas idéias uma área onde você pode usá-lo para os meus propósitos. Eu fiz movido pela curiosidade quando li esta discussão.
UMAEu vendo começou um tipo de trabalho semelhante à discussão, Eu era capaz de reconstruir este projecto. Filho estava envolvido em atrasoo necessário em querer adicionar alguma outra função.
Montar os componentes, o vídeo mostra como o conjunto é capaz de fazer o seu trabalho.
O programa foi desenvolvido com Proton Básico, mas eu diria que em modo híbrido, uma vez que contém tantas partes escritos em assembly, risparm1are para o espaço e melhorar o desempenho de todos.
Ele foi inicialmente escrito para um 16F84A em 4 Mhz, com a esperança de que você também pode ser adaptado para outros micro-pin compatível com o sol muda a configuração. Eu não tenho certeza que se encaixa no tipo de classe Micro REFORÇADA 16F18xx. De alguma maneira eu dúvida de que a montagem pode ser diferente para alguns pontos.
Uma coisa engraçada aconteceu comigo, Era que eu não sabia que o Micro eu estava usando era de 4 Mhz e colocar o quartzo 20 Mhz. Às vezes, também pode trabalhar.
|
|
Quprojeto esto usa este tipo de motor que conta 11 impulsos por revolução do motor, que são então reduzidos com um rácio 1:600 de wormgearbox. Para fazer duas voltas como o tópico do fórum, deve contar 13200 pulso. O cálculo seria:
2 rpm x 600 X 11 = 13200.
Pelo menos isso é o que eu posso ver o relatório da série, o motor que eu estou usando.
Além da idéia de ter 2 rounds, como no pedido, capacidades são muito mais elevados, permitindo a contar sobre 65500 pulso, que seria ao lado 10 pós lenta rpm.
Você pode pensar em uma porca acoplado ao eixo de saída, a fim de fazer um movimento linear, que permite uma resolução de 1:6600, com vantagem parada sem arriscar a reversão de movimento. Na verdade, a unidade de redução é irreversível e, mesmo se carregado do veio de saída não voltar.
Pode ser usado como um servo, tornando-o fazer até mesmo alguns graus de movimento.
O programa também é adequado com uma outra montagem e que tem uma relação de transmissão diferente ou de 'contagem de impulsos d. Parece que podemos conseguir muito elevadas taxas de contagem.
O programa aceita alguns controles convenientes, que está relacionado com um outro dispositivo mestre é capaz de coordenar os movimentos para alguns destes projectos. Tendo também a possibilidade de armazenar até dezesseis maioria dos comandos comuns no controle da EEPROM.
Tal como o apontar de uma antena parabólica para, ou controle de porta de um galinheiro.
o esquema

euos mesmos materiais

Ele é projetado para ser capaz de salvar a posição do encoder apenas a tempo de EEPROM, quando a tensão de alimentação está faltando. Permitindo, em seguida, para recuperar os dados passado e ser capaz de se mover com boa precisão a partir do mesmo ponto em que tinha parado.
O diodo no pino microcontrolador é usado para manter 5 Volt mesmo durante uma queda de tensão abrupta para o circuito, através do condensador C3. Fazendo um estudo, Descobri que servem ao máximo 8 ms para salvar um byte no EEPROM. Para este caso, você terá de guardar 4 bytes. con i 100 mF você conseguir salvar todos os dados necessários para começar de novo. Mas melhor ser generoso e para evitar erros que eu escolhi 330 mF.
Com o uso do relé é possível trabalhar com motores de corrente contínua ou alternada, à custa de que você não pode ter um controle de velocidade. Em qualquer caso, é fácil de montar com pouca modificação de um controlo de velocidade e tirar proveito das duas saídas para permitir que o sentido de rotação.
o software
uso firmware Educação
premissa:
A fonte de programa é comentado abundância por ajuda entender o que foi escrito, e talvez, num período subsequente usally o MANUTENÇÃOne.
Nell'ultima versão que eu tive que ajustar muito para ser o melhor e por queste che tem muitoe peças em conjunto. se Também pensando em colocar o cão de guarda, que em Se fosse para parar o programa em algum momento, em seguida,, o micro é reiniciado. Em particular maneira de quando foi detectada uma perda de poder, necessidade de reiniciar o micro depois de salvar os dados na EEPROM.
Eu adotei una atenção especial que a contagem de encoder não exceda os valores definidos como mínimo e máximo, que são DRIFT e MaxLimit (veja abaixo para definições).
Eu comentei em Inglês, porque o vídeo está em exposição para o mundo inteiro e talvez útil não só emo italiano.
no cabeçalhoxx.Inc. Há muitas definições de uma forma que permite que você altere as configurações em um lugar sem o risco de ter perdido qualquer em outras partes do programa. (xx É uma numeração da versão em uso). Mesmo estilo segue para o nome do programa.
Há dois, a fim de usar 16F84A ou 16F628A, de modo que você pode usar toda a EEPROM. Este tem de escolher antes de edifício.
Deve-se observar as duas primeiras definições que determinam uma compilação de uma forma diferenciada de utilização de hardware.
As opções são:
|
DOTOGGLE |
Ele serve para permitir que o botão de activação ou de contacto, (no diagrama RUN) para operar em uma maneira cíclica. Este método permite que você iniciar e parar o movimento, mesmo antes de chegar ao fim de curso de software. |
|
WITH_RS232 |
Determina a adição de comunicação em série para os pinos TXD e RXD. Eles são permitidas quaisquer alterações nas atribuições de pinos para uso com a série, mas não recomendo. Na verdade, previ que o circuito também vai montar outros micro-controladores, que são compatíveis com o pino 18F84A. Desta forma, você será capaz de expandir as funções do programa e um desempenho ainda melhor com uma classe superior micro-controlador. |
|
WITH_OSC |
Ele serve para balançar o movimento dentro de dois limites. Veja a seguinte descrição de comando. Aqui ele é colocado a condição para excluí-lo a partir da compilação, a fim de ativar uma opção diferente, tais como o uso de temporizadores. Como não há lugar para tentar encaixar tudo. |
|
WITH_GOTO |
Opção que permite dar um comando de movimento para uma posição específica. Se você está interessado em usar, será possível excluir. |
|
WANTWDT |
Esta opção determina se a usar o watcdog. Uma opção que alguma educação custa mais para uma maior segurança, mas pode evitar que outra opção para preencher. |
Outras definições importantes:
|
MAXLIMIT |
Ele serve para determinar os limites superiores dos valores do codificador. É útil para configurá-lo corretamente, Após os ensaios iniciais, a fim de definir o valor de ponto médio (MEIO) |
|
MEIO |
calculada automaticamente. Ele serve para definir um valor inicial a fixar na EEPROM. |
|
DERIVA |
Valor que leva em conta para calcular a parada antes do contador codificador exceder um limite de palavra (que são 16 pouco). O caso para evitar que depois de desligar o motor, a contagem continua, tendo em conta a inércia em movimento. Então, se o projeto de lei, por exemplo, É perto de zero e continua a diminuir, Isso levaria a tal ponto que se torna 65535 e diminuições. A razão é precisamente este cálculo. |
|
TEMPO DE ESPERA |
Um valor que é usado por um período de milissegundos a aguardar que o motor parou completamente. Se ele encontrar outro a partir de 'impulsos do encoder, em seguida, o ciclo repete. |
|
DEBUGGING |
Ele precisa fazer alguns testes de verificação em casos de problemas de encontro. |
Como usar
primeiro método por controles de botão.
Uma entrada única é fornecido para iniciar o movimento no sentido de um ponto definido como uma paragem. Fechando o contato com o solo, o programa vai decidir o caminho para o limite de software mais distante.
como acima mencionado, também já programadas, o contato pode parar o movimento antes de terem atingido o fim de curso. Você pode querer desativar este recurso para parar durante o movimento.
Assim que o contato é fechado, com talvez alguns milissegundos de atraso, É iniciar o movimento eo LED (esquema LED0) ilumina para o período que o motor está funcionando. Na minha experiência eu usei um LED tricolor, para isso é azul LED0.
Se ele tem uma certa inércia antes de imobilidade completa, Este LED pisca para indicar a fase de espera a uma paralisação. Talvez seja apenas um pequeno flash, quando a desaceleração é rápido.
Chegando ao fim de curso de software, gira em torno de um interruptor dos dois LEDs. Com o meu LED LED2 tricolor é vermelho e LED1 é verde. As luzes verdes no final da posição A e o vermelho para a posição B.
Ao fazê-lo, certifique-se o sentido de rotação do motor. Na verdade, espera-se que quando a contagem de encoder diminui as motos se move para a posição A. Seu comando configuração da carta de série é minúscula p.
Quando a contagem do codificador aumenta, as motos se move para a posição B. Seu comando configuração da carta de série é uma capital P.
Será importante na primeira fase de ligação do motor e determinar o sentido de rotação.
segundo método Comandos de série.
comunicação foi fornecido com o micro, via serial. Isso pode ser um adaptador USB-RS232 é compatível com os níveis de tensão de micro. Você também pode usar um módulo Bluetooth, que pode precisar de um foco sobre os níveis de tensão do micro. Eu coloquei um divisor de tensão para se adaptar às 3,3 perna Volt módulo RX Bluetooth. O pino TX não cria problemas graves.
Ele permanece pronto para operar também a entrada para iniciar o movimento, que determina o movimento dependendo da distância para os interruptores de limite. Esta entrada pode ser visto no diagrama com uma definição do botão CORRE.
Lista de comandos de série
O modelo de controlo é baseado em uma letra inicial seguido por números, se for necessário.
Para isso, o comando seria o caso:
|
Xnnnnn |
X Significa uma carta (miniscola ou maiúsculas) e n um ou mais dígitos de um número inteiro, só positivos. Qualquer outro símbolo ou caractere termina entrada válida, até atingir 6 entrada de texto manuscrito. Para completar o comando são as seguintes condições:
|
Todos os sinais de série, parar o movimento.
O motivo escolheu para parar quando ele atinge um personagem é o fato de que os períodos de descanso para a recepção de um bit é corrompido por interrupções que são necessários para manter-se o codificador. Isso faz com que a perda de medição de um pouco e depois recebeu não é mais válido caractere.
Só se sente um personagem paradas, mas não está pronto agora para receber mais comandos, porque leva a fase de desaceleração do motor. Dependendo de quão bem você definir o waitTime definição.
Os controles sem números são as letras A, B, S, V, O, C. Com a letra V, não importa se for enviado maiúsculas ou minúsculas, você terá a informação mais relevante.
Para cada letra, veja os detalhes abaixo.
para erros de digitação, o comando para apagar um carácter (retrocesso) interrompe a entrada de valor.
Comandos em detalhe a partir da série:
|
UMA |
Dentrodiferente movimento ativo e diminui a contagem de 'encoder |
|
B |
Dentrodiferente ativa o movimento para aumentar a contagem de 'encoder. Todos os outros personagens parar o movimento quando lançado. Per este, melhor esperar até que o movimento é parado e re-inserir o comando. |
|
C |
Em maiúsculas mover o cursor na EEPROM do limite muda para o primeiro loucação salvo. Na verdade, mesmo desligando, os restos de dados. na minúscula, repõe os valores predefinidos, a localização atual. Veja os detalhes para N. |
|
G |
Vagamente se minúscula ou maiúscula, move o motor para o codificador de posição escrito nas figuras a seguir. |
|
M |
qualquer, permite a mudança do valor contagem dell'encoder. Assim, você pode definir um novo valor da posição do encoder. Ela pode ajudar a colocar a contagem dentro dos limites permitidos e eliminar a compulsão de se mudaram para além do limite. Ou para corrigir alguma derrapagem. |
|
O |
maiúscula, define a função de oscilação entre os dois interruptores de limite software. Qualquer caractere de entrada pára 'l oscilação, mas para remover a opção que você deve enviar o comando em letras minúsculas. |
|
P |
Minúsculas define o limite da contagem de diminuição. Cuidados devem ser tomados para entrar um valor apropriado, a fim de ser aceito. Isto é, em dIRECÇÃO que o codificador decrementa a contagem com o comando UMA. Mudança se aplica ao limite oposto. Isto é, em dIRECÇÃO que o codificador incrementa a contagem com o comando B. |
|
N |
Comando para alterar a posição da memória EEPROM. Ele aceita um ou vencimento figuras, se maior, em seguida, é escolhido o maior memória disponível. Ao fazer isso ele usa uma limitação diferente de interruptores de limite. |
|
S |
Muito parecido com o comando P, só que você fim de salvar a posição atual do contador, porque não há números se seguem à letra. Útil para ver a localização atual é próximo ao limite e, em seguida, você estabelece que, como válida. Se a letra é pequena você vai querer guardar para um lado, admitiu consistente com os valores introduzidos. |
|
T |
opcional, sacrificar outras opções, como o cão de guarda, oscilação eo comando G. Você também pode preencher esta opção. |
|
V |
qualquer, exibe informações relativas aos valores-limite e dell'encoder, mais o número de localização EEPROM. |
End mensagem de comando:
No final de cada comando é uma mensagem de informação. A memória de programa é o limite, não deve fazer alterações precisam, sem saber como.
A mensagem pela ARE “Está bem” Se tudo for feito corretamente, ou “ERRAR n” se houve um erro de operação.
Por n Há uma explicação do possível erro. Veja a lista abaixo.
|
1 |
Relatam que tenta ir além dos limites padrão (OPERAÇÃO o MAXLIMIT) |
|
2 |
O valor inserido está fora dos limites inferiores, determinado pelos interruptores de limite e a posição mediana do acidente vascular cerebral. (Na verdade, há um meio, que é o valor mediano) |
|
3 |
O valor de entrada está fora dos limites superiores, MEIO e determinada entre o limite superior. |
|
4 |
O valor deve estar acima MÉDIO |
|
5 |
O valor deve estar no meio |
|
6 |
O enviado primeiro caractere é inválido, talvez corrupta. |
|
7 |
O local que você está tentando escrever no EEPROM não está correto |
comandos ativos, preenchendo sem RS232
Você também pode preencher a opção de usar o número de série.
Para o julgamento era esperado para usar o pulso de comando com um único botão com funções divese.
As funções são adicionados no programa OneButton.Inc que pode usar uma cadência dos períodos medido pelo Timer0, também usado para piscar o LED. Esta freqüência determina o período válido para a imprensa do botão, para filtrar qualquer pulso vibrações mecânicas.
Existe a possibilidade de definir um tempo de atraso por software, que, infelizmente, não permite que o 'uso do flash LED durante a operação. Eu diria, não altere estas peças.
Nem todos os recursos estão habilitados, permitindo que você mantenha o programa em pouco mais de 600 instruções de máquina. Ele usa apenas as definições úteis para este programa, embora o programa OneButton.Inc ele oferece algum outro.
Que aqueles que estão ativos:
|
Clique |
Usado para salvar na EEPROM, na fase de programa. Ou para mover em uma direção, o programa escolhe o mais distante. Ele também é parar a motocicleta (se você usar a sua opção). |
|
Dê um duplo clique |
É usado para iniciar e terminar a fase de programação. Você pode evitar salvar na EEPROM quando pressionado uma segunda vez, sem ter dado um clique para armazenar. Os limites só será válida na RAM. Eles não são guardadas na EEPROM. |
|
longo Pressão |
Usado para mover na direcção A, durante a fase de programação. O comutador de limite é colocado no máximo definido com DRIFT. |
|
Clique curto e pressão longa |
Usado para se mover na direção B, durante a fase de programação. O limite é definido como o máximo. O comutador de limite é colocado no máximo definido com MaxLimit. |
Com estas possibilidades que você pode pensar de programação das posições finais com a seqüência que exige um duplo clique para iniciar a fase de programação. o LED0 (blu) pisca rapidamente. Nesse ponto, você será capaz de agir para mover o motor na posição de paragem. Com um toque longo ele vai começar a se mover para o limite A. Quando você soltar o botão irá armazenar no limite RAM. Convém, no entanto, passar do ponto de verificação ponto médio necessário.
Da mesma forma que você pode fazer para o outro sentido de rotação, o comando que neste caso será um clique seguido por um longo imprensa, mantido baixo. Quando a pressão será suficientemente longo o motor irá iniciar o movimento na direcção B, ficar em movimento, desde que você mantenha o botão pressionado. Você deve então executar o comando após a conclusão da primeira. Neste caso, ele vai segurar até que ele atinja o limite desejado.
Neste ponto haverá limites armazenados na RAM, mas que sempre pode mudá-los, repetindo a 'operação. Para tornar definitiva você pode salvá-los em EEPROM com um comando de um simples clique.
Este click não terá efeito durante o período d 'impostoção, que é delimitada por uma sequência de um duplo clique, ou umo duplo começando eo duplo após a programação.
Summing, nota-se que na fase de comandos de programação são iniciados e são concluídos com o duplo clique. Fora da qual não têm efeito. Com a exceção de cliques que leva para começar a motocicleta.
Você pode baixar o pacote e / ou ver a vídeo
NOTA
Use o projeto envolve a responsabilidade, que o 'autor assume a causar danos a pessoas ou bens.


Deixe uma resposta
Quer juntar-se a discussão?Sinta-se livre para contribuir!