Engrenagem de Dente Reto (calculadora)


Tanto o canvas quanto os desenhos foram colocados na mesma escala, 4px=1mm. Como a largura do canvas é 250mm (1000px), essa é a maior medida a ser usada. Os valores a serem entrados na calculadora (tabela) devem ser em milímetros.

Atualização em 22/03/2019 (apenas um arco com os dois chanfros)

Será utilizado apenas um arco para os dois chanfros, isso equivale a multiplicar α por 2.
Ou seja, será criado a evolvente 1 com o seu chanfro mais o chanfro da evolvente 2 (arco duplo). Ao inverter a evolvente 1 cria-se a evolvente 2 como já foi visto.
Chanfro1 (sentido anti-horário)
Ângulo inicial: π/2
Ângulo final: π/2 + 2*α
α = Math.atan((rb-x)/r
ctx.arc(rb-x, -r,r,Math.PI/2,(Math.PI/2)+(2*Math.atan((rb-x)/r)));
O β DA FIGURA BAIXO NÃO É O MESMO DA FÓRMULA DA EVOLVENTE.


Etapa9: criação de uma calculadora em JavaScript para calcular as dimensões da engrenagem e plotá-la.
Na etapa8 foi criado a engrenagem por completo, nesta etapa foi criado duas calculadoras com as fórmulas da engrenagem de dente reto. A primeira calculadora faz apenas os cálculos sem alterá-los pois não se preocupa com os chanfros.
A segunda tabela faz o dimensionamento da engrenagem levando em consideração o seu chanfro.
Além dos calculos faz também a plotagem de uma ou mais engrenagens, portanto, poder fazer a plotagem do engrenamento.

Obs: ao trabalhar com JavaScript e HTML a execução do código é feita de cima para baixo, essa e a característica da linguagem de marcação. Ou seja, o código não consegue usar uma variável antes da sua atribuição.
Calculadora:
Para construir um engrenagem o seu dimensionamento é feito pelo diâmetro primitivo, pelo módulo e ângulo de pressão. Ao escolher o módulo e o diâmetro primitivo devemos saber que o número de dentes deve ser sempre inteiro (dp/m).
As dimensões são em milímetros.
Optei por entrar com o diâmetro primitivo e o módulo, já que o diâmetro de cabeça é igual duas vezes o módulo mais o diâmetro primitivo, assim, ao entrar com os dados na calculadora, já sabemos suas principais dimensões que são o módulo, o diâmetro primitivo e o número de dentes.
O número de dentes é o resultado de z = dp/m que deve ser sempre um número inteiro.

Entre com um valor absoluto, maior que zero exemplo: 10
Módulo
Módulo: m = dp/z
Ângulo de Pressão
φ
Diâmetro primitivo dp = m.z

Nº de Dentes
z = dp/m (inteiro)
Diâmetro de base

db = dp.cosφ
Diâmetro interno

di = dp - 2.hf
Diâmetro de cabeça

da = dp+2.ha
Passo
p= 2.π/z
Altura do pé do dente
hf = 1,25.m
Altura comum do dente
hc = 2.m
Altura total do dente

ht = 2,25.m
Vão entre os dentes no primitivo: 
e = p/2
Folga da cabeça

j = 0,2.m


β = atg(r/rb)
Raio do chanfro (certo)

r = ((rb2)-(ri2))/(2*ri)
 
Arquivo HTML calculaEng.html possui uma arquivo JavaScript externo, cal.js .
<!DOCTYPE html>
<html lang="pt_BR">
<head>
<meta charset="utf-8">
<title>Canvas com HTML5</title>
<style>
table{
border-collapse:collapse;
border:1px solid #000000;
white-space: nowrap;
font-size: 25px;
line-height: 25px;
text-align: left;
white-space: nowrap;
}
body{
font-family: Arial;
font-size: 24px;
line-height: 28px;
text-align:justify;
text-indent:0px
magin-left:4px;
magin-right:4px;
}
</style>
<script src="cal.js"></script>
</head>
<body>
<table style="text-align: left; width: 835px; height: 165px; background-color: rgb(204, 255, 255);" border="1" cellpadding="2" cellspacing="2">

  <tbody>
    <tr>
      <td >Módulo<br>
      </td>
      <td ><input id="dm" name="m" size="" 10="" maxlength="10" autocomplete="off" type="text"></td>
      <td >Módulo: m = dp/z<br>
      </td>

    </tr>
    <tr>
      <td >Ângulo de Pressão<br>
      </td>
      <td >
     
      <select id="idselect">

      <option value="0.34906585">20º</option>

      <option value="0.43633231">25º</option>
     
      </select>

      </td>
      <td > a<br>
      </td>
    </tr>
    <tr>

      <td >Diâmetro primitivo </td>
      <td ><input id="ddp" name="dp" size="" 10="" maxlength="10" autocomplete="off" type="text"></td>
      <td >dp = m.z </td>
    </tr>
    <tr>
      <td ><br>
      </td>
      <td colspan="2" rowspan="1" ><input size="" 50="" maxlength="50" name="" value="Enter" onclick="cal.func()" type="button"> </td>

    </tr>
    <tr>
      <td >Nº de Dentes</td>
      <td ><span id="dz"></span><br>
      </td>
      <td >z = dp/m (inteiro)<br>
      </td>
    </tr>

    <tr>
      <td >Diâmetro de base<br>
      </td>
      <td ><span id="ddb"></span><br>
      </td>
      <td >db = dp.cosφ</td>
    </tr>
    <tr>

      <td >Diâmetro interno<br>
      </td>
      <td ><span id="ddi"></span><br>
      </td>
      <td >di =
dp - 2.hf </td>
    </tr>
    <tr>
      <td >Diâmetro de cabeça<br>

      </td>
      <td ><span id="ddc"></span><br>
      </td>
      <td >da =
dp+2.ha </td>
    </tr>
    <tr>
      <td >Passo: </td>
      <td ><span id="dp"></span><br>

      </td>
      <td >p= 2.π/z</td>
    </tr>
    <tr>
      <td >Altura do pé do dente:</td>
      <td ><span id="dhf"></span><br>
      </td>
      <td >hf =
1,25.m</td>

    </tr>
    <tr>
      <td >Altura comum do dente:</td>
      <td ><span id="dhc"></span><br>
      </td>
      <td >hc = 2.m</td>
    </tr>
    <tr>

      <td >Altura total do dente: <br>
      </td>
      <td ><span id="dht"></span><br>
      </td>
      <td >ht =
2,25.m</td>
    </tr>
    <tr>
      <td >Vão entre
os dentes no primitivo:&nbsp;</td>

      <td ><span id="de"></span><br>
      </td>
      <td >e<sub> </sub>= p/2</td>
    </tr>
    <tr>
      <td >Folga da cabeça: <br>
      </td>

      <td ><span id="dj"></span><br>
      </td>
      <td >j = 0,2.m</td>
    </tr>
  </tbody>
</table>
</body>
</html>
Obs: cada id dever ter um nome diferente, inclusive das variáveis.

Arquivo externo javascript, cal.js
var cal = {};
cal.func=(function () {
var m = parseFloat(document.getElementById("dm").value);
var a = parseFloat(document.getElementById("idselect").value);
var dp = parseFloat(document.getElementById("ddp").value);
var db = dp*Math.cos(a);
var z=dp/m;

var p=(2*Math.PI)/z;
var hc = m;
var hf = 1.25*m;
var ht = hf+hc;
var di = dp-2*hf;
var dc = (dp+2*hc);

document.getElementById("dz").innerHTML=z;
document.getElementById("ddb").innerHTML=db.toFixed(4);

document.getElementById("ddi").innerHTML=di.toFixed(4);
document.getElementById("ddc").innerHTML=dc;
document.getElementById("dhf").innerHTML=hf;
document.getElementById("dhc").innerHTML=hc;
document.getElementById("dp").innerHTML=p.toFixed(4)+" radianos";
document.getElementById("dht").innerHTML=ht.toFixed(4);
document.getElementById("de").innerHTML=(p/2).toFixed(4);
document.getElementById("dj").innerHTML=(0.2*m).toFixed(4);
});

Obs: o diâmetro interno não é o otimizado.

Etapa10
Nesta etapa vamos implementar no arquivo calculaEng.html o código da engrenagem da etapa8 com algumas modificações. Foram criados os campos para entrada do centro da engrenagem, entrada da rotação da engrenagem para alinhamento e justaposição do dente da primeira com o vão da segunda.

Arquivo HTML calculaEng2.html.
<!DOCTYPE html>
<html lang="pt_BR">
<head>
<meta charset="utf-8">
<title>Canvas com HTML5</title>
<style>
table{
border-collapse:collapse;
border:1px solid #000000;
white-space: nowrap;
font-size: 25px;
line-height: 25px;
text-align: left;
white-space: nowrap;
}
body{
font-family: Arial;
font-size: 24px;
line-height: 28px;
text-align:justify;
text-indent:0px
magin-left:4px;
magin-right:4px;
}
</style>
<script src="file12.js"></script>
</head>
<body>
<table style="text-align: left; width: 835px; height: 165px; background-color: rgb(204, 255, 255);" border="1" cellpadding="2" cellspacing="2">

  <tbody>
    <tr>
      <td >Módulo<br>
      </td>
      <td ><input id="dm2" name="m" size="" 10="" maxlength="10" autocomplete="off" type="text"></td>
      <td >Módulo: m = dp/z<br>
      </td>

    </tr>
    <tr>
      <td >Ângulo de Pressão<br>
      </td>
      <td >
      <select id="idselect2">
      <option value="0.34906585">20º</option>
      <option value="0.43633231">25º</option>

      </select>
      </td>
      <td > a<br>
      </td>
    </tr>
    <tr>
      <td >Diâmetro primitivo </td>

      <td ><input id="ddp2" name="dp" size="" 10="" maxlength="10" autocomplete="off" type="text"></td>
      <td >dp = m.z </td>
    </tr>
    <tr>
      <td >Centro(x,y) entre com (125,125)
para<br>
      </td>
      <td ><input id="dx" name="dx" size="" 10="" maxlength="10" autocomplete="off" type="text">:x</td>

      <td ><br>
      </td>
    </tr>
    <tr>
      <td >o centro do canvas.<br>
      </td>
      <td ><input id="dy" name="dy" size="" 10="" maxlength="10" autocomplete="off" type="text">:y</td>
      <td ><br>

      </td>
    </tr>
    <tr>
      <td >Girar para egrenar a segunda
engren.<br>
      </td>
      <td ><input id="dgg" name="dgg" size="" 10="" maxlength="10" autocomplete="off" value="0" type="text"></td>
      <td ><br>
      </td>

    </tr>
    <tr>
      <td ><br>

      </td>
      <td colspan="2" rowspan="1" ><input id="enter" size="" 50="" maxlength="50" name="" value="Enter" onclick="app12.func12()" type="button"> </td>
    </tr>
    <tr>
      <td >Nº de Dentes</td>

      <td ><span id="dz2"></span><br>
      </td>
      <td >z = dp/m (inteiro)<br>
      </td>
    </tr>
    <tr>
      <td >Diâmetro de base<br>
      </td>

      <td ><span id="ddb2"></span><br>
      </td>
      <td >db = dp.cosφ</td>
    </tr>
    <tr>
      <td >Diâmetro interno<br>
      </td>
      <td ><span id="ddi2"></span><br>

      </td>
      <td >di =
dp - 2.hf </td>
    </tr>
    <tr>
      <td >Diâmetro interno otimizado<br>
      </td>
      <td ><span id="ddio"></span><br>
      </td>

      <td >dio=2ri<br>
      </td>
    </tr>
    <tr>
      <td >Diâmetro de cabeça<br>
      </td>
      <td ><span id="ddc2"></span><br>
      </td>

      <td >da =
dp+2.ha </td>
    </tr>
    <tr>
      <td >Passo: </td>
      <td ><span id="dp2"></span><br>
      </td>
      <td >p= 2.π/z</td>

    </tr>
    <tr>
      <td >Altura do pé do dente:</td>
      <td ><span id="dhf2"></span><br>
      </td>
      <td >hf =
1,25.m</td>
    </tr>
    <tr>

      <td >Altura comum do dente:</td>
      <td ><span id="dhc2"></span><br>
      </td>
      <td >hc = 2.m</td>
    </tr>
    <tr>
      <td >Altura total do dente: <br>

      </td>
      <td ><span id="dht2"></span><br>
      </td>
      <td >ht =
2,25.m</td>
    </tr>
    <tr>
      <td >Vão entre
os dentes no primitivo:&nbsp;</td>
      <td ><span id="de2"></span><br>

      </td>
      <td >e<sub> </sub>= p/2</td>
    </tr>
    <tr>
      <td >Folga da cabeça: <br>
      </td>
      <td ><span id="dj2"></span><br>

      </td>
      <td >j = 0,2.m</td>
    </tr>
    <tr>
      <td ><br>
      </td>
      <td ><span id="dbb2"></span><br>
      </td>

      <td >β = (p - giro)/2<br>
      </td>
    </tr>
    <tr>
      <td >Raio do chanfro otimizado<br>
      </td>
      <td ><span id="dr2"></span><br>
      </td>

      <td >r = rb.tg(β)<br>
      </td>
    </tr>
    <tr>
      <td >Girar para engrenar (2ª engrenagem)<br>
      </td>
      <td><span id="dg"></span><br>
      </td>

      <td><br>
      </td>
    </tr>
  </tbody>
</table>
Eixo-y (250mm)<input id="enter" size="" 50="" maxlength="50" name="" value="Girar" onclick="app12.girar()" type="button">
<canvas style="border-style: solid; border-width: 1px;" id="c12" width="1000" height="1000"></canvas>
<div style="text-align: right; display: inline; float: left;">0 <br></div>
<div style="text-align: right; display: inline; float: right;">eixo-x (250mm )<br></div>
</body>
</html>

Arquivo externo javascript, file.js
Devemos substituir todos os valores numéricos pelas suas respectivas variáveis.
Alinhamento horizontal do primeiro dente: o primeiro dente construido deverá rotacionar em -giro/2 para ficar alinhado na horizontal, assim poderá calcular a rotação da segunda engrenagem a ser construida para a sobreposição do primeiro dente da primeira engrenagem com o primeiro vão da segunda engrenagem.
var app11 = {};
app11.func11=(function () {

var m = parseFloat(document.getElementById("dm2").value);
var a = parseFloat(document.getElementById("idselect2").value);
var dp = parseFloat(document.getElementById("ddp2").value);
var xx = parseFloat(document.getElementById("dx").value); //coordenada-x do centro da engrenagem
var yy = parseFloat(document.getElementById("dy").value);//coordenada-y do centro da engrenagem
var db = dp*Math.cos(a);
var z=dp/m;


var p=(2*Math.PI)/z;
var hc = m;
var hf = 1.25*m;
var ht = hf+hc;
var di = dp-2*hf;
var dc = (dp+2*hc);

document.getElementById("dz2").innerHTML=z;
document.getElementById("ddb2").innerHTML=db.toFixed(4);

document.getElementById("ddi2").innerHTML=di.toFixed(4);
document.getElementById("ddc2").innerHTML=dc;
document.getElementById("dhf2").innerHTML=hf;
document.getElementById("dhc2").innerHTML=hc;
document.getElementById("dp2").innerHTML=p.toFixed(4)+" radianos";
document.getElementById("dht2").innerHTML=ht.toFixed(4);
document.getElementById("de2").innerHTML=(p/2).toFixed(4);
document.getElementById("dj2").innerHTML=(0.2*m).toFixed(4);
var g = parseFloat(document.getElementById("dg").value);


var rb = (db*4)/2;
var rc = (dc*4)/2;
var rp = (dp*4)/2;
var ri = (di*4)/2;

var ψ2 = Math.acos(rb/rp);
var θ2 = Math.tan(ψ2) - ψ2;
var giro = (p/2) + (2*θ2);

var ψ = Math.acos(rb/rc);
var θ = Math.tan(ψ) - ψ;

var β = (p/2 - 2*θ2)/2;
var re=rb*Math.tan(β);
var rie = re*(1- Math.sin(β))/Math.sin(β);
if(rie>=ri){
r=(ri*Math.sin(β))/(1-Math.sin(β));
x=Math.cos(β)*(rie-ri-r+re);

}else{
ri=rie;
r=re;
x=0;
}

document.getElementById("dbbb").innerHTML=β.toFixed(4)+" radianos";
document.getElementById("ddie").innerHTML=(rie/2).toFixed(4);
document.getElementById("dr2").innerHTML=(r/2).toFixed(4);
document.getElementById("distx").innerHTML=(x/4).toFixed(4);


var canvas = document.getElementById("c11");
var ctx = canvas.getContext("2d");

var step = 2*Math.PI/1100;
    ctx.save();
    ctx.translate(0, 1000);
    ctx.scale(1, -1);
    ctx.translate(xx*4,yy*4); //centro da engrenagem
    ctx.rotate(-giro/2); // alinhamento horizontal do primeiro dente, simetria no eixo-x
    ctx.rotate(g); //rotação da segunda engrenagem para o engrenamento


for(i=0;i<=z-1;i=i+1){

ctx.beginPath(); // evolvente 1
 for(var beta=0;  beta <= Math.tan(Math.acos(rb/rc)) ;  beta+=step){
     var x4=rb*Math.cos(beta)+rb*beta*Math.sin(beta);
     var y4=rb*Math.sin(beta)-rb*beta*Math.cos(beta);
     ctx.lineTo(x4,y4);
}
ctx.stroke();

ctx.beginPath(); // seguimento de reta
ctx.moveTo(rb,0);
ctx.lineTo(rb-x,0);    
ctx.stroke();

ctx.beginPath();
ctx.arc(rb-x,-r,r,Math.PI/2,(Math.PI/2)+(2*Math.atan((rb-x)/r))); //chanfro duplo (evolvente 1 e evolvente 2)
ctx.stroke();

ctx.beginPath(); //evolvente 2 igual a evolvente 1 com coordenada-y invertida
 for(var beta=0;  beta <= Math.tan(Math.acos(rb/rc)) ;  beta+=step){
     var x4=rb*Math.cos(beta)+rb*beta*Math.sin(beta);
     var y4=-rb*Math.sin(beta)+rb*beta*Math.cos(beta);
     var x5=(x4*Math.cos(giro)) - (y4*Math.sin(giro)); //giro da evolvente 2
     var y5=(x4*Math.sin(giro))+(y4*Math.cos(giro));
     ctx.lineTo(x5,y5);
}
ctx.stroke();

ctx.beginPath(); // seguimento de reta da evolvente 2
var x7=(rb*Math.cos(giro)) - (0*Math.sin(giro));
var y7=(rb*Math.sin(giro))+(0*Math.cos(giro));
ctx.moveTo(x7, y7);
var x8=(((rb-x)*Math.cos(giro)) - (0*Math.sin(giro))); // giro do seguimento de reta da evolvente 2
var y8=(((rb-x)*Math.sin(giro))+(0*Math.cos(giro)));
ctx.lineTo(x8, y8);    
ctx.stroke();


ctx.beginPath(); // arco da cabeça do dente
ctx.arc(0,0,rc, θ ,giro-θ);
ctx.stroke();

ctx.rotate(p);
}


    ctx.beginPath(); //marca de centro
    for(var beta=0;  beta < 2*Math.PI;  beta+=step)
     { var x2 = 2*Math.cos(beta);
       var y2 = 2*Math.sin(beta);   
       ctx.lineTo(x2,y2);
     }
    ctx.closePath();    
    ctx.stroke();

    ctx.beginPath(); // circunferencia interna
    for(var beta=0;  beta < 2*Math.PI;  beta+=step)
     { var x2 = ri*Math.cos(beta);
       var y2 = ri*Math.sin(beta);   
       ctx.lineTo(x2,y2);
     }
    ctx.closePath();    
    ctx.stroke();


    ctx.beginPath(); // circunferencia de base
    for(var beta=0;  beta < 2*Math.PI;  beta+=step)
     { var x2 = rb*Math.cos(beta);
       var y2 = rb*Math.sin(beta);   
       ctx.lineTo(x2,y2);
     }
    ctx.closePath();    
    ctx.stroke();


    ctx.beginPath(); // circunferencia do primitivo
    for(var beta=0;  beta < 2*Math.PI;  beta+=step)
     { var x2 = rp*Math.cos(beta);
       var y2 = rp*Math.sin(beta);   
       ctx.lineTo(x2,y2);
     }
    ctx.closePath();    
    ctx.stroke();


ctx.restore();  
});


app11.vai=(function () { // "função que calcula a rotação da segunda engrenagem para o engrenamento"
var m = parseFloat(document.getElementById("dm2").value);
var dp = parseFloat(document.getElementById("ddp2").value);
var z=dp/m;
var p=(2*Math.PI)/z;
document.getElementById("drg").innerHTML=(p/2+Math.PI).toFixed(4);

});

ctx.rotate(-giro/2);
-giro/2 para que o primeiro dete desenhado fique simetricamente posicionado no eixo-x.

ctx.rotate(g);

g: recebe o valor do input de id=dg, para a primeira engrenagem g=0, para a segunda engrenagem deve ser digitado neste input o valor da rotação calculado pela função app11.vai().
var g = parseFloat(document.getElementById("dg").value);
<input id="dg" name="dg" size="" 10="" maxlength="10" autocomplete="off" value="0" type="text">

A função abaixo faz o calculo da rotação do passo/2 + πrad.
app11.vai=(function () {
var m = parseFloat(document.getElementById("dm2").value);
var dp = parseFloat(document.getElementById("ddp2").value);
var z=dp/m;
var p=(2*Math.PI)/z;
document.getElementById("drg").innerHTML=(p/2+Math.PI).toFixed(4);
});

p/2+Math.PI: a segunda engrenagem fará uma rotação de  πrad mais uma rotação equivalente ao seu passo/2, com a primeira engrenagem está com o primeiro dente posicionado simetricamente no eixo-x pelo lado direito e a segunda engrenagem fica com o seu vão posicionado simetricamente ao eixo-x pelo seu lado esquerdo. Com isso é só posicionar as duas engrenagens no eixo-x .
com os dois centro de forma que o círculo primitivos de ambas se tangenciam na horizontal conforme as duas ultimas figuras abaixo.

Entre com um valor absoluto, maior que zero exemplo: 10
Módulo
Módulo: m = dp/z
Ângulo de Pressão
φ
Diâmetro primitivo dp = m.z
Diâmetro de cabeça máximo

dcmáx=rb/cos(π/2.z)
Centro(x,y) entre com (125,125) para
:x
o centro do canvas.
:y
Calcular Rotação para Engrenar
Entre com a Rotação para Engrenar
2ª Engrenagem

Nº de Dentes
z = dp/m (inteiro)
Diâmetro de base

db = dp.cosφ
Diâmetro interno correto

di = dp - 2.hf
Diâmetro interno errado

dio=2ri
Diâmetro de cabeça

da = dp+2.ha
Passo
p= 2.π/z
Altura do pé do dente:
hf = 1,25.m
Altura comum do dente:
hc = 2.m
Altura total do dente:

ht = 2,25.m
Vão entre os dentes no primitivo: 
e = p/2
Folga da cabeça:

j = 0,2.m


β = (p - giro)/2
Raio do chanfro certo


Distância x



Obs
A figura abaixo mostra uma possibilidade:

Conclusão:
Há várias possibilidades de trabalhar com o chanfro e o diâmetro interno afim de que o engrenamento seja correto. Nesta fase analisa-se a folga entre a cabeça do dente e o vão.
Minha sugestão é criar a engrenagem de forma teórica sem as folgas e depois fazer as modificações.

Desenho
:
O canvas possui uma escala de 4px = 1 milímetro (widht = 250mm e height = 250mm), considerando o monitor com 96ppi.
A maior engrenagem pode ter no máximo um diâmetro de cabeça de 250mm.

Eixo-y (250mm)

0
eixo-x (250mm )

Engrenamento

O desenho abaixo é uma condição de engrenamento. Os dois círculos primitivos são tangentes.
A reta tangente aos círculos bases passa pelos pontos de tangências entre os círculos primitivos.
O ponto de contato pertence as duas envolventes e mantem a mesma trajetória (linha de pressão) com a rotação de ambas engrenagens.

T2PC1: Raio de curvatura do primeiro dente de contato da engrenagem movida (pontos T2 a PC1), começa com tamanho máximo no início do engrenamento e vai diminuinto até o final do engrenamento.

Pergunta: Porque o ponto de contato entre dois dentes pertence a reta tangente aos círculos de base?
Resposta
: Porque o raio de curvatura do dente no ponto de contato da engrenagem também pertence a reta tangente aos círculos de base (linha de pressão).
Explicação
: Quando o dente da engrenagem motora empurra o dente da engrenagem movida ocorre o contrário do que acontece com a criação da evolvente, o raio de curvatura do dente da engrenagem movida  comparado como uma linha iria se enrrolar na circunferência de base (engrenagem movida), como o dente é rígido, a engrenagem gira no sentido da força aplicada e o raio de curvatura diminui, ou seja, o ponto de contato (PC1) se desloca na direção de T2.
A reta tangente aos dois circulos de base não muda com o giro das duas engrenagens porque tal giro não afeta os pontos de tangência.
Com o início do engrenamento o raio de curvatura do dente da engrenagem movida (T2PC1) é maior, no final do engrenamento é menor. O deslocamento do ponto de contato é feito na linha de pressão.

Teste:

- Quanto maior o ângulo de pressão menor será o cosseno deste ângulo e consequentemente menor será o diâmetro de base.
- Quanto menor o número de dentes maior é a altura do dente, como o diâmetro primitivo é o mesmo, a cabeça do dente é a mesma e o aumento será apenas do pé do dente (teste você mesmo, repare que as envolventes de um mesmo dente se cruzarão).
- O engrenamento tem como referência o círculo primitivo.

Serão contruido duas engrenagens na mesma reta horizontal, ou seja, os dois centro tem a mesma coordenadas no eixo-y.

Ao construir a primeira engrenagem posicione o seu centro com uma coordenada no eixo-x de forma que caiba no canvas com a segunda engrenagem também. A coordenada do eixo-y pode ser o próprio centro (125) do canvas.
A segunda engrenagem deve ter sua coordenada do eixo-x igual a soma da coordenada do eixo-x da primeira engrenagem mais o raio da primeira, mais o raio da segunda. A coordenada do eixo-y da segunda engrenagem deve ser igual da da primeira (125).

Rotação da Segunda Engrenagem para o Engrenamento
A primeira engrenagem tem uma rotação igual a 0 (zero), após fazer a primeira engrenagem, entre com o mesmo módulo e o diâmetro primitivo da segunda engrenagem, calcule a rotação para o engrenamento com o botão Rotação.
Pegue a rotação calculada e digite no campo rotação para engrenar e clique no botão Enter.

Obs: 1 - cos²σ = 1² - cos²σ = (1+cosσ).(1-cosσ)


Desenho do Engrenamento da Figura acima
- Centralização ou Posicionamento:


Os dados abaixo mostram como deve ser a entrada dos dados na tabela para fazer as duas engrenagens engrenadas.
O canvas possui largura e altura iguais a 1000px, porém a escala é 1:4, 1mm = 4px.
Escolha duas engrenagem que caibam no canvas, o maior diâmetro é o de cabeça.

Dados do Engrenamento da Segunda Figura Anterior:
Engrenagem1:
módulo: 10
Diâmetro primitivo: 100 (rp1=50)
Centro (x1,y1): C1(50, 125)
Clique no botão Enter.

Engrenagem2:
módulo:10
Diâmetro primitivo: 150 (rp2=75)
Centro (x2,y2)
x2=50+50+75=175
C2(175,125)
Clique no botão Rotação
Digite esse valor no campo abaixo (Entre com a rotação para engrenar: 3.3510 ).
Clique no botão Enter.

Outro Exemplo
Refere-se a próxima figura.
Engrenagem1:
módulo: 15
Diâmetro primitivo: 60 (rp1=30)
Centro (x1,y1): C1(60, 125)
Clique no botão Enter.

Engrenagem2:
módulo:15
Diâmetro primitivo: 60 (rp2=30)
Centro (x2,y2)
x2=60+30+30=120
C2(120,125)
Clique no botão Rotação
Digite esse valor no campo abaixo (Entre com a rotação para engrenar: 3.9270).
Clique no botão Enter.

Obs: Aparentemente o desenho acima aproxima-se da perfeição. Faltam mais testes, como o desenho do próprio giro da engrenagem.

Limites da Evolvente (discussão)
Para um mesmo diâmetro primitivo o módulo tem de ser escolhido de forma que garanta o engrenamento. O ARCO DE CIRCUNFERÊNCIA NO VÃO DOS DENTES E O ARCO DE CIRCUNFERÊNCIA NO DENTE (AMBOS NO PRIMITIVO) TÊM DE SER IGUAIS.
Ao escolher um diâmetro primitivo não é qualquer módulo que servirá. Existe um módulo máximo quando as duas evolventes se cruzam na cabeça do dente e um módulo mínimo quando o raio interno é igual ao raio base (ri=rb) ou quando duas evolventes se interceptam no vão do dente. Para verificar essas possibilidades há necessidades de calcular a evolvente máxima θmax e a evolvente que se cruzam no pé do dente.

A figura acima é um esboço

Após testes realizados conclui-se que:
- O ponto de contato entre os dentes deve ser melhor estudado, compreendido, testado, etc...
- A calculadora desenha praticamente qualquer tipo de engrenagem de dente reto, porém, não é qualquer tipo de engrenagem que ocorrerá o engrenamento.
- A evolvente ao rolar sobre o seguimento de reta PoP1 criará atrito (a superfície de contato deve ser evolvental).
- O aumento do ângulo de pressão diminui o diâmetro de base criando uma superfície evolvental de contato maior.
- Para engrenagens em que a evolvente rola sobre o seguimento de reta PoP1 a diminuição da cabeça do dente pode corrigir parte deste problema.
- A calculadora consegue desenhar engrenagens com até 3 (três) dentes (mínimo).
- Algumas acoplagens (engrenamento) tiveram dentes que cruzaram-se na superfície de contato (principalmente engrenagens com três dentes).
- Posso alterar o ângulo de pressão, a cabeça e o pé do dente para um mesmo diâmetro primitivo. Isso se chama AJUSTE.
- Ou seja, engrenagens fora do padrão o código (calculadora) deve ser adaptado.