Taula de continguts:
- Pas 1: Com funciona
- Pas 2: llista de materials (BOM)
- Pas 3: Disseny mecànic
- Pas 4: electrònica (opcions de components)
- Pas 5: electrònica (connexions)
- Pas 6: Programació
- Pas 7: possibles millores
- Pas 8: Factors limitants
- Pas 9: Crèdits
Vídeo: Paperera de classificació: detecteu i ordeneu la paperera: 9 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Heu vist alguna vegada algú que no recicli o ho faci de manera dolenta?
Heu desitjat alguna vegada una màquina que us reciclés?
Seguiu llegint el nostre projecte, no us penedireu!
Sorter bin és un projecte amb una clara motivació d’ajudar al reciclatge al món. Com se sap, la manca de reciclatge està causant greus problemes al nostre planeta, com la desaparició de matèries primeres i la contaminació del mar, entre d’altres.
Per aquest motiu, el nostre equip ha decidit desenvolupar un projecte a petita escala: una paperera classificadora que sigui capaç de separar la brossa en diferents receptors segons si el material és metàl·lic o no metàl·lic. En versions futures, aquest contenidor classificador es podria extrapolar a gran escala, permetent la divisió de la brossa en tot tipus de material (fusta, plàstic, metall, orgànic …).
Atès que el propòsit principal és distingir entre metall o no metall, la paperera classificadora estarà equipada amb sensors inductius, però també amb sensors ultrasònics per tal de detectar si hi ha alguna cosa a la paperera. A més, la paperera necessitarà un moviment lineal per traslladar les escombraries a les dues caixes, de manera que es tria un motor pas a pas.
A les següents seccions, aquest projecte s’explicarà pas a pas.
Pas 1: Com funciona
La paperera classificadora s’ha dissenyat per facilitar la feina a l’usuari: la brossa s’ha d’introduir pel forat que es col·loca a la placa superior, s’ha de prémer el botó groc i s’inicia el procés, acabant amb la brossa en una. dels destinataris. Però la pregunta ara és … com funciona aquest procés internament?
Un cop iniciat el procés, el LED verd s’encén. A continuació, els sensors d’ultrasons, units a la placa superior mitjançant un suport, comencen el seu treball per determinar si hi ha o no un objecte dins de la caixa.
Si no hi ha cap objecte dins de la caixa, el LED vermell s’encén i el verd s’apaga. Per contra, si hi ha un objecte, s’activaran els sensors inductius per tal de detectar si l’objecte és metàl·lic o no metàl·lic. Un cop determinat el tipus de material, s’encenen els LED vermells i grocs i la caixa es desplaçarà cap a una direcció o la contrària en funció del tipus de material, propulsat pel motor pas a pas.
Quan la caixa arribi al final del traç i l'objecte s'hagi deixat caure al destinatari correcte, la caixa tornarà a la posició inicial. Finalment, amb la caixa a la posició inicial, el LED groc s’apagarà. El classificador estat estarà llest per començar de nou amb el mateix procediment. Aquest procés descrit als darrers paràgrafs també es mostra a la imatge del diagrama de flux de treball adjunt al Pas 6: Programació.
Pas 2: llista de materials (BOM)
Peces mecàniques:
-
Parts comprades per a l'estructura inferior
- Estructura metàl·lica [Enllaç]
- Capsa gris [enllaç]
-
Impressora 3D
PLA per a totes les parts impreses (també es poden utilitzar altres materials, com ara ABS)
-
Màquina de tall per làser
- MDF de 3 mm
- Plexiglass de 4 mm
- Conjunt de coixinets lineals [Enllaç]
- Rodament lineal [Enllaç]
- Eix [enllaç]
- Porta eix (x2) [Enllaç]
Peces electròniques:
-
Motor
Motor lineal pas a pas Nema 17 [Enllaç]
- Pila
Bateria de 12 v [enllaç]
-
Sensors
- 2 Sensor d'ultrasons HC-SR04 [Enllaç]
- 2 sensors inductius LJ30A3-15 [Enllaç]
-
Microcontrolador
1 placa UNO arduino
-
Components addicionals
- Controlador DRV8825
- 3 LED: vermell, verd i taronja
- 1 botó
- Alguns cables de salt, cables i plaques de soldadura
- Taula de pa
- Cable USB (connexió Arduino-PC)
- Condensador: 100uF
Pas 3: Disseny mecànic
A les imatges anteriors es mostren totes les parts del conjunt.
Per al disseny mecànic, SolidWorks s'ha utilitzat com a programa CAD. Les diferents parts del conjunt s'han dissenyat tenint en compte el mètode de fabricació que fabricaran.
Parts tallades per làser:
-
MDF de 3 mm
- Pilars
- Plat superior
- Suport de sensors ultrasònics
- Suport de sensors inductius
- Caixa d’escombraries
- Suport de bateria
- Suport de taulers de pa i Arduino
-
Plexiglass de 4 mm
Plataforma
Parts impreses en 3D:
- Base de pilars
- Element de transmissió del moviment lineal des del motor pas a pas
- Motor pas a pas i suports de coixinets
- Peces de fixació de parets per a la paperera
Per a la fabricació de cadascuna d'aquestes parts, els fitxers. STEP s'han d'importar al format correcte, en funció de la màquina que s'utilitzarà per a aquest propòsit. En aquest cas, s’han utilitzat fitxers.dxf per a la màquina de tall per làser i fitxers.gcode per a la impressora 3D (Ultimaker 2).
El conjunt mecànic d’aquest projecte es troba al fitxer. STEP adjunt en aquesta secció.
Pas 4: electrònica (opcions de components)
En aquesta secció, es farà una breu descripció dels components electrònics utilitzats i una explicació de les eleccions dels components.
Placa Arduino UNO (com a microcontrolador):
Programari i maquinari de codi obert. Barat, fàcilment disponible, fàcil de codificar. Aquest tauler és compatible amb tots els components que hem utilitzat i fàcilment trobareu diversos tutorials i fòrums molt útils per aprendre i resoldre problemes.
Motor (motor pas a pas lineal Nema 17):
És un tipus de motor pas a pas que divideix una rotació completa en un nombre determinat de passos. Com a conseqüència, es controla donant un nombre determinat de passos. És robust i precís i no necessita cap sensor per controlar la seva posició real. La missió del motor és controlar el moviment de la caixa que conté l’objecte llançat i deixar-lo caure a la paperera dreta.
Per triar el model, heu fet alguns càlculs del parell màxim necessari per afegir un factor de seguretat. Pel que fa als resultats, hem comprat el model que cobreix en gran mesura el valor calculat.
Controlador DRV8825:
Aquesta placa s’utilitza per controlar un motor pas a pas bipolar. Té un control de corrent ajustable que us permet configurar la sortida de corrent màxima amb un potenciòmetre, així com sis resolucions de pas diferents: pas complet, mig pas, 1/4 de pas, 1/8 de pas, 1 / 16- step i 1/32-step (finalment vam utilitzar full-step ja que no vam trobar cap necessitat d'anar al microstepping, però es pot utilitzar per millorar la qualitat del moviment).
Sensors d'ultrasons:
Es tracta d’un tipus de sensors acústics que converteixen un senyal elèctric en ultrasons i viceversa. Van utilitzar la resposta d'eco d'un senyal acústic emès en primer lloc per calcular la distància a un objecte. Els hem utilitzat per detectar si hi ha un objecte a la caixa o no. Són fàcils d’utilitzar i proporcionen una mesura precisa.
Tot i que la sortida d’aquest sensor és un valor (distància), establint un llindar per determinar si hi ha o no un objecte, transformem
Sensors inductius:
Basat en la llei de Faraday, pertany a la categoria de sensor de proximitat electrònic sense contacte. Els hem situat a la part inferior de la caixa mòbil, sota la plataforma de plexiglàs que suporta l'objecte. El seu objectiu és diferenciar entre objectes metàl·lics i no metàl·lics donant una sortida digital (0/1).
LED (verd, groc, vermell):
La seva missió és comunicar-se amb l'usuari:
-LED verd encès: el robot espera un objecte.
- LED vermell encès: màquina que funciona, no es pot llançar cap objecte.
-LED groc encès: es detecta un objecte.
Bateria de 12V o font d'alimentació de 12V + 5V d'alimentació USB:
Es necessita una font de tensió per alimentar els sensors i el motor pas a pas. Es necessita una font d'alimentació de 5V per alimentar l'Arduino. Això es pot fer mitjançant la bateria de 12V, però és millor tenir una font d'alimentació de 5V per a l'Arduino (com ara amb un cable USB i un adaptador de telèfon connectats a una font d'alimentació o a un ordinador).
Problemes que hem trobat:
-
En detectar el sensor inductiu, no hem obtingut la precisió desitjada ja que de vegades no es percep un objecte metàl·lic mal posicionat. Això es deu a dues limitacions:
- L'àrea coberta pels sensors dins de la plataforma quadrada en representa menys del 50% (de manera que no es poden detectar objectes petits). Per solucionar-ho, es recomana utilitzar 3 o 4 sensors inductius per assegurar que es cobreix més del 70% de la superfície.
- La distància de detecció dels sensors està limitada a 15 mm, de manera que ens hem vist obligats a utilitzar una fina plataforma de plexiglàs. Aquesta també pot ser una altra limitació per detectar objectes amb una forma estranya.
- Detecció per ultrasons: de nou, els objectes amb forma complexa donen problemes ja que el senyal emès pels sensors es reflecteix malament i torna al sensor més tard del que hauria de fer.
- Bateria: tenim alguns problemes per controlar el corrent subministrat per la bateria i, per resoldre-la, finalment hem utilitzat una font d'alimentació. No obstant això, es poden realitzar altres solucions com l'ús d'un díode.
Pas 5: electrònica (connexions)
Aquesta secció mostra el cablejat dels diferents components posats en conjunt. També mostra a quin pin de l'Arduino està connectat cada component.
Pas 6: Programació
En aquesta secció s’explicarà la lògica de programació que hi ha darrere de la màquina de classificació de contenidors.
El programa es divideix en 4 passos, que són els següents:
- Inicialitza el sistema
- Comprovar la presència d'objectes
- Comproveu el tipus d'objecte present
- Move Box
Per obtenir una descripció detallada de cada pas, vegeu a continuació:
Pas 1 Inicialitzeu el sistema
Tauler LED (3): configuració LED de calibració (vermell) ALT, LED llest (verd) BAIX, objecte present (groc) BAIX
Comproveu que el motor pas a pas estigui a la posició inicial
- Feu una prova del sensor d’ultrasons per mesurar la distància del costat a la paret de la caixa
- Posició inicial == 0 >> Actualitza els valors de Ready LED HIGH i LED de calibració BAIX -> pas 2
-
Posició inicial! = 0 >> valor de lectura digital dels sensors d'ultrasons i basat en els valors del sensor:
- Actualitza el valor del LED en moviment del motor ALT.
- Executeu la caixa de moviment fins que el valor dels dos sensors d'ultrasons sigui <valor llindar.
Actualitza el valor de la posició inicial = 1 >> Actualitza el valor de LED Ready HIGH i el motor es mou BAIX i Calibra BAIX >> pas 2
Pas 2
Comprovar la presència d'objectes
Executeu la detecció d’objectes per ultrasons
- Objecte present == 1 >> Actualitza el valor del LED d'objecte present ALT >> Pas 3
- Objecte present == 0 >> No feu res
Pas 3
Comproveu el tipus d'objecte present
Executeu la detecció del sensor inductiu
- inductiveState = 1 >> Pas 4
- inductiveState = 0 >> Pas 4
Pas 4
Move Box
Feu funcionar el motor
-
inductiveState == 1
Actualitzeu el LED de moviment del motor ALT >> Feu que el motor es mogui cap a l'esquerra (actualitzeu la posició inicial = 0) endarrereu-lo i torneu a la dreta cap a la dreta >> Pas 1
-
inductiveState == 0
Actualitza el LED en moviment del motor ALT >> Fes que el motor es mogui cap a la dreta (actualitza la posició inicial = 0), retarda i torna cap a l'esquerra >> Pas 1
Funcions
Com es pot veure a la lògica de programació, el programa funciona executant funcions amb un objectiu específic. Per exemple, el primer pas és inicialitzar el sistema que conté la funció "Comprova que el motor pas a pas estigui a la posició inicial". A continuació, el segon pas comprova la presència d'objectes que en si mateix són una altra funció (la funció "Detecció d'objectes per ultrasons"). I així successivament.
Després del pas 4, el programa s'ha executat completament i tornarà al pas 1 abans de tornar a executar-se.
Les funcions utilitzades al cos principal es defineixen a continuació.
Són respectivament:
- inductiuTest ()
- moveBox (inductiveState)
- ultrasonicObjectDetection ()
// Comproveu si l’objecte és metàl·lic o no
bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true; else {return false; }} void moveBox (bool inductiveState) {// Box va a l'esquerra quan es detecta metall i inductiveState = true if (inductiveState == 0) {stepper.moveTo (steps); // posició aleatòria per acabar per provar stepper.runToPosition (); retard (1000); stepper.moveTo (0); stepper.runToPosition (); retard (1000); } else if (inductiveState == 1) {stepper.moveTo (-steps); // posició aleatòria per acabar per provar stepper.runToPosition (); retard (1000); stepper.moveTo (0); // posició aleatòria per acabar per provar stepper.runToPosition (); retard (1000); }} boolean ultrasonicObjectDetection () {long duration1, distance1, durationTemp, distanceTemp, averageDistance1, averageDistanceTemp, averageDistanceOlympian1; // Definiu el nombre de mesures per fer una distància llarga Max = 0; llarga distànciaMin = 4000; llarga distànciaTotal = 0; for (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distànciaTotal + = distànciaTemp; } Serial.print ("Sensor1 maxDistance"); Serial.print (distanceMax); Serial.println ("mm"); Serial.print ("Sensor1 minDistance"); Serial.print (distanceMin); Serial.println ("mm"); // Pren una distància mitjana de les lectures averageDistance1 = distanceTotal / 10; Serial.print ("Sensor1 mitjanaDistància1"); Serial.print (mitjanaDistància1); Serial.println ("mm"); // Elimineu els valors més alts i més baixos de les mesures per evitar lectures errònies averageDistanceTemp = distanceTotal - (distanceMax + distanceMin); averageDistanceOlympian1 = averageDistanceTemp / 8; Serial.print ("Sensor1 mitjanaDistanceOlympian1"); Serial.print (averageDistanceOlympian1); Serial.println ("mm");
// Restableix els valors temporals
distànciaTotal = 0; distanceMax = 0; distànciaMin = 4000; llarga durada2, distància2, mitjanaDistància2, mitjanaDistànciaOlímpica2; // Definiu el nombre de mesures a prendre (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distànciaTotal + = distànciaTemp; } Serial.print ("Sensor2 maxDistance"); Serial.print (distanceMax); Serial.println ("mm"); Serial.print ("Sensor2 minDistance"); Serial.print (distanceMin); Serial.println ("mm"); // Pren una distància mitjana de les lectures averageDistance2 = distanceTotal / 10; Serial.print ("Sensor2 mitjanaDistància2"); Serial.print (mitjanaDistància2); Serial.println ("mm"); // Elimineu els valors més alts i més baixos de les mesures per evitar lectures errònies averageDistanceTemp = distanceTotal - (distanceMax + distanceMin); averageDistanceOlympian2 = averageDistanceTemp / 8; Serial.print ("Sensor2 averageDistanceOlympian2"); Serial.print (averageDistanceOlympian2); Serial.println ("mm"); // Restableix els valors temporals distanceTotal = 0; distanceMax = 0; distànciaMin = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 <emptyBoxDistance) {return true; } else {return false; }}
Cos principal
El cos principal conté la mateixa lògica que s’explica a la part superior d’aquesta secció, però escrita en codi. El fitxer es pot descarregar a continuació.
Advertiment
Es van realitzar moltes proves per trobar les constants: emptyBoxDistance, steps i Maximumspeed i acceleració a la configuració.
Pas 7: possibles millores
- Necessitem comentaris sobre la posició del quadre per assegurar-nos que sempre estigui en les posicions adequades per escollir l'objecte al principi. Hi ha diferents opcions disponibles per resoldre el problema, però és fàcil copiar el sistema que trobem a les impressores 3D mitjançant un commutador en un extrem del camí de la caixa.
-A causa dels problemes que hem trobat amb la detecció per ultrasons, podem buscar algunes alternatives per a aquesta funció: Detector làser i làser KY-008 (imatge), sensors capacitius.
Pas 8: Factors limitants
Aquest projecte funciona tal com es descriu als instructius, però cal tenir especial cura durant els passos següents:
Calibració de sensors ultrasònics
L’angle en què es col·loquen els sensors d’ultrasons en relació amb l’objecte que han de detectar és d’una importància crucial per al correcte funcionament del prototip. Per a aquest projecte, es va escollir un angle de 12,5 ° respecte al normal per a l'orientació dels sensors d'ultrasons, però el millor angle s'hauria de determinar experimentalment registrant les lectures de distància amb diversos objectes.
Font d'alimentació
La potència necessària per al controlador de motor pas a pas DRV8825 és de 12 V i entre 0,2 i 1 Amp. L’arduino també es pot alimentar amb un màxim de 12V i 0,2 Amp mitjançant l’entrada jack de l’Arduino. Cal tenir especial cura, però, si s’utilitza la mateixa font d’alimentació tant per a l’Arduino com per al controlador del motor pas a pas. Si s’alimenta d’una presa d’alimentació normal utilitzant, per exemple, una font d’alimentació de l’adaptador de CA / CC de 12V / 2A, hi hauria d’haver un regulador de tensió i díodes al circuit abans que l’alimentació s’introdueixi al controlador del motor pas a pas i arduino.
Homing the Box
Tot i que aquest projecte utilitza un motor pas a pas que en condicions normals torna a la seva posició inicial amb una alta precisió, és una bona pràctica disposar d’un mecanisme de posada a punt en cas que es produeixi un error. El projecte, tal com és, no té un mecanisme de referència, però és bastant senzill implementar-ne un. Per a això, s'hauria d'afegir un interruptor mecànic a la posició inicial de la caixa de manera que, quan la caixa toqui l'interruptor, sàpiga que està a la seva posició inicial.
Controlador de pas DRV8825 Tuning
El controlador pas a pas requereix un ajust per treballar amb el motor pas a pas. Això es fa experimentalment girant el potenciòmetre (cargol) al xip DRV8825 de manera que es subministri la quantitat de corrent adequada al motor. Així doncs, gireu lleugerament el cargol del potenciòmetre fins que el motor actuï de forma fluixa.
Pas 9: Crèdits
Aquest projecte es va fer com a part d’un curs de mecatrònica durant el curs acadèmic 2018-2019 per al Bruface Master a la Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).
Els autors són:
Maxime Decleire
Lidia Gómez
Markus Poder
Adriana Puentes
Narjisse Snoussi
Un agraïment especial al nostre supervisor Albert de Beir que també ens va ajudar durant tot el projecte.
Recomanat:
Classificació del barret: 3 passos
Sorting Hat: Quan ens acostem a aquesta època de l'any en què ens disfressem amb diversos vestits, un any el personal de l'escola va decidir tenir temes per departaments. Harry Potter va ser una opció popular i, a mesura que començava a treballar en el meu ofici de ganxet i nines Amigurumi
Treballant la classificació del barret de Harry Potter: 8 passos
Treballant la classificació del barret de Harry Potter: al nostre món muggle, no hi ha cap barret màgic que ens classifiqui a les nostres cases. Així que he aprofitat aquesta oportunitat de quarantena per fer un barret de classificació
Barret de classificació del Pare Noel: 10 passos (amb imatges)
Barret de classificació del Pare Noel: hem estat treballant estretament amb el Taller del Pare Noel per oferir-vos aquesta innovació en la comunicació de listes entremaliats o agradables. Ara podeu comprovar en temps real si les vostres accions bones i dolentes han afectat la vostra posició a la llista de Santa's Naughty or Nice. Un divertit projecte
Com fer un projecte de classificació de colors amb Microbit ?: 4 passos
Com fer un projecte de classificació de colors amb Microbit ?: Objectius del projecte Després de descarregar el programa, podem veure que la matriu de punts LED de micro: bits mostra un "cor", inicialitzar el servo a 90 °. Quan posem coses de color blau o groc al sensor de color, el servo gira diferents angles, classifica alguns
Màquina de classificació de cargols: 7 passos (amb imatges)
Màquina de classificació de cargols: un dia al laboratori (FabLab Moscow), vaig veure el meu company ocupat classificant una caixa completa de cargols, femelles, anells i altres elements de ferreteria. Parant al seu costat, vaig mirar un segon i vaig dir: " Seria una feina perfecta per a una màquina. &Quot; Després d'una mirada ràpida