Řezačka polystyrenu z merkuru (technika 2022)

Seznam článků

Pro 7. ročník soutěže "technika má zlaté dno 2022" provádím přípravu el. části. kolega má mechanickou část již hotovou a tak musím pohnout...

Předešlé soutěže technika má zlaté dno:

Letošní soutěž: sestavení řezačky polystyrenu ze stavebnice "Merkur"...

 

 

Soutěži zdar a žádný zmar!


OVLÁDÁNÍ – USB (sériová linka 115200 Baud)

  G28 -> HOMING -> návrat na výchozí polohu X=0 a Y=0 (na displeji svítí znak „H“)

  G0  X{n} Y{n} -> příkaz pro lineární pohyby v ose X a Y. Příklad:  G0 X10.0 Y20.2 (na konci příkazu je vždy nová řádka \n) Na displeji svítí znak „-“

  L1  -> zap LED

  L0  -> vyp LED

  S1  -> zap struny

  S0  -> vyp struny

  A0  -> Manual mode -> ruční ovládání tlačítky X, Y (nebo z PC). Na displeji svítí znak „-“

  A1  ->  Auto mode -> vyřeže nápis "test". Na displeji bliká znak „A“

 

Odpovědi z řezačky

  HOMING - vrací se do výchozí polohy

  A0 – je ruční režim

  A1 – je auto režim

  S0 - struna je vyp

  S1 - struna je zap

  L1 - varovná LED je zap

  L0 - varovná LED je vyp

  TL - stisk tlačítka vlevo

  TR - stisk tlačítka vpravo

  TU - stisk tlačítka vpřed

  TD - stisk tlačítka vzad

  HEAT - nahřívání struny (cca 3 vteřiny bliká varovná LED)

  ASTEP xx - vypisuje krok demo režimu (co se zrovna dělá za operaci a souřadnice XY)

  OK – potvrzení splněného příkazu

OVLÁDÁNÍ – ručně

  • Po zapnutí se stroj nastaví do manuálního režimu (na displeji je znak "-").
  • Tlačítkem "0" lze zastavit spuštěný režim auto "A" (demo řez nápisu „TEST“) a vypnout ohřev struny.
  • Tlačítkem "1" lze zapnout ohřev struny (signalizuje trvalý svit oranžové LED). Start ohřevu LED „bliká „ cca 3 vteřiny (po tuto dobu je blokovaný pojezd).
  • Tlačítka S1-S4 ovládají posun XY (vlevo, vpravo, vpřed, vzad).
  • Před každým pohybem XY se ověřuje, zda je struna teplá. V případě studené struny se nejprve provede ohřev (bliká LED ohřevu cca 3 vteřiny)!

DEMO – automaticky

  • Tlačítkem "0" + "1" současně se spustí automatický režim (demo) a vyřeže se ukázka. Na displeji bliká "A". Následně se provede kalibrace (pojezd do polohy X=0, na koncový spínač). Na displeji bliká "H". Po provedení demo řezu se spustí výstup na Boffin a rychle se rozbliká LED a tečka na displeji a poté se stroj vypne do stavu "-" manuál.
  • Před každým pohybem XY se ověřuje, zda je struna teplá. V případě studené struny se nejprve provede ohřev (bliká LED ohřevu cca 3 vteřiny)!

 

 

Příklad ovládání XY pro vyřezání nápisu „TEST“

Start operace (tlačítko 0+1) – výpis ze sériové linky

11:17:28.541 -> HOMING

11:17:28.541 -> HEAT

11:19:03.606 -> ASTEP 0

11:19:03.606 -> X0.00 Y0.00

11:19:03.606 -> ASTEP 1

11:19:03.606 -> X80.00 Y0.00

11:19:54.108 -> ASTEP 2

11:19:54.108 -> X80.00 Y10.00

11:19:56.677 -> ASTEP 3

11:19:56.677 -> X50.00 Y10.00

11:20:13.139 -> ASTEP 4

11:20:13.139 -> X50.00 Y20.00

11:20:15.932 -> ASTEP 5

11:20:15.932 -> X60.00 Y20.00

11:20:21.201 -> ASTEP 6

11:20:21.201 -> X60.00 Y50.00

11:20:28.996 -> ASTEP 7

11:20:28.996 -> X70.00 Y50.00

11:20:34.855 -> ASTEP 8

11:20:34.855 -> X70.00 Y20.00

11:20:42.519 -> ASTEP 9

