Este artigo deve ser chamado de "gerar combinações de equipamentos de guitarra de torno chinês para escolher o tom com um script JavaScript", mas não parece tão intrigante.
O torno mais barato do Aliexpress MX-180V me surpreende surpreendentemente desde que apareceu em minha oficina em casa por mais de seis meses. Apesar de os chineses terem esquecido de prendê-lo na gaveta, o resultado foi o enrugamento do painel frontal.


Apesar da incapacidade deste dispositivo de cortar fios canhotos, ao contrário dos votos do vendedor, isso pode acontecer. Apesar do fato de que a chave de fenda incluída, ela se espalhou após o primeiro toque.
Apesar de, finalmente, a baixa qualidade de fabricação deste dispositivo, eu o usar, fabricar as peças de que preciso e, em geral, acumular habilidades. Para mim, a beleza dos teares domésticos é que você não precisa vasculhar o lixo em busca de algo semelhante a algo necessário, mas faça você mesmo. Este é o caminho mais direto da ideia para a realização.
Então, gradualmente, chegou a vez de enfiar. Decidi praticar em uma unha com um diâmetro de 6 mm, para não moer nada, esse será o diâmetro do parafuso com um passo de rosca de 1 mm, para o qual eu tinha uma porca. De acordo com a tabela, localizada na carcaça da máquina, encontrei a combinação de marchas necessária para a etapa selecionada.
No eixo, há uma engrenagem com 80 dentes, depois 52, e entre essa engrenagem e o eixo, deve haver uma engrenagem com 50 dentes. Mas entre as 10 marchas do meu conjunto com 50 dentes não estava.
Então eu comecei a ficar chateado de novo, bem, como assim, os irmãos chineses! Finalmente, acabei com o fato de que no meu set também não havia segunda marcha para 80 dentes, 66 e 33 dentes. Com um pouco de reflexão, percebi que, para uma alimentação de 1 mm por rotação, apenas a proporção dos dentes no eixo e no eixo é importante, e as engrenagens intermediárias podem ser, a principal coisa é que elas se encaixam lá. Como resultado, cortei o primeiro fio M6x1 da minha vida usando um cortador, não um dado!

Uma coisa só foi ofuscada pela alegria desse evento, a incompatibilidade da mesa com minhas engrenagens. Isso significava que agora eu não posso simplesmente pegar, olhar para a mesa e cortar o fio necessário quando necessário. Toda vez que você tem que pensar em como colocar as marchas, cada vez que recontar. Em geral, uma tabela é muito mais conveniente. Então, o destino me fez aprofundar nos detalhes do design da guitarra e nas sutilezas do cálculo das relações de transmissão das caixas de velocidades.
O dispositivo da caixa de velocidades não é difícil e esquematicamente quatro maneiras de instalar as engrenagens (independentemente de seus diâmetros) podem ser representadas da seguinte maneira:
Por definição, vamos chamá-los de esquemas de ligação. Eu precisava descobrir quais combinações de engrenagens são permitidas em termos da possibilidade de instalá-las em um trilho de guia, que pode girar em torno do eixo do eixo e no qual são fixados dois eixos das engrenagens intermediárias.
O eixo superior não deve tocar na polia do eixo e, portanto, a primeira engrenagem acionada não deve ter menos de 52 dentes. Além disso, o trilho de guia não deve ser girado muito próximo ao eixo do eixo, para evitar tocar nos ímãs do tacômetro.


Uma tentativa física de força bruta nessa tarefa mostrou que existem muitas combinações aceitáveis. Em um pedaço de papel, já não havia espaço suficiente para os conjuntos ainda não verificados, comecei a ficar confuso. Houve uma grande chance de pular uma combinação, ou vice-versa, para gravar uma já marcada. O desejo de se envolver em uma enumeração cega de opções, sentado em uma posição desconfortável em frente à máquina, desapareceu muito rapidamente. Quantas e que tipo de combinações e feeds são possíveis nesta máquina? Era necessário recorrer à teoria para obter ajuda e colocar o trabalho em enumerar opções no computador para que não fosse em vão.

