Ele viveu feliz para sempre ... e depois quebrou.Prólogo
Por um ano, parece que em 2009, um analisador de água foi comprado para um projeto. Devido ao fato de que deveria ser usado para garantir a operação de equipamentos tecnológicos, o dispositivo foi adquirido com um amostrador automático.

Este é essencialmente um manipulador CNC com quatro graus de liberdade de movimento para alimentar automaticamente as amostras ao analisador.
Ele trabalhou por cerca de 10 anos e registrou mais de trinta mil amostras com alguns pequenos problemas, que, no entanto, foram superados com "pouco sangue".
No início deste ano, ele estava cansado - o eixo Z falhou, movimento vertical.
Ou seja, o manipulador simplesmente parou de "vê-lo". Em vista de várias circunstâncias de manutenção oficial, o complexo de medição nunca teve problemas menores (reparo da PSU, piscando após uma falha do FLASH) foram resolvidos independentemente. Aqui eu já tinha que procurar funcionários, de quem saíam ... Alguns recursos:
- descobriu-se que o manipulador não é apenas velho, mas desastrosamente velho
- ele era velho e descontinuado após a compra
- nenhuma documentação para isso
- todos os componentes eletrônicos devem ser trocados
- peças estão disponíveis, mas custam mais do que novas
- não há cem por cento de garantia de que, com uma substituição, ele funcionará
Alguns recursos que me eram conhecidos:
- o firmware do fabricante não funciona com o analisador (é bom que tenha sido feito um backup),
- aparentemente, o gerenciador de inicialização também foi alterado, pois o firmware de fábrica "como está" não é aceito
- não há como "reflash" o gerenciador de inicialização, portanto, comprar eletrônicos por US $ 6.000 é inútil
- os mecânicos estão em excelente estado, como eu fazia manutenção periodicamente
- Sensores zero (Hall) estão vivos
Assim, duas opções resultaram:
- comprar um novo analisador do fabricante por US $ 17 mil e um tempo de entrega incompreensível
- refazer todos os programas eletrônicos e de escrita
Parte Um, hardware
Para começar, decidi ter certeza de que os mecânicos estavam trabalhando com uma tensão de 12v (contra 37 no original). Decidiu diminuir devido ao fato de o controle de potência dos acionamentos da engrenagem de controle decentemente aquecer. Portanto, os drivers A4988, placa de identificação CNC e Arduino NANO foram retirados da mesa de cabeceira. tudo isso foi ancorado, relampejado pelo famoso projeto grbl e interrogado com preconceito. A frequência máxima de passos foi obtida para cada inversor, coeficientes de divisão de passos e correntes de acionamento foram ajustadas.
Descobriu-se que o XY não esquenta, e eles produzem uma velocidade bastante adequada. A corrente do inversor Z - teve que ser parafusada ao máximo, devido à divisão por 8 e um consumo decente ao começar a subir, pois puxa uma massa pesada de dois acionamentos e entranhas do motor, enquanto o chip do motorista esquenta até 50 graus, mesmo com um radiador. Eu tive que adicionar um cooler ao ventilador na frente dessa unidade no design final.
No final, ao invés

acabou

O Arduino Pro Micro será uma música separada. No fundo, há um painel com interruptores para selecionar um modo de operação, iniciar e redefinir os botões.
Agora sobre tripa. Como eu disse, todos os sensores Hall sobreviveram. Destes, os XYs são interessantes apenas para as diferentes lógicas de acionamento. Se em Y o sensor abrir OK ao se aproximar do ímã, em X o ímã estará constantemente em frente ao sensor e, em Zero-X e mais além, haverá um obturador magneticamente suave que protege o sensor do ímã, enquanto fecha OK. À luz dessa heterogeneidade, é necessário entender para onde ir ao procurar zeros. Para fazer isso, o design original fornece uma posição de estacionamento no final do trabalho. No entanto, não foi implementado: quando a energia foi desligada, tive que pegar minha cabeça no eixo Z com a mão e encaminhá-la manualmente para a posição de estacionamento.
Sobre Z é a história principal. Lá, no caso Z, o acionamento do êmbolo da seringa ainda permanece, sem um sensor zero, mas com um sensor de rotação dupla - quase um codificador. E também há um sensor para pressionar o frasco com uma avaria, implementado por uma engrenagem helicoidal e também um sensor Hall. Ambos os sensores de rotação são engrenagens de latão que passam com os dentes pelos sensores Hall com magnetização.
Por que eu precisava de um codificador magnético (como parte da minha tarefa particular) que não entendi e, portanto, o substitui por um sensor zero para a unidade de êmbolo, já que os Halls estavam lá, na mesa de cabeceira, bem como o minúsculo ímã de neodímio da unidade de lente de DVD.
Em vez disso

Tornou-se