11:20:42.519 -> X80.00 Y20.00

11:20:48.289 -> ASTEP 10

11:20:48.289 -> X80.00 Y5.00

11:20:52.208 -> ASTEP 11

11:20:52.208 -> X115.00 Y5.00

11:21:11.957 -> ASTEP 12

11:21:11.957 -> X115.00 Y10.00

11:21:12.906 -> ASTEP 13

11:21:12.906 -> X85.00 Y10.00

11:21:28.859 -> ASTEP 14

11:21:28.859 -> X85.00 Y20.00

11:21:31.581 -> ASTEP 15

11:21:31.581 -> X105.00 Y20.00

11:21:42.649 -> ASTEP 16

11:21:42.649 -> X105.00 Y25.00

11:21:43.787 -> ASTEP 17

11:21:43.787 -> X85.00 Y25.00

11:21:54.322 -> ASTEP 18

11:21:54.322 -> X85.00 Y50.00

11:22:00.899 -> ASTEP 19

11:22:00.899 -> X115.00 Y50.00

11:22:17.859 -> ASTEP 20

11:22:17.859 -> X115.00 Y40.00

11:22:20.318 -> ASTEP 21

11:22:20.318 -> X95.00 Y40.00

11:22:31.311 -> ASTEP 22

11:22:31.311 -> X95.00 Y45.00

11:22:32.302 -> ASTEP 23

11:22:32.302 -> X115.00 Y45.00

11:22:43.743 -> ASTEP 24

11:22:43.743 -> X115.00 Y5.00

11:22:53.794 -> ASTEP 25

11:22:53.794 -> X150.00 Y5.00

11:23:14.018 -> ASTEP 26

11:23:14.018 -> X150.00 Y10.00

11:23:14.961 -> ASTEP 27

11:23:14.961 -> X120.00 Y10.00

11:23:31.501 -> ASTEP 28

11:23:31.501 -> X120.00 Y20.00

11:23:34.206 -> ASTEP 29

11:23:34.206 -> X140.00 Y20.00

11:23:46.058 -> ASTEP 30

11:23:46.058 -> X140.00 Y25.00

11:23:47.230 -> ASTEP 31

11:23:47.230 -> X130.00 Y25.00

11:23:52.630 -> ASTEP 32

11:23:52.630 -> X130.00 Y35.00

11:23:55.349 -> ASTEP 33

11:23:55.349 -> X140.00 Y35.00

11:24:01.027 -> ASTEP 34

11:24:01.027 -> X140.00 Y40.00

11:24:02.031 -> ASTEP 35

11:24:02.031 -> X120.00 Y40.00

11:24:13.185 -> ASTEP 36

11:24:13.185 -> X120.00 Y50.00

11:24:15.614 -> ASTEP 37

11:24:15.614 -> X150.00 Y50.00

11:24:35.088 -> ASTEP 38

11:24:35.088 -> X150.00 Y5.00

11:24:46.512 -> ASTEP 39

11:24:46.512 -> X185.00 Y5.00

11:25:07.292 -> ASTEP 40

11:25:07.292 -> X185.00 Y10.00

11:25:08.236 -> ASTEP 41

11:25:08.236 -> X155.00 Y10.00

11:25:24.293 -> ASTEP 42

11:25:24.293 -> X155.00 Y20.00

11:25:26.938 -> ASTEP 43

11:25:26.938 -> X165.00 Y20.00

11:25:32.748 -> ASTEP 44

11:25:32.748 -> X165.00 Y50.00

11:25:40.439 -> ASTEP 45

11:25:40.439 -> X175.00 Y50.00

11:25:46.646 -> ASTEP 46

11:25:46.646 -> X175.00 Y20.00

11:25:54.112 -> ASTEP 47

11:25:54.157 -> X185.00 Y20.00

11:26:00.543 -> ASTEP 48

11:26:00.543 -> X185.00 Y0.00

Konec operace (řez nápisu „TEST“)



Schéma zapojení desky displeje

Deska spojů pohledy

Foto osazené desky

Otestování desek na funkci

/*
 * TEST displeje desky X20
 * při zmáčknutí tlačítek se na displeji rozsvěcí různé znaky
*/

