Pilotaggio stepper e lcd

salve a tutti ancora una volta vi presento un problema…
sto lavorando su un progetto combinando varie funzioni, lo scopo finale e’ una ciotola per gatti monitorato il peso(piena vuota) ed in funzione di questo tramite un servo ed una coclea fare un sistema di erogazione che la riempa quando vuota.
ovviamente tutto ciò necessita di un menu di interfaccia per l’utente che imposta ora e quantita di croccantini desiderati.
ora sono al punto in cui a tal ora impostata dall’utente mi si attiva il motorino stepper con un unico veramente gran difetto, ovvero come il motorino “ciuccia” corrente l’arduino perde controllo, sembra che la frequenza di lettura con cui esegue il programma si abbassi notevolmente, quasi al paragone di un print con delay a 800 millisecondi.
esistono soluzioni in questa direzione??
al momento non saprei che parte di sketch o informazioni aggiungere nel post, per cui evito onde evitare confusioni, sarò più che contento di farlo nel caso qualcuno abbia qualche buona idea!

per ora grazie tante a tutti ! e buonanotte

Il tuo non è un problema strettamente legato al programma ma come alimenti il passo passo.
Non vedendo il programma e nessuna informazione su come alimenti il motore, non posso essere sicuro della cosa.
Comunque il motorino passo passo dovresti comandarlo tramite un driver che riceve segnali di dir e step, e l’alimentazione del motore da fonti esterne, in questo modo non hai cali di corrente.
esempio… https://www.lombardoandrea.com/pilotare-un-motore-passo-passo-con-arduino-e-il-driver-a4988/

buongiorno! allora si, in partenza era quello il problema, ma anche dopo aver adottato la soluzione di usare un alimentatore esterno:

il problema persiste, quando avvengono le condizioni che fanno attivare il passo passo, il problema che si riperquote sull’lcd si presenta solo in presenza del comando stepper.step

io purtroppo non sono un grande intenditore, ma l’impressione era quella che la frequenza alla quale l’arduino legge(per poi eseguire) le istruzioni fosse rallentata.

ho dunque voluto controllare facendo un print nella parte di codice richiamata perl’attivazione del passo passo ed effettivamente non stampa alla velocità normale, bensì è più simile ad una stampa al secondo.

il problema piu grave è che ovviamente anche la cella di carico aggiorna i suoi dati di riempimento mooolto lentamente, il che risulta ovviamente un problema considerando che è lei a dover comandare lo stop del passo passo che esegue l’erogazione.

detto questo se c’è una specifica parte di codice che possa tornare utile la carico immediatamente.

grazie comunque dell’attenzione.

ps ovviamente nel datasheet il riferimento è al 25-5(5V /5 ampere/ 25W)

Ma il motorino come è collegato all’arduino?

sto cercando di elaborare un disegno con fritzing che però non ho mai utilizzato :frowning:

nel frattempo spiego:
ARDUINO ----------------------------------------->DRIVER
4pin di arduino(8,9,10,11) --------> collegati al driver ULN2003AN(1B,2B,3B,4B) rispettivamente da sinistra a destra.
Cattura

VCC (pin sulla scheda driver dell’ULN2003AN) viene preso dai 5Vstabili dell’alimentatore esterno.

la massa è comune a quella dell’arduino:
GND (pin sulla scheda driver dell’ULN2003AN) viene preso dal segnale GND comune

mentre dal driver allo stepper c’è una morsettiera prefatta che ha una direzione univoca grazie alle alette di plastica che la fissano.

il seguente link rimanda al datasheet dell ULN2003AN:

non sono stato in grado di trovare il datasheet della scheda driver specifica ma è questa, quella classica dello stepper di arduino 5V:Cattura 5v Stepper e ULN2003 DRIVER

ok posso felicemente annunciare che ho trovato il problema. grazie a tutti per la collaborazione!

era un semplice errore ma fatale per l’arduino. l’esecuzione del comando: .step(numero di step=2048) richiede fisicamente delle tempistiche alte rispetto alla velocità di esecuzione di arduino.

è bastato dunque abbassare .step(numero di step=16 ) per fare si che il programma potesse ripartire e quindi mandare avanti le proprie funzioni propriamente!

detto questo esiste un modo per spegnere il servo tramite software dopo che viene attivato?