Resistenza di pullup non funzionante

Ciao a tutti, ho messo su millefori il mio progetto dopo averlo collaudato con una base shield con le vitine.
Purtroppo essendo la mia prima basetta millefori ho pasticciato un po' con le stagnature (tra l'altro credo sia di infima qualità)
La cosa strana è che la resistenza di pullup così messa sembra non funzionare, ovvero il sensore di temperatura da -127, tuttavia se metto un altra sonda a cui avevo collegato la resistenza più verso il sensore tutto funziona.
Quindi sembra proprio che la resistenza di pullup non faccia il suo dovere.

La resistenza l'ho provata con il multimetro e sembra andare.
La sonda l'ho provata quando l'ho settata ed andava.
Il progetto usa un arduino nano che è montato dietro, spero si capisca.

le tre freccie verdi vanno al sensore temperatura.
le tre freccie azzurre provengono dall'arduino nano.

Il pin 13 è una pessima scelta, dato che c'è collegato il led. Per di più, sul Nano il led non è nemmeno isolato tramite opamp, quindi influisce parecchio su quel che leggi/scrivi.

Cambia pin (o togli fisicamente il led).

non capisco come hai collegato la resistenza ma non mi pare che sia così

DS18B20-Wiring.jpg

SukkoPera:
Il pin 13 è una pessima scelta, dato che c'è collegato il led. Per di più, sul Nano il led non è nemmeno isolato tramite opamp, quindi influisce parecchio su quel che leggi/scrivi.

Cambia pin (o togli fisicamente il led).

Provo a cambiare PIN però strano che con l'altra vada.

Patrick_M:
non capisco come hai collegato la resistenza ma non mi pare che sia così

lo schema è questo, non riesco a capire se sto sbagliando clamorosamente o è una coincidenza.

Guarda, la verifica della pull-up la fai in un attimo ... lasci SOLO quella collegata, dichiari il pin 13 come input e fai una serie di digitalRead() su di esso ... devono restituirti sempre HIGH, a dimostrazione che la pull-up sta facendo il suo lavoro.

Guglielmo

P.S.: Che valore ha la resistenza di pull-up ?

bah io sarò pedante ma lo schema in fritzing è diverso dalle saldature che hai mostrato, tu alimenti con i 5V il piedino centrale che dovrebbe essere il data e colleghi al pin13 il primo in alto che secondo lo schema è il positivo...

Domanda da ignorante: perché usare una resistenza esterna per il pullup quando puoi attivare quella interna nella pinMode dicendo INPUT_PULLUP? Non é la stessa cosa?

gpb01:
Guarda, la verifica della pull-up la fai in un attimo ... lasci SOLO quella collegata, dichiari il pin 13 come input e fai una serie di digitalRead() su di esso ... devono restituirti sempre HIGH, a dimostrazione che la pull-up sta facendo il suo lavoro.

Guglielmo

P.S.: Che valore ha la resistenza di pull-up ?

Non ci avevo pensato, ottima idea. Il risultato era 0 (zero)

Ho cambiato pin, sul 12 e tutto funziona. Non so, passo, non capisco. Forse è come dice SukkoPera.
Grazie del supporto, sempre molto disponibili.

gianlucaf:
Non so, passo, non capisco ...

NON hai risposto alla mia domanda ... CHE valore di resistenza ? ? ?

Guglielmo

gianlucaf:
Non ci avevo pensato, ottima idea. Il risultato era 0 (zero)

Ho cambiato pin, sul 12 e tutto funziona. Non so, passo, non capisco. Forse è come dice SukkoPera.
Grazie del supporto, sempre molto disponibili.

Ma gli ingressi li hai dichiarati ?

Succedono sempre strane cose se non li dichiari INPUT oppure OUTPUT....

Silente:
perché usare una resistenza esterna per il pullup quando puoi attivare quella interna nella pinMode dicendo INPUT_PULLUP?

Quella interna è da 20..50 kΩ, per alcune cose potrebbe essere troppo alta, qualche contatto ad esempio chiude bene solo se gli si fa circolare una corrente minima (almeno qualche mA). Oltre a questo, maggiore è il valore della Rpull, più i disturbi esterni possono "entrare" (per leggere linee di metri o decine di metri si consiglia di non usare Rpull maggiori di 1 kΩ).

Stiamo parlando di un bus Onewire, la R deve essere 4.7k a meno di situazioni particolari.

gpb01:
NON hai risposto alla mia domanda ... CHE valore di resistenza ? ? ?

Guglielmo

scusa, ho usato la resistenza più vicina a 4700 che avevo, cioè 5000.

steve-cr:
Ma gli ingressi li hai dichiarati ?

Succedono sempre strane cose se non li dichiari INPUT oppure OUTPUT....

Ammetto di non saperlo, purtroppo non ho ancora approfondito la funzione Onewire e
quindi non so come funzioni ovvero se la chiamata passandogli il numero pin dichiari il pin stesso come input.
Esplicitamente non l'ho dichiarato io.
Allego il codice aggiornato con il pin 12.

Ventola_v2.2.1_millefori.ino (4.8 KB)

4.7k fino a 10 15 metri di cavo da 0.75mm, funziona quel sensore se collegato bene.
Al massimo oltre quella distanza ci metti un'altra in parallelo da 4.7 se hai esigenze di distanza. Ma mai scendere troppo in basso anche perché in quel caso comincia a passare pure troppa corrente