#define tlacitka_4  A0 // (nesep = 0V, nahoru = 4,2V, dolů = 3,6V, vlevo = 2,9V, vpravo = 5V)
#define tlac_1      15 //  A1 (0 = sepnuto, svítí LED "1")
#define tlac_0      16 //  A2 (0 = sepnuto, svítí LED "0")
#define disp_SER    A3 // (segmetnovka - SER 74HC959  data (pořadí segmentů QH-QA = A,B,H,C,D,E,G,F)
#define disp_RCK    A4 // (segmentovka - RCK 74HC959) latch
#define disp_SCK    A5 // (segmentovka - SCK 74HC959) clock

void setup(){
  pinMode(tlacitka_4, INPUT);
  pinMode(tlac_1, INPUT);
  pinMode(tlac_0, INPUT);
  pinMode(disp_SER, OUTPUT);
  pinMode(disp_RCK, OUTPUT);
  pinMode(disp_SCK, OUTPUT);
  digitalWrite(disp_SER, LOW);
  digitalWrite(disp_RCK, LOW);
  digitalWrite(disp_SCK, LOW);
}

void loop(){
  check_button();
}

void check_button(){
  int x;
  int y;
  int z;
  x = analogRead(tlacitka_4);
  y = digitalRead(tlac_0);
  z = digitalRead(tlac_1);
  
  if(x < 600 && x > 100){       // vlevo
      digitalWrite(disp_RCK, LOW); 
      shiftOut(disp_SER, disp_SCK, MSBFIRST, 254);     
      digitalWrite(disp_RCK, HIGH); 
  }
  else if(x > 1000){            // vpravo
      digitalWrite(disp_RCK, LOW); 
      shiftOut(disp_SER, disp_SCK, MSBFIRST, 191);     
      digitalWrite(disp_RCK, HIGH);      
  }
  else if(x < 950 && x > 800){  // vpřed    
      digitalWrite(disp_RCK, LOW); 
      shiftOut(disp_SER, disp_SCK, MSBFIRST, 127);     
      digitalWrite(disp_RCK, HIGH);        
  }
  else if(x < 800 && x > 600){  // vzad
      digitalWrite(disp_RCK, LOW); 
      shiftOut(disp_SER, disp_SCK, MSBFIRST, 253);     
      digitalWrite(disp_RCK, HIGH); 
  }
  else if(!y or !z){
     if(!y && z){               // stisk tlač "0"
      digitalWrite(disp_RCK, LOW); 
      shiftOut(disp_SER, disp_SCK, MSBFIRST, 34);     
      digitalWrite(disp_RCK, HIGH);    
     }
     if(!z && y){               // stisk tlač "1"
      digitalWrite(disp_RCK, LOW); 
      shiftOut(disp_SER, disp_SCK, MSBFIRST, 175);     
      digitalWrite(disp_RCK, HIGH);    
     }
  }
  else{
      digitalWrite(disp_RCK, LOW); 
      shiftOut(disp_SER, disp_SCK, MSBFIRST, 255);     
      digitalWrite(disp_RCK, HIGH);
  }
}

TEST - tlačítko 0

TEST - tlačítko 1

TEST - tlačítko vlevo

TEST - tlačítko vpravo

TEST - tlačítko nahoru

TEST - tlačítko dolů


Schéma zapojení desky koncáku

Deska spojů pohled shora a z dolní strany

Pohled na osazenou desku

Testování desek po osazení

Program pro otestování

/*
 * TEST koncaku desky X40
 * při zmačknutí koncáku svítí zelená LED a oranžová zhasne
*/

#define koncak_X    12 // (0 = sepnut)
#define varovna_LED 13 // (červená u konc. sp, 0 = svítí)

void setup(){
  pinMode(koncak_X, INPUT);
  pinMode(varovna_LED, OUTPUT);
}

void loop(){
  if(!digitalRead(koncak_X)){
     digitalWrite(varovna_LED, HIGH);
  }else{
     digitalWrite(varovna_LED, LOW);
  }
}

 


Deska spínačů je určena pro spínání napájení:

  • stavebnice Boffin (jako zvukový výstup)
  • struny řezání polystyrenu
  • průchod do desky motoru (pouze propojení)

Schéma zapojení


Deska spojů


Pohled na osazenou desku


Testování desek po osazení


Program pro otestování

/*
 * Testovací program na desku spinace strun a vystupu na boffin
 * výstup: X30 na X110
 * Na každém 10 pinovém konektoru je 1-2 Vcc a 3-4 Gnd
 */

void test(byte cykl, byte out){ // opakování, výstup
   for(byte s=0; s<cykl; s++){
     digitalWrite(out, HIGH);
     delay(200);
     digitalWrite(out, LOW);
     delay(200);
   }     
}

