Sommario:

Cestino del sorter - Rileva e ordina il cestino: 9 passaggi
Cestino del sorter - Rileva e ordina il cestino: 9 passaggi

Video: Cestino del sorter - Rileva e ordina il cestino: 9 passaggi

Video: Cestino del sorter - Rileva e ordina il cestino: 9 passaggi
Video: le istituzioni dormono parte 2 2024, Dicembre
Anonim
Image
Image
Come funziona
Come funziona

Hai mai visto qualcuno che non ricicla o lo fa male?

Hai mai desiderato una macchina che riciclasse per te?

Continua a leggere il nostro progetto, non te ne pentirai!

Sorter bin è un progetto con una chiara motivazione ad aiutare il riciclaggio nel mondo. Come è noto, la mancanza di riciclaggio sta causando gravi problemi al nostro pianeta, come la scomparsa delle materie prime e la contaminazione del mare, tra gli altri.

Per questo motivo il nostro team ha deciso di sviluppare un progetto su piccola scala: un bidone smistatore in grado di separare i rifiuti in diversi recipienti a seconda che il materiale sia metallico o non metallico. Nelle versioni future, quel bidone dello smistatore potrebbe essere estrapolato su larga scala, consentendo la suddivisione dei rifiuti in tutti i diversi tipi di materiale (legno, plastica, metallo, organico…).

Poiché lo scopo principale è quello di distinguere tra metallo e non metallo, il bidone del sorter sarà dotato di sensori induttivi, ma anche di sensori a ultrasuoni per rilevare se c'è qualcosa nel bidone. Inoltre, il bidone avrà bisogno di un movimento lineare per spostare la spazzatura nei due cassoni, quindi si sceglie un motore passo-passo.

Nelle sezioni successive, questo progetto verrà spiegato passo dopo passo.

Passaggio 1: come funziona

Come funziona
Come funziona
Come funziona
Come funziona

Il cestino smistatore è stato progettato per rendere il lavoro relativamente facile per l'utente: la spazzatura deve essere introdotta attraverso il foro che si trova nella piastra superiore, il pulsante giallo deve essere premuto e il processo inizia, terminando con la spazzatura in uno dei destinatari. Ma la domanda ora è… come funziona questo processo internamente?

Una volta avviato il processo, il LED verde si accende. Quindi i sensori ad ultrasuoni, fissati nella piastra superiore tramite un supporto, iniziano il loro lavoro per determinare se c'è un oggetto all'interno della scatola o meno.

Se non è presente alcun oggetto all'interno della scatola, il LED rosso si accende e quello verde si spegne. Al contrario, se c'è un oggetto, i sensori induttivi verranno attivati per rilevare se l'oggetto è metallico o non metallico. Una volta determinato il tipo di materiale si accenderanno i led rosso e giallo e la scatola si sposterà in una direzione o in quella opposta a seconda del tipo di materiale, azionata dal motore passo-passo.

Quando la scatola arriva alla fine della corsa e l'oggetto è stato lasciato cadere nel destinatario corretto, la scatola tornerà nella posizione iniziale. Infine, con la scatola nella posizione iniziale, il LED giallo si spegnerà. Il sorter sarà pronto a ripartire con la stessa procedura. Questo processo descritto negli ultimi paragrafi è mostrato anche nell'immagine del diagramma del flusso di lavoro allegato allo Step 6:Programmazione.

Fase 2: Distinta base (BOM)

Parti meccaniche:

  • Acquistato parti per la struttura inferiore

    • Struttura metallica [Link]
    • Casella grigia [Link]
  • stampante 3d

    PLA per tutte le parti stampate (possono essere utilizzati anche altri materiali, come ABS)

  • Macchina da taglio laser

    • MDF 3mm
    • Plexiglass 4mm
  • Set di cuscinetti lineari [Link]
  • Cuscinetto lineare [Link]
  • Albero [Collegamento]
  • Supporto albero (x2) [Link]

Parti elettroniche:

  • Il motore

    Motore passo-passo lineare Nema 17 [Link]

  • Batteria

    Batteria da 12 v [Collegamento]

  • Sensori

    • 2 Sensore a ultrasuoni HC-SR04 [Link]
    • 2 sensori induttivi LJ30A3-15 [Link]
  • Microcontrollore

    1 scheda arduino UNO

  • Componenti aggiuntivi

    • Driver DRV8825
    • 3 LED: rosso, verde e arancione
    • 1 pulsante
    • Alcuni fili di salto, fili e piastre di saldatura
    • tagliere
    • Cavo USB (connessione Arduino-PC)
    • Condensatore: 100uF

Passaggio 3: progettazione meccanica

Image
Image
Disegno meccanico
Disegno meccanico
Disegno meccanico
Disegno meccanico

Nelle immagini precedenti sono mostrate tutte le parti dell'assieme.

Per la progettazione meccanica è stato utilizzato SolidWorks come programma CAD. Le diverse parti dell'assieme sono state progettate tenendo conto del metodo di fabbricazione con cui verranno fabbricate.

Parti tagliate al laser:

  • MDF 3mm

    • pilastri
    • Piatto superiore
    • Supporto per sensori a ultrasuoni
    • Supporto per sensori induttivi
    • Scatola della spazzatura
    • Supporto batteria
    • Supporto per breadboard e Arduino
  • Plexiglass 4mm

    piattaforma

Parti stampate in 3D:

  • Base dei pilastri
  • Elemento di trasmissione del movimento lineare dal motore passo-passo
  • Motore passo-passo e supporti cuscinetti
  • Parti di fissaggio alle pareti per il contenitore della spazzatura

Per la produzione di ciascuna di queste parti, i file. STEP devono essere importati nel formato corretto, a seconda della macchina che verrà utilizzata a tale scopo. In questo caso sono stati utilizzati file.dxf per la macchina da taglio laser e file.gcode per la stampante 3D (Ultimaker 2).

L'assemblaggio meccanico di questo progetto è reperibile nel file. STEP allegato in questa sezione.

Fase 4: Elettronica (scelte dei componenti)

In questa sezione verrà fatta una breve descrizione dei componenti elettronici utilizzati e una spiegazione delle scelte dei componenti.

Scheda Arduino UNO (come microcontrollore):

Hardware e software open source. Economico, facilmente disponibile, facile da codificare. Questa scheda è compatibile con tutti i componenti che abbiamo utilizzato e troverai facilmente più tutorial e forum molto utili per imparare e risolvere i problemi.

Motore (motore passo-passo lineare Nema 17):

È un tipo di motore passo-passo che divide una rotazione completa in un certo numero di passaggi. Di conseguenza, è controllato dando un certo numero di passaggi. È robusto e preciso e non necessita di sensori per controllare la sua posizione effettiva. La missione del motore è controllare il movimento della scatola che contiene l'oggetto lanciato e lasciarlo cadere nel cestino di destra.

Per scegliere il modello hai fatto dei calcoli della coppia massima richiesta aggiungendo un fattore di sicurezza. Per quanto riguarda i risultati, abbiamo acquistato il modello che copre ampiamente il valore calcolato.

Driver DRV8825:

Questa scheda viene utilizzata per controllare un motore passo-passo bipolare. Ha un controllo di corrente regolabile che consente di impostare l'uscita di corrente massima con un potenziometro e sei diverse risoluzioni di passo: passo intero, mezzo passo, 1/4 passo, 1/8 passo, 1/16 step, e 1/32-step (alla fine abbiamo usato full-step poiché non abbiamo riscontrato la necessità di passare al microstepping ma può comunque essere utilizzato per migliorare la qualità del movimento).

Sensori a ultrasuoni:

Si tratta di un tipo di sensori acustici che convertono un segnale elettrico in ultrasuoni e viceversa. Hanno usato la risposta dell'eco di un segnale acustico emesso in primo luogo per calcolare la distanza da un oggetto. Li abbiamo usati per rilevare se c'è un oggetto nella scatola o no. Sono facili da usare e forniscono una misura accurata.

Sebbene l'uscita di questo sensore sia un valore (distanza), stabilendo una soglia per determinare se un oggetto è presente o meno, trasformiamo

Sensori induttivi:

Basato sulla legge di Faraday, appartiene alla categoria dei sensori di prossimità elettronici senza contatto. Li abbiamo posizionati nella parte inferiore della scatola mobile, sotto la piattaforma in plexiglass che sostiene l'oggetto. Il loro obiettivo è distinguere tra oggetti metallici e non metallici fornendo un output digitale (0/1).

