20
Měření času průjezdu trasy I BROB 2017 Vedoucí práce: prof. Ing. Luděk Žalud, Ph.D. Konzultant: Bc. Tomáš Lázna Vypracovali: Andrýsek Jan, Bednář Ladislav, Hendl Adam B-AMT 01,02

Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

Měření času průjezdu trasy I

BROB

2017

Vedoucí práce: prof. Ing. Luděk Žalud, Ph.D.

Konzultant: Bc. Tomáš Lázna

Vypracovali: Andrýsek Jan, Bednář Ladislav, Hendl Adam

B-AMT 01,02

Page 2: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

ZADÁNÍ TÉMATU PROJEKTU

Navrhněte a realizujte systém pro měření času průjezdu trasy robotem založený

na principu optické závory. Při návrhu uvažujte dvě varianty trasy – okruh a z

bodu A do bodu B. Realizujte rovněž komunikační interface s PC a vytvořte

demonstrační aplikaci, která umožní vyčítat měřené časy. Volitelně doplňte

systém o displej, který bude přímo vizualizovat výsledek měření.

Page 3: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Obsah

1. Raspberry Pi

1.1. Základní charakteristika

1.2. Program

2. Optická brána

2.1. Teorie

2.2. Zapojení

3. Závěr

Page 4: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

1.1. Základní charakteristika

Raspberry pi 2 je mikropočítač v ktorom je možné vytvárať vlastné

programy v rôznych programovacích jazykoch. V našom prípade C. V raspberry

je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti

sme nemuseli použiť operačný systém s grafickým rozhraním. Operačný systém

sa nahráva z micro SD karty.

Raspberry pi 2 má 4 USB porty ,ethernet port ,3.5mm jack ,HDMI výstup,

port na micro SD kartu .port na pripojene displeja a kamery. Pre nás sú však

dôležité vstupno/výstupne porty GPIO pomocou ktorých ovládame LCD display

a načítavame výstupy z optickej brány

Obrázek 1 Zapojení maticového displeje

Page 5: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

1.2. Program

Program bol napísaný pomocou rozhrania NetBeans ,pomocou ktorého

bol aj samotný program zapísaný do pamäte raspberry pi. K meraniu času bola

využitá knižnica wiringPi.h v ktorej sa nachádza funkcia micros(). Táto funkcia

nám umožňuje merať čas na mikro sekundy. Presnosť je otázna pretože meranie

sa odvíja od hodín samotného raspberry pi. Ďalšie možné riešenie by mohlo byť

pomocou externého krištáľu a vyhodnocovania času mimo raspberry. Raspberry

by bolo použité len na výpis času na obrazovku/display.

Zobrazenie času na display bolo prevedené pomocou knižnice lcd.h ktorá

je súčasťou wiringPi. Využil som 4 bitové zapojenie, pri ktorom využívame len

6 GPIO pinov. Pre zobrazenie plynúceho času sme použili zobrazovaciu

konštantu rel=80 milisekúnd. Túto konštantu sme zvolil odhadom, display už

viditeľne neblikal.

Začiatok merania času vyhodnocujeme podľa stavu na GPIO pinoch.

Meranie môžeme vykonávať v dvoch metódach a to na 1 bránu alebo 2 brány.

Režim pre jednu bránu využíva len jeden GPIO pin a teda môže byť použitý pre

meranie času na okruhu. Režim pre dve brány využíva dva GPIO piny, meriame

čas od prvej brány k druhej bráne.

Page 6: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Ukážka kódu:

