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:
- https://pihrt.com/elektronika/428-svetlu-vstric-bma
- https://pihrt.com/elektronika/430-buldozer
- https://pihrt.com/elektronika/416-arduino-uno-merkur-tridicka-kulicek
- https://pihrt.com/elektronika/391-moje-wifi-esp8266-merkur-battle-tank
- https://pihrt.com/elektronika/362-arduino-uno-merkur-lift
- https://pihrt.com/elektronika/355-elektricka-pila-bma
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.