roberto8303 Inserito: 16 gennaio 2015 Segnala Inserito: 16 gennaio 2015 Avrei bisogno di utilizzare arduino uno per fare questa applicazione: Ho un sensore che rileva dei pezzi metallici solo difettosi, e quindi quando esso intercetta un pezzo difettoso va allo stato alto con il suo contatto. La velocità con cui i pezzi passano è circa 2 secondi ogni lettura. Se un pezzo è difettoso dopo 80 cm c è un pistone che parte e spinge via il pezzo che arduino ha rilevato Come faccio a registrare i pezzi difettosi per poi far partire il pistone al momento giusto?
simuffa Inserita: 16 gennaio 2015 Segnala Inserita: 16 gennaio 2015 (modificato) potresti fare un registo a scorrimento con numero di bit pari al numero di pezzi tra il rilevatore e il pistone, il registro scorre in sincronismo con i pezzi, quando rileva un errore arduino inserisce 1 al posto di 0 al registro di scorrimento. il pistone verrà controllato dall'ultimo bit del registro, quando vede un 1 il pistone parte. Modificato: 16 gennaio 2015 da simuffa
walterword Inserita: 16 gennaio 2015 Segnala Inserita: 16 gennaio 2015 (modificato) il registro deve scorrere di una posizione solo sul fronte di salita dell'evento che consideri .per esempio arrivo sulla fotocellula o altro Puoi anche creare una struttura dati con dati di varia natura e poi dichairare un array di questa struttura Definisci che l'indice 0 si riferisce ad una postazione , l'indice 1 ad un'altra ect Sempre sul fronte di un evento shifti i dati .Per fare questo prima li copi dalla posizione corrente a quella successiva e poi li elimini da quella corrente Stai attento che sia sincronizzato nel senso che non intervegnano eventi che ti fanno shiftare i dati in modo errato , in questo caso oltre che al sincronismo dovresti implemetnare posizione di tabella , ossia indici di array , che non si riferiscono a posizioni fisiche della macchine ma che rimangono virtuali per permetterti di non accavallare i dati Se il pistone viene considerato in posizione di indice 3 per esempio , quando i dati arrivano li controlli e decidi di azionare il pistone in base al booelano che ne rappresenta lo stato di evacuazione , oppure al tipo del pezzo oppure ad altre informazioni contenute della struttura dati Nel caso piu semplice fai come ti dice sopra che va bene Modificato: 16 gennaio 2015 da walterword
Livio Orsini Inserita: 16 gennaio 2015 Segnala Inserita: 16 gennaio 2015 (modificato) Molto dipende da come son disposti i pezzi. Se la distanza tra un pezzo e l'altro è costante e non ci sono intervalli vuoti è sufficiente lo shift come ha indicato simuffa. Se la distanza è variabile o è possibile avere dei vuoti devi avere un encodere e creare un decontatore per ogni pezzo difettoso. Al momento della rilevazione del pezzo difettoso carichi il contatore con un valore corrispondente alla distanza tra rilevamento o posizione di scarto. Ad ogni clock il contatore deconta ed arrivato a zero comanda l'espulsore. Modificato: 16 gennaio 2015 da Livio Orsini
roberto8303 Inserita: 16 gennaio 2015 Autore Segnala Inserita: 16 gennaio 2015 sembra molto piu difficile a farsi che a dirsi... ed è proprio la mia difficolta...devo cercare qualche esempio in rete che mi faccia capire come funzionano i registri...avete qualche suggerimento? i pezzi arrivano in maniera uguale in questo caso. Però sono curioso anche di imparare il metodo per gestire i pezzi che arrivano in maniera non costante.
fisica Inserita: 16 gennaio 2015 Segnala Inserita: 16 gennaio 2015 spostare il sensore a ridosso del pistone, in modo che si elimini il problema giustamente segnalato da Livio?
simuffa Inserita: 16 gennaio 2015 Segnala Inserita: 16 gennaio 2015 ad esempio variabile byte (valori in binario) a=0 (00000000) ad ogni pezzo che passa esegui l'istruzione a=a<<1 arriva un pezzo difettoso inserisco 1 a=1 (00000001) shifto per ogni pezzo che passa dopo a=a<<1 ; a=2 (00000010) a=a<<1; a=4 (00000100) supponiamo che il pistone sia dopo tre pezzi a=a<<1; a=8 (00001000) con un operazione and posso capire quando il pezzo è davanti al pistone ed eliminarlo
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora