Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Arduino E Scorrimento A Bit


Messaggi consigliati

Inserito:

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?


Inserita: (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: da simuffa
Inserita: (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: da walterword
Inserita: (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: da Livio Orsini
Inserita:

sembra molto piu difficile a farsi che a dirsi... :lol: 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.

Inserita:

spostare il sensore a ridosso del pistone, in modo che si elimini il problema giustamente segnalato da Livio?

Inserita:

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

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...