void setup() {
   Serial.begin(115200);
   pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(9, OUTPUT);
}

void loop() {
   Serial.println(F("X30 ******************"));
   Serial.println(F("test X30 pin6 D9 Struna"));
   test(5, 9);
   Serial.println(F("test X30 pin9 D6 Boffin"));
   test(5, 6);
   Serial.println(F("test X30 pin5 D4 pruchozi X110-6"));
   test(5, 4); 
   Serial.println(F("test X30 pin7 D5 pruchozi X110-8"));
   test(5, 5);  
   Serial.println(F("\n"));
}

 


Deskou motoru lze měnit rychlost a směr točení motoru (v řezačce jsou použity desky dvě - tj. dva motory)

Schéma zapojení

Deska spojů

Pohled na osazenou desku

Testování desek po osazení

Program pro otestování

Po připojení desky motoru k Arduino shieldu konektory X10-X10 se motor pomalu rozjíždí a zastavuje + mění směr točení

/*
Test motoru na konektoru X10. Motor se točí na obě strany (reverzuje) a pomalu zrychluje a zpomaluje.
 
D2 směr M1
D3 rychlost M1
*/

#define smer_M1     2
#define rychlost_M1 3

void setup(){
  pinMode(smer_M1, OUTPUT);
  pinMode(rychlost_M1, OUTPUT);
}

void loop(){
  // směr 1 *******************************************
  digitalWrite(smer_M1, LOW);
  for(byte c=0; c<255; c++){ // zrychlování
    analogWrite(rychlost_M1, c);
    delay(2) ;
  }
  for(int c=255; c>0; c--){  // zpomalování
    analogWrite(rychlost_M1, c);
    delay(2) ;
  }
  
  // směr 2 *******************************************
  digitalWrite(smer_M1, HIGH);
  for(byte c=0; c<255; c++){ // zrychlování
    analogWrite(rychlost_M1, c);
    delay(2) ;
  }
  for(int c=255; c>0; c--){  // zpomalování
    analogWrite(rychlost_M1, c);
    delay(2) ;
  }    
}

Schéma zapojení


Deska spojů


Pohled na osazenou desku


Testování desek po osazení


Program pro otestování

/*
 * Testovaci program na IR branu (LEVA brana je B, PRAVA brana je A)
 * X40
 * Na každém 10 pinovém konektoru je 1-2 Vcc a 3-4 Gnd
 */

// konektor X40
#define D10   10 // brana X40-5 pulsy - odmer osy X (opticka zavora ma propojku A a je na Motoru 2)
#define D11   11 // brana X40-7 pulsy - odmer osy y (opticka zavora ma propojku B a je na Motoru 1)
#define D12   12 // brana X40-9 (C nepouzito)

bool pom_a, pom_b, pom_c;

void setup() {
   Serial.begin(115200);
   pinMode(D10, INPUT_PULLUP);
   pinMode(D11, INPUT_PULLUP);
   //pinMode(c, INPUT_PULLUP);
   Serial.println(F("X40 IR TEST A,B brany")); 
}// end setup

void loop() {
   byte a = digitalRead(D10);
   byte b = digitalRead(D11);
   //byte c = digitalRead(D12);
   if(a) pom_a = true;
   if(b) pom_b = true;
   //if(c) pom_c = true;
   if(!a && pom_a){
      Serial.println(F("X40-5 brana A"));
      pom_a = false;
   }
   if(!b && pom_b){
      Serial.println(F("X40-7 brana B"));
      pom_b = false;
   }
   /*if(!c && pom_c){
      Serial.println(F("X40-9 brana C"));
      pom_c = false;
   }*/      
}//end loop

Deska řízení je založena na procesoru Atmega328 (Arduino UNO) ke které je připojen shield s konektory X10-X40

Schéma zapojení

Deska spojů

Pohled na osazenou desku

 


Testování desek po osazení


Program pro otestování

po připojení všech konektorů X10-X40 s deskou shieldu a vložení kódu do desky UNO se bude postupně posouvat blikající bod

/*
 * Testovací program na shield 192-10092018
 * čtyři výstupy: X10, X20, X30, X40
 * Na každém 10 pinovém konektoru je 1-2 Vcc a 3-4 Gnd
 */

// konektor X10 
#define D2    2
#define D3    3

// konektor X20
#define A0    14
#define A1    15
#define A2    16
#define A3    17
#define A4    18
#define A5    19

