Plastikoak txikitzeko makina da Medialaben kopiatzen ari garen Precious Plastic proiektuaren lan-fluxuko elementurik garrantzitsuenetako bat; zehazki, hainbat plastiko txikitzeko aukera ematen du, trontza eskuratu eta birziklatze-prozesuari hasiera emateko. Behin makina eraikita eta probak egiten hasita, berehala konturatu ginen gure motor-erreduzitzaile-transmisio multzoak mugak zituela: buxatu egiten zen pieza handiekin eta material kantitate handiekin. Ondorioz, transmisioko akoplatze bat puskatzera ere iritsi ginen. Hori nola konpondu pentsatzen ari ginela, Carlosi plastikoak txikitzeko makinaren ardatzaren aitzinamendua detektatzeko sistema bat instalatzea otu zitzaion, ardatzak aitzinatzeari utzi diola detektatzen baldin badu, motorra geldi dezan. Ordurako lanean ari ginenez eta beharrezkoak ziren material guztiak eskura genituenez, motorraren norabidea segundo batzuez aldatzeko aukera emango zuen sistema bat diseinatzea pentsatu genuen. Horrela, buxadura desegin eta gero aurrera jarraituko du. Hori guztia Arduinon oinarrituta, noski. Ekin lanari!
Pausuz pausu
- UNO Arduinoa . Arduinorako erreleen plaka (4)
- 2 x kontaktore (18A 380V, WEG CWB18 edo mota honetakoak)
- Motorrerako magnetotermikoa (WEB RW17D edo mota honetakoak)
- 2 x 380V sakagailu
- 380 V etengailu bat
- «Endstop» sentsore optiko bat
- 3Dn inprimatutako pieza bat
Kodetzailearen pieza 3Dn inprimatu behar da. FreeCAD fitxategia thingiverse-n dago eskuragarri. FreeCAD diseinuan badago gurpilaren beraren eta gurpilaren ardatzaren diametroa gure beharrizanen arabera doitzeko kalkulu-orri bat. Pieza horrek ez duenez indarrik egingo, perimetro pare batekin eta betegarri gutxirekin (% 10-15) inprimatu daiteke.
Jarraian datorren eskemari jarraikiz konektatu behar da sistema osoa. Edonola ere, aintzat hartu behar da 380 V-ko korronte trifasikoa erabiltzen ari garela, eta hori nahiko korronte handia da. Horregatik, kablearen sekzioak bat etorri beharko du korrontearekin (2,5 edo 3,5ekoa izan behar du). Posible bada, krinpatu egin behar dira , terminalak dituzten konexio guztiak. Arduinotik 12 V-ak ateratzeko, bihurgailu normal bat konektatu daiteke sarrerako faseetako batera.
// Precious Plastics Shredder anticlog system // (C) Carlos Garcia "Txakurrakuka" & Hirikilabs // // This program is free software: you can redistribute it // and/or modify it under the terms of the GNU General Public License // as published by the Free Software Foundation, either version 3 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. // If not, see <http://www.gnu.org/licenses/>. #define RELE1PIN 8 #define RELE2PIN 9 #define RELE3PIN 10 #define SENSORPIN 4 int main_counter = 0; int encoder_value = 1; int encoder_counter = 1; int change = 0; void setup() { // init peripherals Serial.begin(9600); // GPIO pinMode(SENSORPIN, INPUT); pinMode(RELE1PIN, OUTPUT); pinMode(RELE2PIN, OUTPUT); pinMode(RELE3PIN, OUTPUT); digitalWrite(RELE1PIN, HIGH); digitalWrite(RELE2PIN, HIGH); digitalWrite(RELE3PIN, HIGH); } void loop() { // read encoder encoder_value = digitalRead(SENSORPIN); // check if we are advancing if (encoder_value == 1 && change == 0) { encoder_counter++; change = 1; } // yes, we are, reset counter if (encoder_value == 0 && change == 1) { main_counter = 0; change = 0; } // increment main_counter++; // if counter is big enough, we are not advancing, unclog if (main_counter == 20) { // turn off motor digitalWrite(RELE1PIN, LOW); delay(100); digitalWrite(RELE1PIN, HIGH); Serial.println("MOTOR STOPPED"); delay(1000); // turn motor backwards digitalWrite(RELE2PIN, LOW); delay(100); digitalWrite(RELE2PIN, HIGH); Serial.println("MOTOR BACKWARDS"); delay(1000); // turn off motor digitalWrite(RELE1PIN, LOW); delay(100); digitalWrite(RELE1PIN, HIGH); Serial.println("MOTOR STOPPED"); delay(1000); // turn motor forward digitalWrite(RELE3PIN, LOW); delay(100); digitalWrite(RELE3PIN, HIGH); Serial.println("MOTOR FORWARD"); delay(1000); } // reset counter if (encoder_counter == 25) { encoder_counter = 0; } }