LED (verde, giallo, rosso):

La loro missione è quella di comunicare con l'utente:

-LED verde acceso: il robot è in attesa di un oggetto.

-LED rosso acceso: macchina funzionante, non si possono lanciare oggetti.

-LED giallo acceso: viene rilevato un oggetto.

Batteria da 12 V o alimentazione da 12 V + alimentazione USB da 5 V:

È necessaria una sorgente di tensione per alimentare i sensori e il motore passo-passo. Per alimentare Arduino è necessaria una fonte di alimentazione da 5 V. Questo può essere fatto tramite la batteria da 12 V, ma è meglio avere una fonte di alimentazione separata da 5 V per Arduino (ad esempio con un cavo USB e un adattatore telefonico collegato a una fonte di alimentazione o a un computer).

Problemi che abbiamo riscontrato:

  • Rilevamento del sensore induttivo, non abbiamo ottenuto la precisione desiderata in quanto a volte un oggetto metallico mal posizionato non viene percepito. Ciò è dovuto a 2 limitazioni:

    • L'area coperta dai sensori all'interno della piattaforma quadrata rappresenta meno del 50% di essa (quindi non è possibile rilevare oggetti di piccole dimensioni). Per risolverlo si consiglia di utilizzare 3 o 4 sensori induttivi per garantire la copertura di oltre il 70% dell'area.
    • La distanza di rilevamento dei sensori è limitata a 15mm quindi ci siamo trovati costretti ad utilizzare una pregiata piattaforma in plexiglass. Questo può anche essere un'altra limitazione nel rilevare oggetti con una forma strana.
  • Rilevazione ad ultrasuoni: ancora, oggetti sagomati in modo complesso danno problemi in quanto il segnale emesso dai sensori viene riflesso male e ritorna più tardi del dovuto al sensore.
  • Batteria: abbiamo qualche problema nel controllare la corrente erogata dalla batteria e per risolverlo abbiamo finalmente utilizzato una fonte di alimentazione. Tuttavia, è possibile eseguire altre soluzioni come l'utilizzo di un diodo.

Passaggio 5: elettronica (connessioni)

Elettronica (connessioni)
Elettronica (connessioni)
Elettronica (connessioni)
Elettronica (connessioni)

Questa sezione mostra il cablaggio dei diversi componenti messi insieme. Mostra anche a quale pin dell'Arduino è collegato ciascun componente.

Passaggio 6: programmazione

Programmazione
Programmazione

Questa sezione spiegherà la logica di programmazione alla base della macchina Bin Sorting.

Il programma è suddiviso in 4 fasi, che sono le seguenti:

  1. Inizializza il sistema
  2. Verifica presenza oggetti
  3. Controlla il tipo di oggetto presente
  4. Sposta casella

Per una descrizione dettagliata di ogni passaggio, vedere di seguito:

Passaggio 1: inizializzare il sistema

Pannello LED (3) - set Calibrazione LED (rosso) ALTO, LED Pronto (verde) BASSO, Oggetto presente (giallo) BASSO

Controllare che il motore passo-passo sia nella posizione iniziale

  • Esegui il test del sensore a ultrasuoni per misurare la distanza dal lato alla parete della scatola
    • Posizione iniziale == 0 >> Aggiorna i valori di LED pronto ALTO e LED di calibrazione BASSO -> passaggio 2
    • Posizione iniziale != 0 >> valore di lettura digitale dei sensori a ultrasuoni e in base ai valori del sensore:

      • Aggiorna valore motore in movimento LED HIGH.
      • Esegui la casella di spostamento finché il valore di entrambi i sensori a ultrasuoni non è < valore di soglia.

Aggiorna valore della posizione iniziale = 1 >> Aggiorna valore LED Pronto ALTO e motore in movimento BASSO e Calibrazione BASSO >> passaggio 2

Passo 2

Verifica presenza oggetti

Esegui il rilevamento di oggetti ad ultrasuoni

  • Oggetto presente == 1 >> Aggiorna valore Oggetto presente LED ALTO >> Step 3
  • Oggetto presente == 0 >> Non fare nulla

Passaggio 3

Controlla il tipo di oggetto presente

Esegui rilevamento sensore induttivo

  • stato induttivo = 1 >> Passaggio 4
  • stato induttivo = 0 >> Passaggio 4

