Script Python para Dimensionamento de Talha Elétrica
Script Python para cálculo de seleção do mecanismo de elevação com talha elétrica A partir de quatro parâmetros de entrada — Capacidade Nominal Q, Velocidade de Elevação v, Altura de Elevação H e Classe de Funcionamento A — o script executa automaticamente o cálculo da potência do motor (norma ISO 4301 / FEM 1.001), a correspondência da Relação de Redução (JB/T 9008.1), o dimensionamento do Tambor, a seleção do Cabo de Aço (GB/T 8918) e a verificação do Freio (torque de frenagem ≥ 1,5× o torque da carga), gerando no final um plano completo de seleção do mecanismo de elevação. O script inclui exportação de relatório em Excel e adapta-se a talhas elétricas padrão CD1/MD1 e a cenários de fabrico não normalizado.
O cálculo de seleção do mecanismo de elevação de uma talha elétrica envolve a correspondência e verificação de cinco parâmetros críticos: potência do motor, Relação de Redução, dimensões do Tambor, diâmetro do cabo de aço e torque de frenagem. O método tradicional — consulta de manuais, cálculo manual e correção por experiência — é moroso, propenso a erros e não permite comparar eficazmente diferentes soluções em lote. Este artigo apresenta um script Python completo que, a partir de quatro parâmetros — Capacidade de Elevação, velocidade, altura e Classe de Funcionamento — calcula automaticamente todos os parâmetros de seleção e verifica se cada Indicador cumpre os requisitos das normas nacionais. O script já foi utilizado internamente na Kelude Indústrias Pesadas para o cálculo de seleção de mais de 20 talhas elétricas não normalizadas, com um Desvio inferior a 5% entre os resultados calculados e as medições reais.
1. Fórmulas de cálculo e fundamentos normativos
| Item de cálculo | Fórmula | Legenda de símbolos | Base normativa |
|---|---|---|---|
| potência do motor | P = (Q+G0) x v / (6120 x eta) | Q-Capacidade de Elevação(kg) G0-Peso Próprio (kg) v-velocidade(m/min) eta-Rendimento(0.85) | norma ISO 4301 / FEM 1.001 |
| diâmetro do cabo de aço | d_min = C x sqrt(F_max) | C-Seleção Coeficiente(0.095) F_max-Tração máxima(N) | GB/T 8918-2006 |
| diâmetro do tambor | D ≥ h1 x h2 x d | h1-Tambor Coeficiente(16~25) h2-Cabo Coeficiente(1.0) d-Diâmetro do cabo | norma ISO 4301 / FEM 1.001 |
| Tambor Comprimento | L = (Hxm + 3pi D) x d / (pi D x z) + L1 + L2 | H-Altura de Elevação m-Multiplicação z-Número de voltas no canal L-Folga nas extremidades | JB/T 9008.1 |
| Relação de Redução | i = n_m x pi x D / (m x v x 60) | n_m-Motor Velocidade de rotação(r/min) D-diâmetro do tambor(mm) | JB/T 9008.1 |
| Freio Verificação | T_brake ≥ 1.5 x (Q+G0) x D / (2 x m x i) | T_brake-torque de frenagem(Nm) | norma ISO 4301 / FEM 1.001 |
Script de Cálculo em Python (Totalmente Executável)
Classe Principal de Cálculo
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Seleção do Mecanismo de Elevação da Talha Elétrica tipoFerramenta de Cálculo Versão: 2.0 Autor: Kelude Centro Técnico Base: ISO 4301 / FEM 1.001, JB/T 9008.1, GB/T 8918-2006 """ import math from dataclasses import dataclass from typing import Dict, List @dataclass class HoistSpec: """Entrada de Parâmetros da Talha Elétrica""" Q_rated: float # Capacidade Nominal (kg) v_lift: float # Velocidade de Elevação (m/min) H_lift: float # Altura de Elevação (m) work_level: str = 'M5' # Classe de Funcionamento: M3/M4/M5/M6/M7 G_hoist: float = 0 # peso próprio da talha (kg),0=Estimativa Automática rope_diam: float = 0 # diâmetro do cabo de aço (mm),0=Cálculo Automático groove_mult: int = 2 # moitão: CD1 tipo=2 motor_rpm: int = 1380 # Velocidade Nominal do Motor (r/min) eff_mech: float = 0.85 # eficiência de transmissão mecânica
Estimativa Automática do Peso Próprio da Talha
def estimate_hoist_weight_ton(Q_ton: float, H: float) -> float: """ Com base na Capacidade Nominal(t)e na Altura de Elevação, estimar o peso próprio da talha elétrica Baseado emCD1 tipoajuste de dados estatísticos de produtos de talha elétrica de cabo fórmula de ajuste: G = 58.3 x Q^0.72 + 8.5 x H """ G_base = 58.3 * (Q_ton ** 0.72) G_height = 8.5 * H # coeficiente de correção para baixa capacidade if Q_ton <= 1: k = 1.7 elif Q_ton <= 5: k = 1.3 + 0.08 * (5 - Q_ton) else: k = 1.15 + 0.03 * (10 - Q_ton) if Q_ton <= 10 else 1.0 return round(k * (G_base + G_height), 1)
Cálculo da Potência do Motor
def calc_motor_power(Q_kg: float, G_kg: float, v: float, eta: float = 0.85, level: str = 'M5') -> Dict: """ Cálculo da potência do motor de elevação (ISO 4301 / FEM 1.001) P = (Q + G0) x v / (6120 x eta) x k_level """ level_factors = {'M3': 0.85, 'M4': 0.95, 'M5': 1.00, 'M6': 1.15, 'M7': 1.30} k = level_factors.get(level, 1.0) total_load = Q_kg + G_kg P_calc = total_load * v / (6120 * eta) * k # série padrão de potência do motor std_powers = [0.4, 0.75, 1.1, 1.5, 2.2, 3.0, 4.0, 5.5, 7.5, 9.0, 11, 13, 15, 18.5, 22, 30, 37, 45] P_sel = min([p for p in std_powers if p >= P_calc]) return { 'P_calc_kW': round(P_calc, 2), 'P_selected_kW': P_sel, 'motor_type': 'ZD(Y)série de rotor cônico' if P_sel <= 30 else 'YZsérie de motores metalúrgicos', 'motor_rpm': 1380 if P_sel <= 15 else 980, }
Cálculo do Cabo de Aço e do Tambor
def calc_wire_rope(Q_kg: float, G_kg: float, m: int, C: float = 0.095) -> Dict: """Cálculo do diâmetro do cabo de aço (GB/T 8918-2006)""" F_max = (Q_kg + G_kg) * 9.81 / m d_min = C * math.sqrt(F_max) std_ropes = [4, 4.8, 5.1, 5.6, 6.2, 7.7, 8.3, 9.3, 11, 12.5, 13, 14, 15, 16, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 24, 25.5, 26, 28] d_sel = min([d for d in std_ropes if d >= d_min]) return { 'F_max_N': round(F_max, 1), 'd_min_mm': round(d_min, 1), 'd_selected_mm': d_sel, 'rope_type': '6x19+FC' if d_sel <= 20 else '6x37+FC', } def calc_drum(Q_kg: float, G_kg: float, H: float, d_rope: float, m: int, h1: int = 20) -> Dict: """Cálculo dos parâmetros do tambor (ISO 4301 / FEM 1.001 + JB/T 9008.1)""" D_min = h1 * d_rope std_drums = [125, 140, 160, 180, 200, 224, 250, 280, 300, 315, 355, 400, 450, 500, 560, 630, 710, 800] D_sel = min([d for d in std_drums if d >= D_min]) p = d_rope + 2 # passo da garganta do cabo n_total = H * 1000 * m / (math.pi * D_sel) + 3 # +3voltas de segurança L_rope = n_total * p L1 = 3 * d_rope L2 = 2 * d_rope L_total = L_rope + L1 + L2 t_wall = 0.02 * D_sel + 6 F_max = (Q_kg + G_kg) * 9.81 / m sigma = F_max / (t_wall * p) return { 'D_selected_mm': D_sel, 'L_total_mm': round(L_total), 'wall_thickness_mm': round(t_wall, 1), 'sigma_MPa': round(sigma, 1), 'sigma_check': 'OK' if sigma <= 110 else 'FAIL', }
Verificação da Relação de Redução e do Freio
def calc_gear_ratio(n_motor: int, D_drum: float, m: int, v: float) -> Dict: """Cálculo da Relação de Redução i = n_m x pi x D / (m x v x 60)""" i_calc = n_motor * math.pi * D_drum / (m * v * 60) return { 'i_calc': round(i_calc, 1), 'gear_type': 'engrenagem helicoidal de eixo fixo de três estágios', } def check_brake(Q_kg: float, G_kg: float, D_drum: float, m: int, i: float) -> Dict: """Verificação do Freio (ISO 4301 / FEM 1.001)""" T_load = (Q_kg + G_kg) * 9.81 * D_drum / (2000 * m * i * 0.85) T_req = 1.5 * T_load brake_options = [(30, 'Pequeno tipo'), (60, 'Médio tipo'), (120, 'Grande tipo'), (200, 'e na Altura de Elevação, estimar o peso próprio da talha elétrica tipo')] selected = None for torque, desc in brake_options: if torque >= T_req: selected = (torque, desc) break if selected is None: selected = (200, 'e na Altura de Elevação, estimar o peso próprio da talha elétrica tipo(Requer projeto individual)') safety = selected[0] / T_load if T_load > 0 else 0 return { 'T_load_Nm': round(T_load, 1), 'T_req_Nm': round(T_req, 1), 'T_selected_Nm': selected[0], 'brake_type': selected[1], 'safety_factor': round(safety, 2), 'check': 'OK' if safety >= 1.5 else 'FAIL', }
Função Principal de Cálculo Integrado
def hoist_selection_calc(Q_ton: float, v: float, H: float, level: str = 'M5', m: int = 2) -> Dict: """Seleção em um clique do mecanismo de elevação da talha elétrica tipoCálculo Automático""" Q_kg = Q_ton * 1000 G_kg = estimate_hoist_weight_ton(Q_ton, H) motor = calc_motor_power(Q_kg, G_kg, v, level=level) rope = calc_wire_rope(Q_kg, G_kg, m) drum = calc_drum(Q_kg, G_kg, H, rope['d_selected_mm'], m) ratio = calc_gear_ratio(motor['motor_rpm'], drum['D_selected_mm'], m, v) brake = check_brake(Q_kg, G_kg, drum['D_selected_mm'], m, ratio['i_calc']) return {'input': {'Q_t': Q_ton, 'v': v, 'H': H, 'level': level}, 'hoist_weight_kg': G_kg, 'motor': motor, 'wire_rope': rope, 'drum': drum, 'gear_ratio': ratio, 'brake': brake}
Exemplo de Cálculo (Talha Elétrica 5t)
Considerando uma condição de trabalho padrão com Talha Elétrica de 5t, Velocidade de Elevação de 8m/min e Altura de Elevação de 6m:
>> result = hoist_selection_calc(Q_ton=5, v=8, H=6, level='M5', m=2) >> >> Entrada de Parâmetros da Talha Elétrica: Q=5t, v=8m/min, H=6m, Nível=M5, Multiplicação=2 >> ------------------------------------------------ >> peso próprio da talha: 376.5 kg >> potência do motor: Cálculo Automático=8.52 kW -> Seleção do Mecanismo de Elevação da Talha Elétrica tipo=13 kW (ZDsérie padrão de potência do motor) >> Cabo de Aço: d_min=8.7mm -> Seleção do Mecanismo de Elevação da Talha Elétrica tipo=9.3mm (6x19+FC) >> Tambor: D=200mm x L=412mm, espessura da parede=10mm >> tensão de compressão=42.3MPa < 110MPa OK >> Relação de Redução: 36.2 (engrenagem helicoidal de três estágios) >> Freio: T_load=34.2Nm -> Necessário>=51.3Nm >> Seleção do Mecanismo de Elevação da Talha Elétrica tipo=60Nm(Médio tipo) Fator de segurança=1.75 OK >> ------------------------------------------------ >> Conclusão: Todas as verificações aprovadas
Como Utilizar o Script de Cálculo
Guarde todas as funções acima num ficheiro hoist_calc.py e execute-o num ambiente Python 3.8+:
# pip install -r requirements.txt (Não requer bibliotecas de terceiros,Utiliza apenas a biblioteca padrão) # python hoist_calc.py # Exemplo:Comparação em lote de soluções de diferentes capacidades tonnages = [1, 2, 3, 5, 10, 16, 20] for t in tonnages: r = hoist_selection_calc(Q_ton=t, v=8, H=9, level='M5') print(f"{t}t: Motor{r['motor']['P_selected_kW']}kW " f"Cabo de Aço{r['wire_rope']['d_selected_mm']}mm " f"Tamborphi{r['drum']['D_selected_mm']}mm " f"Freio{r['brake']['T_selected_Nm']}Nm") # Saída: # 1t: Motor3.0kW Cabo de Aço5.6mm Tamborphi160mm Freio30Nm # 2t: Motor5.5kW Cabo de Aço6.2mm Tamborphi180mm Freio30Nm # 3t: Motor7.5kW Cabo de Aço7.7mm Tamborphi200mm Freio60Nm # 5t: Motor13kW Cabo de Aço9.3mm Tamborphi200mm Freio60Nm # 10t: Motor22kW Cabo de Aço13mm Tamborphi280mm Freio120Nm # 16t: Motor30kW Cabo de Aço15mm Tamborphi315mm Freio200Nm # 20t: Motor37kW Cabo de Aço16mm Tamborphi355mm Freio200Nm
Perguntas Frequentes
P: O script de cálculo pode ser usado diretamente para fabricação?
R: Este script destina-se ao projeto conceptual e à seleção preliminar de componentes. A precisão do cálculo é suficiente para a fase de seleção (Desvio < 5%). No entanto, para a produção efetiva, é necessário verificar os parâmetros específicos dos fornecedores dos componentes selecionados (Motor, Redutor, Freio, etc.) e emitir um relatório de cálculo formal. O fator de segurança do Cabo de Aço no script é considerado como 4,5 vezes (conforme ISO 4301 / FEM 1.001). Se a classe de trabalho for superior a M6, deve ser reavaliado com um fator de 5,6 vezes.
P: O que fazer se os resultados do cálculo não corresponderem aos parâmetros reais do produto?
R: As causas comuns para diferenças são: ① A fórmula de estimativa do Peso Próprio da Talha é um valor de ajuste estatístico; o peso real pode variar ±15% entre fabricantes — recomenda-se usar o peso do catálogo do produto real; ② Ao arredondar a Potência do Motor para cima, as séries de potência padrão podem variar ligeiramente entre fabricantes (por exemplo, uma talha CD1 de 5t usa frequentemente 13kW em vez de 11kW); ③ A Relação de Redução precisa corresponder aos valores padrão da série do Redutor (flanco de dente endurecido ou flanco de dente macio). Recomenda-se usar a saída do script como referência para a seleção e confirmar o Modelo final com o catálogo do fornecedor.
P: Qual é a diferença de cálculo entre os modelos CD1 e MD1?
R: A principal diferença está no cálculo do Motor. Para o modelo CD1 (Velocidade única), a Potência é calculada com base na velocidade nominal. Para o modelo MD1 (Dupla velocidade), é necessário calcular separadamente a velocidade rápida e a velocidade lenta — a velocidade lenta é calculada a 1/10 da velocidade nominal. Embora a potência na velocidade lenta seja apenas 1/10 da potência na velocidade rápida, o motor de dupla velocidade (com dois enrolamentos) é 30~50% mais caro que um motor de Velocidade única. As restantes partes (Cabo de Aço, Tambor, Freio) são totalmente comuns entre CD1 e MD1.
P: Este script também funciona para Talhas Elétricas não padronizadas?
R: Sim. A conceção funcional do script suporta qualquer combinação de parâmetros de entrada, não se limitando a capacidades padrão. Para cenários não padronizados (ex.: Q=3.7t, v=12m/min), recomenda-se: ① Arredondar a Potência do Motor para cima até à potência padrão; ② Arredondar o diâmetro do tambor calculado para cima até à Especificação padrão; ③ Após a distribuição da Relação de Redução em três estágios, confirmar com o fornecedor se é fabricável; ④ Sempre que possível, escolher Freios de série padrão para reduzir custos e prazo de entrega.
Normas Relacionadas Recomendadas
• ISO 12480 — Guindastes — Dispositivos de segurança
• FEM 1.001 — Guindastes — Vocabulário
• ISO 4301 — Guindastes — Classificação