Salve..premetto che sono un ragazzo alle prime armi..vorrei realizzare un contatore su arduino che va avanti soltanto quando gli arriva un impulso..nel senso che vorrei che chiudendo il contatto tra il pin e i 5V il contatore avanzi di un solo numero alla volta..e non vada avanti da solo..vorrei che andasse avanti solo quando apro e richiudo il contatto..spero di essere stato abbastanza chiaro..grazie in anticipo
Controli se c' é un cambio di stato usando una variabile di stato dove memorizzi lo stato del pin precedente.
int statoPin =0;
int readPin = 0;
int contatore=0;
int pin =10;
setup()
{
pinMode(pin, INPUT);
}
loop()
{
readPin=digitalread(pin); // legge pin; HIGH se premuto
if(readPin > statoPin) //prima volta tasto premuto
{
contatore ++;
statoPin = readPin;
}
if(readPin < statoPin) // prima volta tasto rilasciato
{
statoPin = readPin;
}
}
Ciao Uwe
Francesco2096:
Salve..premetto che sono un ragazzo alle prime armi..vorrei realizzare un contatore su arduino che va avanti soltanto quando gli arriva un impulso..nel senso che vorrei che chiudendo il contatto tra il pin e i 5V il contatore avanzi di un solo numero alla volta..e non vada avanti da solo..vorrei che andasse avanti solo quando apro e richiudo il contatto..spero di essere stato abbastanza chiaro..grazie in anticipo
dici "troppo poco"
chi o che cosa fa arrivare l'impulso, un comune pulsante comandato da un umano?
chi o che cosa fa arrivare l'impulso, un dispositivo meccanico?
chi o che cosa fa arrivare l'impulso, un dispositivo elettronico/encoder rotativo?
dove vuoi visualizzare il totalizzatore su un display 7 segmenti o su un lcd e simili?
suppongo ci vuole anche un pulsante di azzeramento?
etc...
su pulsanti e dispositivi meccanici ci vuole il debounce
Ho provato col programma di Uwe ma non mi funziona affatto >.< in pratica il contatore diciamo che funziona al contrario.. va avanti da solo e si ferma solo quando io premo il pulsante..l'ho verificato con il monitor seriale del software aggiungendo "Serial.println(contatore)" al tuo skatch.
Per gingardu l'impulso arriva attraverso un semplice pulsante comandato da me, per quanto riguarda il risultato andrebbe bene anche il monitor seriale del software di arduino, anche se il mio obbiettivo finale sarà quello di visualizzarlo su un display a 7 segmenti.
Grazie mille a entrambi
Un display a 7 segmenti ti occuperà un pò di pin. 7 pin per i segmenti e 4 pin per dirgli quale cifra comandare.
Qui un tutorial: http://www.instructables.com/id/4-Digit-7-Segment-LED-Display-Arduino/
Schemi per collegamenti (anche altri): ABC - Arduino Basic Connections - Megatopic - Arduino Forum
Scheda 8 e 9. La 8 con un chip per diminuire il numero di pin usati.
Francesco2096:
Ho provato col programma di Uwe ma non mi funziona affatto >.< in pratica il contatore diciamo che funziona al contrario.. va avanti da solo e si ferma solo quando io premo il pulsante..l'ho verificato con il monitor seriale del software aggiungendo "Serial.println(contatore)" al tuo skatch.Per gingardu l'impulso arriva attraverso un semplice pulsante comandato da me, per quanto riguarda il risultato andrebbe bene anche il monitor seriale del software di arduino, anche se il mio obbiettivo finale sarà quello di visualizzarlo su un display a 7 segmenti.
Grazie mille a entrambi
Hai messo una resistenza pullup o pulldown?
aggiunta:
Devi fare un debounce. aggiungi un piccolo ritardo in entrambi gli if.
basta un "delay(5);"
Ciao Uwe
Francesco2096:
Ho provato col programma di Uwe ma non mi funziona affatto >.< in pratica il contatore diciamo che funziona al contrario.. va avanti da solo e si ferma solo quando io premo il pulsante..l'ho verificato con il monitor seriale del software aggiungendo "Serial.println(contatore)" al tuo skatch.Per gingardu l'impulso arriva attraverso un semplice pulsante comandato da me, per quanto riguarda il risultato andrebbe bene anche il monitor seriale del software di arduino, anche se il mio obbiettivo finale sarà quello di visualizzarlo su un display a 7 segmenti.
Grazie mille a entrambi
ok quello che chiedi è semplice devi solo decidere più cose, perché cosi come hai scritto hai scritto a "metà"
quante cifre (3 bastano ?)
devi mettere un altro pulsante per azzerare il conteggio?
devi memorizzare l'ultimo conteggio per poter ripartire da dove ha lasciato?
Buongiorno questo è il mio primo post.
Sono un vecchio diplomato elettronico, e negli ultimi tempi, per hobby, mi sono dedicato a sistemi domotici basati su plc.
Oggi per un amico devo realizzare un circuito per la gestione di macchinette che distribuiscono erogazione di bevanda (direttamente dal beccuccio). Non lo posso fare con un plc in quanto i moduli sono abbastanza ingombranti (due pacchetti di sigaretta l'uno sopra l'altro) e il costo si aggirerebbe all'incirca sui 100 euro. La gestione consiste nel definire un numero di erogazioni (da 150 in su, programmabili di volta in volta). Il conteggio dovrebbe avanzare ogni qualvolta viene premuto l'interruttore dell'erogazione, e raggiunto il numero definito non alimentare più l'elettropompa (alimentata a 220V).
INTERRUTTORE ON (SOTTO IL NUMERO DEFINITO) ------------ E/P ON
INTERRUTTORE ON (SUPERATO IL NUMERO DEFINITO) --------E/P OFF
Questo per evitare che i gestori possano distribuire bevande acquistate altrove.
Da voi volevo sapere se con arduino posso fare tutto ciò, cosa mi servirebbe di extra materiale e quanto potrei spendere per realizzare il tutto.
N.B. al momento non posseggo ancora Arduino
Grazie a dopo
Grazie Pablos,
come dicevo sul mondo Arduino conosco poco e per tale motivo scrivevo per sapere qualcosa di più.
Le mie perplessità sono (in virtù del fatto che le tensioni in gioco sono a 220Vac):
posso collegare direttamente un interruttore
posso collegare direttamente una E/P
Grazie
east71:
Grazie Pablos,
come dicevo sul mondo Arduino conosco poco e per tale motivo scrivevo per sapere qualcosa di più.Le mie perplessità sono (in virtù del fatto che le tensioni in gioco sono a 220Vac):
posso collegare direttamente un interruttore
posso collegare direttamente una E/P
Grazie
Arduino è una scheda elettronica che lavora a 5V CC (o 3.3V alcuni modelli come alcune micro/mini).
Perciò non puoi collegare i 220V. Puoi collegare una relè pilotabile a 5V CC che poi attacca/stacca il 220V della E/P.
Per l'interruttore che intendi? Un bottone (push button) di solito anche quello è in CC. Oppure una pulsantiera per selezionare le bevande si collega ad una scheda in CC.
Forse ho sbagliato ad esprimermi. Il distributore non distribuisce lattine o merendine, ma bevande sfuse. Direttamente nel bicchiere.
il circuito al momento è semplicissimo:
220V E/POMPA
_____ INT ALIM_____INT EROGAZIONE_____________
Se i due interruttori (non pulsanti) sono ON l'E/P è alimentata
Pensavo che arduino si potesse inserire tra erogazione/Epompa, sicuramente con un relè prima della stessa pompa
Ma forse non ho capito di che tipo di macchina parliamo, ci vanno monete? chiavette prepagate? c'è una pulsantiera per scegliere il tipo di bevanda o è una macchina del caffè dove tu fornisci le cialde perchè questa frase mi lascia perplesso e non la capisco
Piazza un piccolo relè 220v in parallelo all'elettropompa e mandi un contatto pulito ad arduino, ora non so quante volte la pompa si avvia durante una singola erogazione, penso una sola volta per 20-30 secondi se invece si avvia 2 volte conti 300 impulsi.
La distribuzione non è a pagamento. Il gestore distribuisce bevande gratuitamente (è una mensa), ma acquista i fusti, compreso l'intero distributore in comodato d'uso, dal mio amico. Il sistema serve a non far utilizzare fusti di altri distributori (che sicuramente costeranno di meno, a causa dell'esenza del comodato d'uso gratuito).
Se un fusto riempie circa 150-170 bicchieri, se io metto un limite di 200, oltri il quale non eroga più.
Io il conteggio lo volevo fare per quante volte veviva premuto il tasto di erogazione, fino a 200 l'elettropompa si attivava, succesivamente no.
Sicuramente la scheda deve memorizzare il conteggio, azzerabile solo dal ragazzo che porta le ricariche.
Si può fare, anche in maniera abbastanza semplice.
Sostituisci l'interruttore di erogazione con un interruttore a due vie.
Una via alimenta la pompa, l'altra via andrà alla scheda che così potrà conteggiare le erogazioni ma anche i TEMPI DI EROGAZIONE e di conseguenza i LITRI EROGATI.
Memorizzi sulla EEPROM così rimane anche se staccano la spina.
Appena superi la soglia, la scheda stacca un relè ed inibisce così la pompa.
Per il RESET... dipende da cosa vuoi fare, diciamo che le possibilità sono molteplici:
- sensore RFID
- piccolo software su tablet via USB
- interruttore a chiave
- chiave elettronica (può anche essere un semplice resistore)
- il classico antico pulsante nascosto da premere per x secondi...
Grazie Paulus
Sostituisci l'interruttore di erogazione con un interruttore a due vie.
ma non posso utilizzare direttamente l'interruttore ? invece di arrivare direttamente all'E/P passa per un input della scheda Arduino, mentre l'uscita va alla scheda relè indicata in precedenza per arrivare all'E/P
Per il reset, ma anche per variare il limite, preferirei un sw dedicato
Certo, puoi fare anche come dici tu, per l'interruttore, puoi collegarlo soltanto all'Arduino.
L'Arduino a sua volta tramite un transistor comanda il relè che chiude la 230 V sull'elettropompa.
Un circuito molto semplice. Volendo, con pochi euro, puoi anche aggiungere un display alfanumerico LCD.
Per il reset e per il limite, invece, puoi benissimo preparare un programma dedicato che invia tramite USB alcune sequenze per resettare, ecc. Ti serve anche un connettore USB da montare sulla macchina, per evitare che sia necessario aprirla ogni volta.
Potresti anche mettere altri moduli wireless ma il prezzo aumenta.
paulus1969:
Si può fare, anche in maniera abbastanza semplice.
Sostituisci l'interruttore di erogazione con un interruttore a due vie.
Una via alimenta la pompa, l'altra via andrà alla scheda che così potrà conteggiare le erogazioni ma anche i TEMPI DI EROGAZIONE e di conseguenza i LITRI EROGATI.
Memorizzi sulla EEPROM così rimane anche se staccano la spina.
Appena superi la soglia, la scheda stacca un relè ed inibisce così la pompa.
Per il RESET... dipende da cosa vuoi fare, diciamo che le possibilità sono molteplici:
- sensore RFID
- piccolo software su tablet via USB
- interruttore a chiave
- chiave elettronica (può anche essere un semplice resistore)
- il classico antico pulsante nascosto da premere per x secondi...
Anche io ho rializzato una cosa del genere, postero lo skecth promesso :)... devo anche io realizzare un contatore per macchinette per orogazioni bevande, per ora il mio:
- conta ogni 'ON' ho inserito un ritardo di On giusto per evitare, push involontari o pulizia del condotto di erogazione 8)
- avvisa con un uscita 'On' programmabile, 10 erogazioni prima, in modo che il gestore chiama il fornitore prima di rimanere senza erogatore delle bevande 8)
- stacca 'Off' al raggiungiemto del numero di erogazioni.
- Per ora resetto arduino ogni volta che vado a consegnare il fusto.
Pero' vorrei creare un reset Rfid, e un contatore totale da porte visualizzare, stavo pensando ad un wifi peer to peer su html che possa fare le 2 cose, oooh!!!... :~
Ma il contatore ad impulsi sarebbe questo?