Go Down

Topic: Banco di guida con Arduino Uno (Read 794 times) previous topic - next topic

gpb01

#15
Mar 23, 2019, 10:36 pm Last Edit: Mar 23, 2019, 10:42 pm by gpb01
Se i pulsanti chiudono verso massa (GND) ricorda che o su ogni pin metti una resistenza di pull-up per tenerlo a +Vcc quando il pulsante è aperto oppure usate le pull-up interne.

Utilizzando dei pulsanti dovrai anche preoccupari del "debouncing" ... ::)

Comunque, poichè mi sembrano più che evidenti (per tua stessa ammissione) le tue scarse conoscenze in materia, mi permetto di consigliarti, prima di avventuarati in qualsiasi progetto, lo studio di QUESTO poi di QUESTO e l'acquisto qualche buon libro (es. QUESTO).

Per la parte vera e propria di elettronica, puoi fare questa ricerca con Google "imparare l'elettronica partendo da zero pdf" ... sicuramente troverai un bel libro, in .pdf, che pubblico molto tempo fa Nuova Elettronica. Non posso metterti il link perché ... pur essendo Nuova Elettronica ormai fallita, comunque il materiale è soggetto a copyright ... ma vedrai che con una ricerca su Google lo trovi al primo colpo ...

Buono studio :)

Guglielmo
Search is Your friend ... or I am Your enemy !

Andreago71

Ti ringrazio nuovamente per i consigli, sul tuo suggerimento ho guardato subito e quindi si, inserirò una resistenza , questo dovrebbe aiutarmi anche per le interferenze. Ora consulterò tutta la documentazione di base che mi hai suggerito ed insieme al tutorial per principianti che ho trovato, voglio provare a buttare giù uno schema di base.  Si le mie conoscenze sono più che scarse, sono elettricista ma non elettronico,e sono qui appunto per imparare
Andrea Luigi Gobber

Andreago71

ho messo giù uno schema preliminare, spero di aver capito la posizione delle resistenze sui pulsanti ed il loro valore, grazie per eventuali consigli
Andrea Luigi Gobber

gpb01

Dallo schema hai usato delle pull-down verso GND mentre il tuo pulsante chiude verso Vcc, confermi?  In tal caso il pulsante darà normalmente LOW e, quando premuto, darà HIGH.

Se ti andasse bene il contrario (normalmnete HIGH e premuto LOW), allora potresti semplificare il circuito eliminando tutte le resistenze esterne ed i collegamneti esterni verso Vcc ed utilizzare quelle interne al chip (si attivano con un comando da software), che sono di pull-up (vanno verso Vcc) per tenere il pin normalmente ad HIGH e portarlo a LOW chiudendo il pulsante ad esso connesso verso GND.

Scegli tu quale delle due soluzioni ti è più comoda ...

Guglielmo
Search is Your friend ... or I am Your enemy !

Andreago71

se invece spostassi la resistenza sul Vcc prima del pulsante realizzerei la PULL Up diciamo via hardware, nella guida che ho letto dice che limita la corrente sul microprocessore ( cosa positiva ) ed aiuta nella gestione del debouncing che successivamente va regolato anche via software. Confermi?

Diciamo che a livello pratico non so cosa sia meglio, nel mio dispositivo la pressione di un pulsante serve ad attivare una funziona isolata che normalmente è attivata da un tasto della tastiera.
A differenza di un joystick per retroconsole io non ho necessità di avere pressioni ripetute molto ravvicinate dello stesso tasto.
Ad esempio un tasto azzurro mi inserirà la marcia avanti, questa rimarrà inserita finchè non premo il tasto nero che la disinserirà. Allo stesso modo gli altri tasti. Detto questo non so quale configurazione sia meglio, il grosso del lavoro lo fanno le leve ( potenziometri )che verranno usate in continuazione.
Andrea Luigi Gobber

gpb01

#20
Mar 24, 2019, 09:14 pm Last Edit: Mar 24, 2019, 09:15 pm by gpb01
La resistenza di pull-up/pull-down nulla ha a che vedere con il "debouncing" ... purtroppo il 90% delle guide su internet scrive delle emerite bojate.

Se vuoi evitare di compilcarti la vita, usa le pull-up interne alla MCU ed, esternamente, metti una rete R/C per fare "debouncing" come da schema che ti allego (dei tre possibili schemi che vedi devi usare il primo a sinistra, cambiando i valori rispetto a quelli indicati ... R va bene 100Ω, mentre per C metti 100nF).

Per attivare le pull-up interne, quando nel setup() dichiari i pin di input con la pinMode() usa la sintassi:

Code: [Select]
pinMode(NumeroPin, INPUT_PULLUP);
... dove NumeroPin è il numero del pin che definisci di input e INPUT_PULLUP indica che lo vuoi, appunto, in INPUT ma con la pull-up attiva.

A questo punto, se il pulsante NON è premuto, tu leggerai HIGH grazie alla pull-up, mentre quando lo premi, esso dovrà chiudere verso GND e leggerai LOW.