Passaggio 4

Sposta casella

Esegui il funzionamento del motore

  • stato induttivo == 1

    Aggiorna il LED in movimento del motore ALTO >> Fai muovere il motore a sinistra, (aggiorna la posizione iniziale = 0) ritarda e torna indietro a destra >> Passaggio 1

  • stato induttivo == 0

    Aggiorna il motore in movimento LED ALTO >> Fai muovere il motore a destra, (aggiorna la posizione iniziale = 0), ritarda e torna indietro a sinistra >> Passaggio 1

Funzioni

Come si evince dalla logica di programmazione, il programma lavora eseguendo funzioni con uno scopo preciso. Ad esempio, il primo passo è inizializzare il sistema che contiene la funzione "Verifica che il motore passo-passo sia nella posizione iniziale". Il secondo passaggio verifica quindi la presenza dell'oggetto che di per sé è un'altra funzione (la funzione "Rilevamento oggetti ad ultrasuoni"). E così via.

Dopo il passaggio 4, il programma è stato eseguito completamente e tornerà al passaggio 1 prima di essere eseguito nuovamente.

Le funzioni utilizzate nel corpo principale sono definite di seguito.

Sono rispettivamente:

  • test induttivo()
  • moveBox (stato induttivo)
  • rilevamento di oggetti ad ultrasuoni()

// Controlla se l'oggetto è metallico o no

