Tensione pin digitali

Ciao a tutti,
tra i miei tanti esperimenti e letture in questo forum, mi è venuto un dubbio che riporto in un nuovo thread.

So che i pin digitali di Arduino Uno hanno una tensione di 5V.
Per aiutarmi a capire, faccio confronto con altra board (ad esempio Wemos D1 Mini o NodeMCU) che invece ha i pin digitali a 3.3V.

Com'è possibile allora che i collegamenti con moduli/sensori vengono spesso fatti allo stesso modo senza particolari accorgimenti?

Ad esempio:

  1. collegamento pin digitali HC-SR04 viene fatto in maniera identica su Arduino e Wemos D1 Mini (cioè direttamente collegato sulle board senza resistenze/diodi in mezzo). HC-SR04 lavora a 5V. Com'è possibile allora che non ci siano accorgimenti particolari?

  2. collegamento Relay module come questo. Anche questo fatto in maniera identica sulle due board. E' davvero così o dovrei collegarlo diversamente su board Wemos?

  3. RFID Module come questo.. Questo lavora a 3.3V quindi immagino che il collegamento sia identico su Arduino e Wemos semplicemente perchè l'RC522 avrà un regolatore di tensione interno che semplicemente non verrebbe usato se collego a Wemos. E' così?

Oltre agli esempi specifici:

  1. Come fate a capire come procedere in generale? I datasheet spesso dicono solo la tensione a cui operano ma senza sempre indicare se hanno un regolatore. Guardate ad esempio l'esempio 3 dell'RFID Module che indica solo 3.3V.

Mi aiutate a chiarire questo dubbio sia su casi specifici che su ragionamento generale?

Grazie mille

Dipende da piú fattori.

a) il range di tensione dove un entrata vede HIGH
b) se un entrata é fatta per reggere 5V (con alimentazione 3,3V del integrato)

per 2)
Visto che l' entrata é un LEd o la base di un Transistro anche 3,3V bastano per pilotarlo.

uwefed:
Dipende da piú fattori.

a) il range di tensione dove un entrata vede HIGH
b) se un entrata é fatta per reggere 5V (con alimentazione 3,3V del integrato)

per 2)
Visto che l' entrata é un LEd o la base di un Transistro anche 3,3V bastano per pilotarlo.

Grazie per la risposta.. A quanto ho capito, il relay module funziona comunque su pin digitale a 3.3V ma per quanto riguarda gli altri? (punto 1 e 3)?

E soprattutto come faccio a capire in autonomia se un modulo va bene anche su pin digitale 3.3 (ad esempio wemos d1) o se ho bisogno di fare accorgimenti come quando collego esp8266 ad arduino?

Vediamo se riesco a risponderti, prima che cada dal sonno

  1. collegamento pin digitali HC-SR04........ ad Arduimo e Wemos D1 mini

Da un'altra parte di questo Forum ci siamo detti che per collegare una CPU come l'ESP-01 ad Arduino serviva un partitore di tensione ( o altro sistema simile ) , perche' le due unità lavorano a livelli logici diversi e quindi tu vedendo che collegano un HC-SR04 ( che funziona con livelli logici 0-5V ) ad un Wemos D1 mini, che in pratica essendo un ESP8266 funziona a 0-3.3V , ( ah, presumo che tu abbia visto questo )

Poi c'è anche questo

e questo, dove l'HC-SR04 è alimentato a 3.3V

Beh, quelli visti fino ad ora sono tutti collegamenti errati, quelli corretti possono essere i seguenti

Se non fosse per il fatto che lo schema sopra non funziona con tutte le NodeMCU, visto che su alcune c'è un diodo sull'ingresso Vin che permette di alimenntare la scheda ma non di prelevarne ( diversamente dalla Wemos che su quel pin eroga i 5V ma non vi si può alimentare la scheda ), però a parte questo "piccolo particolare" usa correttamente un partitore resistivo tra il pin di OUT del HC-SR04 e il pin di INPUT dell'esp8266

Che nella Wemos D1 Mini è


Ora ti chiederai, ma come mai se collego un HC-SR04 a una Wemos senza partitori resistivi, funziona lo stesso ?
Non ho mai provato ma presumo che funzioni...... ma per quanto non si sà.
Oltretutto l'ESP8266 non è nemmeno 5V tollerant, e ricordo che tempo fà ci fu una discussione proprio su questo argomento ( ma non la ritrovo ) in cui in pratica veniva detto che gli ingressi dell'ESP hanno una qualche minima protezione ( non ricordo di che tipo ), ma che appunto essendo una protezione non può considerarsi affidabile.
In conclusione
Se adatti i livelli nel giusto modo, vai tranquilllo. Se non lo fai, prima o poi può succedere di tutto

Grazie mille Brunello.
Come hai notato anche tu, è pieno di schemi sbagliati. Proprio per questo non capisco cosa fare operativamente prima di collegare un nuovo componente 5V a porta digitale 3.3V.

Ok per quanto riguarda HC-SR04...il tuo schema è chiarissimo.
Ma perchè ad esempio non bisogna fare la stessa cosa con la relay board (punto 2 del mio primo post)?

E come bisognerebbe procedere in generale con altri sensori/moduli? Ad esempio se collego questo sensore di umidità o ancora un servo. Entrambi hanno alimentazione a 5V e mi chiedo sempre se può essere un problema collegarli a porta digitale 3.3V.

Come hai notato anche tu, è pieno di schemi sbagliati.

Purtroppo sul Web c'è di tutto, anche un sacco di porcherie

Ma perchè ad esempio non bisogna fare la stessa cosa con la relay board (punto 2 del mio primo post)?

Mi pareva che avessi già capito..... In pratica sull'ingresso di una Relay board o c'è un Led o la base di un transistor e quindi comandarli ocn 5V o 3.3V cambia poco ( quasi sempre ).
Deve entrarti in testa il concetto che ( quasi sempre ) con un' USCITA a 3.3V puoi pilotare l'INGRESSO di un circuito a 5V . Quello che non si deve mai fare è il contrario, cioè da un' USCITA a 5V non si può comandare un INGRESSO a 3.3V ( a meno che detto ingresso non tolleri tensioni più alte )

Non potevi essere più chiaro :slight_smile:

Quindi ad esempio:

  • anche con un LM35 dovrei usare un partitore resistivo
  • con sensore PIR, non serve partitore resistivo perchè comunque i segnali vengono inviati a 3.3V e a quanto ho capito c'è regolatore interno
  • con RFID module (come quello al punto 3 del mio primo post) la situazione è opposta (lui lavora a 3.3V mentre Arduino ha pin digitali 5V) quindi immagino che anche in quel caso il regolatore è incluso e i collegamenti con Wemos o Arduino sono indifferenti.
  • anche con un LM35 dovrei usare un partitore resistivo

Un LM35 ha un'uscita analogica, non digitale e fornisce 10mV/°
Su Arduino lo colleghi ad una porta analogica, da A0 a A5.
Su una Esp8266 ( anche la Wemos ) lo puoi collegare solo sul pin A0, che accetta tensioni di max 1V

con sensore PIR, non serve partitore resistivo perchè comunque i segnali vengono inviati a 3.3V e a quanto ho capito c'è regolatore interno

Lascia perdere questa storia del regolatore interno. Serve solo ad abbassare la tensione di alimentazione ( da 5V a 3.3V ) per comodità
Comunque si, se intendi quei MiniPir che si trovano nei vari kit per Arduino, escono con un livello logico 0-3.3V

  • con RFID module (come quello al punto 3 del mio primo post) la situazione è opposta (lui lavora a 3.3V mentre Arduino ha pin digitali 5V) quindi immagino che anche in quel caso il regolatore è incluso e i collegamenti con Wemos o Arduino sono indifferenti.

Come già detto , il regolatore non c'entra niente. Quel modulo lavora a 3.3V, e quindi mentre puoi collegarlo direttamente su una Wemos, se volessi collegarlo ad Arduino dovresti metterci un Level Converter.
Che poi lo colleghino ad Arduino direttamente, con solo dei fili, è un' altro paio di maniche.
Anche i preservativi sono sicuri solo al 93%

Brunello:
e questo, dove l'HC-SR04 è alimentato a 3.3V

Perché questo collegamento è errato?
Io ho alimentato un HC-SR04 a 3.3V con un'altra MCU. Ha funzionato ma la portata era ridotta a 2-3 metri invece dei 4 che di solito ha.

Ha funzionato ma la portata era ridotta a 2-3 metri invece dei 4 che di solito ha.

E quindi secondo te funziona ?

Brunello:
Anche i preservativi sono sicuri solo al 93%

:smiley: Ahahaha questo rende bene l'idea!

Grazie ancora.

Brunello:
E quindi secondo te funziona ?

Se non ti serve una maggiore portata si.
Del resto il discorso è lo stesso per alcuni moduli amplificatori o radio dove le prestazioni dipendono dalla tensione di alimentazione e nessuno sostiene che tali moduli non funzionano a basse tensioni.

Non è un problema di portata maggiore o minore, ho dato un'occhiata ai datasheet e agli schemi e vedo che la componentistica è diversa.
Ad esempio, per pilotare la capsula trasmittente, alcuni usano un MAX232 (5V), mentre altri usano un MAX3232 (3V).
Con il primo ci saranno problemi, con il secondo probabilmente si riduce la portata

Comunque il discorso è un'altro.... se da una periferica mi aspetto una cosa e vedo che il risultato è fuori dalle specifiche, è corretto o no ?
E in questo caso, il funzionamento è ripetibile? O dipende da che modulo ho e da cosa ci hanno montato sopra

Brunello:
Purtroppo sul Web c'è di tutto, anche un sacco di porcherie
Mi pareva che avessi già capito..... In pratica sull'ingresso di una Relay board o c'è un Led o la base di un transistor e quindi comandarli ocn 5V o 3.3V cambia poco ( quasi sempre ).
Deve entrarti in testa il concetto che ( quasi sempre ) con un' USCITA a 3.3V puoi pilotare l'INGRESSO di un circuito a 5V . Quello che non si deve mai fare è il contrario, cioè da un' USCITA a 5V non si può comandare un INGRESSO a 3.3V ( a meno che detto ingresso non tolleri tensioni più alte )

Riprendo questo topic perchè ho avuto modo di sperimentare (anche se con board NodeMCU per comodità).

In realtà il primo schema (quello del relay 5V) non funziona.
Successivamente ho provato a collegare l'alimentazione del modulo relay al pin 3.3V e a quel punto funziona correttamente. Immagino quindi che nel modulo relay la tensione del segnale deve essere uguale a quello di alimentazione, corretto?

Posso lasciare l'alimentazione del modulo relay collegata ai 3.3V o mi consigliate di fare delle modifiche per non avere problemi nel lungo periodo?

Grazie

In realtà il primo schema (quello del relay 5V) non funziona.

N'est pas possible.......

che modulo hai ?

Anche a me sembra strano.

E comunque va visto anche quale NodeMCU ha, e dove ha preso il +5V

Il modulo relay è questo.

Lo avevo collegato alla nodemcu 1.0 tramite pin Vin.
La nodemcu è invece alimentata tramite usb.

Quando collego a Vin, funziona il led dentro modulo relay (si accende e spegne a comando) ma non il dispositivo AC collegato al relay (nel mio caso un'elettroserratura 12v).

Se alimento da pin 3.3V della nodecmu, funziona tutto. Idee?

Allego lo schema.

il pin Vin della NodeMCU e' solo come ingresso di una tensione di alimentazione, non c'e' il 5V.
Forse nella NodeMCU che hai tu, c'e' un piedino marcato VU ( se c'e' è il terzo dall'alto, A0, G, VU ) quello è l'uscita a 5v che arriva dal'USB

IL Led si accende perchè è gestito dal pin del segnale, ma chiaramente mancando i 5v il relè non scatta,

Alimentare la schedina relè a 3,3v non garantisce che il relè ce la faccia sempre a scattare correttamente