El concepto de unidad de obra en automatización industrial
En los proyectos de sistemas de medida y regulación, la unidad de obra es el elemento básico en que se divide el trabajo para su análisis técnico y económico. Representa una tarea completa, definida y medible, que puede realizarse de forma independiente dentro de un proceso más amplio. Por ejemplo, la instalación de un sensor de temperatura, la calibración de un transmisor de presión o el tendido de una canalización para cables de instrumentación constituyen unidades de obra.
Este capítulo explica la estructura de una unidad de obra (descripción, cantidad, medición, materiales, mano de obra), su representación en presupuestos y su importancia para la planificación, control y valoración de los trabajos.
Estructura de una unidad de obra
Una unidad de obra se define con precisión para evitar ambigüedades. Sus componentes son:
- Descripción técnica: Explica detalladamente el trabajo, especificando características técnicas, normativas aplicables (UNE, IEC) y condiciones de ejecución. Ejemplo: “Suministro e instalación de sensor PT100 clase A con termopozo, incluyendo cable apantallado 2x1,5 mm², prensaestopas y conexionado en armario de control.”
- Cantidad: Número de veces que se repite la unidad en el proyecto (ej. 12 ud, 150 m).
- Medición: Define cómo se cuantifica (por unidad, por metro lineal, por hora, etc.). Esencial para control de calidad y valoración económica.
- Materiales: Lista de materiales necesarios, con calidades y cantidades. Incluye sensores, cables, conectores, soportes, armarios, etc.
- Mano de obra: Recursos humanos por especialidad (electricista, instrumentista, programador) y tiempos estimados.
La correcta definición de cada componente asegura la transparencia en la ejecución y facilita la detección de posibles mejoras técnicas o económicas.
Ejemplos de unidades de obra en sistemas de medida y regulación
Ejemplo 1: Instalación de sensor de temperatura PT100
- Descripción: Suministro e instalación de sensor PT100 clase A, con termopozo de acero inoxidable, cable apantallado 2x1,5 mm², prensaestopas M20 y conexionado en armario de control. Incluye verificación de continuidad y aislamiento.
- Cantidad: 12 unidades.
- Medición: Por sensor instalado y verificado.
- Materiales: Sensor PT100, termopozo, cable apantallado (12 m por sensor), prensaestopas, bornes.
- Mano de obra: 2 horas de técnico electricista por sensor.
Ejemplo 2: Montaje de armario de control
- Descripción: Suministro, montaje y conexionado de armario de control IP66 800x600x300, incluyendo borneros, relés, fuente de alimentación, PLC y módulos de E/S según proyecto. Incluye rotulado de cables y pruebas funcionales.
- Cantidad: 1 unidad.
- Medición: Por armario completamente instalado y probado.
- Materiales: Armario, borneros, relés, PLC, fuente, cableado interno, canaletas.
- Mano de obra: 8 horas de técnico electricista + 4 horas de técnico programador.
Representación en el presupuesto
En un presupuesto técnico, las unidades de obra se agrupan en partidas y capítulos. Cada partida incluye:
- Código identificativo (ej. INS-01).
- Descripción completa.
- Cantidad.
- Precio unitario (calculado a partir de los materiales, mano de obra y medios auxiliares).
- Importe total (cantidad × precio unitario).
Esta estructura permite un control exhaustivo del coste y facilita la gestión de desviaciones durante la ejecución. Además, el desglose por unidades de obra ayuda a justificar cada gasto ante el cliente y a identificar posibles alternativas de optimización.
# work_unit_manager.py - Clase para gestionar unidades de obra y generar presupuesto
class Material:
def __init__(self, nombre, unidad, cantidad, precio_unitario):
self.nombre = nombre
self.unidad = unidad
self.cantidad = cantidad
self.precio_unitario = precio_unitario
self.importe = cantidad * precio_unitario
class ManoDeObra:
def __init__(self, categoria, horas, precio_hora):
self.categoria = categoria
self.horas = horas
self.precio_hora = precio_hora
self.importe = horas * precio_hora
class UnidadObra:
def __init__(self, codigo, descripcion, unidad_medida):
self.codigo = codigo
self.descripcion = descripcion
self.unidad_medida = unidad_medida
self.materiales = []
self.mano_obra = []
self.medios_aux = [] # lista de (descripción, importe)
self.gastos_generales = 0.15 # 15%
def agregar_material(self, material):
self.materiales.append(material)
def agregar_mano_obra(self, mano):
self.mano_obra.append(mano)
def agregar_medio_aux(self, descripcion, importe):
self.medios_aux.append((descripcion, importe))
def coste_directo(self):
total_materiales = sum(m.importe for m in self.materiales)
total_mano = sum(m.importe for m in self.mano_obra)
total_aux = sum(m[1] for m in self.medios_aux)
return total_materiales + total_mano + total_aux
def precio_unitario(self):
directo = self.coste_directo()
return directo * (1 + self.gastos_generales)
def detalle(self):
print(f"\n=== UNIDAD DE OBRA: {self.codigo} ===")
print(f"Descripción: {self.descripcion}")
print(f"Unidad: {self.unidad_medida}")
print("\nMateriales:")
for m in self.materiales:
print(f" {m.nombre}: {m.cantidad:.2f} {m.unidad} x {m.precio_unitario:.2f} € = {m.importe:.2f} €")
print("\nMano de obra:")
for mo in self.mano_obra:
print(f" {mo.categoria}: {mo.horas:.1f} h x {mo.precio_hora:.2f} € = {mo.importe:.2f} €")
print("\nMedios auxiliares:")
for aux in self.medios_aux:
print(f" {aux[0]}: {aux[1]:.2f} €")
print(f"\nCoste directo: {self.coste_directo():.2f} €")
print(f"Precio unitario (con GG 15%): {self.precio_unitario():.2f} € / {self.unidad_medida}")
# --- Ejemplo: instalación de sensor PT100 ---
sensor_pt100 = UnidadObra("INS-01", "Instalación de sensor PT100 con termopozo", "ud")
sensor_pt100.agregar_material(Material("Sensor PT100 clase A", "ud", 1, 85.00))
sensor_pt100.agregar_material(Material("Termopozo acero inoxidable", "ud", 1, 45.00))
sensor_pt100.agregar_material(Material("Cable apantallado 2x1,5", "m", 12, 2.80))
sensor_pt100.agregar_material(Material("Prensaestopa M20", "ud", 1, 2.50))
sensor_pt100.agregar_mano_obra(ManoDeObra("Electricista", 2.0, 35.00))
sensor_pt100.agregar_medio_aux("Herramientas manuales (amortización)", 3.00)
sensor_pt100.detalle()
print("\n--- Si se instalan 12 unidades ---")
cantidad_total = 12
coste_total = cantidad_total * sensor_pt100.precio_unitario()
print(f"Total partida: {cantidad_total} ud × {sensor_pt100.precio_unitario():.2f} € = {coste_total:.2f} €")
Este script define una unidad de obra de instalación de sensor PT100, desglosa sus materiales y mano de obra, calcula el coste directo y el precio unitario con gastos generales. Útil para generar partidas de presupuesto.
La gestión de unidades de obra se integra cada vez más con software BIM (Building Information Modeling) que extrae automáticamente cantidades del modelo 3D y las asocia a bases de datos de precios. Las bibliotecas digitales de unidades de obra (como las de ITeC) permiten estandarizar descripciones y rendimientos, facilitando la elaboración de presupuestos consistentes. Además, la inteligencia artificial se utiliza para recomendar agrupaciones óptimas de partidas y detectar errores en las mediciones.
Una Raspberry Pi puede ejecutar scripts Python como el anterior para calcular presupuestos a partir de unidades de obra introducidas en campo. También puede servir como servidor para consultar catálogos de unidades de obra estandarizadas.
En proyectos educativos, Arduino puede simular la medición de unidades de obra (por ejemplo, contador de piezas instaladas) y enviar los datos a un PC para su valoración automática, introduciendo conceptos de control de obra.
- ✅ Comprender activamente cada línea de código generada
- ✅ Personalizar la solución según tus necesidades específicas
- ✅ Iterar y refinar el código hasta dominar la lógica
- ✅ Desarrollar habilidades de comunicación técnica con IA
📋 Instrucciones de Uso:
- Copia el prompt completo del recuadro superior.
- Personaliza los campos entre corchetes [CAMPO] con tu información específica.
- Pega el prompt en una nueva conversación con tu IA favorita.
- Itera y refina: Pide aclaraciones, modificaciones o añade requisitos adicionales.
- Prueba el código en Thonny primero, luego en tu Raspberry Pi y ajusta según resultados.
💼 Caso Práctico Industrial: Identificación de unidad de obra
Contexto: Se debe definir una unidad de obra para la "calibración de un transmisor de presión 4-20 mA". ¿Qué información debe incluir la descripción técnica?
Pregunta: ¿Qué elementos son imprescindibles?
🍓 Raspberry Pi + Python
Contexto: El script Python calcula el precio unitario sumando costes directos y aplicando un 15% de gastos generales. Si el coste directo de una unidad de obra es 120 €, ¿cuál es el precio unitario?
Pregunta: ¿Qué valor se obtiene?
🐍 Componentes de unidad de obra
Contexto: En la unidad de obra del ejemplo, se incluyen materiales, mano de obra y medios auxiliares. ¿Qué concepto representa la "amortización de herramientas manuales"?
Pregunta: ¿A qué categoría pertenece?
📚 Recursos Técnicos y Normativos 2026
Normativas y Estándares
- BEDEC - Base de Datos de la Construcción (unidades de obra)
- UNE-EN 60204-1 - Seguridad de máquinas (mediciones)
- AEGC - Asociación Española de Gestión de Costes