bool inductiveTest() { if(digitalRead(inductiveSwitchRight) == 1 || digitalRead(inductiveSwitchLeft == 0)) { return true; else{ return false; } } void moveBox(bool inductiveState) { // Box va a sinistra quando viene rilevato metallo e inductiveState = true if (inductiveState == 0){ stepper.moveTo(steps); // posizione casuale alla fine per il test stepper.runToPosition(); ritardo(1000); stepper.moveTo(0); stepper.runToPosition(); ritardo(1000); } else if (inductiveState == 1) { stepper.moveTo(-steps); // posizione casuale alla fine per il test stepper.runToPosition(); ritardo(1000); stepper.moveTo(0); // posizione casuale alla fine per il test stepper.runToPosition(); ritardo(1000); } } booleano ultrasonicObjectDetection() { durata lunga1, distanza1, durataTemp, distanzaTemp, mediaDistance1, mediaDistanceTemp, mediaDistanceOlympian1; // Definisce il numero di misurazioni da eseguire a lunga distanzaMax = 0; lunga distanza Min = 4000; lunga distanzaTotale = 0; for (int i=0; i distanzaMax) { distanzaMax = distanzaTemp; } if (distanzaTemp <distanzaMin) { distanzaMin = distanzaTemp; } distanzaTotale+= distanzaTemp; } Serial.print ("Sensor1 maxDistance "); Serial.print (distanzaMax); Serial.println("mm"); Serial.print ("Sensor1 minDistance "); Serial.print (distanzaMin); Serial.println("mm"); // Calcola la distanza media dalle letture mediaDistance1 = distanceTotal/10; Serial.print ("Sensor1 mediaDistance1 "); Serial.print (mediaDistance1); Serial.println("mm"); // Rimuove i valori massimo e minimo delle misurazioni per evitare letture errate meanDistanceTemp = distanceTotal - (distanceMax+distanceMin); mediaDistanceOlympian1 = mediaDistanceTemp/8; Serial.print ("Sensor1 mediaDistanceOlympian1 "); Serial.print (mediaDistanceOlympian1); Serial.println("mm");

// Ripristina i valori della temperatura

distanzaTotale = 0; distanzaMax = 0; distanzaMin = 4000; durata lunga2, distanza2, distanza media2, distanza mediaOlympian2; // Definisce il numero di misurazioni da eseguire per (int i=0; i distanceMax) { distanceMax = distanceTemp; } if (distanzaTemp <distanzaMin) { distanzaMin = distanzaTemp; } distanzaTotale+= distanzaTemp; } Serial.print ("Sensor2 maxDistance "); Serial.print (distanzaMax); Serial.println("mm"); Serial.print ("Sensor2 minDistance "); Serial.print (distanzaMin); Serial.println("mm"); // Calcola la distanza media dalle letture mediaDistance2 = distanceTotal/10; Serial.print ("Sensor2 mediaDistance2 "); Serial.print (mediaDistance2); Serial.println("mm"); // Rimuove i valori massimo e minimo delle misurazioni per evitare letture errate meanDistanceTemp = distanceTotal - (distanceMax+distanceMin); mediaDistanceOlympian2 = mediaDistanceTemp/8; Serial.print ("Sensor2 mediaDistanceOlympian2 "); Serial.print (mediaDistanceOlympian2); Serial.println("mm"); // Reimposta i valori temporanei distanceTotal = 0; distanzaMax = 0; distanzaMin = 4000; if (averageDistanceOlympian1 + mediaDistanceOlympian2 < emptyBoxDistance) { return true; } else { return false; } }

Corpo principale

Il corpo principale contiene la stessa logica spiegata all'inizio di questa sezione, ma scritta in codice. Il file è disponibile per il download di seguito.

Avvertimento

Sono stati eseguiti molti test per trovare le costanti: emptyBoxDistance, step e Maximumspeed e accelerazione nel setup.

Passaggio 7: possibili miglioramenti

Possibili miglioramenti
Possibili miglioramenti

- Abbiamo bisogno di feedback sulla posizione della scatola per assicurarci che sia sempre nelle posizioni giuste per prelevare l'oggetto all'inizio. Sono disponibili diverse opzioni per risolvere il problema, ma una semplice potrebbe essere quella di copiare il sistema che troviamo nelle stampanti 3D utilizzando un interruttore a un'estremità del percorso della scatola.

-A causa dei problemi che abbiamo riscontrato con il rilevamento ad ultrasuoni, possiamo cercare alcune alternative per quella funzione: laser KY-008 e rilevatore laser (immagine), sensori capacitivi.

Passaggio 8: fattori limitanti

Questo progetto funziona come descritto nelle istruzioni ma è necessario prestare particolare attenzione durante i seguenti passaggi:

Taratura dei sensori a ultrasuoni

L'angolo con cui sono posti i sensori ad ultrasuoni rispetto all'oggetto che devono rilevare è di cruciale importanza per il corretto funzionamento del prototipo. Per questo progetto è stato scelto un angolo di 12,5° rispetto alla normale per l'orientamento dei sensori a ultrasuoni, ma l'angolo migliore dovrebbe essere determinato sperimentalmente registrando le letture della distanza utilizzando vari oggetti.

Fonte di potere

La potenza richiesta per il driver del motore passo-passo DRV8825 è 12V e tra 0,2 e 1 Amp. L'arduino può anche essere alimentato da un massimo di 12V e 0,2 Amp utilizzando l'ingresso jack su Arduino. Tuttavia, è necessario prestare particolare attenzione se si utilizza la stessa fonte di alimentazione sia per Arduino che per il driver del motore passo-passo. Se alimentato da una normale presa di corrente utilizzando ad esempio un alimentatore da 12 V/2 A CA/CC, dovrebbero esserci un regolatore di tensione e diodi nel circuito prima che l'alimentazione venga alimentata all'arduino e al driver del motore passo-passo.

A casa della scatola

Sebbene questo progetto utilizzi un motore passo-passo che in condizioni normali ritorna alla sua posizione iniziale con elevata precisione, è buona norma disporre di un meccanismo di homing in caso di errore. Il progetto così com'è non ha un meccanismo di homing ma è abbastanza semplice implementarne uno. Per questo, dovrebbe essere aggiunto un interruttore meccanico nella posizione iniziale della scatola in modo tale che quando la scatola colpisce l'interruttore, sappia che è nella sua posizione iniziale.

Sintonizzazione del driver passo-passo DRV8825

Il driver passo-passo richiede la messa a punto per funzionare con il motore passo-passo. Questo viene fatto sperimentalmente ruotando il potenziometro (vite) sul chip DRV8825 in modo che venga fornita la quantità appropriata di corrente al motore. Quindi, ruotando leggermente la vite del potenziometro fino a quando il motore non agisce in modo snello.

Passaggio 9: crediti

Questo progetto è stato svolto nell'ambito di un corso di meccatronica durante l'anno accademico 2018-2019 per il Master Bruface presso l'Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

Gli autori sono:

Maxime Decleire

Lidia Gomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Un ringraziamento speciale al nostro supervisore Albert de Beir che ci ha aiutato anche durante il progetto.

Consigliato: