Alimentare periferica 3.3V con pin PWM

Salve a tutti,

come da oggetto mi chiedevo se secondo voi è possibile alimentare una periferica che va a 3.3V per mezzo di uno dei pin PWM di Arduino, ovviamente la periferica non consuma molto (barometro BMP180).

Può funzionare oppure rischio di friggere tutto?

Grazie mille!

GianfrancoPa:
come da oggetto mi chiedevo se secondo voi è possibile alimentare una periferica che va a 3.3V per mezzo di uno dei pin PWM di Arduino, ovviamente la periferica non consuma molto (barometro BMP180).

Dai pin di Arduino escono 5V, corrente massima 40 mA, non puoi alimentare il BMP180 a 5V, però Arduino dispone di un pin di alimentazione a 3.3V in grado di erogare circa 50 mA, puoi usare quello per alimentare il BMP180.

Il problema è che sto usando un clone dell'Arduino in formato mini che non ha l'uscita a 3.3V, chiedevo per questa ragione se settando uno dei pin PWM come nel modo seguente, potessi utilizzarlo come sorgente di corrente avente tensione 3.3V:

analogWrite(3, 168);

dove 168 = (3.3/5) * 255

GianfrancoPa:
analogWrite(3, 168);
dove 168 = (3.3/5) * 255

Il PWM non è un'uscita analogica, è un onda rettangolare con ampiezza 5V con duty cycle variabile.
Potresti usare un piccolo regolatore ldo 3.3V, p.e. quello che monta Arduino UNO.

Grazie!!!

ma il BMP180 che hai, non e' gia' montato su una board ?

si, ma vuole 3.3 in ingresso. se ne usassi uno esterno, avrei problemi con la I2C dell'arduino a 5v?

si, ma vuole 3.3 in ingresso.

strano... ho visto in giro solo schedine con a bordo il regolatore.

se ne usassi uno esterno, avrei problemi con la I2C dell'arduino a 5v?

no, se c'e' solo quella scheda collegata

GianfrancoPa:
avrei problemi con la I2C dell'arduino a 5v?

Premesso che sarebbe meglio utilizzare un traslatore di livelli tra 5V e 3.3V per la I2C, però ,sebbene siamo al limite delle tolleranze, riesce a funzionare anche 3.3V, in questo caso non devi fare altro che installare due pull up da 1.5K collegate al 3.3V, se sono già presenti sulla breakout del BMP non serve aggiungerle.
Tieni presente che anche se la I2C riesce a funzionare con i livelli a 3.3V è altamente probabile incorrere in errori di trasmissione con il conseguente blocco della I2C.

Ne approfitto: questo discorso vale anche per la seriale?

GianfrancoPa:
Ne approfitto: questo discorso vale anche per la seriale?

Per la seriale è più semplice, il Tx del dispositivo a 3.3V lo colleghi direttamente al Rx di Arduino, il Tx di Arduino lo colleghi al Rx del dispositivo a 3.3V tramite un partitore composto da una R da 18k e una da 10k in modo da ridurre la tensione a circa 3.2V.

considera che Arduino legge come livello HIGH una tensione di almeno 0.6 x Vcc. quindi 3V

Comunque il BMP180 non sembra essere "5Vtolerant" quindi un convertitore di livello ci vuole sicuramente, oppure alimenti anche il MC a 3V3 (se puoi) e stai tranquillo

icio:
Comunque il BMP180 non sembra essere "5Vtolerant" quindi un convertitore di livello ci vuole sicuramente,

La I2C è un bus che usa finali open collector, o open drain, la tensione a cui lavora la decidono le resistenze di pull up, il problema è che con livelli a 3.3V c'è il reale rischio che Arduino non riesce a leggere la I2C e/o si possono verificare facilmente errori di trasmissione.