O principal problema de esculpir o ferro era empinar, bem, você mesmo entende. Eu realmente não queria guardar algo em uma caixa separada, como resultado, tudo se encaixava nos lugares pretendidos para isso, mas agora eu faria isso de maneira um pouco diferente.
Parte dois, softwareOs testes na placa de identificação do CNC mostraram velocidade decente. MAS! Se você tentar oferecer imediatamente ao SD a frequência STEP correspondente a essa velocidade, não receberá nada além de um rosnado. Para alcançar velocidades decentes de movimento, o motor de passo deve ser acelerado, como se você aprecia as engrenagens e os trilhos de acionamento (poço, parafusos de esferas ou cintos) e reduza a velocidade suavemente. Porque o código trivial cresceu um pouco.
Como é quase indecente chegar à seção "Robótica" com um artigo sem código, por exemplo, controle Z (por culpa). Ao emitir uma frequência para o STEP, o digitalWrite não tem tempo, você precisa puxar a porta diretamente. Provavelmente foi um atraso, e um atraso, mas o código veio do controle XY, e a simultaneidade é necessária lá.
No conjunto de níveis de função:
- baixo - vá e volte, encontre algo que não sabe o que
- médio - calibre em zeros, desenhe uma seringa, faça uma amostra da amostra
- diagrama de ciclo alto do desvio do enésimo número de frascos para injetáveis em um palete
O programa inicia inicializando as portas, lendo a configuração especificada nos switches no painel traseiro e, depois de pressionar START, elaborando o diagrama de sequência até encontrar uma posição no palete em que não haja frasco com a amostra.
O diagrama de sequência principal é assim:
inline void frame_1(){ for (unsigned int i=0; i<6; i++){
Os atavismos na forma de saída de informações de depuração para Serial permaneceram no código - deixados para melhorias futuras. Se você quase amadureceu, conseguiu seringas analíticas para quatro vezes o volume, será necessário adicionar outra opção no início.

O principal problema na compilação do programa foi que, no original, o analisador fornece ao amostrador automático para onde ir e o que fazer. Tudo isso acontece através da porta COM e do protocolo, que não existe para onde levar. Porque eu tive que sair.
O analisador possui um modo manual para quem não comprou um amostrador automático de
esquilo . Ao mesmo tempo, um botão escuro "amostra pronta" aparece na tela do analisador e, quando o operador é esfaqueado, ele deve cutucá-lo com o mouse (rastreador no painel do analisador). Quando a medição é concluída, um botão escuro de “iniciar descarga” aparece e, se o operador tiver outra amostra, ele pressiona com o mouse para preparar o analisador para a próxima medição. Após um clique do mouse, o botão desaparece e um campo branco (claro) permanece. Decidi captar essa diferença de brilho com um fotossensor. Verifico a aparência do botão escuro com um fotorresistor colado na ventosa. Não encontrei uma ventosa preta e quando o sol está fora da janela, tenho que cobrir o sensor de botão com alguma coisa.

Mas você tem que clicar em alguma coisa? Felizmente, o analisador tinha uma porta USB e engarrafamento RedHat não circuncidado suficiente no início de 2000 para se conectar automaticamente a essa porta. É para emular o mouse na nova placa principal do amostrador automático que fica o Arduino Pro Micro. ele recebe um PIN do NANO no momento em que o analisador precisa ser clicado. Era muito preguiçoso para escrever movimento, porque antes de iniciar o trabalho, o mouse deve ser definido com antecedência no botão.
Ó FELICIDADE, sobrecarregada com a experiência, soltei a parte do mouse do outro optron galvânico e barato, gerencial. PORQUE, no final do segundo dia de depuração em espécie, quando tudo já estava funcionando e eu configurei o sinal sonoro para emitir sons semelhantes aos originais, um dos motoristas soltou fumaça mágica e conectou a seção de energia de 12V à lógica de 5V. Bem, nada, meio dia de substituí-lo por um extraído de uma mesa de cabeceira sem fundo não é um reparo do analisador de US $ 100 mil. É verdade que, mais tarde, o novo PSU REXANT adquirido em vez de uma casa esquecida em algum momento começou a produzir quase 50 em vez de 12v, o que causou um atraso infeliz.
Parte III, Teste de calibração e confiabilidadeApós a montagem e a depuração inicial, surgiu o problema de contagem de posição pela localização real do frasco. Eu tive que criar um teclado e escrever uma interface simples para ele na série. Não havia portas, mas, para os casos mais extremos, os pinos responsáveis pelo i2c foram armazenados. Eles seriam pendurados no extensor popular PCF8574 com micro-botões que podem ser puxados para cima, que podem ser usados para mover o XY, selecionar um multiplicador de etapas para acelerar o processo e alterar XY para ZP. Após cada clique na série, é exibida uma nova posição. Graças a essa técnica simples, foi possível obter com rapidez e precisão todas as coordenadas e incrementos atuais. Fora do procedimento de calibração, o seletor de modo alterna e o botão para acionar o ciclograma são conectados às entradas do expansor. No vídeo, aproximadamente no meio, os botões e os interruptores são visíveis.
Seringas para alimentar uma amostra não são baratas - US $ 100 cada. Um erro no posicionamento custa uma agulha dobrada e uma seringa irrevogavelmente parafusada. Portanto, uma seringa quebrada foi inserida com uma agulha de costura colada e o aparelho foi debulhado por quase meio dia em quatro pontos em uma folha de papel para identificar supostas falhas de posicionamento. Mas eles não estavam lá, fiquei até surpresa. No entanto, como há tempo suficiente entre a punhalada da amostra e o recrutamento de uma nova, usei-a para procurar zeros, apenas por precaução. No vídeo, esse momento é visto mais perto do final do vídeo.
Epílogo
Em geral, era mais provável que tivesse sucesso. Duas semanas se passaram do entendimento da desesperança à transferência para a produção. Operado desde o final de maio, produz até 200 medições por dia. O colega encarregado da amostragem e medição não reclama.
Cerejas para o bolo eram novos recursos que não estavam no original. Capacidade de seguir em frente XY ao mesmo tempo. A capacidade de prender duas vezes a amostra, o que aumentou a sensibilidade do analisador em concentrações ultra baixas da substância medida na amostra. Estacionamento automático após a medição.
PostScriptum
A pedido dos interessados, um vídeo.