Será necessário encontrar ou escrever um gerador de posicionamento sem repetições, pois cada equipamento que eu tenho está apenas em uma cópia. Existem várias maneiras de escolher entre 10 opções para as marchas 3, 4 e 5, mas algumas delas, obviamente, devem ser descartadas devido a considerações geométricas. Você precisará de um filtro que permita a passagem de apenas conjuntos de engrenagens adequados. Após a filtragem, provavelmente haverá muitas combinações que darão o mesmo tom, sem diferir nos padrões de engrenagem e nos conjuntos de engrenagens, ou seja, haverá permutações equivalentes. Eles também devem ser descartados.
Sem hesitar, decidi programar em JS, embora também pudesse usar C ++, mas, na minha prática, ainda não encontrei uma tarefa que não pudesse ser resolvida em JS baseado em navegador quando se trata de liberar dados para o disco. Neste método, sou atraído pelo minimalismo e suficiência da infraestrutura, bloco de notas e navegador, tudo o resto é supérfluo. A linguagem fornece algoritmos, o navegador fornece uma interface gráfica, um intérprete e um depurador. Qualquer biblioteca pode ser gravada rapidamente ou encontrada e baixada. Quando você não está envolvido em programação industrial ou comercial, basta uma calculadora universal.
Encontrei e adaptei o gerador de posicionamento rapidamente. Seu objetivo no programa é reorganizar os índices da matriz na qual as instâncias de engrenagem serão armazenadas. Aqui, os canais são gerados na função de pesquisa e os filtros anteriores são amontoados na matriz de resultados pela função de teste. Além disso, o feed é calculado na última função. Por definição, designamos todas as marchas como na figura.
Escrevemos as fórmulas para o cálculo da alimentação, em função da inclinação do eixo de alimentação e do número de dentes da engrenagem de cada um dos esquemas de engate:
Para desenvolver um filtro, você deve se aprofundar nos parâmetros geométricos do violão. Os eixos do eixo, eixo e engrenagem intermediária superior formam um triângulo.
O lado L é medido diretamente e o restante é calculado a partir dos raios das engrenagens. O raio das engrenagens é menor que o raio externo pela quantidade de sobreposição quando engatadas. Como as engrenagens não são feitas perfeitamente, a quantidade de sobreposição deve ser determinada empiricamente. A sobreposição deve ser tal que garanta o engate, mas evite o atrito das engrenagens. No meu caso, acabou por ser 1 mm. A restrição a seguir é imposta no lado S, o eixo da engrenagem intermediária superior não deve tocar na polia do eixo. É medido diretamente quando a guia com o eixo na posição superior é girada o mais próximo possível do eixo, enquanto o eixo quase deve tocar a polia. A distância V não pode ser maior que a distância entre o eixo do eixo e o eixo intermediário superior, empurrada até o sulco. Também é necessário impor uma restrição no ângulo entre L e V. Girando o rack sem engrenagens e eixos o mais próximo possível do eixo, meça ou calcule a distância S entre o eixo do eixo e o ponto superior da guia e calcule o ângulo usando a fórmula

Aqui V é a distância do eixo do eixo ao ponto superior da guia, e não ao ponto superior da ranhura (este pode ser um ponto arbitrário dos trilhos, o principal é que as distâncias V e S são medidas para ele). Usando a mesma fórmula, o ângulo será calculado durante o teste, mas as distâncias S e V dependerão dos raios das engrenagens.
Além disso, a engrenagem B não pode ser maior que A e C não pode ser maior que D. D não deve tocar no eixo e C não deve se apegar a A ao engatar B e D.
Depois que a lista de combinações bem-sucedidas for criada, salve-a da redundância usando a função de eliminação. Isso é feito simplesmente pesquisando soluções únicas de qualquer forma. Você pode usar a singularidade da etapa ou a singularidade de um conjunto de engrenagens e similares.
No meu caso, existem 751 combinações que diferem no tom, no número de marchas e no seu conjunto. Existem apenas 222 entradas únicas.Claro, muitas delas não são comumente usadas ou nem são usadas, mas existem algumas polegadas.
Enquanto trabalhava neste texto, a idéia não me deixou sabendo que a maneira de resolver esse problema é no nível 5, o que é uma pena até falar. Nesse caso, o resultado (tabela de feeds) é muito mais importante do que o modo como é recebido. No entanto, as máquinas, guitarras, caixas de engrenagens e engrenagens de cada uma podem ser diferentes e não seria ruim ter em mente pelo menos uma das abordagens para a construção dessa mesa.
Concluindo, forneço o texto completo do script, equipado com um número suficiente de comentários, considerando o exposto acima.
Texto oculto<!DOCTYPE html> <html> <body> <div> <textarea id="out"></textarea> </div> <div><button onclick="calc()">Calc</button></div> <script> var out = document.getElementById("out"); out.style.width = '600px'; out.style.height = '500px'; </script> </body> </html>