Ho cercato invano di rispondere stamattina mentre ero in treno, ma...
Vedo un po di lacune in elettrotecnica, vediamo di riempirle :-)
Allora prima cosa vorrei capire qual'era secondo te il problema nel tuo vecchio circuito, con l'affermazione "con alta tensione verso un rele a bassa tensione" non capisco cosa intendi, se riesci a spiegarlo meglio ci ragioniamo a più teste.
Ora ti spiego lo schema da me postato...
Come detto in precedenza una bobina di un relè può arrivare ad assorbire diverse decine di milliampere, questo comporta che se ai capi della bobina colleghi la terra e una porta di Arduino questa si distruggerà per via della seguente equazione V/R=I 5/70=0.07 che é la corrente passante nella bobina una corrente troppo alta per Arduino.
Quindi cosa si può fare per ovviare a questa limitazione di Arduino? Semplice Arduino non sarà la sorgente che darà corrente alla bobina, quindi servirà una vcc esterna di 5v a un capo della bobina capace di erogare la corrente necessaria, e all'altro capo la terra, cosi fatto la bobina sarà sempre eccitata pero non creerà danni. Manca solo la possibilità di decidere quando deve far passare corrente. Quindi poniamo un transistor npn in serie al rele, questo presenta una corrente molto bassa per poterlo controllare quindi possiamo collegare il suo gate o base ad un pin di Arduino, se usiamo un mosfet sarà possibile collegarlo direttamente al pin se invece optiamo per un bjt sarà necessaria una resistenza tra pin e base per lo stesso motivo citato sopra, limitare la corrente.
Il diodo in Antiparallelo non crea alcuna diminuzione nel circuito in quanto quando il transistor chiuderà il circuito la corrente non passera nel diodo proprio perché è posto in antiparallelo, diversamente quando il circuito si aprirà la corrente indotta dalla bobina si potrà "scaricare" sul diodo, se non ci fosse questa corrente residua potrebbe scaricarsi sul transistor rompendo la giunzione.
Ho cercato di semplificare un po' il discorso, può andare, hai capito ora lo schema?
Edit:
ma la corrente viene assorbita dal relè, non dal processore. E se si prova a assorbire più corrente di quella massima di output alla peggio la tensione scende per far salire la corrente.
Non capisco proprio questa tua affermazione, l'ATmega328p può assorbire anche 200mA senza problemi, le singole porte non possono sopportare correnti maggiori ai 40mA, dopo questa soglia il pin si rompe. 20mA consigliata per i modelli principali di Arduino.
usa un amplificatore operazionale
Sinceramente non vedo la necessità in uno schema cosi semplice di introdurre un amplificatore operazionale.