// konektor X30
#define D4    4
#define D5    5
#define D6    6
#define D7    7
#define D8    8
#define D9    9

// konektor X40
#define D10   10
#define D11   11
#define D12   12
#define D13   13

void setup() {
   Serial.begin(115200);
   for(byte c=2; c<20; c++) pinMode(c, OUTPUT); // všechno jako výstup
}

void loop() {
   Serial.println(F("X10 ******************"));
   Serial.println(F("test X10 - pin6 - D2"));
   test(30, D2); // zablikame výstupem D2
   Serial.println(F("test X10 - pin8 - D3"));
   test(30, D3); // zablikame výstupem D3
   Serial.println(F("\n"));

   Serial.println(F("X20 ******************"));      
   Serial.println(F("test X20 - pin5 - A0"));
   test(30, A0); // zablikame výstupem A0 
   Serial.println(F("test X20 - pin7 - A1"));
   test(30, A1); // zablikame výstupem A1    
   Serial.println(F("test X20 - pin9 - A2"));
   test(30, A2); // zablikame výstupem A2
   Serial.println(F("test X20 - pin10 - A3"));
   test(30, A3); // zablikame výstupem A3 
   Serial.println(F("test X20 - pin8 - A4"));
   test(30, A4); // zablikame výstupem A4    
   Serial.println(F("test X20 - pin6 - A5"));
   test(30, A5); // zablikame výstupem A5
   Serial.println(F("\n"));

   Serial.println(F("X30 ******************")); 
   Serial.println(F("test X30 - pin5 - D4"));
   test(30, D4); // zablikame výstupem D4 
   Serial.println(F("test X30 - pin7 - D5"));
   test(30, D5); // zablikame výstupem D5    
   Serial.println(F("test X30 - pin9 - D6"));
   test(30, D6); // zablikame výstupem D6
   Serial.println(F("test X30 - pin10 - D7"));
   test(30, D7); // zablikame výstupem D7 
   Serial.println(F("test X30 - pin8 - D8"));
   test(30, D8); // zablikame výstupem D8    
   Serial.println(F("test X30 - pin6 - D9"));
   test(30, D9); // zablikame výstupem D9
   Serial.println(F("\n"));

   Serial.println(F("X40 ******************")); 
   Serial.println(F("test X40 - pin5 - D10"));
   test(30, D10); // zablikame výstupem D10
   Serial.println(F("test X40 - pin7 - D11"));
   test(30, D11); // zablikame výstupem D11    
   Serial.println(F("test X40 - pin9 - D12"));
   test(30, D12); // zablikame výstupem D12
   Serial.println(F("test X40 - pin10 - D13"));
   test(30, D13); // zablikame výstupem D13 
   Serial.println(F("**********************\n"));
}

void test(byte cykl, byte out){ // opakování, výstup
   for(int s; s<cykl; s++){
     digitalWrite(out, HIGH);
     delay(50);
     digitalWrite(out, LOW);
     delay(50);
   }     
}

Kompletní propojení všech desek přes konektory X.. a rozvod napájení je patrný z fotografií níže.

 

 


Pohled na umístění prvků stavebnice Boffin

Po připojení napájení do bodů "U" +5V a "H" 0V se rozsvítí LED D1 (RED) a spustí se melodie z reproduktoru (SP). Deska spínačů (struny) ovládá výstup "H" -> připojuje ho na 0V a tím zapíná a vypíná melodii. Při krátkém připojení napájení reproduktor pouze "pípne" -> to se používá například při stisku tlačítek "0" a "1" (jako potvrzovací tón).


Z přílohy vytiskneme:

  • 4ks distanční kroužky pod desku displeje
  • 1ks desku pod Arduino pro uchycení k Merkuru
  • 1ks držáku matky závitové tyče
  • 2ks distanční podložky pod IR závoru

Materiál pro tisk zvolíme PET-G a výplň stačí 20% plastu.


Attachments:
Download this file (anotace_rezacka_polystyrenu_2022.pdf)Anotace soutěže[ ]692 kB11 Downloads2022-09-16 06:25
Download this file (rezacka_polystyrenu_2022.pdf)Zadání soutěže[ ]13247 kB64 Downloads2022-09-16 06:25
Download this file (Test-desek.zip)Zdrojový program pro procesor - Arduino IDE[Testy desek]3 kB36 Downloads2022-03-23 12:59
Download this file (tmzd-2022-ovladani.pdf)manuál ovládání přes USB[ ]468 kB50 Downloads2022-01-14 08:35