Spero sia tutto chiaro.

Guglielmo
Search is Your friend ... or I am Your enemy !

Andreago71

si è tutto chiaro, sei stato tempestivo e prezioso nelle risposte e nei consigli. A questo punto direi che lo schema elettrico è definito e posso cominciare la ricerca componenti e l' assemblaggio.
Andrea Luigi Gobber

Datman

Ciò che dice Guglielmo, come sempre, è vero; in questo caso, però, se non devi leggere due pressioni consecutive dello stesso tasto ma ogni pressione ripetuta è ignorata essendo in attesa di un tasto diverso, puoi non porti il problema dell'antirimbalzo. Usa le resistenze di pull-up interne con i pulsanti verso massa e basta.
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

gpb01

#23
Mar 25, 2019, 09:05 am Last Edit: Mar 25, 2019, 09:42 am by gpb01
... puoi non porti il problema dell'antirimbalzo.
Dato che male non fa ed è quello che si deve sempre fare quando si usa un pulsante su una porta logica, molto meglio NON diseducare un utente (... alle prime armi che sta imparando), che dare consigli validi si, ma solo per casi specifici ... non credi ? ? ?  ::)

Guglielmo
Search is Your friend ... or I am Your enemy !

Andreago71

DatMan la condizione che hai descritto è valida solo in parte, forse mi sono spiegato male.
 
Premendo il tasto blu avviene una commutazione verso l' avanti, quindi la leva di direzione che normalmente si trova in posizione neutra si sposta in avanti su posizione di marcia avanti. Premendo il tasto nero la leva si sposta indietro tornando su posizione neutra, premendo di nuovo il tasto nero la leva si sposta di nuovo indietro su posizione marcia indietro. I due tasti quindi attivano lo spostamento in una direzione o l' altra, quando la leva si trova all'estremità ( tutta avanti o tutta indietro ) avrò bisogno di due pressioni dello stesso tasto (non ravvicinate) per raggiungere l' opposto. Questa commutazione avviene in simulazione,  vorrei assegnare un tasto a ogni direzione eliminando di fatto la pressione dello stesso tasto due volte. Tutto questo è valido solo per i pulsanti dedicati alla marcia, gli altri pulsanti invece hanno la funzione On-OFF quindi una pressione attiva la successiva disattiva. Scusate se mi sono dilungato ma volevo chiarire il concetto della funzione.

Ora mi sorge un dubbio "meccanico". Ho comprato buona parte del materiale,  i potenziometri hanno una corsa di circa 280 gradi, diciamo che tenendo buono il punto zero io gli voglia far fare una corsa di appena 140 gradi, quindi circa la metà. Sarà possibile tramite la programmazione della funzione escludere la percentuale non usata?
Quindi assegnando la funzione al potenziometro potrò dirgli di considerare come range di funzionamento 0-100%  la corsa compresa tra 0 e 512?  Se ciò non fosse possibile dovrei girare l' asse di corsa della leva legata al potenziometro  cambiando di fatto il layout del banco.
Andrea Luigi Gobber

gpb01

#25
Mar 25, 2019, 11:25 am Last Edit: Mar 25, 2019, 11:27 am by gpb01
Un potenziometro non ha una corsa di 360° (almeno io personalmente non ne conosco), ma comunque il cursore da un lato chiude con un contatto e dall'altro chiude con l'altro quindi hai comunque l'intero range di valori di resistenza nell'intervallo del valore massimo del potenziometro.

Se tu invece dei 240° ne usi solo una parte ... dovrai via software considerare l'estremo a cui arrivi come tuo massimo e quindi rimappare il tutto in modo che dal valore minimo assunto dal potenziometro, al valore massimo, tu consideri un valore da 0% a 100% ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

Andreago71

Grazie Guglielmo era quello che supponevo, in realtà mi aspettavo che la corsa meccanica del potenziometro fosse più limitata, a conti fatti forse per il mio utilizzo sarebbero andati meglio potenziometri a scorrimento, anziché rotativi.
Andrea Luigi Gobber

Andreago71

Eccomi di nuovo al pezzo, allora ho cominciato a scrivere lo " sketch ", posso continuare qui o è meglio spostarmi sulla zona software aprendo una nuova discussione? Grazie
Andrea Luigi Gobber

Andreago71

ciao Domanda tecnica, i miei condensatori hanno una gamba lunga ed una corta, sono polarizzati? quale gamba devo collegare al negativo e quale alla resistenza? grazie
Andrea Luigi Gobber

maubarzi

Se sono quelli elettrolitici, cilindrici, dovrebbe esserci scritto. Dovresti trovare una banda su ogni lato con dentro ripetuti dei - e dall'altra parte dei +
Tipo questi:
Nessuna buona azione resterà impunita!

Preistoria -> medioevo -> rinascimento -> risorgimento -> rincoglionimento!

Go Up