1. /* 2. * File: main.c 3. * Author: Ladislav Bednar 4. * 5. * Created on April 15, 2017, 12:36 AM 6. */ 7. 8. #include <stdio.h> 9. #include <stdlib.h> 10. #include <wiringPi.h> 11. #include <lcd.h> 12. 13. 14. #define LCD_RS 25 //Register select pin 15. #define LCD_E 24 //Enable Pin 16. #define LCD_D4 23 //Data pin 4 17. #define LCD_D5 22 //Data pin 5 18. #define LCD_D6 21 //Data pin 6 19. #define LCD_D7 14 //Data pin 7 20. 21. #define clear() printf("\033[H\033[J") 22. 23. 24. 25. int main() { 26. 27. wiringPiSetup () ; 28. pinMode (3, INPUT) ; 29. pinMode (2, INPUT) ; 30. pinMode (0, INPUT) ; 31. pullUpDnControl(3,PUD_DOWN); 32. pullUpDnControl(2,PUD_DOWN); 33. pullUpDnControl(0,PUD_DOWN); 34. 35. int lcd; 36. lcd = lcdInit (2, 16, 4, LCD_RS, LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7, 0, 0, 0,

0); 37. 38. int state = 0; 39. double time=0; 40. int time1=0; 41. int x,i2,y; 42. int z=0; 43. int rel=80; 44. char sec [5]; 45. char mil [10]; 46. char min [5]; 47. 48. for(;;) 49. { 50. switch(state) 51. { 52. case 0: 53. { 54. clear(); 55. lcdClear(lcd); 56. if(digitalRead(3)==1) 57. state=1; 58. if(digitalRead(3)==0) 59. state=5; 60. break; 61. } 62. case 1: 63. { 64. clear();

Page 7: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

65. printf("1 brana\n"); 66. lcdClear(lcd); 67. lcdPuts(lcd, "1 brana"); 68. if (digitalRead(0)==1) 69. { 70. time1=micros(); 71. delay(200); // konstanta na prechod 72. state=2; 73. } 74. if(digitalRead(3)==0) 75. state=5; 76. delay(rel); // konstanta na zobrazovanie dislpay 77. break; 78. } 79. case 2: 80. { 81. clear(); 82. time=(micros()-time1); 83. time/=1000000; 84. 85. 86. 87. x=(int)time; 88. y= (time-(int)time)*1000000; 89. if(x>=60) 90. { 91. x=x-60*(z); 92. lcdClear(lcd); 93. z=(int)time/60; 94. } 95. 96. sprintf(mil, "%d", y); 97. sprintf(sec, "%d", x); 98. sprintf(min, "%d", z); 99. 100. lcdClear(lcd); 101. lcdPuts(lcd, "cas je:"); 102. lcdPosition(lcd, 1, 1); 103. lcdPrintf(lcd, "%s:%s,%s",min,sec,mil); 104. lcdPosition(lcd, 1, 15); 105. lcdPuts(lcd,"s"); 106. 107. printf("1 brana\n"); 108. printf("meranie sa zaclo\n"); 109. printf("%fs\n",time); 110. 111. if (digitalRead(0)==1) 112. { 113. delay(200); 114. state=3; 115. } 116. if(digitalRead(3)==0) 117. state=5; 118. delay(rel); // konstanta na zobrazovanie dislpay 119. break; 120. } 121. case 3: 122. { 123. time=(micros()-time1);; 124. time /= 1000000; 125. state=4; 126. break; 127. } 128. case 4: 129. { 130. clear(); 131. printf("1 brana\n"); 132. printf("cas je: %fs\n",time);

Page 8: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

133. 134. x=(int)time; 135. y= (time-(int)time)*1000000; 136. if(x>=60) 137. { 138. x=x-60*(z); 139. lcdClear(lcd); 140. z=(int)time/60; 141. } 142. 143. sprintf(mil, "%d", y); 144. sprintf(sec, "%d", x); 145. sprintf(min, "%d", z); 146. 147. lcdClear(lcd); 148. lcdPuts(lcd, "cas je:"); 149. lcdPosition(lcd, 1, 1); 150. lcdPrintf(lcd, "%s:%s,%s",min,sec,mil); 151. lcdPosition(lcd, 1, 15); 152. lcdPuts(lcd,"s"); 153. 154. if (digitalRead(0)==1) 155. { 156. time=0; 157. time1=micros(); 158. delay(200); 159. state=2; 160. } 161. if(digitalRead(3)==0) 162. state=5; 163. delay(rel); // konstanta na zobrazovanie dislpay 164. break; 165. } 166. case 5: 167. { 168. clear(); 169. printf("2 brany\n"); 170. lcdClear(lcd); 171. lcdPuts(lcd, "2 brany"); 172. if(digitalRead(0)==1) 173. { 174. time1=micros(); 175. delay(200); // konstanta na prechod 176. state=6; 177. } 178. if(digitalRead(3)==1) 179. state=1; 180. delay(rel); // konstanta na zobrazovanie dislpay 181. break; 182. 183. } 184. case 6: 185. { 186. clear(); 187. time=(micros()-time1); 188. time/=1000000; 189. 190. x=(int)time; 191. y= (time-(int)time)*1000000; 192. if(x>=60) 193. { 194. x=x-60*(z); 195. lcdClear(lcd); 196. z=(int)time/60; 197. } 198. 199. sprintf(mil, "%d", y); 200. sprintf(sec, "%d", x);

Page 9: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

201. sprintf(min, "%d", z); 202. 203. lcdClear(lcd); 204. lcdPuts(lcd, "cas je:"); 205. lcdPosition(lcd, 1, 1); 206. lcdPrintf(lcd, "%s:%s,%s",min,sec,mil); 207. lcdPosition(lcd, 1, 15); 208. lcdPuts(lcd,"s"); 209. 210. printf("2 brany\n"); 211. printf("meranie sa zaclo\n"); 212. printf("%fs\n",time); 213. if (digitalRead(2)==1) 214. { 215. delay(200); 216. state=7; 217. } 218. if(digitalRead(3)==1) 219. state=1; 220. delay(rel); // konstanta na zobrazovanie dislpay 221. break; 222. 223. } 224. case 7: 225. { 226. time=(micros()-time1); 227. time /= 1000000; 228. state=8; 229. break; 230. } 231. case 8: 232. { 233. clear(); 234. printf("2 brany\n"); 235. printf("cas je: %fs\n",time); 236. 237. x=(int)time; 238. y= (time-(int)time)*1000000; 239. if(x>=60) 240. { 241. x=x-60*(z); 242. lcdClear(lcd); 243. z=(int)time/60; 244. } 245. 246. sprintf(mil, "%d", y); 247. sprintf(sec, "%d", x); 248. sprintf(min, "%d", z); 249. 250. lcdClear(lcd); 251. lcdPuts(lcd, "cas je:"); 252. lcdPosition(lcd, 1, 1); 253. lcdPrintf(lcd, "%s:%s,%s",min,sec,mil); 254. lcdPosition(lcd, 1, 15); 255. lcdPuts(lcd,"s");; 256. 257. if (digitalRead(0)==1) 258. { 259. time=0; 260. time1=micros(); 261. delay(200); 262. state=6; 263. } 264. if(digitalRead(3)==1) 265. state=1; 266. delay(rel); // konstanta na zobrazovanie dislpay 267. break; 268. }

Page 10: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

269. } 270. } 271. 272. return (0); 273. }

Obrázek 2 Program pro měření času

Page 11: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Optická brána Teoretický úvod

Optoelektronické limitní snímače polohy se vyznačují binárním

výstupem, bezdotykovým měřením, necitlivostí na elektromagnetická pole a

mohou dosahovat velkých spínacích vzdáleností.

Optoelektronické snímače se dělí na:

Jednocestné světelné závory

Reflexní světelné závory

Reflexní světelné difusní snímače

Jako vysílače se používají LED a polovodičové laserové diody. Výhodné

je používat infračervené světlo o vlnové délce λ = 880 nm, protože

fototranzistory a fotodiody jsou nejcitlivější v infračerveném pásmu. Dále kvůli

necitlivosti vůči rušení z viditelného spektra.

Fototranzistory a fotodiody se používají jako snímače.

Jednocestné světelné závory

Vysílač je namontován do optické osy snímače. Detekovaný objekt musí

být větší než aktivní zóna, kvůli spolehlivému přerušení paprsku. Výhodami

jsou například velký dosah, jednoduchost, rozpoznání neprůhledných materiálů.

Nevýhodné je přesné umístění vysílače a přijímače, nejisté rozpoznání

průhledných materiálů.

Obrázek 3 Jednocestná světelná závora

Page 12: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Reflexní světelná závora

Vysílač i přijímač jsou v jednom pouzdře. Na druhé straně sledovaného

prostoru je připevněna odrazka, zrcadlo. Aby odrazná plocha zaručila správný

odraz i při mírném naklopení, využívá se odrazka s malými trojhrany. Tím

odpadá nutnost přesné montáže jako u jednocestné světelné závory. Problémy

s detekcí předmětů s lesklým povrchem

Obrázek 4 Reflexní světelná závora

Page 13: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Reflexní snímače

Přijímač i vysílač jsou v jednom pouzdře, dochází k odrazu od

detekovaného předmětu. Jedná se o difuzní odraz a je odražena pouze část

paprsku. Jedná se o jednoduchou montáž, protože se jedná o jediný přístroj a

nepotřebujeme odrazku. Lepší rozpoznávání průhledných předmětů než u

závor. Používají se pro menší snímací vzdálenosti a tato vzdálenost závisí na

reflexních vlastnostech detekovaných objektů.

Obrázek 5 Reflexní světelný snímač

Page 14: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

2.2 Schéma zapojení

Obrázek 6 Schéma zapojení světelné závory

Návrh desky plošného spoje

Obrázek 7 Návrh desky plošného spoje

Page 15: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Při návrhu desky plošného spoje jsme nejdříve vycházeli ze zapojení

v obrázku 6. Toto schéma se však ukázalo jako nevyhovující v důsledku

špatného výběru součástek a příliš jednoduchého zapojení.

Obrázek 8 Ideové schéma zapojení 1

Page 16: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Naše výsledné zapojení vychází ze schématu v obrázku 7, které už využívá

komparátor LM311.

Obrázek 9 Ideové schéma zapojení 2

Page 17: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Návrh krabičky

Obrázek 10 Návrh krabičky

Page 18: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Seznam součástek

4x Kapacitor 100 nF

6x Rezistor 1 kOhm

2x Rezistor 10 kOhm

2x Rezistor 62 kOhm

2x Komparator TLC 272CP

2x Laserova dioda F-LASER 5mW

2x Fototranzistor BPW 40

1x Raspberry PI

1x LCD alfanumericky display WINSTAR WH1602A-YGH-ET

Page 19: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Závěr

Program na měření času je funkční pro jednu i dvě závory. Aktuální čas se

zobrazuje na maticovém displeji. Ten nám je schopen zobrazit čas až

do rozsahu mikrosekund a to ve formátu mm/ss,-µs. Přepínání z jedné

brány na dvě a opačně je uskutečněno přepínačem.

Reflexní fotobrány jsme nestihli dodělat, protože jsme nestihli pořídit

komparátor LM311. Tištěný spoj je vyrobený, zapojený a připravený na

osazení komparátorem.

Bylo by třeba ještě vytisknout krabičky pro fotobrány. A vyrobit

nosnou desku pro displej, aby bylo možné ho namontovat na raspberry PI.

Page 20: Měření času průjezdu trasy Irobotika/2017_BROB/2017_B03_zavora_1.… · je nahraný operačný systém RASPBIAN JESSIE WITH PIXEL. V skutočnosti sme nemuseli použiť operačný

BROB Měření času průjezdu trasy 2017

Zdroje

Obrázek 1 Zapojení maticového displeje

Obrázek 2 Program pro měření času

Obrázek 3 Jednocestná světelná závora http://uvp3d.cz/dum/?page_id=2588

Obrázek 4 Reflexní světelná závora http://uvp3d.cz/dum/?page_id=2588

Obrázek 5 Reflexní světelný snímač http://uvp3d.cz/dum/?page_id=2588

Obrázek 6 Schéma zapojení světelné závory

Obrázek 7 Návrh desky plošného spoje

Obrázek 8 Ideové schéma zapojení 1 http://www.astromik.org/raspi/30.htm

Obrázek 9 Ideové schéma zapojení 2 http://robodoupe.cz/2011/cerna-nebo-bila/

Obrázek 10 Návrh krabičky