Que tal genisuvi,
Yo creo que más bien el tema sería la búsqueda de provedores. No sé cual sería la producción de esta aplicación, pero haciendo una cuenta rápida de 10 tarjetas necesitarías:
Cant Dispositivo PU en USD Importe en USD Distribuidor
80 MCP23S17 $1.05 $84.00 Mouser Electronics
160 ULN2803 $0.33 $52.80 Addicore
Haciendo esto tienes un coste total de estos dos componentes de $136.80 USD pensando fabricar 10 tarjetas expansoras
Ahora que si usas transistores, el coste será mucho mayor ya que vas a necesitar incrementar el área del PCB para poder acomodar los transistores, y las resistencias de base necesarias (vamos a suponer que puede usar resistencias SMD). Pero suponiendo que puedes usar la misma área de PCB que usando UL2803,
Cant Dispositivo PU en USD Importe en USD Distribuidor
80 MCP23S17 $1.05 $84.00 Mouser Electronics
1280 2N3904 $0.031 $39.68 Mouser Electronics
1280 Res 4.7K SMD $0.005 $6.40 Mouser Electronics
Usando transistores tendrás un coste total de estos componentes de $130.08 USD. Así que no veo la ventaja de usar transistores con respecto a usar el ULN2803. Ya que el ensamblado de esto tomará más tiempo y más trabajo, incrementando más el coste.
Otra posible opción que puede usar para reducir los costes sería que utilizaras circuitos de corrimiento como el 74HC595 en lugar del MCP23S17, obviamente ocuparías el doble de circuitos y más pines de control.
Según Addicore, el coste del 74HC595 es de $0.132 USD para cantidades de 100 o más, en tu caso ocuparías 16 por tarjeta, y haciendo 10 tarjetas ocupas 160, por lo tanto alcanzas el precio. Por lo que el coste sería de $13.2 comparados con los $84 USD, ya la diferencia es mayor. Pero, ahí no termina la historia, obiamente necesitarás más circuitos y más pines para realizar el control adecuado.
En fin mi posición es que uses el ULN28703, pero busca precios entre distribuidores, para que obtengas el mejor precio.
Saludos,
elreypic.