Problema (di Pulldown?) su progetto con LCD e pulsanti

Ciao a tutti,
sto cercando di realizzare un piccolo sistema per rilasciare automaticamente i croccantini al mio gatto.

Il sistema è composto da:

-Arduino Nano
-Vari Led
-Vari pulsanti
-Uno schermo LCD
-Un piccolo servo
-Un modulo rtc

I pulsanti servono per la navigazione del menu sullo schermo lcd. Il tutto è alimentato da un alimentatore 9v, ma mentre i vari componenti sono attaccati ai +5v di Arduino, ho preferito portare i 5v al servo tramite 7805.

Ho nel tempo testato tutti i componenti con successo (movimento del servo, menu, lcd ecc).

Ora ho provato a mettere tutto insieme su millefori, ma fondamentalmente non sta funzionando nulla.

Lo screen LCD si accende ma non mostra nulla, il servo (che esegue i movimenti corretti) parte però quando non dovrebbe, come se i pulsanti andassero casualmente. Ed effettivamente, attaccando Arduino al monitor seriale vengono recepiti degli stati HIGH che non dovrebbero esserci su tutti i pulsanti.

Ho provato a pensare a un problema di resistori di PULL DOWN ovviamente, ma avevo considerato anche questo nel mio schema... Inoltre questo non spiegherebbe lo schermo LCD che non mostra i caratteri (ma solo blocchettoni bianchi), quando in precedenza su breadboard ero riuscito a farlo funzionare.

Cosa potrebbe essere? Che tipo di controlli potrei fare? Finora ho fatto un test di continuità sul GND ed effettivamente Arduino, l'alimentatore e tutti i moduli danno continuità su GND. Cosa altro potrei testare con un multimetro?

In allegato lo schema..

Il codice non è errato, quello è il mio mestiere ed è comunque stato precedentemente testato su breadboard.

Grazie a tutti

E' preferibile usare resistori di pull up: è vero che la logica è invertita, ma c'è l'indubbio vantaggio di poter utilizzare i resistori interni ad Arduino.

Lo schema è un po' pasticciato e contiene un paio di errori:

1 - i LED D3 e D4 non dispongono di resistore di limitazione corrente (330 ohm);
2 - un L7805 può erogare al massimo 100mA e credo sia insufficiente per pilotare un servo, anche se piccolo.

Ciao, per quanto riguarda i Led tutto ok, ho solo dimenticato di riportare i resistori sullo schema.

Per quanto riguarda il servo ho precedentemente provato il tutto con il 7805 e funziona alla grande, non scalda neanche. Comunque al picco ho misurato 108mA ma se non erro il 7805 tiene bene queste correnti basse (in realtà va a W, e nel mio caso siamo sui 0.3w che dovrebbe essere ampiamente alla portata).

Un servo di solito assorbe in stallo anche 4-5 volte la corrente senza carico.

Passa al modello più potente (LM7805 contenitore metallico), così non hai problemi, ma ricordati di aumentare il valore dei due condensatori elettrolitici in ingresso ed in uscita (100μ e 10μ o, meglio, 220μ e 22μ) ed affiancarli con due condensatori ceramici o poliestere da 100n.

Ok ti ringrazio per i consigli :slight_smile:
Comunque in questo caso il servo sembrerebbe essere l unico componente a funzionare bene, il problema è sicuramente a monte nell input che gli arriva (così come per LCD e pulsanti)

Presumo che hai fatto un errore nel saldare il circuito sulla millefori. Lo schema é corretto ecetto le resistenze dei LED non disegnate. Collegherei tutte le masse allo stesso pin di massa o collegherei i 2 pin GNd di Arduino.
Il fatto che lo stabilizzatore non si riscaldi mi preocupa. Con 100mA e 4V dovrebbe dissipare 0,4W che lo riscalda in modo percepibile.

Il fatto che i pulsanti vengono rilevati come azionati a caso indica un pullup/pulldown manvante.

Ciao Uwe

Ciao uwe,
Premetto che visto il mancato funzionamento del sistema non ho stressato eccessivamente il 7805, comunque dai miei scorsi test era emerso un consumo pari a 100mA solo quando il servo si muove, ossia nel mio caso il 10% del tempo quindi potrebbe starci, oltre al fatto che ci ho messo un dissipatore adeguato.

Per quanto riguarda le pull down casomai domani provo a smontare il tutto e risaldare usando le pull-up interne di arduino... Anche perché verificare il funzionamento delle resistenze di pull down solo con un multimetro la vedo difficile.

Ma rimane comunque il problema Dell LCD...

Va bene dai, un passo alla volta...

Ciao per l'lcd ricontrolla i fili di pilotaggio e verifica la taratura del contrasto.
Occhio che con una pila da 9v non hai molta autonomia.

Ciao cam,
Ora ricontrollo sda e scl.
Comunque è un modulo a 5v che alimento direttamente dall arduino!

Ciao a tutti,
sono riuscito a risolvere la maggioranza dei problemi che avevo esposto, seguendo i vostri preziosi suggerimenti.

In lista:
-Risolto il problema dei pulsanti utilizzando le resistenze interne di pulldown di Arduino (e a dire il vero la soluzione è molto più pulita e mi sono risparmiato un bel po' di cavi).
-Risolto il problema dell' LCD: si trattava di configurazioni relative alle librerie, tutto rientrato.

Ora sembra funzionare tutto correttamente, la cosa che mi lascia un po' perplesso è il servo.
Segue i comandi correttamente, però quando è in posizione fa dei piccoli rumorini e degli scattini molto leggeri, ma non sta completamente fermo. Avevo letto da qualche parte, forse proprio su questo topic, che forse quando è così si tratta di un problema di voltaggio troppo basso, me lo potete confermare?

Non sono riuscito a trovare il datasheet del servo che uso in quanto è un po' vecchiotto (si tratta di un Sanwa SRM-102 da modellismo, presumibilmente anni 80\90). Ho trovato qualcosa di relativo al Sanwa SRM-102Z che però sembra più nuovo e fa cenno a 4.8V, io il mio lo sto alimentando a 5 tramite il 7805... Non si tratta di un problema di GND comune, già controllato!

Se non ricordo male è stato segnalato su questo forum che un servo può, per vari motivi, non "interpretare" correttamente l'angolo esatto di posizionamento e quindi vibrare o scattare in un intorno. Ciò poteva succedere su certi valori e non su certi altri. L'autore suggeriva di provare a posizionare il servo su una serie di valori nell'intorno di quello desiderato (se non era necessaria una precisione assoluta), per vedere se il fenomeno scompariva, e poi usare quel valore.
Ciao,
P.