Sunteți pe pagina 1din 52

DE CE? Un robot reprezint un complex de abiliti reciproc conectate prin fire, uruburi i idei.

Cine tie cum s constuiasc un robot, tie dependene. Pentru a cunoate dependenele este necesar nelegerea. nelegerea este ceea ce ne dorim noi ca un elev s dobndeasc. CINE PENTRU CINE ? Acest ghid este scris de ctre profesorii din licee i universitari pentru elevii din colile gimnaziale i licee. Profesori ctre elevi. Acest ghid este scris de ctre profesorii din licee i universitari pentru profesorii din colile gimnaziale i licee. Profesori ctre profesori. Acest manual reprezint produsul colectiv al tuturor partenerilor. Fiecare partener i-a dezvoltat partea scris i figurile pentru un rezultat comun. Din acest rezultat s-au ales prile componente pentru acest manual. Elevii sunt unici. Acest manual se dorete a fi un ghid: un ghid care ajut elevii s neleag elementele de baz; un ghid care nu descrie, ci explic; un ghid care expune elevilor o cale dificil, dar captivant s afle multe lucruri noi; un ghid care poate fi prima, dar nu i ultima carte despre roboi a unui elev. Toi avem aceast convingere.

Coninutul acestui document este responsabilitatea exclusiv a Grupului colar Industrial tefan Procopiu i nu reprezint punctul de vedere al Comisiei Europene i al Ageniei Naionale pentru Programe Comunitare n Domeniul Educaiei i Formrii Profesionale. Comisia European i Agenia Naional pentru Programe Comunitare n Domeniul Educaiei i Formrii Profesionale nu au nici o responsabilitate cu privire la coninutul acestui document.

Un ghid practic pas cu pas pentru elevii i profesorii din coli gimnaziale i licee.

CUM SE CONSTRUIETE UN ROBOT


Programul pentru nvare continu Comenius Parteneriate colare Multilaterale

Editori: Silvia-Daniela Ionascu Marian-Silviu Poboroniuc Radu Ionascu Coautori straini: Vladimir Bobot Jens Kristian Borup Mika Vettensaari Stefan Wintgen

CUM SE CONSTRUIETE UN ROBOT

CUM SE CONSTRUIETE UN ROBOT


Editori: Silvia-Daniela Ionacu Marian-Silviu Poboroniuc Radu Ionacu Coautori strini: Vladimir Bobot Jens Kristian Borup Mika Vettensaari tefan Wintgen

cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se con cum se construiete un robot cum se construiete un robot cum se construiete un robot cum se construiete un robot

DESPRE ROKEY
Un ghid practic pas cu pas pentru elevii i profesorii din coli gimnaziale i licee.

DESPRE ROKEY ROBOT MECANIC ELECTRONIC SENZORI PROGRAMARE SOLUII

Rokey 2008-2010

ROBOT MECANIC ELECTRONIC SENZORI PROGRAMARE SOLUII

Proiectul este finanat de Comisia European.

Silvia-Daniela Ionacu Marian-Silviu Poboroniuc Radu Ionacu & Vladimir Bobot Jens Kristian Borup Mika Vettensaari tefan Wintgen

Cum se construiete un robot !


Un ghid practic pas cu pas pentru elevii i profesorii din coli gimnaziale i licee.

Programul pentru nvare continu Comenius Parteneriate colare Multilaterale Proiect ROKEY 2008-2010 Tehnologii-Robot ca soluii pentru nvare n viitor 2008-2010

ISBN 978-606-92400-1-4

Cum se construiete un robot

DESPRE ROKEY................................................................................................... 4
INTRODUCERE (de Silvia - Daniela Ionacu) OBIECTIV TEHNIC (de Marian-Silviu Poboroniuc) MSURI DE SIGURAN (de Silvia - Daniela Ionacu) ISTORIE (de Maria Ciulei) 4 4 5 6

Un ghid practic pentru elevii i profesorii de liceu i coli generale conform Programului Comenius Parteneriate colare Multilaterale, Tehnologii-Robot ca soluie pentru procesul de nvare n viitor. Editori: Silvia - Daniela Ionacu, Marian-Silviu Poboroniuc, Radu Ionacu (Romnia); Coautori strini: Vladimir Bobot (Slovacia), Jens Kristian Borup (Danemarca), Mika Vettensaari (Finlanda), Stefan Wintgen (Germania). Tehnoredactare: Radu Ionacu Copyright Vladimir Bobot, Jens Kristian Borup, Silvia - Daniela Ionacu, Mika Vettensaari, Stefan Wintgen, 2010.

ROBOT.................................................................................................................... 6 MECANIC............................................................................................................ 8
TEORIE (de Mariana Bacoc Bic ) CLASIFICARE (de Mariana Bacoc Bic) ASIU (de Mariana Bacoc Bic) FOTOGRAFII (echipa romn de proiect) DETALII (echipa romn de proiect) 8 10 11 12 13 15 16 17 18 20 22 24 25 26 28 30 30 31 32 32 33

CUPRINS

ELECTRONIC..................................................................................................... 14
RECAPITLUARE (de Maria Ciulei) SCHEM BLOC (de Maria Ciulei) LISTA COMPONENTELOR ELECTRONICE (de Maria Ciulei) SCHEMA COMPONENTELOR (de Maria Ciulei) PCB-UL MICROCONTROLLER-ULUI (de Maria Ciulei) PLACA DE DEZVOLTARE (de Maria Ciulei SCHEMA ELECTRONIC AVR (de Maria Ciulei) SCHEMA PUNILOR H (de Maria Ciulei) MOTOARE (de Maria Ciulei i Marian Poboroniuc) SERVO (de Maria Ciulei i Marian Poboroniuc) PUNTEA-H (de Radu Ionacu i Maria Ciulei) STABILIZATORUL (de Maria Ciulei, Silvia - Daniela Ionacu) BATERII (de Maria Ciulei ) EXAMINARE (de Radu Ionacu i Maria Ciulei) VERIFICARE (de Radu Ionacu i Maria Ciulei) REZULTATE (de Silvia - Daniela Ionacu, Maria Ciulei)

Aviz legal: Toate drepturile rezervate. Nimic din acest manual si nici de pe CD nu poate fi copiat sau transmis electronic ori fizic, incluznd: copierea sa, nregistrarea sau stocarea informaiei printr-un sistem de recuperare a datelor, fr permisiunea lui Vladimir Bobot. Orice fragment din aceast carte sau chiar i cartea n ntregime pot fi folosite de: Carl-Benz-Schule Koblenz (Koblenz,Germania), Grup colar Industrial Stefan Procopiu (Vaslui, Romnia), Satakunnan Ammattiopisto (Kankaanpaa, Finlanda), TEC (Centru de Formare Profesional) coala Gimnazial Superioar Tehnic din Lyngby (Copenhaga, Danemarca) exclusiv pentru realizarea oricrui obiectiv al Proiectului Tehnologii-Robot ca soluie pentru procesul de nvare n viitor al Parteneriatelor colare Multilaterale Comenius, ca drept versiunea PDF a acestei crti de la: www.rokey.eu sau CD-ul ataat pot fi copiate i folosite (dar nu imprimate) de ctre profesorii i elevii colilor gimnaziale i din licee, exclusiv n scopuri educative. Toate celelalte drepturi sunt rezervate. Prima ediie: februarie 2011. Numr de exemplare printate in limba romana: 100. Ataament: CD-ul ataat conine versiunea electronic a acestei cri (a se vedea avizul legal) www.rokey.eu: pagina conine versiunea acestei cri n format electronic (a se vedea avizul legal) Editura: Imprimis, Str, Chimiei, nr.16, Iai, Romnia ISBN 978-606-92400-1-4

SENZORI................................................................................................................ 36
CLASIFICARE (de Silvia - Daniela Ionacu, ) PARAMETRI (de Silvia - Daniela Ionacu) TABEL CU SENZORI (de Silvia - Daniela Ionacu) MICROSWITCH (de Mariana Bacoc Bic) SENZOR CU INFRAROU (de Silvia - Daniela Ionacu) FOTOREZISTOR (de Maria Ciulei ) SENZOR CU ULTRASUNETE (de Silvia - Daniela Ionacu) CODIFICATORUL (Silvia - Daniela Ionacu) SENZORI N INFRAROU SHARP (de Silvia - Daniela Ionacu i Dnu. Irimia) GAMA DE PRODUSE SHARP (de Silvia - Daniela Ionacu ) CLASIFICAREA SENZORILOR DE PROXIMITATE (de Silvia - Daniela Ionacu ) CONCLUZII DE LARG UTILIZARE (de Mariana Bacoc, Marian Poboroniuc) GPS (de Silvia - Daniela Ionacu) SENZORUL HALL (de Silvia - Daniela Ionacu)

Bibliografie i surse folosite: Scheme electronice (p. 26, 27), aezarea componentelor i desene PCB (p. 22,23,24): Stefan Wintgen Fotografii de Karel Capek, Isaak Asimov, poster-ul R.U.R: wikipedia.org Cele trei principii ale Roboticii: Isaac Asimov Secvenele din filme despre roboi 8,9,10 i fotografiile roboilor de la paginile 8,9,12: wikipedia.org Desenele Da Vinci: drawingsofleonardo.com Senzor ultrasonic (p. 42): parallax.com Steaguri: hxms.com, atmel.com

PROGRAMARE..................................................................................................... 50
BINE DE TIUT (de Silvia - Daniela Ionacu, Marian Poboroniuc) VARIANTA I (de Eusebiu Ghergu, Radu Ionacu i Dnu Irimia) VARIANTA II (de Marian Poboroniuc i Radu Ionacu) PINII MICROCONTROLLER-ULUI ATMEGA 32 (de Radu Ionacu) SCHEMA BLOC ATMEGA32 (de Radu Ioncu) AVR STUDIO (de Radu Ionacu, Eusebiu Ghergu) NOIUNI DE BAZ ALE LIMBAJULUI C (de Eusebiu Ghergu) REGISTRE FUNCIONALE (de Eusebiu Ghergu) PORTURI (de Eusebiu Ghergu ) REZISTENA PULL-UP (de Radu Ionacu, Ghergu Eusebiu) OPERAII PE BII (de Radu Ionacu, Dnu Irimia) DISPLAY-UL LCD (de Silvia - Daniela Ionacu i Radu Ionacu) CONVERTORUL ANALOGIC-DIGITAL (Silvia Daniela Ionacu, Marian Poboroniuc) OSCILATORUL CU CRISTALE (de Radu Ionacu, Dnu Irimia) CRONOMETRUL WATCH DOG (de Radu Ionacu) CRONOMETRUL / NUMRTOR (de Radu Ionacu) TEORIA PWM (de Marian Poboroniuc, Radu Ionacu ) NTRERUPERI (de Marian Poboroniuc, Radu Ionacu) REGLARE PID (de Radu Ionacu) DANEMARCA - SOLUII (de Jens Kristian Borup) FINLANDA - SOLUII (de Mika Vettensaari) GERMANIA - SOLUII (de Stefan Wintgen) SLOVACIA - SOLUII (de Vladimir Bobot) ROMNIA - SOLUII (echipa romn de proiect)

36 37 38 38 39 39 40 42 44 46 47 47 48 49 50 51 53 54 56 58 64 68 68 70 72 73 74 78 79 80 83 85 86 92 93 94 94 95

Mulumiri speciale (n ordine alfabetic): Henrik Bch, Vladimir Bobot, Silvia - Daniela Ionacu, Alfred Psutka, Aila Vatanen - coordonatorii proiectului de la colile participante pentru organizarea excelent a ntlnirilor noastre, care au fost eseniale pentru dezbaterile sistematice despre coninutul ghidului. Traducere texte materiale de specialitate: Profesori: Teodora Mandrea, Ana Cristiana Botan, Carmen Ranette, Teodora Donosa i Georgiana Coaru

Mii de mulumiri: Tuturor partenerilor asociai pentru propunerile i comentariile lor valoroase, n special Facultii de Inginerie Electric, Energetic i Informatic Aplicat, Universitatea Tehnic Gheorghe Asachi din Iai, Romnia, reprezentat de Conf.dr.ing. Marian-Silviu Poboroniuc.

SOLUII...........................................................................................................

90

Proiectul Rokey

Cum se construiete un robot Principalul obiectiv al acestui proiect este de a forma specialiti creativi cu o calificare nalt, cu abiliti mari de a se perfeciona continuu, specialiti care se vor adapta cu uurin cerinelor unui loc de munc n domeniul Informaticii. Construirea unui robot este o provocare pentru elevi. Alfred Psutka, propunere, 2008. INTRODUCERE Rokey este un acronim pentru Tehnologii-Robot ca o soluie pentru procesul de nvare n viitor. Rokey este un proiect internaional care se ncadreaz n Programul de nvare Permanent Comenius - Parteneriate Multilaterale colare. Parteneriatul Rokey este susinut de ctre colile gimnaziale i licee din Danemarca, Finlanda, Germania, Romnia i Slovacia dup cum urmeaz: TEC (Centrul de Formare Profesionala) coala Gimnazial Tehnic din Lyngby (Copenhaga, Danemarca), reprezentat de coordonatorul de proiect Henrik Baech Satakunnan Ammattiopisto (Kankaanpaa, Finlanda), reprezentat de coordonatorul de proiect Aila Vatanen Carl-Benz-Schule Koblenz (Koblenz, Germania, reprezentat de coordonatorul ntregului proiect Alfred Psutka) Grup colar Industrial tefan Procopiu (Vaslui, Romnia), reprezentat de coordonatorul de proiect Silvia-Daniela Ionacu cu partenerul asociat, Facultatea de Inginerie Electric, Energetic i Informatic Aplicat, Universitatea Tehnic Gheorghe Asachi din Iai, reprezentat de Conf.dr.ing. Marian-Silviu Poboroniuc. Stredn odborn kola, Pod Sokolicami 14, (Trencn ,Slovacia), reprezentat de coordonatorul de proiect Vladimir Bobot. DE CE? Un robot reprezint un complex de abiliti reciproc conectate prin fire, uruburi i idei. Cine tie cum s constuiasc un robot, tie dependene. Pentru a cunoate dependenele este necesar nelegerea. nelegerea este ceea ce ne dorim noi ca un elev s dobndeasc. DE LA CINE I PENTRU CINE? Acest ghid este scris de ctre profesorii de liceu i universitari pentru elevii colilor gimnaziale i pentru elevii de liceu. De la profesori ctre elevi. Acest ghid este scris de ctre profesorii de liceu i universitari pentru profesorii colilor gimnaziale i de liceu. De la profesori ctre profesori. Manualul acesta este o lucrare colectiv a tuturor partenerilor. Partenerii au pus n comun contribuiile lor scrise ca i desenele. De comun acord au fost alese capitolele crii. Nicio propoziie din cartea aceasta nu a fost copiat de la o surs strin. Elevii sunt unici. Acest manual este un ghid: un ghid pentru predarea noiunilor de baz, elevului; un ghid care nu descrie, ci explic; un ghid care arat elevilor un mod mai dificil dar emoionant de a nva mai mult pentru a progresa; un ghid care poate s fie prima carte de Robotic dar nu i ultima. Aa sperm cu toii.

Cum se construiete un robot MSURI DE SIGURAN Mai bine ai avea toate degetele dect s ai un robot. Ideal ar fi s le ai pe ai pe ambele. Luai aminte la msurile de siguran! Foloseste mnui la nevoie! Folosete ochelari atunci cnd trebuie! Ferete-te de ocuri electrice cnd foloseti aparatura electric! OBIECTIV TEHNIC

Proiectul Rokey
Pune literele n ordine pentru a gsi numele scriitorului meu german preferat!

DESPRE ROKEY

Y ET ! F SA ST SAFETY FIR SECOND!

Un careu delimitat de un gard.


Obiect Obiectul gsit i apucat

Socializarea echipelor de pe ntregul continent european.

Procesul construirii robotului!

Toamna 2008

Diseminare

Vara 2010

SARCINA Cutare ntoarcere Cutare NTREBRI SARCINA N DETALIU GNDIREA NVAREA GNDIREA NVAREA CONSTRUCIA PROGRAMAREA DEPANAREA EVALUAREA SATISFACIA

Ciclul de desfurare al proiectului.

Robot

Robotul trebuie s ptrund ntr-o incint delimitat cu perei rigizi (gard), s gseasc un obiect, s-l prind i s revin n punctul de start. Obiectul poate s fie confecionat din orice material. Dimensiunea este de 30x30 mm (proporional cu dimensiunile apuctorului robotului). Un obiect poate fi localizat oriunde n incint. Gardul are 7 cm nlime i culoarea sa nu este specificat. Dimensiunea incintei este de aproximativ 1500x2000 mm. Suprafaa incintei este fcut dintr-un material monocrom, de regul din lemn. Motoarele i senzorii pot fi alese de ctre fiecare partener. Platforma mecanic i electronic a robotului este una comun. Se intenioneaz realizarea de algoritmi comparabili de cutare, prindere i micare. Microcontroller - Atmel ATmega32. Limbaj de programare - Limbajul C (se poate folosi i Assembler). Elementele nespecificate pot fi alese independent de ctre parteneri.

SAFE FORE TY VER

SAF TH ETY IRD !

Robot

Cum se construiete un robot

Cum se construiete un robot bateriile...probleme similare cu cele din proiectul nostru. n aceast etap roboii reprezentau jucriile. Tinereea

Robot

(rspicat) Eu sunt un ROBOT. Tu cine eti? (ruinat) Sunt doar o fiin uman. Citat din dram, autor: QFX45 n 2304 (sper ca niciodat s nu fie publicat) DEFINIIE Robotul este un complex de obiecte electro-mecanice, capabil s ndeplineasc sarcini n concordan cu un program. ISTORIE Epoca de nceput
Poster R.U.R., 1931

ROBOT

A doua jumtate a secolului al XX-lea. Oamenii au realizat c roboii pot de asemenea s-i i ajute. Roboii i pierd formele umane, sunt asemntori minii omeneti. ns ei pot s substituie lucrtori n activitti specializate, repetate la infinit. Un bun exemplu este sudura, 24 de ore pe zi fr nevoia de a bea sau mnca. Prima generaie de roboi Manipulatori programabili. Robotul poate fi programat s fac mai multe feluri de activiti. Ei sunt universali. De obicei au o unitate de control i un manipulator. Un alt bun exemplu sunt roboii care sudeaz n Industria Automobilelor. A doua generaie de roboi (din ziua de azi) Roboi controlai pe baza senzorilor. Ei sunt sensibili la multe influene externe i pot s decid cum s reacioneze n multe situaii. Corpul uman are 5 simuri. Fiecare dintre ele poate sa fie msurat de robot. Aceste soluii sunt tipice pentru industria actual. A treia generaie de roboi (ntr-un viitor apropiat) Roboii cu inteligen artificial. Este posibil ca ei sa decid calea pentru pentru rezolvarea obiectivului cerut. Este un complex de receptori i actuatoare, controlate de microprocesoare. Cele trei legi ale roboilor (Isaac Asimov) Legea 1: Un robot nu trebuie s rneasc o fiin uman sau prin lipsa sa de aciune s lase o fiin uman s fie vtmat. Legea 2: Un robot trebuie s asculte ordinele date de fiinele umane cu excepia cazului cnd acestea vin n conflict cu Prima Lege. Legea 3: Un robot trebuie s-i protejeze existena sa att timp ct aceasta nu vine n conflict cu Prima sau A Doua Lege. Ce este un android i ce este un cyborg? Ce nseamn Inteligena Artificial? Ce naionalitate a avut Isaac Asimov? Ce este un nanobot? ncercai s explicai termenul senzor.
Star Wars de George Lucas. V amintii?

Homer (Illias): femeie din aur, care a ajutat pe Hefaistos n fierria lui. Matematicianul grec Archyttas a construit un porumbel mecanic zburtor (probabil primul avion?). Poveste din secolul al XIII-lea: La ua castelului din Regensburg (un ora puzzle) era un android fcut din cear, lemn i piele care pzea intrarea i vorbea cu vizitatorii. i Thomas Aquinas a vizitat castelul i a pus androidului multe ntrebri filozofice. Cnd androidul nu putea s raspund, el lua un b i-l lovea pe Thomas n cap. Secolul al XVI-lea: Toledo (Spania) - era o strad numit Strada Omului de Lemn. Povestea spune c era un om din lemn care vindea produsele lui n pia. Epoca copilriei Secolul al XX-lea: lumea ncepe s foloseasc cuvntul ROBOT. Se tie c a fost folosit pentru prima oar n drama lui Karel Capek, R.U.R. (Roboii Universali ai lui Rossum, 1920). ns, adevrul este c fratele su Josef a venit cu ideea aceasta. mbunatirea a fost fcut de ctre Karel Capek nsui n ziarul Lidove Noviny n cadrul articolului intitulat: Despre cuvntul robot. Iat traducerea: Josef, autorul ncepe, Am o idee. Ce idee? a murmurat pictorul (a murmurat ntr-adevr, innd o pensul n gur). Autorul a explicat succint. Scrie pe ceva atunci., a spus pictorul fr mcar s scoat pensula din gur i fr s nceteze s coloreze pnza. Indiferena sa era aproape ofensiv. ns nu pot s-i numesc pe acei muncitori prefcui. I-a numi muncitorai, dar nu cred c se cuvine. Numete-i roboi, a murmurat pictorul cu pensula n gur i continund s picteze. i aa a i fost. Aa a aprut cuvntul robot. Fie ca pictorului s i revin meritul noiunii acesteia. 1951 : H. Walter a construit 3 broaste estoase. Ele puteau s detecteze lumina, s evite obstacolele, s gseasc surse de energie pentru a-i ncrca

Robot pentru sudur OJ 10. Produs n Cehoslovacia n anul 1986. Mna uman are 27 de grade de libertate. Un bra robotic are de obicei 5 grade de libertate.

Karel Capek, 1890 - 1938 2001 Odiseea Spaiului (Stanley Kubrick) Un film de lung metraj, n care computerul HAL a decis cine s triasc i cine nu.

IRobot, 2004

NTREBRI

SARCINI Ce se ntmpl cnd un robot din prima generaie se ciocnete de un obstacol? Ce ar face un robot din generaia a doua? Exist simuri, pe care roboii din ziua de azi nu le au. ncearc s explici! Explic noiunea de grad de libertate. Este corpul uman organismul ideal? Dac rspunsul tu este nu, de ce? ncearc s scrii definiia ta proprie pentru robot.
Isaac Asimov, 1920 - 1992

Lunochod, URSS, vehicul lunar.

Mecanic

Cum se construiete un robot Pot s repar navete spaiale americane. Dar trebuie s vreau i trebuie s am timp. Jan Gondocs, de multe ori

Cum se construiete un robot Ce se ntmpl cu stabilitatea robotului? n toate cazurile, ar trebui utilizate roi adiionale pentru stabilitate. O roat activ necesit dou roi adiionale, pentru dou roi active este necesar o singur roat suplimentar. Amintiiv din cunotinele din Fizic. Roata pentru stabilizare ar trebui s se poat roti n toate direciile pentru a oferi mobilitate. Mecanica unei roi de stabilizare este complicat, de aceea cel mai simplu este s foloseti o semisfer sau sfer din plastic. Ce zici de o suprafa cu roi? Roile de plastic patineaz, de aceea cel mai simplu este s folosii roi de cauciuc. Roile de care dispui sunt din plastic? Nicio problem. Pune cauciuc de la roile de biciclet sau roag pe cineva s te ajute. Roile de care dispui sunt din cauciuc? Ce fel de textur folosii? (putei apela le tehnologia Formel 1). Diametrul roilor. Un diametru mai mare nseamn vitez mai mare, dar cuplu mai mic. Un diametru mai mic nseamn cuplu ridicat, dar vitez redus. Dac deinei motoare fr reducie (nu foarte puternice), este bine s folosii un diametru al roilor mai mic (probabil c robotul va urca dealul). Limea roilor. Avei acas o biciclet? Da, am dou. Una din ele are roi subiri. Cea de-a doua are roi groase pentru mers n pdure. ncet, dar sigur. Diametrul gurii centrale. Ia n calcul lungimea i diametrul axului motorului. Roile cu motoare sunt de obicei prinse de schelet. Din ce material sunt cadrele de prindere? Lemn sau aluminiu? Aluminiul este mai bun, dar lemnul se prelucreaz mai uor n altelierul colii (main de gurit, fierstru, pil...). Este important s se aleag o form potrivit a asiului. Imagineaz-i robotul ntrun col al incintei. Trebuie s se poat ntoarce. n cazul n care forma lui este ptrat, probabil c nu va putea face acest lucru. n schimb, cnd forma este rotund, nu exist astfel de probleme. Diametrul asiului. Ar trebui s fie ct mai mic posibil, dar trebuie avut n vedere i faptul c robotul nu este format doar din roi i motoare, ci i din senzori, baterii i srme. nlimea robotului. Centrul de gravitaie trebuie s fie ct mai aproape de sol, pentru a asigura stabilitatea n timpul ntoarcerii. ncearc s minimizezi nlimea robotului. Construcia de deasupra asiului. Nu putei ti niciodat cine va mbunti robotul. Nu tii niciodat unde vor fi situai senzorii. ncearcai s sugerai o construcie care se poate modifica pentru a putea oricnd s adaugai noi piese fr s trebuiasc s demontai totul (nu este vorba de sistem LEGO, ci de ceva care funcioneaz pe acelai principiu). Greutatea robotului este de asemenea important. Un robot cu mas mare este greu de manevrat la diverse viteze. Este bine s foloseti o roat cu marginea ngust, dar stabil, srme din cupru cu diametru mic i izolaie subire (ai grij totui la intensitatea curentului electric), construcie din plastic, etc. GNDII-V Imaginai-v c suntei un vrjitor. Mergei la baie i revenii cu o roat pentru stabilitate fr friciune. Chiar suntei un vrjitor? NTREBARE Care va fi cea mai grea component a robotului?

Mecanic

MECANIC

INSTABIL

DEFINIIE Componentele mecanice sunt componentele care nu sunt electronice. Componentele mecanice sunt cele care nu au conexiune ctre o surs de alimentare (dar depind de forma general a robotului).

STABIL

Acesta este motivul pentru care formele rotunde sunt cele mai potrivite pentru obiectivele noastre. Acestea pot vira fr a se lovi de colurile incintei.

NTREBARE Sunt componente ale roboilor care pot fi att mecanice ct i electronice? Amintii-v spre exemplu de placa de baz a unui calculator. TEORIE Ce nseamn mecanica robotului? 1. forma unui robot 2. materialul din care robotul sau componentele sale sunt fcute 3. precizia constructiv Despre form: Forma depinde de scopul robotului. Probabil c nu ai construi niciodat un robot cu roi, cnd scopul ar fi de a urca scrile (i ar fi probabil sub forma unui pianjen). Pentru mersul pe Lun probabil c ai alege pentru robot o form de main, cu enile, ca n cazul tancurilor. Dac scopul este de a face un robot care s joace fotbal american, ideea cea mai bun este cubul. Dac robotul trebuie s manipuleze bunuri materiale, forma sa nu este important. Care este cea mai bun soluie pentru a realiza scopul robotului nostru? Robotul trebuie s gseasc un obiect, deci se mic prin intermediul roilor. Cum se schimb direcia unui robot? Un rspuns bun ar fi virajul cu ajutorul unui servomotor ataat unor pinioane, ca n cazul unui automobil real. Aceast soluie este ns dificil din pricina cuplului mecanic. Cea mai bun soluie pentru schimbarea direciei ar fi controlul vitezei roilor n mod independent. Dac roata din stnga este n repaus i cea din dreapta se rotete spre nainte, robotul vireaz spre stnga. Controlul vitezei roilor n mod independent permite virajul robotului cu un anumit unghi. Cte roi sunt adecvate pentru un robot? Robotul s-ar putea deplasa i cu o singur roat, dar pentru viraj ar trebui utilizat un servomotor. Dac ar avea dou roi i un singur motor, ar fi de asemenea necesar un servomotor pentru viraj. Cu dou roi i cu dou motoare ns se poate vira utiliznd controlul independent al vitezei pe fiecare motor al robotului.

Pe copert este scris numele unui renumit arhitect (Finlanda). Gsete-l!

Un punct,dou puncte, trei puncte, patru puncte de stabilitate.

INSTABIL

37 31 23 19 17

3 5 7

13

11

Completeaz cu numrul lips.

K L A V E A L

Ai vzut vreodat roboi cu aceast form? Este ciudat! Ct de ciudat?

Completeaz cu litera lips.

10

Mecanic

Cum se construiete un robot CLASIFICARE

Cum se construiete un robot ASIUL n fotografia de mai jos este un desen al asiului. Poi s adaptezi dimensiunile recomandate n funcie de cerinele tale. Cadrul este fcut din lemn (6 mm lime). Dac ai posibilitatea, l poi fabrica din aluminiu (4mm lime).

Mecanic

11

ROBOTUL N CONFORMITATE CU CONSTRUCIA MECANIC

STAIONAR FIX PE INE

MOBIL CU ENILE CU ROI


SPAIU DREPTUNGHIULAR PENTRU ROI ACUMULATORI

Robot umanoid japonez.

ZBURTOR DRON

STABILIZAT CU 3 ROI CU 4 ROI


MOTOR MOTOR Desenele lui Leonardo da Vinci

DINAMIC Roboii cu mai multe roluri. Sunt de exemplu roboi cu roi, care-i schimb modul de deplasare cnd ntlnesc trepte. Dronele sunt vehicule autonome cu anten, folosite de ctre forele aeriene pentru a determina harta unui teren sau a studia schimbrile de climat sau poluare a aerului. n acest moment (momentul editrii ghidului), dronele sunt folosite pentru a studia cenua vulcanic din Islanda. CU 2 ROI
BARE DE LEMN

Robot pe in.

CARE MERGE CU DOU PICIOARE CU PATRU PICIOARE CU ASE PICIOARE


LOC PENTRU BRA MOBIL I SENZORI

Hexapod

MIXT Putei cumpra bare din plastic sau aluminiu cu diametru diferit i lungime diferit pentru a aduga mai multe etaje pe cadrul robotului. TINEI MINTE Selecia componentelor mecanice se bazeaz pe obiectivele stabilite. ncercai s fii original i s sugerai ntotdeauna ceva nou. S nu v fie team sa avei idei noi. Brainstorming-ul este metoda cea mai bun pentru conceperea formei i mecanicii robotului. Aceste cuvinte ale lui Niels Bohr, un fizician danez pot fi viitorul vostru: Ideea ta este nebun. Dar este ndeajuns de nebun? Nu folosii niciodat mai mult de dou tipuri de uruburi, de preferin cu cap n cruce.
Nu este nevoie s fii perfect ca Leonardo Da Vinci, dar poi ncerca s fii ct mai bun. Brainstorming. Nu te teme s i exprimi orice idee care pare stupid sau nebun. Este posibil s descoperi ceva nou i original.

EXOTIC CARE SARE ALTE TIPURI GNDII-V Care sunt avantajele i dezavantajele fiecrei construcii mecanice din tabelul de mai sus? Ce construcie mecanic ar putea fi folosit la mersul pe Lun? Dar la cercetrile marine?
Robot care sare.

12

Mecanic

Cum se construiete un robot POZE asiul robotului. Vedere de jos

Cum se construiete un robot DETALII

Mecanic

13

Este foarte important ca srmele s nu fie ncurcate. Se vor folosi coliere din nylon pentru a le lega.

Se poate folosi i band izolatoare pentru aranjarea firelor.

Bul de ngheat este ideal pentru a fi folosit ca suport.

Acesta este stadiul curent al robotului cu 7 senzori, bra mobil i ecran LCD.

Prinderea senzorului de asiu este important. Nu se va folosi permanent lipici, deoarece la nevoie, nu s-ar putea muta senzorul. Se poate folosi gum cauciucat dei nu este foarte aspectuoas.

Barele din plastic sunt ideale pentru a construi mai multe nivele pe un asiu. ine cont c robotul va fi demontat i remontat de mai multe ori.

Suportul de stabilitate este din plastic. Urmrii gradul de uzur al acestuia.

Poze ale robotului din Germania la nceputul proiectului. Ultima poz reprezint robotul din Romnia.

La prima vedere trebuie s distingei componentele robotului. De aceea este bine s folosii etichete pentru a le distinge mai uor.

Senzorul n infrarou este lipit de asiul din lemn cu ajutorul unui lipici special pentru plastic.

Detaliu al roii nguste de cauciuc (vezi encoderul). Observai faptul c uruburile nu sunt cele adecvate pentru c nu au capul n cruce.

14

Electronic Electronics

Cum se construiete un robot Suntei un expert n programare? Excelent! tii pe de rost pinii ATMega32? Excelent! Suntei capabil s dai guri, s folosii freza sau strungul? Excelent! V socotii singur cheltuielile? Excelent! Nu tii ce nseamn punte H? Ne pare ru! Urmtorul! Poate c aa va fi conversaia cu un posibil angajator n 2-5 ani. Angajatorii au nevoie de oameni compleci. Oamenii compleci sunt aceia care pot realiza conexiuni. Evident, trebuie s fii un expert ntr-un domeniu specific.

Cum se construiete un robot RECAPITULARE Mas (Ground, GND). Este o legtur la pmnt. Pentru multe circuite electrice are o tensiune de 0V. Este cunoscut de asemena sub numele de ground. Lamp. Un traductor care transform energia electric n lumin. Simbolul alturat este pentru o lamp care lucreaz ca indicator. Motor. Un traductor care transform energia electric n energie cinetic (micare). Celula. Asigur energia electric. Terminalul mai lung este pozitiv (+). O singur celul se numete adesea baterie, dar pentru a fi mai exaci, o baterie const din dou sau mai multe celule puse mpreun. Bateria. Asigur energia electric. O baterie este format din mai mult de o celul. Sigurana fuzibil. Un dispozitiv de siguran care va fi ntrerupt dac curentul electric ce l parcurge depete o valoare specificat. Rezistorul. Un rezistor restricioneaz scurgerea curentului, de exemplu pentru a limita curentul care trece printr-un LED. Un rezistor este folosit mpreun cu un condensator ntr-un circuit generator de semnal de tact. Rezistorul variabil. Este un rezistor cu valoare variabil. Acest tip de rezistor este operat cu ajutorul unei urubelnie mici. Poteniometrul. Este un rezistor variabil cu 3 contacte utilizat pentru a regla din exterior tensiunea electric dintr-un circuit. Condensatorul. Un condensator nmagazineaz sarcini electrice. Este de obicei folosit mpreun cu o rezisten pentru a realiza un generator de semnale de tact. Poate fi folosit i ca filtru pentru a bloca componenta continu. Inductorul (Bobina, Solenoidul). Reprezint un bobinaj de fire conductoare care creeaz un cmp magnetic atunci cnd curentul electric trece prin acesta. Centrul bobinei poate fi din fier i poate servi drept traductor, transformnd energia electric n energie mecanic (releu). Dioda. Un dispozitiv care permite curentului s circule ntr-un singur sens. LED (Light Emitting Diode). Un dispozitiv traductor care transform energia electric n lumin. Dioda Zener. Un tip particular de diod care ajut la meninerea tensiunii fix la bornele sale. Fotodioda. Este o diod sensibil la lumin. Transistor-ul NPN (PNP). Are rol de amplificare a curentului. Poate fi folosit cu alte componente pentru a crea un amplificator sau un ntreruptor. Este compus din: emitor, baz i colector. Fototransistor. Este tranzistorul sensibil la lumin. LDR (Light Depending Resistor). Traductor care are rolul de a transforma intensitatea luminii n variaie a rezistenei electrice. Termistorul. Traductor care transform energia termic n variaie a rezistenei electrice. Transformatorul. Const din dou bobine de srm conectate printr-un nucleu de fier. Transformatorul este folosit pentru a ridica sau cobor nivelul de tensiune al curentului alternativ. Nu exist conexiune electric ntre bobine (doar magnetic). Releul. O bobin operat electric, care poate controla un alt circuit independent. GNDII-V Grupai componentele descrise cu simbolurile lor grafice.

Electronic Electronics

15

ELECTRONIC

364 225 139 86 53

6 7 13

33

20

Completai cu numrul lips.

Electronica este o punte ntre actuatori i microcontrollere. Dac nu nelegei electronica, nu vei putea construi un robot. TINEI MINTE Corpul uman (sau robotul) poate fi ncrcat electrostatic, n special cnd aerul este uscat. Cnd suntei ncrcai cu electricitate i venii n contact cu obiecte conductoare, sarcina se va descrca brusc. Cnd atingei o component electronic, ea poate fi distrus. nainte de a atinge un robot sau orice parte a sa electronic, trebuie s atingei un obiect mpmntat, cum ar fi: o conduct de ap, un calorifer, pentru a v descrca de posibila ncrctur electric. Electronica robotului este precis, aa c uitai-v de dou ori nainte de a trece mai departe. Nu v grbii. Componentele puse greit pot cauza erori sau defecte i cutarea lor este o munc foarte anevoioas. n cazul n care nu suntei sigur de dungile colorate de pe rezistene, folosii un multimetru. Fii sigur c circuitele integrate sunt bine introduse n soclu. Evitai lipiturile reci. De asemenea evitai i lipiturile ndelungate din cauza temperaturii ridicate care pot arde cablajul (PCB-ul). Nu este bine s folosii pistolul de lipit din cauz ca are putere mare i generaz un cmp electromagnetic cnd se utilizeaz butonul de pornire. Este bine s folositi staii de lipit cu putere ntre 40-60 W. Este i mai bine dac se afieaz temperatura de lipire. Pentru lipituri este recomandat s se foloseasc fludor de 1mm fr plumb i acid.
CI OC

Multimetrul digital. Asistentul personal.

IC (CI). Circuitul Integrat. Un circuit electronic, care este alctuit din mai multe componente electronice conectate ntr-o capsul. Actuatorul. Derivat din cuvntul aciune. Component ce realizeaz o aciune (motor, bra mobil...). Lipirea pieselor este o art. Un maestru al lipiturilor are nevoie de o secund sau dou pentru a realiza o lipitur corect. Am avut experiene bune cu marca Weller.

TIMP: 1 - 2 secunde
AN DE LI

LIPITUR BUN
CABLAJ

FLUDOR
PIT

16

Electronic Electronics

Cum se construiete un robot Inversiunea. O poart NU poate avea doar o singur intrare. Semnul la ieire nseamn nu logic. Ieirea unei pori NU este opusul intrrii, astfel ieirea este 1 logic cnd intrarea este 0 logic. O poart NU este numit i poart inversoare. Conjuncia. O poart I poate avea dou sau mai multe intrri. Ieirea unei pori I este 1 logic cnd toate intrrile sunt 1 logic. Conjuncia inversat. O poart I-NU poate avea dou sau mai multe intrri. Semnul la ieire semnific faptul c poarta este I negat. Ieirea porii I-NU este 1 logic cu singura excepie cnd toate intrrile sunt 0 logic. Disjuncia. O poart SAU poate avea una sau mai multe intrri. Ieirea unei pori SAU este 1 logic cnd cel puin una din intrri este 1 logic. Disjuncia inversat. O poart SAU-NU poate avea una sau mai multe intrri. Semnul semnific faptul c poarta este negat. Ieirea unei pori SAU-NU este 1 logic cnd toate intrrile sunt 0 logic. Disjuncia exclusiv. O poart SAU-EXCLUSIV (XOR, EOR) poate avea dou intrri. Ieirea unei pori XOR este 1 logic cnd intrrile sale sunt diferite (una 1 logic, una 0 logic). Disjuncia exclusiv inversat. O poart SAU-EXCLUSIV NEGAT (XNOR, ENOR) poate avea doar dou intrri. Semnul semnific negarea porii. Ieirea unei pori XNOR este 1 logic cnd valorile de intrare sunt identice. SCHEMA BLOC SURS DE ALIMENTARE PE BATERII (6 X AA) PLAC MICROCONTROLLER LED

Cum se construiete un robot LIST DE COMPONENTE ELECTRICE Urmtoarele tabele conin toate componentele electronice, care vor fi folosite n construcia robotului. Primul tabel este o list de componente folosite pe plac pentru a controla motoarele.

Electronic Electronics

17

Lista complet Plac de control motoare Plac microcontroller Poz

PLAC CONTROL MOTOARE

Componenta Dioda Shottkey

Tip 1N5817

Nr. buc. 8

Utilizare D1-D8, pentru Punile H; pentru a controla sensul rotaiei motoarelor IC1, pentru controlul PWMului motoarelor IV2B, IC2C, pentru conversia semnalelor sinusoidale n semnale dreptunghiulare LED1, LED2, pentru semnalizarea activitii codificatorului i micarii motoarelor R3, R4, pentru codificatoare R7,R8, pentru limitarea curentului LED-urilor R1, R2 R9, R10, pentru codificatoare R5, R6, pentru codificatoare C2, limitator de curent poze pe urmtoarea pagin

PCB. Printed Circuit Board. Folie de cupru pe un strat dielectric. Cuprul se poate ndeprta prin urmtoarele metode: Tiprirea cu cerneal. Cerneal ce protejeaz folia de cupru. Fotogravarea. Se aplic o masc (proiectat CAD sau CAM) dup care urmeaz ndeprtarea surplusului de cupru. Polizarea. Se folosete un dispozitiv care ndeprteaz mecanic cuprul n exces. SMD. Surface Mount Device. Datorit miniaturizrii componentele sunt lipite pe plac fr a fi nevoie de guri. SMT. Surface Mount Technology. Tehnologii automate de lipire a componentelor SMD. CAD. Computer Aided Design. CAM. Computer Aided Manufacturing.

Punte H Complet cu radiator

L 298 N

Circuite Trigger Schmitt

MOS 40106N orice LED cu consum redus, maxim 2mA 27 k 1k 10 k 10 k 6k 200 nF

MODUL CONTROL MOTOARE PUNI H


Plci universale

STABILIZATOR DE TENSIUNE (5 V cc) AVR ATMEL ATMEGA32

Rezistor Rezistor Rezistor Rezistor Rezistor Condensator Conectori

2 2 2 2 2 1

ACTUATORI (MOTOARE)

IN SYSTEM PROGRAMMING (ISP)

PCB
SENZORI PROGRAMATOR

SERVOMOTOR

LCD

Exist o component electronic, care nu este direct conectat pe plac, dar totui este una dintre cele mai importante componente: senzorul optic IS451F, care genereaz pulsurile de rotaie. Pentru acest robot sunt necesare dou buci, cte una pentru fiecare roat.
Pozele au caracter informativ.

SMD

18

Electronic Electronics

Cum se construiete un robot DISPUNEREA COMPONENTELOR Semnal PWM

Cum se construiete un robot

Electronic Electronics

19

H K E E O N

P E

G N A

Diode Shottkey - alimentare PWM 5V L 298 N Intrri motoare

Codificatoare Puni H
Z A R I S A R A

Realizai un cuvnt din literele de deasupra.

Trigger Schmitt

L 298 N

Completai cu litera care lipsete.

PWM i direcie (microcontroller)

Schmitt flip-flop

Ieire Codificatoare

Marcai trile participante la proiectul Rokey.

Piesele pentru controlul motoarelor sunt lipite pe o plac universal deoarece este cea mai rapid cale de construcie. Viteza motoarelor este controlat prin aa numitul amplificator punte, controlat de IC298N. Acesta este folosit pentru a controla dou motoare de curent continuu n intervalul de 0V-5V (PWM). Intrrile - ieirile circuitului L298: Motorul stng: 5: sensul (nainte, napoi) 7: sensul inversat (inversorul este n afara integratului) 6: semnal PWM de la microcontroller 2: ieire ctre motor 3: ieire ctre motor Motorul drept: 12: sensul (nainte, napoi) 10: sensul inversat (inversorul este n afara integratului) 11: semnal PWM de la microcontroller 13: ieire ctre motor 14: ieire ctre motor Aceste intrri-ieiri sunt conectate la plac pentru controlul motoarelor: 2 x semnal de la motorul din stnga i din dreapta 2 x semnal PWM de la microcontroller la L298 pentru cele dou motoare 4 x selecie sens de rotaie pentru motoare Conectarea porturilor: D0, D1: ieiri, direcia motorului din stnga D2, D3: intrri, pentru ieirea codificatorului, independente pentru ambele roi D4, D5: ieiri, semnal PWM la L298, independente pentru ambele motoarele D6, D7: ieiri, direcia motorului din dreapta

Codificatoare

Motor

Motor

Puni H

Circuit Trigger-Schmitt

L 298 N

Interesant: Sunt repetate 5 culori n steagurile trilor din proiect.

20

Electronic Electronics

Cum se construiete un robot

Cum se construiete un robot

Electronic Electronics

21

PLACA DE DEZVOLTARE Faa i spatele plcii de dezvoltare a microcontroller-ului

PLACA DE DEZVOLTARE

Microcontroller 1

Microcontroller 2

1. Intrare baterie i stabilizatorul de tensiune pentru alimentare. 2. Tensiune de ieire de 5V pentru alte dispozitive externe. 3. Senzor piezoelectric (frecvena sunetului este de 2,4 kHz). 4. Conector pentru programator ISP. 5. LED-uri indicatoare pentru alimentare i mod de programare. 6. Pinii de I/O ai microcontroller-ului. 7. Buton de RESET. 8. Conector pentru comunicaii seriale RS-232 cu calculatorul. 9. LED i buton pentru test. 10. TWI / I2C Schemele de mai sus se refer la prile de alimentare, programare i circuitele corespunztoare de pe placa microcontrollerului.

Comunicaiile prin TWI TWI. Two Wired Interface. Protocol serial de comunicaii ATMEL. I2C. Protocol compatibil pentru alte tipuri de microcontrollere I/O. Intrare/Ieire

Microcontroller 3

22

Electronic Electronics

Cum se construiete un robot PLACA DE DEZVOLTARE

Cum se construiete un robot LIST DE COMPONENTE PENTRU PLACA AVR

Electronic Electronics

23

IEIREA D7

Component Condensator

Tip 22 pF

Nr. buc. 2

Utilizare C1, C2

Fotografie

PIEZO IEIREA D6

Consensator Condensator Condensator electrolitic

1 uF 100 uF 470 uF

6 1 2

C3, C5, C6, C7, C8, C11 C4 C9, C10

IEIREA D5 PINII / O PORT C JUMPER PT. ACTIVARE PIEZO PORT A APSAT = MAS LA D4 PORT C ATMEGA32 PORT D PORT B APSAT = MAS LA D3

IEIRE 5 V

PORT A

LED

2 mA

LED1, LED2, LED3 LED4, LED5

Oscilator cuar
APSAT = MAS LA D2 JUMPERI IPENTRU UTILIZARE BUTOANE CRYSTAL 8 MHz PINII I / O PORT B

8 MHz

Q1

PINII I / O PORT D

Rezistor Rezistor Rezistor

10 k 1k 100 uH

3 5 1

R1, R7, R8 R3, R4, R5, R9 R2 IC1 (USART pentru conexiunea serial RS 232)

STABILIZATOR BUTON RESET JUMPERI AFERENI RS232

Circuit integrat

MAX 232

INDICATOR ALIMENTARE

MAX232 FOR USART SERIAL COMMUNICATION THROW RS 232

Microcontroller

ATMEGA32

IC2

Stabilizator

L4940V5

IC3 n concordan cu pozele anterioare


Pozele sunt cu caracter informativ.

PROGRAMATOR ISP CONECTOR COMUNICAII SERIALE CONECTOR BATERIE

Conectori

24

Electronic Electronics

Cum se construiete un robot SCHEMA ELECTRONIC AVR

Cum se construiete un robot SCHEMA ELECTRONIC A PUNILOR H

Electronic Electronics

25

26

Electronic Electronics

Cum se construiete un robot

Cum se construiete un robot Motorul de curent continuu n paralel: Comparativ cu motorul cu magnet permanent, cmpul magnetic al statorului este generat de tensiunea aplicat motorului. Bobina rotorului este conectat n paralel cu bobina statorului. Motorul pas cu pas (stepper-ul sau MPP): Este similar cu motorul sincron alimentat cu curent alternativ. Cu toate acestea, statorul este un sistem independent de bobine, care sunt una cte una alimentate cu tensiune de alimentare extern (comandate de microntroller). Astfel se poate genera un cmp magnetic de rotaie. Avantajul acestei categorii de motoare este c poate fi oprit precis n aproape orice poziie i meninut n acea poziie chiar dac este aplicat o for asupra sa. Aceast poziie poate fi contorizat fr revenire la starea iniial. Numrul de pai este de aproximativ 200 pe rotaie. Corespondena este de 1,8 grade unghiulare/pas. GNDII-V 1. De ce nu ar fi necesar controlul n bucl nchis? 2. Ce posibiliti recomandai pentru controlul n bucl nchis al poziiei? 3. Ce posibiliti recomandai pentru controlul n bucl nchis al vitezei? 4. Ce motoare recomandai pentru un vehicul destinat planetei Marte? 5. n viitor va fi posibil s folosii influena a dou cmpuri magnetice pentru micare pe baza levitaiei magnetice. Sugerai cum s-ar putea realiza acest lucru. 6. Care ar fi dezavantajele motorului pas cu pas la viteze mari?
Rotor

Electronic Electronics

27

Motorul. Este un dispozitiv care transform energia electric n micare mecanic (liniar sau circular). Servo (servodrive, servomecanism). Motorul pas cu pas este un dispozitiv care transform energia electric n micare circular cu posibilitatea de a ajusta unghiul poziiei finale.

ACTUATORI Actuatorii realizeaz aciunea. Sunt folosii pentru deplasarea robotului sau a modulelor sale. n general se utilizeaz dou tipuri de actuatori - motorul i servomotorul. MOTOARE Cel mai comun tip de motor este cel asincron alimentat cu curent alternativ, datorit fiabilitii, construciei simple i a preului sczut. Acest tip de motor este inutil pentru aplicaia noastr, deoarece am avea nevoie de convertor CC/ CA pentru a-l alimenta. Viteza acestuia este n general controlat cu un convertor de frecven. n cazul de fa s-au utilizat motoare de curent continuu cu magnei permaneni. TEORIE Motorul este un dispozitiv n care interacioneaz dou cmpuri magnetice. Fora mecanic produs de aceste cmpuri este transformat n micare de rotaie. Un cmp magnetic este n general aferent prii staionare a motorului - statorul i a doua parte este n legtur cu partea mobil - rotorul. Clasificarea se face n general dup modul cum se creeaz aceste cmpuri magnetice. Motoare sincrone de curent alternativ: Rotorul este un magnet permanent sau un electromagnet. Conexiunea sa la curentul trifazat creaz un cmp magnetic de rotaie. Aceste cmpuri magnetice sunt n legtur mutual unul cu cellalt. Sunt rar utilizate.

Bobinele statorului Principul de funcionare al unui motor pas cu pas. Motorul pas cu pas unipolar. Curentul electric circul printr-o singur bobin a statorului pe parcursul unui pas. Sunt mai simplu de controlat, dar au mai puin for. Motorul pas cu pas bipolar. Curentul circul prin dou bobine ale statorului (opuse) pe parcursul unui pas. Sunt adecvate pentru sarcini mari (cuplu mare). Rotor Bobine stator Curent

Curent

SARCINI 1. Imaginai-v c ai folosit un stepper la robotul dumneavoastr. Ce diametru trebuie s aib roile pentru a se mica 1 cm cnd rotorul face 200 de pai? 2. ncercai s gsii o ntrebuinare motoarelor de curent continuu i pas cu pas ntr-un calculator vechi pe care l deinei. CONTROLUL VITEZEI I A POZIIEI Problemele de baz legate de controlul motoarelor sunt reglarea vitezei i a poziiei. Viteza motorului asincron este controlat prin modificarea frecvenei semnalului. Viteza motoarelor de curent continuu este modificat cu ajutorul tensiunii de alimentare. Poziia rotorului poate fi controlat n bucl deschis doar n cazul stepper-elor. n cazul n care se dorete controlul precis al vitezei sau (i) al pozitiei este necesar controlul n bucl nchis. Acest lucru poate fi realizat cu ajutorul unui tahogenerator, IRC sau prin alte metode. TINEI MINTE Cele mai utilizate motoare n Robotic sunt cele de curent continuu cu magnei permaneni i motoarele pas cu pas. Amndou categoriile pot fi controlate n general cu ajutorul microcontroller-ului (prin controlul tensiunii prin PWM i Puni H). Motoarele sunt de obicei ataate unor roi prin intermediul unor reductoare (care uneori nu sunt folosite).

Control cu o singur faz a motorului pas cu pas. Curentul circul printr-o singur bobin a statorului pe parcursul unui pas. Sunt usor de controlat, dar dezvolt un cuplu mic. Control cu dou faze a motorului pas cu pas. Curentul circul prin dou bobine adiacente ale statorului (dou bobine - unipolar, patru bobine - bipolar). Rotor Bobine stator Curent

Sarcin dificil: Identificai i marcai poziia statelor participante la proiect pe harta Europei. Comparai apoi rezultatul cu harta anterioar.

Curent

Motoare asincrone de curent alternativ: Un cmp magnetic produs de conexiunea trifazat din stator induce tensiune n bobina situat pe rotor (uzual, rotor n form de colivie de veveri) conform principiului induciei electromagnetice. Aceast tensiune genereaz curent n nfurarea rotorului, genernd astfel al doilea cmp magnetic (cmpul magnetic al rotorului). Cele dou cmpuri magnetice se influeneaz reciproc. Sunt cele mai utilizate tipuri de motoare n aplicaiile industriale. Motoare de curent continuu cu magnet permanent: Rotorul acestui tip de motor este alimentat cu curent continuu. Curentul care trece prin bobina rotorului genereaz un cmp magnetic. Cmpul magnetic al statorului este generat de un magnet permanent. Aceste cmpuri magnetice se influeneaz unul pe altul. Motor de curent continuu n serie: Comparativ cu motorul cu magnet permanent, n acest caz cmpul magnetic al statorului este generat de o surs de tensiune comun, conectat la motor. Rotorul este n conexiune serial cu bobina statorului. Acest tip de motor este folosit la pornirea autovehiculului datorita cuplului mare generat.

Avantaj: Se poate controla viteza motorului fr a fi nevoie de un control n bucl nchis. Pentru un control mai precis se poate utiliza controlul n bucl nchis. Dezavantaj: Motorul se poate opri, dar totui consum curent. IRC. Internet Relay Chat. Este o form de comunicare online. Aceast prescurtare nu ne intereseaz n cazul nostru. IRC. Incremental Rotary enCoder. Produce impulsuri electrice. Numrul acestora este proporional cu poziia rotorului. n continuare dispozitivul va fi numit codificator.

28

Electronic Electronics

Cum se construiete un robot SERVO Principiile de funcionare ale motoarelor, folosite n special pentru deplasarea roboilor, au fost explicate n capitolul anterior. n concordan cu cele menionate, rotorul se afl ntr-o continu micare de rotaie care este transformat ntr-o micare rectilinie. Totui robotul necesit i un alt tip de micare i anume cea reversibil i repetat. Imagineaz-i un bra robotic care trebuie s prind o cutie, s o ntoarc i s o aeze n alt loc sau gndete-te la aripile unui avion cu telecomand care trebuie s-i schimbe unghiul pentru a crea portana necesar sau modifica direcia de deplasare. Pentru a putea atinge aceste inte, cea mai bun metod este s se foloseasc soluia complex numit servomotor (servomecanism). DEFINIIE Servomotorul este un motor al crui ax este poziionat ntre dou limite (de obicei 90 de grade la stnga i la dreapta fa de poziia central) i dezvolt cuplu suficient pentru meninerea poziiei atinse. Evident, un servomotor poate fi folosit pentru controlul poziiei. Legat de funcionalitatea sa, este mai simplu de utilizat dect un motor pas cu pas (nu necesit control n bucl nchis, dezvolt cuplu n poziia atins) i nu necesit un circuit de alimentare complex. Pe de alt parte, un servomotor nu se poate roti cu 360 de grade (exist excepii de motoare care se pot roti complet). TEORIE Un servomotor nu este aa de uor de neles, de vreme ce conine mai multe componente care se influeneaz reciproc. Pe pagina urmtoare exist o form de und folosit pentru servomotoare. Frecvena sa este de 50 Hz (perioada 20 ms), amplitudinea impulsului este de 5V, durata impulsului este de la 1 ms la 2 ms. Semnalul este generat de microcontroller. Aceast procedur este explicat n capitolul denumit Programare. Servomotorul nu este un simplu motor, ci este un complex de dispozitive: motor de curent continuu (magnet permanent, vezi capitolul anterior). reductor (pentru a putea furniza un cuplu mai mare).
AX

Cum se construiete un robot ax extern (connectat la actuatorul extern) poteniometrul (conectat la ax, influenat de poziia acestuia) monostabil (genereaz semnal pentru amplificatorul diferenial) amplificatorul diferenial (compar valoarea cerut cu cea real) trei fire (GND, + 5 V, valoarea de comand pentru unghi) Unghiul cerut (referina), codificat prin durata impulsului, constituie intrarea monostabilului. Acesta genereaz un semnal pozitiv de durat proporional cu valoarea actual a unghiului (inei minte c poteniometrul este conectat la axul intern astfel nct unghiul acestuia este proporional cu rezistena poteniometrului). Valorile real i referin sunt comparate cu ajutorul unui comparator. Dac exist diferene, un semnal este transmis ctre amplificator i influeneaz rotaia axului motorului. Acest lucru cauzeaz rotirea n sens opus a poteniometrului i crearea unui rspuns negativ ctre monostabil, pn cnd limile semnalelor n comparator devin egale. Dac diferena este zero motorul se oprete. n aplicaia noastr am utilizat servomotorul Hitech, cu o tensiune de alimentare ntre 4.8 i 6 V. Curentul consumat n timpul funcionrii fr sarcin este de 200 mA, n stare de ateptare consumnd doar 10 mA. Domeniul de reglaj pentru unghi este de 180 de grade, cuplul fiind de 48 Ncm / 5 V. Forma general a semDurata impulsului 1 - 2 ms nalului, folosit pentru Amplitudine 5 V controlul servo (generat de microcontroller). Perioad 20 ms

Electronic Electronics

29

Perioada (T). Timpul necesar repetiiei semnalului. Frecvena (f). Numr de oscilaii ntr-o secund. T=1 / f f=1 / T

Servo Hitec HS-422. RC. Remote Controlled. Maini, avioane, elicoptere teleghidate.

Servomotoarele ieftine au poteniometrele conectate direct la ax. Cele scumpe au conexiunea prin intermediul reduciilor. PWM. Pulse Width Modulation. Puls modulat n lime. Are amplitudine constant i i modific doar durata. Monostabil flip-flop. Dup activarea semnalului de declanare, ieirea circuitului devine 1 logic. Dup o perioad de timp ieirea devine zero. Are o singur valoare stabil - nivel zero logic. Bistabil flip-flop. Este comutat ntre 0 i 1 logic cnd semnalul de comand este activat. Astabil flip-flop. Comut tot timpul fr un semnal de declanare.

DE LA

LA

Micare reversibil i repetat.

Poziia axului -90o Hitec. Productor motoare servo Futaba. Productor servo. Hitec vs Futaba. Hitec este mai ieftin. Calitatea este aceeai. Difer doar mecanic (culori ale firelor, conectori).

Lime1 ms. Axul n stnga (-90 de grade la stnga fa de poziia median).


Poziia axului 0o

Aripile avioanelor nu au servo. De ce? Cuplu (moment). Cuplul este fora acionat de o prghie asupra unui punct de rotire. Unitatea de msur este Nm (Newton metru). ncercai s prindei rotorul motorului. Dac reuii s-l oprii motorul are un cuplu mic, n cellalt caz acesta dispune de un cuplu mare. Ataai o roat axului motorului i ncercai acelai lucru asupra roii. Vei observa c avei nevoie de o for mai mare s oprii roata. Fora este cu att mai mare cu ct diametrul roii este mai mare. Axul motorului

REDUCTOR REGLAJ POTENIOMETRU

Lime 1.5 ms. Axul n mijloc.


Poziia axului +90o

Se poate obine un cuplu mai mare n cazul alimentrii cu 6V ( un plus de 10 Ncm), dar nu este necesar pentru obiectivul nostru. Funcionare continu. Servomotorul poate fi modificat s funcioneze ca un motor normal. Trebuie ndeprtate semnalul de reacie al poteniometrului i opritoarele de capt de curs. Viteza este controlat prin limea impulsurilor.

MOTOR MONOSTABIL

VALOAREA CERUT

Lime 2 ms. Axul n dreapta (90 de grade de la poziia median).


MPMNTARE AMPLIFICATOR +5V EROARE REGLARE VALOAREA CERUT COMPARATOR VALOAREA REAL

GNDII-V De ce reprezint greutatea unui servomotor o caracteristic foarte important? Ce este mai adecvat de folosit? Un motor pas cu pas sau un servomotor?

30

Electronic Electronics

Cum se construiete un robot PUNTEA H

Cum se construiete un robot Modaliti i mijloace Cea mai simpl metod este utilizarea diodei Zener. Acesta permite curentului s circule ntr-un singur sens. De asemenea poate permite curentului s treac i n sens invers, cnd tensiunea pozitiv pe catod este mare i poart numele de tensiune Zener. Acest efect este folosit n stabilizator, dar doar pentru consumuri mici i dispozitive simple, din cauza pierderilor pe diod. A doua cale este s se utilizeze un tranzistor, care este controlat de ieirea unui comparator. Acesta compar valoarea de referin (tensiunea cerut) cu cea actual a nivelului de tensiune. Acest stabilizator folosete reacia pentru a controla valoarea tensiunii furnizat sarcinii. n cazul nostru s-a folosit stabilizatorul L4940V5, care are funcia de stabilizare la 5V, pierderi mici, protecie la scurtcircuit, la temperaturi ridicate i la inversare de polaritate. BATERIILE
Tensiune Zener

Electronic Electronics
I [A] Avans

31

IC. Integrated Circuit. Circuit Integrat. uC. Microcontroller. TTL. Tranzistor Tranzistor Logic. Reprezint valori logice de 5 V. DTL. Diod Tranzistor Logic. Reprezint valori logice de 15 V. ENERGIA NCONJURTOARE CENTRAL ELECTRIC 1 000 V / 50 Hz TRANSFORMATOR 440 kV, 50 Hz

A controla un motor nseamn a-i regla viteza i sensul de rotaie. n capitolul anterior am menionat c viteza motoarelor de curent continuu este controlat de ctre semnalul PWM generat de microcontroller. Datorit limitrii de curent din microcontroller, puterea semnalului PWM trebuie mrit. Aceast cretere este realizat cu ajutorul punii H. Schimbarea sensului de rotaie se realizeaz de asemenea prin intermediul punii H. TEORIE

INDESTRUCTIBIL

5V

0.6 V

U [V]

Caracteristica tensiune-curent a diodei Zener

TRANSFORMATOR 22 kV / 50 Hz TRANSFORMATOR 3 x 400 V / 230 V TRANSFORMATOR 230 V / 8 V REDRESOR 8 V (DC) RECTIFICATOR STABILIZATOR ROBOT

Una dintre deciziile noastre n timpul construciei robotului a fost alegerea sistemului de alimentare. Robotul trebuie s fie autonom, astfel nct s nu mai fie legat prin fire de o surs extern n timpul funcionrii. Alegerea noastr este simpl prin utilizarea acumulatorilor. Problema a fost alegerea tipului i dimensiunilor acumulatorilor folosii. Tranzistorii i celelalte componente de comutaie sunt controlate de microcontroller. Observ semnalul PWM la baza tranzistorului. Aceast metod de a controla motoarele este folosit de muli productori cu diverse componente. Pentru robotul nostru folosim integratul L298. Aceast component conine dou puni H. Curentul maxim este de 4A, tensiunea maxim este de 48 V. Aceti parametri sunt potrivii i pentru a controla motoare mai puternice (pn la 200 W). Semnalul de control este TTL. STABILIZATORUL De ce? Sursa real de alimentare (n cazul nostru bateria) are ntotdeauna rezisten intern. Cnd o sarcin se conecteaz la aceast surs, conform Legii lui Ohm exist o cdere de tensiune. Aceasta depinde de curentul consumat i duce la scderea nivelului de tensiune pe circuit. Uneori acest lucru nu este acceptabil. Cum? ntre sursa de alimentare i sarcin exist un stabilizator, care verific nivelul de curent consumat i ajusteaz astfel nivelul de tensiune. Tensiunea de alimentare trebuie s fie puin mai ridicat dect cea necesar a fi furnizat sarcinii. Parametri tehnici necesari: un nivel de tensiune mai mare de 5 V (aceast tensiune va fi necesar pentru alimentarea microcontroller-ului), tensiunea adecvat fiind de 8 V. un curent de alimentare de 1 A meninut constant timp de 2 ore. De ce? Un motor are nevoie de aproximativ 300 mA (amndou 600 mA), senzorii consum 50 mA ( 8 senzori 400 mA). Timpul de testare trebuie s fie de dou ore fr ncrcare. Deci avem nevoie de baterii cu capacitate de 2Ah. Posibiliti: Baterii Alcaline (1.5V). Sunt ieftine i att. Este recomandat utilizarea bateriilor alcaline doar pentru consumuri mici (telecomand, ceasuri). Au capacitate redus i nu sunt rencrcabile. Nu sunt potrivite pentru robot din cauza consumului mare, care le descarc ntr-un timp foarte scurt. Acumulator NiCd (1.2 V, Nichel Cadmiu). Sunt rencrcabile i au fost folosite n telefoanele mobile din trecut. Problema lor este c trebuie descrcate complet i apoi ncrcate la maxim. A doua problem este c aceti acumulatori reprezint o problem pentru mediu (conin Cadmium). Acumulator NiMH (1.2 V, Nichel Metal Hibrid). Sunt folosite n telefoanele mobile de astzi. Pot fi ncrcate oricnd (fr necesitatea de a fi descrcate nainte), dar au nevoie de un timp mai mare de ncrcare. Sunt mai scumpe dar merit ncercate. Soluia noastr este compus din 6 baterii NiMH nseriate de dimensiune AA i de capacitate 2.5 Ah. Acumulatorii cu Litiu (Li-ion) sau Hibrid Nichel Metal Hibrid, n special folosii pentru camere video, sunt pe pia. Pot fi o opiune, dar sunt mai scumpi dect acumulatorii Ni-MH.

Dioda Zener este ca un stabilizator simplu. Reacia. Ieirea unui dispozitiv l influeneaz n viitor. Cel mai bun exemplu este regulatorul PID.

Loopback. Semnal de test trimis ctre orice dispozitiv extern, procesat de acesta i trimis napoi. Este folosit pentru testarea dispozitivelor externe. Un exemplu este comanda ping n reea.

Surs tensiune

Sarcin

Surs de alimentare. Produs de uzina electric, prin alternatoare. Transformare. Trecerea de la o tensiune alternativ de o anumit amplitudine i frecven la un alt nivel de tensiune alternativ de aceeai frecven. Redresare. Conversia curentului alternativ n curent continuu, de obicei cu ajutorul diodelor i tiristoarelor. Rectificare. Ajustarea curentului continuu pentru o form de und mai precis. Stabilizare. Tensiunea sursei de alimentare devine independent de curentul de sarcin.

Carcas pentru acumulatori.

32

Electronic Electronics
Trigger Schmitt. Monostabil flipflop cu histerezis. Ieirile sale nu sunt influenate de oscilaiile de vrf ale semnalului de intrare. Dioda Schottkey. Redresor pentru semnale de nalt frecven. U [V]

Cum se construiete un robot EXAMINAREA Placa pentru controlul motoarelor este necesar pentru: - 2 motoare de curent continuu cu magnei permaneni (5 V). - ase circuite Trigger-Schmitt. - circuit integrat L298 - numit i punte H, folosit pentru controlul independent a dou motoare prin intermediul PWM, cu posibilitatea de control a direciei prin logic TTL. - 2 LED-uri pentru monitorizarea micrii roilor. - senzor optic IS471F (sensibil la lumin, genereaz impulsuri de la codificatorul incremental) - Diode Schottkey 1N5817 - alimentarea punilor H. - codor incremental. Genereaz o serie de impulsuri pe parcursul micrii roilor. Acestea pot fi numrate iar numarul lor este proporional cu unghiul cu care s-a rotit roata. Se poate msura distana parcurs. Pulsurile sunt transformate n semnal dreptunghiular cu ajutorul circuitelor Trigger-Schmitt.. VERIFICARE

Cum se construiete un robot REZULTATE Urmtoarele fotografii sunt fcute cu ajutorul osciloscopului cu faciliti de afiare pe PC. Recomandm folosirea acestui tip de osciloscop datorit posibilitii de a-l lua peste tot alturi de robotul dumneavoastr (de obicei avei un laptop). Osciloscopul este necesar n timpul perioadei de construcie a robotului. Aparatul de msur V- A este bun, dar nu poate nlocui un osciloscop.

Electronic Electronics

33

Puncte de msur. SL1 (SL2): 1 Vcc

t [s]

Comparator Schmitt

Comparator simplu Funcie Trigger-Schmitt.

Cea mai bun cale pentru verificare este folosirea unui osciloscop. De vreme ce nu este un aparat de msur ieftin, recomandm utilizarea unui osciloscop cu faciliti de afiare a graficelor pe calculator. Graficele din acest capitol sunt realizate cu un astfel de osciloscop. Funcionalitatea codificatorului incremental. Conectai sursa de energie la conectorul SL3 (atenie la polaritate). ntoarcei manual roile. Ledurile 1 i 2 ar trebui s se aprind intermitent. Msurai tensiunea pinilor 9(10) i 11(12) ale conectorului CON 2. Semnalul trebuie s fie dreptunghiular, frecvena n jur de 50 Hz, depinznd de viteza de rotaie, ciclul de ncrcare 1:1 (50%). n continuare putei vedea rezultatele. Controlul vitezei i direciei. Conectai sursa de energie la conectorul SL3 (atenie la polaritate). Toi pinii sunt numerotai relativ la conectorul CON2. Conectai Ucc la pinul 13. Acum putei simula viteza maxim a motorului (factor de umplere 100%). Conectai valoarea de 1 logic la pinul 17 si pe cea de 0 logic la pinul 19. Motorul se rotete ntr-un sens. Schimbai ntre ele valorile pinilor 17 i 19. Motorul se rotete n cellalt sens. Conectai valori logice egale la pinii 17 i 19 (nu conteaz dac sunt 1 sau 0). Motorul se oprete. Cnd se modific PWM la pinul 13, se modific i viteza. Acelai proces poate fi aplicat i celui de-al doilea motor (PWM aplicat la pinul 15 i sensul este reglat prin pinii 5 i 7). Vei putea vedea rezultatele n continuare. Funcionalitatea stabilizatorului de tensiune. Conectai sondele de msur la polul + al bateriei i la oricare din punctele Ucc (din spatele stabilizatorului). n timpul rotaiei ctre napoi a motorului trebuie s apar valori neregulate ale tensiunii la sonda plus a bateriei i nu trebuie s apar nici o variaie la sonda Ucc. Vei putea observa rezultatul n continuare. Atenie la alimentarea microcontrolerului. Valori sub 4,9 V nu sunt potrivite. Valorile peste 5,1 V produc nclzirea i funcionarea instabil a uC. n acest caz schimbai stabilizatorul circuitului.

Semnalul de ieire 1 al osciloscopului stabilizatorul. Linia albastr reprezint tensiunea furnizat de baterie. Cea roie reprezint tensiunea la ieirea stabilizatorului. Se poate observa descreterea tensiunii bateriei n situaii de inversare a sensului de rotaie a motorului. V putei da seama c linia roie nu este influenat de sarcina motorului n timpul inversrii sensului de rotaie. Observ de asemenea oscilaiile de-a lungul liniei. Acestea sunt create de semnalul PWM furnizat motorului (tensiunea de alimentare a motoarelor). Stabilizatorul de 5V, tip L4940V5, funcionez perfect.

Puncte de msurare.

40106N: 4 40106N: 3

Asisteni indispensabili.

Cauz a erorilor codificatorului.

Semnalul de ieire 2 al osciloscopului - Codificatorul i circuitele TriggerSchmitt. Pentru msurarea acestor forme de und nu trebuie s conectezi motorul. Roata poate fi rotit manual (desigur, alte componente trebuie conectate). Linia roie reprezint tensiunea impulsurilor codificatorului. Observ forma impulsurilor. Cea albastr este tensiunea la ieirea circuitului Trigger-Schmitt. Se poate vedea principala funcionalitate a circuitului crearea unei forme dreptunghiulare a semnalului. Circuitul 40106N funcioneaz, impulsurile utilizate de ctre microcontroller pentru controlul n bucl nchis fiind de bun calitate.

Observai forma impulsului din cercul galben. Anomalia este cauzat de desprinderea unuia din punctele reflectorizante de pe interiorul roii (vezi poza anterioar).

34

Electronic Electronics

Cum se construiete un robot

Cum se construiete un robot

Electronic Electronics
Puncte de msurare

35

Puncte de msurare L298: 6 (15) ATMega32: pinul de ieire pentru semnalul servo. Alegerea acestuia este la latitudinea dumneavoastr.

L298: 2 (3)

10 % factor de umplere

15 % factor de umplere

20 % factor de umplere 1 ms

o perioad 30 ms, 33 Hz

Puncte de msurare L298: 6 (15)

L298: 2 (3)

Semnalul de ieire 3 al osciloscopului. PWM-ul dorit i cel real. Linia roie reprezint semnalul PWM de la microcontroller cu un factor de umplere de 20%. Linia albastr reprezint tensiunea de la iesirea punii-H. n timpul msurtorii motorul nu a fost conectat la ieirea punii H. Observai viteza motorului. Circuitul L298 funcioneaz normal.

Semnalul de ieire a osciloscopului 5. PWM necesar servomotorului. Un puls cu durata de 1ms presupune axul motorului rotit ctre stnga. Frecvena este de aproximativ 30 Hz. Msurtoarea este realizat cu motorul deconectat. Microcontroller-ul genereaz un semnal destul de bun pentru controlul servo.

Puncte de msurare

ATMega32: pinul de ieire pentru semnalul servo. Alegerea acestuia este la latitudinea dumneavoastr.

2 ms 80 % factor de umplere

o perioad

30 ms, 33 Hz

Semnalul de ieire 4 al osciloscopului - PWM-ul dorit i cel real. Exist doar o singur diferen fa de imaginea anterioar - factorul de umplere al semnalului PWM este de 80%. Circuitul L298 funcioneaz normal.

Semnalul de ieire a osciloscopului 6. PWM necesar servomotorului. Exist doar o singur diferen fa de imaginea anterioar. Un puls cu durata de 2ms presupune axul motorului rotit ctre dreapta. Microcontroller-ul genereaz semnal necesar pentru controlul servo.

36

Senzori Sensors

Cum se construiete un robot Microcontroller-ul: Care este distana pn la gard? Senzorul:1,85 V. Microcontroller-ul: Mulumesc, informeaz-m la fiecare milisecund. DEFINIIE

Cum se construiete un robot Dup poziia obiectului msurat: Senzori cu contact. Acetia sunt n contact cu obiectul de msurat. Ex: indicatorul de presiune, termometrul, microcomutatorul, bimetalul Senzori fr contact. Acetia pot msura valori fizice de la distan. Ex: senzori n infrarou. i temperatura poate fi msurat de la distan (termoviziune). Dup modul de funcionare: Senzorii capacitivi. Sunt utilizai n msurtori la mic distan i n nanotehnologii. Ei msoar capacitatea, care este invers proporional cu distana. Sunt foarte precii, dar nu-i folosim la robotul nostru. Senzorii inductivi. Sunt utili n detectarea metalelor. n bobina de inducie se produce un curent care genereaz un cmp magnetic. n cazul n care se gsete vreun obiect de metal n apropierea bobinei de inducie, fluxul de curent crete. Senzorii optici. Utilizeaz lumin cu diferite lungimi de und pentru a msura distana. Acest tip de senzori este frecvent folosit n robotic. Senzorii magnetici. Probabil cei mai utilizai la msurarea turaiei (senzorul Hall). Ei au o surs de cmp magnetic (pe ax) i senzorul Hall. Principala proprietate a senzorului Hall este cea de a genera tensiune datorit unei modificri a cmpului magnetic. Variaia tensiunii este proporional cu turaia. Acetia pot fi folosii i ca senzori de proximitate. Toi senzorii menionai mai sus sunt senzori fr contact. PARAMETRI Sensibilitatea. Este ceva asemntor cu amplificarea unui tranzistor. Ct de mare este variaia semnalului de ieire n comparaie cu variaia semnalului de intrare? Cu alte cuvinte, o mic modificare a valorii msurate trebuie s produc o modificare mare a ieirii (sensibilitate bun). Selectivitatea. Senzorul nu trebuie s fie influenat de mediu. Nimic nu trebuie s-l influeneze n afara parametrului msurat. V putei imagina un senzor ultrasonic care nregistreaz o valoare diferit cnd fluierai? Influienele de mediu pot cauza umiditate, temperatur, vibraii, semnale acustice, lumin etc. Rezoluia. Este cea mai mic diferen ce poate fi detectat de un senzor. Rigla are o rezoluie de 1mm, iar termometrul cu mercur de 0,1oC. Domeniul. Este ecartul ntre valoarea minim i cea maxim care pot fi detectate de ctre un senzor. Termometrul poate msura de la 34o C pn la 42o C. Senzorul Sharp 2D120X are un domeniu de msurare de 4 30 cm. Precizia (acurateea). De fiecare dat trebuie obinut aceeai valoare (n aceleai condiii de mediu). Este o comparaie ntre valoarea real i cea msurat. Depinde de muli factori - interni i externi. Minimizarea dispersiei citirilor se face prin calibrare. Un timp de msur mare duce la o scdere a preciziei. Offset. Este diferena dintre valoarea msurat i valoarea real, n cazul n care valoarea real este zero. Liniaritatea (neliniaritatea). O amplificare aplicat unei intrri conduce la o aceeai amplificare pe ieire. De obicei aceasta nu este ndeplinit. n special senzorii Sharp sunt neliniari, ceea ce este periculos pentru programul nostru. Histerezisul. Exprim o dependen de o valoare anterioar. Cnd senzorul este apropiat de un obiect, acesta ofer la ieire 1V la distana de 10 cm. Atunci cnd este deprtat de obiect, msoar 1 V la distana de 9 cm. De obicei, aceasta este una dintre erorile senzorilor magnetici. Timpul de rspuns. Senzorii au nevoie de ceva timp pentru a stabiliza valoarea ieirii. Senzorul ar trebui s-i stabileasc valoarea de ieire ct mai curnd posibil, fr nici o oscilaie.

Senzori Sensors
RADAR. RAdio Direction And Ranging. SONAR. SOund Navigation And Ranging. LIDAR. LIght Direction And Ranging. Calibrarea. Comparaia dintre valorile de la senzor i de la instrumentul etalon. Nanotehnologii. Tehnologiile actuale sunt capabile s lucreze cu precizii de 10-9 m (nanometri). Acestea sunt distanele dintre atomii din molecule.

37

Termometru analogic.

Termometru digital. Simurile umane: vzul gustul pipitul mirosul auzul Fiecare sim poate fi msurat. Ce tii despre al aselea sim?

Senzorul este un dispozitiv care convertete un anumit tip de mrime fizic ntr-un alt tip de mrime fizic. De obicei, cellalt tip de valoare fizic este un semnal electric, dar n general poate fi orice tip de semnal. NTREBARE

SENZORI

De ce sunt senzorii aa de importani? Rspunsul este foarte simplu: Cnd trebuie s mergem undeva, trebuie s tim unde suntem. Dac vrem s rspundem la o ntrebare, trebuie s o auzim mai nti. Dac robotul trebuie s gseasc un obiect, mai nti trebuie s-l localizeze. GNDETE-TE Senzorii corpului uman. Putem recunoate lucrurile din jurul nostru prin intermediul senzorilor corpului uman.Urechile sunt senzorii auzului. Ochii sunt senzorii culorilor. Pielea are senzori pentru presiune i temperatur. Limbii i este atribuit gustul etc.. Care este funcia creierului? EXEMPLE

20o C

Metal 1 Metal 2

70o C

Metal 1 Metal 2

De ce sunt asemntoare? Ce nseamn ecolocaie?

Cel mai util senzor din viaa noastr este termometrul. Acesta indic temperaturi prin lungimea coloanei de mercur, sau o valoare afiat pe ecran. CLASIFICARE Dup modul de realizare al msurtorilor: Msurare continu. Valoarea este msurat la intervale foarte mici. Msurare stare. Valoarea este msurat la cerere, atunci cnd utilizatorul are nevoie de o valoare a unei mrimi. Un microcomutator are doar dou stri posibile. De fiecare dat cnd primeti valoarea acestuia, vei avea doar o stare din cele dou posibile.

Principiul bimetalului. Se folosete de dilatarea termic diferit a dou metale lipite.

20o C

60o C

Diferen de tensiune

eta

l2

Dup semnalul de ieire: Ieiri analogice: Tipic msurtorii continue; de exemplu distana de 10 mm corespunde valorii citite de 1 V, 9 mm corespunde valorii citite de 0,9 V Ieiri logice: Tipic msurtorii de stare, cnd de exemplu o distan mai mare de 10 mm nseamn 0 logic, mai mic de 10 mm, nseamn 1 logic. Semnal tip impulsuri: este tipic codificatoarelor, care genereaz impulsuri rezultate n urma msurtorilor micrilor liniare sau de rotaie. Dup necesarul de energie: Senzori pasivi: Nu au nevoie de energie deoarece produc ei nii energie, ex. indicatorul de presiune, prin intermediul vibratorului cu cristal, termocuplul Senzori activi: Au nevoie de o surs de energie pentru a o converti, ex. senzorii Hall, senzorii n infrarou, termistor.

Termocuplu. Folosete efectul termoelectric. Nu poate msura temperatura n valori absolute.

eta

l1

38

Senzori Sensors

Cum se construiete un robot Exist dou probleme legate de construcia roboilor. Cum s se mite un robot i cum s recunoasc mediul nconjurtor. Restul este doar programare. TABEL CU SENZORI Urmtorul tabel conine cei mai des folosii senzori ai roboticii:
Tip
Microntreruptorul Fotorezistor

Cum se construiete un robot SENZOR CU INFRAROU Senzorul cu infrarou (IR) este un circuit electronic care detecteaz intensitatea luminii reflectate. Acesta const ntr-o diod cu infrarou, care emite lumin infraroie i un fototranzistor, care detecteaz cantitatea de lumin infraroie reflectat. n funcie de construcie, avei dou posibiliti: un emitor IR i un detector IR ntr-o singur carcas (manipulare mai bun, funcionare mai bun pentru c pot fi reglate) sau carcase independente (mai ieftin). De ce este folosit lumina infraroie ? Deoarece are o lungime de und specific astfel nct detecia poate fi mai selectiv. Lumina solar influeneaz foarte puin detecia. Pentru a se reduce infuena luminii vizibile se folosete spectrul infrarou modulat. Aceasta se codeaz/decodeaz cu o frecven de cca. 40 kHz. O alt msur de precauie este utilizarea unor benzi nfurate n jurul capului detectorului pentru a crea umbr. Senzorii cu inflarou sunt de obicei folosii la roboii clasici pentru urmrirea liniei drepte i detectarea obstacolelor, n situaii n care obiectele detectate sunt la o distan mic fa de detector (1 cm). Trebuie s fii ateni la unghiul de emisie, deoarece chiar i o mic diferen fa de unghiul corect poate cauza o disfuncie. Unele materiale (nchise la culoare, transparente) pot absorbi lumina emis i pot cauza de asemenea disfuncii. ncercai s folosii un card de detecie a semnalului IR pentru a vedea inta undei de lumin IR. Mai putei vedea unda IR (nu cu ochiul liber) cnd o nregistrai cu ajutorul camerei video utiliznd funcia de nregistare pe timp de noapte. Robotul nostru utilizeaz senzorii cu infrarou QRD 1114, conectat la pinii portului C. Dac dorii s economisii bateria, deschidei senzorul emisie-detecie IR doar atunci cnd avei nevoie de el. GNDETE-TE
0 0 1

Senzori Sensors

39

Senzor de proximitate. Senzor care poate msura distane. Senzor tactil. Senzor care sesizeaz contactul fizic cu un obstacol sau obiect.

Lungimea de und IR este de 880 nm

Descriere
Comutator tactil (de contact). Detector de coliziune care sesizeaz contactul fizic. Rezistena sa este influenat de lumin. Este utilizat pentru o deplasare pe distane mijlocii. Emite i detecteaz lumina infraroie. Utilizat pentru mersul n linie dreapt, evitarea obstacolelor. Adecvat pentru distane mici.

Importan
3

Utilizat n robot?
0

obrazok pracuje OK a nepracuje pri slnku

Senzor n infrarou Microntreruptor cu tampon

Senzor cu ultrasu- Emite i detecteaz undele sonore. nete Utilizat pentru evitarea obstacolelor i gsirea obiectelor. Adecvat pentru distane mijlocii de pn la 3 metri. Senzor Sharp infrarou Emite lumin n infrarou i detecteaz cantitatea de lumin reflectat. Utilizat pentru distane mijlocii de pn la 5 metri. Emite i detecteaz lumina. Utilizat pentru msurarea vitezei de rotaie. Msoar curentul. Utilizat pentru controlul vitezei i controlul consumului bateriei.

QRD1114. Emitor-detector n aceeai capsul. Conductivitatea (G). Msurat n Siemens (S). Rezistena (R). Msurat n Ohmi ().

R=1/G.
+5V

Codificatorul Senzorul de curent

5 2

1 0

Stratul fotosensibil al unui senzor care sesizeaz intensitatea luminoas. +5V

Senzor de culoare Busol digital

Detecteaz frecvena luminii reflec- 1 tate. Detecteaz direcia de micare potrivit cmpului magnetic al pmntului. Detecteaz locaia. Utilizeaz navigaia prin Sistemul Global de Poziionare.

Exist n natur un animal care utilizeaz emisia luminii pentru orientare? Putei compara microcomutatorul cu vreo parte a corpului animalelor? FOTOREZISTORUL Fotorezistorul este un rezistor a crui conductivitate depinde de cantitatea de lumin incident. Depinde de cantitatea de lumin solar, nu de cea cu infrarou (ns numeroase materiale pot detecta lumina roie i ultraviolet). Mai mult lumin nseamn o mai mic rezisten (o mai mare conductivitate). Fotorezistorii sunt uneori numii fototranzistori sau fotocelule, ns ambii termeni sunt incoreci. Fototranzistorul utilizeaz proprietile jonciunii PN pentru o rezisten variabil, fotocelulele genereaz tensiune, care depinde de cantitatea de lumin. Fotorezistorii sunt deseori folosii i ca divizoare de tensiune. Valoarea tensiunii este divizat aproape egal i pot fi utilizai ca senzori de distan, cnd sunt conectai la convertorul analog-digital al microcontroller-ului. ns, datorit dependenei lor neliniare este mai bine s utilizai senzori de distan. Fotorezistorul poate fi utilizat i pentru detectarea a dou stri, care evalueaz lumina (ex. cea a unei lmpi) i direcionez robotul ctre int. Poate fi conectat la pinii microcontroller-ului prin rezistori de ridicare (pull-up). Fotorezistorul are o rezisten de ordinul la ntuneric. La lumina solar rezistena acestuia scade la 100 . Utilizarea i conectarea la microcontroller vor fi descrise detaliat n partea numit Programare.
22 k Ctre intrarea microcontroller-ului

Senzor GPS

Intrarea microcontroller-ului

Camer de luat Detecteaz mprejurimile cu aju- 1 vederi torul unei camere video digitale.

GND Desen tipic de senzor IR cuplat cu un rezistor de limitare. I [A] 800 lx 400 lx 100 lx

22 k GND Rezistor de coborre (pulldown). Scade tensiunea la zero. +5V 22 k Intrarea microcontroller-ului GND Rezistor de ridicare (pull-up). Ridic tensiunea la nivelul Ucc.

Not: Importana depinde n mod deosebit de obiectivul robotului. n cazul n care scopul robotului este de a ghida persoanele nevztoare n lumea real GPS-ul i camera de luat vederi, ar avea probabil o importan mai mare. MICROCOMUTATORUL Microcomutatorul este cel mai simplu senzor. Acesta transform energia mecanic n dou stri ale semnalului electric. (i modific conductivitatea de la aproape 0 pn la infinit). Este deseori folosit ca aa-zis senzor tactil (ca robotul s nu se loveasc de perete), sau senzor de coliziune. Poate fi folosit i pentru butoane de comenzi. Uneori este ataat microcontroller-ului mpreun cu rezistene de prescriere a nivelului logic (1 sau 0, vezi figurile din stnga).

U[V] Caracteristica V-A a fotorezistorului (cazul ideal). Lux. Unitatea de msur a intensitii luminoase. O zi nsorit are 100 000 lx. Camera de lucru 500 lx. Lumina Lunii are 0.3 lx.

40

Senzori Sensors

Cum se construiete un robot BINE DE TIUT

Cum se construiete un robot GANDII-V Ct de departe este obiectul, dac timpul dintre emisia i recepia semnalului cu ultrasunete este de 0,02 ms? Se poate msura distana pn la un obiect de sticl cu senzorul cu ultrasunete? Se pot msura distane pn la obiecte, cu senzori cu ultrasunete, ntr-un mediu foarte ntunecat sau foarte luminos? Senzorul cu ultrasunete consum 100 mA curent n stare inactiv. Cnd emite sunet, consum 1 A. Gndii-v la administrarea bateriei! Ce spui despre msurarea distanelor scurte de pn la 5 cm? Este o soluie bun msurarea lor cu ultrasunete? Dar msurarea distanelor ntr-un mediu zgomotos? Putei recomanda msurarea cu sonarul? Dar rezolvarea problemei prin msurarea frecvenei sunetului reflectat? De ce avioanele nu folosesc senzori cu ultrasunete pentru a msura distanele? De ce avioanele nu folosesc servomotoare pentru a schimba direcia?

Senzori Sensors

41

Robotul sensibil (algoritmul lui Braintenberg). Un robot cu doi fotorezistori caut o surs de lumin. Cnd aceasta este detectat robotul se ndreapt ctre ea.

Senzor cu ultrasunete Unde sonore

Se folosesc 3 metode de msurare a distanelor mari: 1.Msurarea diferenei de timp dintre emisia i detectarea sunetului 2.Msurarea cantitii de lumin reflectat 3.Msurarea diferenei de frecven dintre semnalele tip microunde, emis i detectat. Cea de-a treia metod (efectul Doppler) nu ne intereseaz deoarece necesit un echipament complex.

Unde sonore Obiect Senzor ultrasonic Eroare n timpul msurrii: ecouri false.

Obiect

Distana = Viteza sunetului x timpul dintre emisie i detecie / 2

SENZORUL CU ULTRASUNETE Senzorul ultrasonic este un mecanism care transform distana la care se afl un obiect n tensiune electric prin intermediul msurrii timpului dintre emisia i recepia impulsului semnalului ultrasonic.

TEORIE Sunetul nseamn unde acustice. Urechea uman poate percepe sunete cu o frecven ntre 20 Hz i 20 kHz (limitele sunt percepute de cei cu un auz special). Sunetul ultrasonic are o frecven de peste 20 kHz (cinii sau liliecii l pot percepe). Sunetul ultrasonic poate fi produs i detectat de ctre un vibrator de cristal. Acesta folosete efectul piezo. Efectul piezo nseamn conversia presiunii n tensiune i invers. Viteza semnalelor ultasonice n aer este de circa 340 m/s (1220km/or). Nu este o problem n a msura timpul dintre emisia i receptia unui semnal i calcularea distanei. Microcontroller-ul face asta cu uurin. INTERESANT Cinii, liliecii i alte animale pot auzi ultrasunetele. Delfinii i balenele pot auzi sunetele subsonice (sub 20 Hz), dar i frecvenele ultrasonice. Oscilatoarele cu cristal sunt folosite n difuzoare (probabil i n laptopul dumneavoastr) i microfoane. Senzorii ultrasonici sunt uneori denumii sonar. Radarul este i el folosit n msurarea distanei. Acesta emite i detecteaz impulsul electromagnetic cu o frecven de ordinul MHz-ilor i msoar diferena de frecven a semnalelor emis i recepionat. Este folosit pentru msurtori la mare distan n special pe echipamente militare (radiolocatori). Sonarul msoar timpul, radarul msoar frecvena. Semnalul emis de sonar trebuie s aib o bun focalizare pentru a avea o bun selectivitate n timpul msurtorii. Sonarul are de obicei dou vibratoare de cristal. Unul pentru emisie, i unul pentru recepie. Dar putei cumpra deasemenea un sonar cu cristal doi n unul.

SENZORUL ULTRASONIC N PRACTIC Mai jos, sunt enumerai ase pai pe care programatorul ar trebui s i urmeze cnd dorete s foloseasc sonarul pentru msurarea distanei: 1. microcontroller-ul trimite secvena de semnale de tensiune dreptunghiular prin emitorul de unde sonore cristal piezorezonator. 2. n acelai timp se ncepe msurarea timpului cu un contor 3. ecoul de la obiect este detectat de cristalul piezorezonator 4. contorul oprete numrarea 5. microcontroller-ul calculeaz timpul real, l nmuleste cu viteza sunetului i obine distana pn la obiect 6. acest lucru se repet de mai multe ori rezultnd calculul distanei. Pare simplu. Acest procedeu va fi explicat ntr-un capitol numit Programare.

Senzor cu ultrasunete.

Eroare n timpul msurrii: trei senzori se influeneaz reciproc

DEZAVANTAJE 1. Ecouri fantom. Sunetul emis nu este unidirecional. Sunetul este reflectat i de mediul nconjurtor, nu doar de obiectul msurat. 2. Folosirea mai multor senzori cu ultrasunete. Acetia se pot influena reciproc. 3. Mediul este compus din mai multe materiale. Reflexia de la un metal este diferit fa de cea de la un burete. 4. Distana minim pentru msurare este de 5 cm. Distana maxim este de 5 m cu eroare de 3-4 cm. 5. Consumul de energie electric din timpul emiterii sunetului este mare. 6. Msurarea depinde de condiiile externe, n principal de temperatura aerului (acesta este motivul pentru care avioanele nu le folosesc).

Simurile obolanului: Vedere: slab, probabil fr profunzime n vizibilitate, incolor Pipit: excelent, prin intermediul mustilor Miros: excelent, nu atingei cu mna splat Auz: bun, pn la frecvene foarte nalte Date furnizate de Jose

42

Senzori Sensors

Cum se construiete un robot CODIFICATORUL

Cum se construiete un robot CLASIFICARE n funcie de forma codificatorului, acesta poate fi liniar sau rotativ: Codificatorul liniar detecteaz o micare liniar a unui robot. Codificatorul rotativ detecteaz o micare de rotaie (transformare numr pulsuri n unghi, distan, vitez sau acceleraie) a unei roi a unui robot. n funcie de construcie: Codificatorul optic folosete zonele negre i albe din jurul roii (sau orificiilor). Sursa emite lumina care este detectat de un detector foto. Codificatorul mecanic folosete un sistem de orificii i un microntreruptor mecanic pentru a detecta dac exist sau nu exist un orificiu. Nu exist nici o component optic, doar un contact mecanic al unui microntreruptor. n funcie de sistemul de msurare (pentru codificatorul rotativ): Codificatorul incremental produce impulsuri i numrarea se realizeaz cu ajutorul microcontroller-ului. Cnd codificatorul incremental ncepe s funcioneze, poziia sa este necunoscut. Urmtoarea poziie este relativ la poziia precedent. Codificatorul absolut i tie poziia n fiecare moment. Codificatorul are 8 piste cu forme negre/albe care reprezint 256 de poziii mecanice diferite ale unei roi. Dar, trebuie s aib 8 surse independente, emitoare de lumin i detectori foto. Fiecare poziie mecanic corespunde uneia dintre aceste 256 posibiliti. Aceasta nseamn c 360 grade se divid n 256 poziii (1,406 grade). GNDETE-TE Codificatorul rotativ optic incremental are 30 de puncte negre/albe. Ce distan acoper, cnd contorul indic 120 de impulsuri i raza roii este de 3 cm? Codificatorul ofer 5 impulsuri/sec. Care este viteza robotului? Contorul roii din stnga a numrat 15 impulsuri, roata din dreapta nu se mic. Cu cte grade s-a rotit robotul? Contorul roii din stnga a numrat 15 impulsuri, contorul roii din dreapta la fel, dar cu polaritate opus a tensiunii. Cu cte grade s-a rotit robotul? Se poate afla direcia roii care se nvrte? Gsete soluia! Preferai emitorul i detectorul separai sau ambele ntr-o singur carcas? Care sunt avantajele i dezavantajele codificatoarelor mecanice? Cte poziii diferite sunt necesare pentru a msura cu codificatoarele rotative absolute cu 4 piste? Pregtii pe hrtie codificatorul incremental al roii pentru 10 grade precizie.

Senzori Sensors

43

Traductor limba romn. Traduce din limba englez n limba romn. El reprezint codificatorul. Traductor limba englez. Traduce din limba romn n limba englez. El reprezint decodorul.

Codificator extern Robot

DEFINIIE n general vorbind, codificatorul este un dispozitiv hardware, care transform informaia dintr-un anumit format n alt format. nelesul ambelor forme este acelai, dar reprezentarea lor este diferit. Opusul codrii este decodificarea. Decodificarea este un proces de restaurare a informaiilor anterior codate. Aceast definiie are drept scop reprezentarea valorilor logice. De exemplu, putei codifica reprezentarea zecimal a unui numr n reprezentarea sa binar. n timpul decodrii, numrul binar este transformat din nou n numr zecimal. n robotic, cea mai des utilizat definiie a codificatorului este: Codificatorul este un dispozitiv hardware, care transform distana msurat n impulsuri electrice. Cuvntul decodificator nu este de obicei folosit, pentru c acesta este un proces unidirecional. Decodificarea nu este important.

Und reflectat

Roata Lumin emis Receptor

Und nereflectat Exemplu de roat de robot cu striaii pentru msurare

Soluie posibil. Lumina emis este receptat prin orificii.

TEORIE Imaginai-v c robotul dumneavoastr trebuie s mearg de la punctul A la punctul B. Distana dintre A i B este de 50 cm. O soluie facil ar fi plasarea unei surse de lumin care s lumineze punctul B, folosii orice tip de senzor de detectare a luminii i programai robotul pentru a se opri cnd senzorul detecteaz lumina. O soluie mai bun i frecvent utilizat ar fi s programai robotul pentru a merge 50 cm drept nainte. Cum? 1. realizeaz o serie de guri n jurul circumferinei roii 2. pune un LED pe o parte a roii i activeaz-l 3. pune un fototranzistor pe cealalt parte a roii 4. numr impulsurile generate de fototranzistor n timp ce roata se nvrte. Observ c o rotaie a roii este egal cu numarul de guri de pe circumferina roii. La o rotaie distana parcurs este egal cu numrul lui Ludolph (Pi) nmulit cu diametrul roii. 5. contorizai numrul de impulsuri pentru parcurgerea distanei de 50 cm i programai robotul s se opreasc dup ce se ajunge la aceast valoare. Nu este simplu, dar fiecare robot fiabil are implementat aceast soluie, desigur, ntr-o form ceva mai complex.

Lumin emis Receptor

Roat

codificator 8 bii absolut bit 3 bit 2 bit 1 bit 0

Soluia noastr. Exist puncte negre i albe reflectate mprejurul circumferinei roii. Emitorul i receptorul se afl n aceeai carcas.

GHICITORI 1.Codificatorul genereaz impulsuri, dar robotul nu se mic. De ce? 2.Ai marcat codificatorul rotativ pe 360 grade. Pare c este n regul. Dar nu poi s-l opreti n poziia dorit. De ce? 3.Comportamentul robotului este excelent cnd l testezi seara acas. Dar cnd doreti s-l prezini la coal, nu ai succes. De ce? 4.Cnd foloseti codificatoare n robotul tu, microcontroller-ul se reseteaz uneori. Cnd nu l foloseti, totul este n regul. De ce? 5.Robotul meu are codificator optic rotativ absolut cu o singur pereche emitor/receptor. Este aceast propoziie adevarat sau fals?

UOR, DAR ADECVAT Emitorul i receptorul de lumin sunt de obicei ataate de robotul dumneavoastr. Roata codificatorului se rotete odat cu cea a robotului. Rezultatul l reprezint impulsurile ptrate de la contorul digital al microcontrollerului. Dac tii unghiul dintre fiecare impuls i dac putei calcula timpul de la nceput pn la sfrit, microcontroller-ul poate determina distana, unghiul de rotire (poziia) sau viteza (sau acceleraia).

Soluia noastr n practic.

codificator 4 bii cu semnalele provenite de la detector

44

Senzori Sensors

Cum se construiete un robot SENZORI SHARP DE PROXIMITATE CU INFRAROU Senzorii de proximitate cu infrarou, produse ale companiei Sharp (Japonia), sunt cel mai frecvent utilizai ca detectoare la distan n domeniul roboticii (robotica pentru amatori, dar sunt folosite i n soluiile profesionale). Probabil c fiecare robot care interacioneaz cu mediul foloseste acest tip de senzor.

Cum se construiete un robot AVANTAJE Uor de folosit timp ndelungat fr nicio problem (problem hardware) Consum redus de energie (25 mA n timpul funcionrii: emisie de lumin) Domeniu de msurare de la 4 cm la 5,5 m Relativ mic (versiunea senzorului Sharp pentru 5 m este puin mai mare) Lumina emis este ajustat n secven de impulsuri. Acest lucru l face s nu depind de surse de lumin ambiental. Cantitatea de lumin reflectat nu depinde de suprafaa i forma obiectelor detectate. Doi senzori pot fi folosii n loc de sonar pe un robot (vezi figura) Cartografiere 2D - punei senzorul Sharp pe un servo, scanai mprejurimile i stocai distanele ntr-o matrice de numere (nu este usor de programat). Senzorul este ideal pentru aa-numita detectare de contur, cnd obiectele sunt urmrite (se mic). Robotul nostru are instalat aceast funcionalitate. Msurarea nu depinde de culorile obiectelor. DEZAVANTAJE Dependena neliniar invers proporional Distan-Tensiune. La distan mic tensiunea la ieirea senzorului este mare. Dependena neliniar poate fi liniarizat prin metode de programare. Nu este cazul aici. Semnalul trimis de un senzor poate interaciona cu semnalul de la alt senzor. Emisia razei de lumin nu este aa de focalizat pe ct avem nevoie. CONSTRUCIE Aa cum am mai spus, dimensiunea senzorului este foarte redus. Folosete conectorul fr lipituri din Japonia (de obicei oferit) pentru conectare. Este mic i usor de folosit. Conectorul JST (CFJ) are 3 fire mas, Vcc i ieire. Senzorul cu domeniul de distan de pn la 5 m are un conector diferit. ANALOG VERSUS DIGITAL Compania Sharp produce i 2 tipuri de senzori cu ieire digital. Acestea nu genereaz o valoare analogic a tensiunii n functie de distan, ci valori 0 logic sau 1 logic n functie de distan.

Senzori Sensors

45

Ieirea analogic [V] 3.0 2.5 2.0 1.5 1.0 0.5 Valori ce pot fi eronate

Senzor de proximitate IR Sharp Cum sa vezi lumina infraroie? Pentru a vedea limea punctului luminii infraroii (dispersia) poi cumpra un detector special infrarou sau s foloseti o camer video pe modul nocturn

DEFINIIE Senzorul Sharp de proximitate cu infrarou este un dispozitiv care transform distana n tensiune prin msurarea cantitaii de lumin reflectat pe matricea detectorilor foto. TEORIE Senzorul Sharp cu infrarou este alctuit de obicei din dou pri. Este imposibil s le separm (idea de emitor i detector de lumin infraroie separate, nu reprezint o problem). O parte component este un LED de lumin infraroie. Lumina este emis ca un fascicul focalizat (mai focalizat nseamn precizie mai bun). Lungimea de und este de 850 nm i este emis prin impulsuri. A doua parte este o matrice (matrice fizic, linie) de detectori fotosensibili, n spatele unei lentile. Este asemntoare unui chip CCD dintr-o camer foto, dar punctele fotosensibile sunt grupate n linie, nu ntr-un ptrat. LED-ul infrarou emite lumina ctre obiect. Lumina reflectat cade pe linia de puncte CCD prin lentila receptorului. O distan mai mare nseamn iluminare a centrului receptorului. Pentru o distan mai scurt rezult o iluminare a detectorilor de pe margine. Rezult o tensiune culeas mai mare (distana mai scurt). Acest sistem de msurare a distanei este foarte interesant i semnificativ. Privii figura pentru a nelege mai bine acest principiu.

10 20 30 40 50 60 70 80 Distan obiect [cm] Senzor analogic SHARP 2Y0A21 EROARE

Ai n vedere posibilele erori de msurare. Tensiunea de ieire de 2.5V poate reprezenta distane de 5cm sau 15cm.

+5V GROUND IEIRE Conector JST CCD. Charge Coupled Device. Lumina se transform proporional n tensiune electric.

Soluie. Elimin eroarea. Fixeaz senzorul n profunzimea robotului

OK EROARE

MATRICE CCD

n caz c evaluai distana n coluri, pot aprea posibile greeli de msurare. Pentru a avea valori corecte, ncercati s schimbai unghiul drept cu arcul de cerc (ajut i un pic de hrtie)

OBSTACOLE LA DIVERSE DISTANE LED IR

SHARP N PRACTIC Principalul scop al utilizrii senzorilor de distanta este de a reaciona, cnd se detecteaz un obiect (obstacol, zid). Senzorul Sharp va spune Distana este. Aceast valoare trebuie tradus pentru microcontroler care o evalueaz i decide ntre a ntreprinde sau nu o aciune. Programul va trece la rutina adecvat pentru acea aciune. Controlul se face n bucl nchis. Problema este comparaia. Regitrii pot compara valorile digitale, dar senzorul Sharp produce valori analogice. Este necesar s se transforme valoarea analogic ntr-o valoare digital i este rolul convertorului Analogic/ Digital. A doua posibilitate este de a utiliza Comparatorul Analogic, inclus n microcontroller. Aceste posibiliti vor fi explicate n detaliu n capitolul intitulat Programare.
Senzorul SHARP digital 2Y0D02. Distan de msurare 20 - 150 cm.

Ieire digital (0 sau 1) [V] 5.0 Msurtori eronate

OK

OK

LENTILE RECEPTOR

25 50 100 150 Distan obiect [cm]

OK

BINE DE TIUT

Conectarea celor doi senzori (ai n vedere unghiurile diferite), pot nlocui sonarul, care nu este foarte precis.

OK

OK

200

46

Senzori Sensors

Cum se construiete un robot GAMA DE PRODUSE SHARP

Cum se construiete un robot CLASIFICAREA SENZORILOR DE PROXIMITATE n strict legtur cu principiul funcionrii, senzorii de proximitate pot fi: Capacitivi. Funcionarea unui senzor de proximitate capacitiv se bazeaz pe evaluarea variaiei capacitii electrice a unui circuit RC, ca rezultat al apropierii de un anumit obiect. Inductivi. Funcionarea se bazeaz pe proprietatea conform creia dimensiunea de msurat produce o variaie a inductivitii unei bobine care este parte din circuitul oscilant RL al senzorului. Optic. Funcionarea senzorilor optici se bazeaz pe interpretarea unui semnal luminos n spectrul vizibil sau invizibil. Semnalul este interpretat de un receptor ca o prezen sau absen a obiectului, sau ca un rezultat al ntreruperii razei optice, prin interpunerea unui obiect ntre transmitor i receptor, ambele datorate unui flux de lumin produs de emitor printr-o suprafa reflectorizant. Magnetici. Senzorii de proximitate magnetici reacioneaz la cmpurile magnetice produse de magnei i electromagnei permaneni. Senzorii magnetici pot fi de mai multe tipuri: REED, cu efect HALL, electronic.

Senzori Sensors

47

Cea mai important decizie este alegerea tipului corect de senzor. Tabelul de mai jos arat principala gam de senzori de proximitate Sharp.

Distana n centimetri

10

20

30 40 50 60 70

80

90 100 110 120 130 140 150 200 300 400 500 600 IEIRE ANALOGIC

2D120X 2Y0A41 2D150A 2Y0A21 2Y0D02 2Y0A02 2Y0A700

4 - 30 cm IEIRE DIGITAL 3 - 30 cm IEIRE ANALOGIC 10 - 80 cm IEIRE DIGITAL 20 - 150 cm IEIRE ANALOGIC 20 - 150 cm IEIRE ANALOGIC 50 - 550 cm

CONCLUZII DIN INDUSTRIE n prezent, exist un interes permanent n creterea inteligenei roboilor industriali, n special a roboilor mobili independeni. Interesul este legat de senzorii de navigaie i ghidare. Exist dou principii implementate n controlul roboilor mobili: 1.Determinarea poziiei robotului mobil se afl n relaie cu unele puncte externe, fie ele fixe sau marcate. 2.Determinarea poziiei i orientarea robotului mobil se face cu ajutorul unui sistem senzorial independent, montat pe robot. Sisteme de ghidare electromagnetice. Semnalul modulat n frecven dintr-un cablu situat n podea i bobine situate pe robotul mobil. Cablurile sunt folosite n paralel pentru a asigura flexibilitatea robotului (cu frecven diferit). Sisteme de ghidare optice pe trasee marcate. O vopsea reflectorizant este folosit pe podea pentru a marca traseul. Senzorii optici msoar abaterea de la traseu i ghideaz baza robotului mobil. Sisteme de ghidare cu ajutorul vopselei magnetice. Exist o vopsea care conine un praf, ferit magnetic, aplicat pe podea pentru a marca traseul. Senzorii magnetici instalai pe ambele pri ale robotului vor detecta abaterile i vor face coreciile necesare. Sisteme de ghidare cu laser. Folosim un laser ataat tavanului camerei, care scaneaz podeaua. Robotul independent va folosi lumina pentru a gsi calea dorit. Prin intermediul unei zone foto-senzoriale robotul detecteaz abaterea de la traiectorie/drum i o transmite controller-ului. Folosind acest sistem de ghidare, robotul poate fi direcionat spre o rut fix sau aleatoare. Sisteme de ghidare optice. n general ele se bazeaz pe aparate foto care pot detecta coduri de bare, repere pe trasee, etc. pentru a obine informaii despre poziia robotului pe traseul de urmat. Sisteme de detectare a poziiei, ataate de robotul mobil. Ele se bazeaz pe sisteme cu girocompas, cu laser, sonice, sau combinaii ale acestora. Girocompasele mecanice sunt foarte cutate n prezent.

SARCINI

Notai valorile msurtorilor efectuate cu unii senzori SHARP din timpul leciilor practice. Evaluai valorile msurate din calculul tabelar (MS Excel sau Open Office) i desenai de asemenea caracteristicile de ieire. ncercai diferite condiii de lumin, diferite culori ale obstacolelor, ncercai oglinda i alte materiale reflectorizante. Schimbai i unghiurile obstacolelor n timpul msurrii.

RECOMANDARE n faza de testare a robotului va fi nevoie s afisai valorile senzorilor pe ecran. Acest ghid nu descrie posibiliti scumpe de a face acest lucru prin intermediul diferitelor soluii hardware i software. Dar n capitolul Programare v oferim o soluie similar i eficace privind display-ul LCD alfanumeric 2x16.

LCD cu 2x16 linii care afieaz valorile msurate

48

Senzori Sensors

Cum se construiete un robot GPS Robotul trebuie s-i cunoasc poziia n spaiu. Aceasta este o axiom valabil pentru roboi care au raza de aciune mai mare de 10 m. Exemple: Imaginai-v c vei construi un robot care ghideaz oamenii orbi. Cum poate el ti c obstacolul din faa sa este o staie de autobuz? Rspunsul este simplu. i tie poziia, tie c n aceast poziie exist o staie de autobuz (este scris n hrile GPS) Imaginai-v c vei construi un robot zburtor pentru cartografiere. Robotul trebuie s-i cunoasca poziia pentru a obine hri exacte.

Cum se construiete un robot SENZORUL HALL n prezent senzorul Hall este folosit n multe aplicaii, n special n industria automobilelor. Acesta folosete efectul Hall pentru funcionalitatea sa. Senzorii Hall au o importan deosebit n msurarea turaiilor. Fiecare rotaie influeneaz senzorii Hall prin trecerea prin faa unui magnet. Impulsurile de tensiune de la senzor pot fi numrate cu un contor rezultnd viteza de rotaie a arborelui unui motor. Nu folosim acest tip de senzor pentru robotul nostru.Viteza roilor este evaluat prin intermediul codificatorului. Este mai precis i putem s evalum i poziia roii (unghi). Senzorii Hall nu sunt neaprat utili pentru msurarea unghiului dar sunt ideali pentru msurarea turaiei, datorit construciei simple.
Polul Nord Magnetic

Senzori Sensors

49

GPS. Global Positioning System. Poziia. Este detetminat de coordonatele x, y i z pe Pmnt.

+ curent continuu

Satelit

Pmnt

ncercai s gasii mai multe exemple n care este absolut necesar a fi la curent cu poziia exact. Pe de alt parte, explicai de ce nu este necesar (sau nu este posibil) determinarea poziiei exacte n ndeplinirea obiectivului nostru.

Ce tip de senzor se folosete pentru fiecare activitate a robotului? Urmrirea liniei. Robotul trebuie s urmeze o linie neagr pe o suprafa alb. Folosii senzori cu infrarou. Cea mai bun solutie este s folosim un LED i doi fototranzistori pe ambele prti ale LED-ului. Putei controla direcia de micare (controlul cu regulator PID ar putea fi cel mai potrivit). Evitarea obstacolelor. Roboii trebuie s nconjoare obstacolele. Folosii senzorul Sharp de apropiere la distane de pn la 30 cm. Urmrirea peretelui de delimitare. Robotul trebuie s urmeze peretele. Folosii senzorul Sharp de proximitate pn la 30 cm i reglarea PID. Detectarea obiectului. Robotul trebuie s gseasc un obiect i s se opreasc n apropierea sa. Folosii senzorul cu infrarou ntr-o carcas sau ntreruptorul tactil (microntreruptor). Urmrirea luminii. Robotul trebuie s urmeze sursa mobil de lumin. Folosii doi fotorezistori. GNDETE-TE Analizai avantajele i dezavantajele soluiilor pentru obiectivele de mai sus. Propunei un sistem de senzori pentru: Aspirator robotizat Main de tuns iarb robotizat Vehicul lunar Robot fotbalist Frigider Vehiculul viitorului REINE Senzorii reprezint cele mai importante componente ale robotului independent. Alegerea corect a senzorului va influena munca ta. Nu v preocupai s schimbai sistemul de senzori (luai n considerare asiul modular al robotului care permite acest lucru). Gsii sistemul de preluat valori de la senzori.

- curent continuu

V
Efectul Hall. Semiconductorul este situat ntr-un camp magnetic. Cele dou prti ale sale sunt conectate la cmpul electric. Pe de alt parte este creat tensiunea Hall.

TEORIE
Robot Satelit Intersecia cercurilor albastre reprezint poziia robotului.

Imaginai-v c stii distana dintre robot i satelit. Unde este situat robotul? Undeva n zona ptrat cu raza egal cu distana (linia albastr n figura din stnga). Att de multe posibiliti! Imaginai-v c tii distana dintre cei doi satelii. Intersecia ambelor sfere ale sateliilor reprezint dou puncte. Unul pe pmnt, altul n spaiu. Acesta este un mod de a defini poziia x i y a unui robot. n caz c putem folosi sfera celui de-al treilea satelit, putem s definim i pozitia z a robotului - nlimea sa. Cum s obinem distana dintre satelit i robot? Satelitul emite un semnal, robotul l primete. Timpul dintre emisie i recepie corespunde distanei (viteza semnalului este de 300.000 km/s). Cea mai important problem a GPS-ului o reprezint msurarea de secvene de timp foarte scurte, asta nsemnnd c ceasul de pe satelit i de pe robot trebuie s fie extrem de precise i sincronizate n mod regulat. Orbita este plin de satelii. Sateliii pentru GPS sunt situai la nlimea de 20.000 km deasupra suprafeei Pmntului. Sunt 24 de toi. Ei se rotesc de dou ori pe zi n jurul Pmntului. Precizia de msurare a GPS-ului este de 10 m. DE CE NU GPS? De ce nu putem folosi GPS-ul n proiectul nostru? Precizia de determinare a poziiei este de 10 m. Noi cutam obiectul pe o suprafa de cca 2x2 m. Nu avem nici o ans s fim precii. ATmega32 reprezint un microprocesor pe 8 MHz. Trebuie s msurm poziia mai mult dect o singur dat ntr-o microsecund. GPS-ul de pe roboi nu folosete microcontrollere cu o att de scazut vitez de calcul. Este mai bine s folosim placa de baz i un procesor ncorporat n PC-uri clasice.

Ax

Magnet Senzor Hall Numrtor

Senzorul Hall. Ideal pentru msurarea vitezei de rotaie

PID. Proporional Integrator i Derivativ. Unul dintre modurile de control al motoarelor.

Polul Sud Magnetic

GNDETE-TE

DECIZII

50

Programare Programming

Cum se construiete un robot Cnd cineva v spune c tie s programeze, s nu-l credei pn cnd nu v va arta ce a realizat. Arat-mi codul surs i i voi spune dac eti un programator adevrat sau nu.

Cum se construiete un robot ANALIZEAZ

Programare Programming Programming

51

NIMIC NU ESTE DIFICIL PENTRU CEI CARE NU NELEG.

PROGRAMARE

Start Intrare Senzor 1 Intrare Senzor 2 Comparare Dac Senzor 1 > 10 Mergi Stnga Dac nu Mergi Dreapta Comparare Dac Senzor 2 < 5 Stop Exemplu de algoritm.

DEFINIIE Programarea este un proces de creare a unui cod surs. Programarea ofer via mainilor. Programarea reprezint traducerea unui algoritm ntr-un cod surs. Programarea este (ncercai s v gndii la propria definiie). GNDII-V Este creierul uman ntr-un fel sau altul programat? Ce zicei de informaia genetic din celulele creierului? Este o memorie nevolatil (care nu se pierde/ terge)? BINE DE TIUT Un algoritm este descrierea exact a rezolvrii unei probleme O schem logic (diagram grafic), este reprezentarea unui algoritm ntr-o form grafic. Un program este un algoritm rescris n limbajul calculatoarelor, asta nsemnnd un limbaj de programare. Un cod surs este un text creat de programator, care reprezint un program. Un cod main (cod binar) este un cod surs tradus ntr-un anumit limbaj, recunoscut de microcontroller (procesor). Un compilator este un program, care traduce un cod surs ntr-un cod main. Un limbaj de programare superior este un limbaj care conine cuvinte utilizate n mod obinuit ntr-o limb i poate fi neles cu uurin de oamenii obinuii. Un limbaj de programare inferior este un limbaj ale crui cuvinte cheie nu pot fi nelese de oamenii obinuii (limbaj de asamblare). Cuvintele cheie sunt cuvinte sau abrevieri, folosite n limbajul de programare. n lume exist aproximativ 20 de limbaje de programare. Orice limbaj de programare are propriul vocabular de cuvinte cheie (de obicei maximum 100 de cuvinte cheie). Sintaxa limbajului de programare reprezint regulile de utilizare a cuvintelor cheie i a altor componente de limbaj ntr-un program. IDE este un program utilitar n care un programator scrie i i dezvolt programul. Prin depanare se nelege procesul de evaluare i testare. Cele patru responsabiliti ale unui programator sunt: s neleag sarcina, s conceap algoritmul, s creeze un program i s verifice programul. Cele patru aspecte ale unui program bine realizat sunt: funcionalitatea, prezentarea grafic, denumirea sugestiv pentru variabile n funcie de rolul lor, detalii despre codul surs. Fiecare limbaj de programare trebuie s cuprind: o seciune de comenzi de intrare (cum s scrie ceva ntr-o variabil), o seciune de afiare a comenzilor (cum s afiezi valoarea variabilelor ctre utilizator), condiii (decizii care au la baz operaii logice), cicluri (repetiii de comenzi)

Caut asemnri ntre limbajul de programare i limba englez. Ce nseamn termenul CAD i ce au n comun CAD, IDE, MS Office, Joomla? Care este cea mai mare responsabilitate a programatorului? Care este cel mai important aspect a unui program bun? Credei c aproape toate limbajele de programare au aceleai cuvinte cheie? Dac da, de ce nu exist un limbaj de programare universal? Putei s gsii propriul limbaj de programare? Care este cel mai bun IDE pentru a ncepe s programezi n orice limbaj? Crezi c limbajele de programare pot fi cumprate prin internet sau sunt gratuite? Dar IDE? Fiul l ntreab pe tatl su programator: Tat, de ce soarele rsare la est i apune la vest?. Tatl i rspunde: Dac funcioneaz, las-l n pace. SARCINI Caut cu ajutorul Internet-ului numele programului utilizat de obicei de programatorii nceptori. Mergi la librrie i afl ce limbaj de programare este cel mai popular n acest moment. Explic termenii intrare, ieire, condiie, ciclu ntr-o organigram. CONCLUZIA I Tot acest capitol este dedicat programrii. nc nu tim ce fel de echipament suntem pe cale s programm. n ansamblu, avem nevoie de un echipament care s poat calcula i s aib memorie suficient n care s se poat introduce un program. Avem dou posibiliti: un tip de procesor (microprocesor) sau un tip de microcontroller. Care este diferena dintre acestea? Ambele au o unitate de procesare central (CPU) pentru calcule, o memorie pentru stocarea datelor, porturi de intrri i ieiri. Ar nsemna c din punct de vedere calitativ sunt identice. Dar din punct de vedere cantitativ sunt diferite. Microcontrolerul este doar o form de procesor mai mic i specializat. Microprocesorul este creat s fac aproximativ orice (este folosit n PC) n timp ce microcontroller-ul este creat pentru anumite activiti ale unor echipamente speciale (ex: roboi, aspiratoare, echipamente pentru stropit, telefoane mobile). Avantajele microcontroller-ului sunt: ADD AX,CX; 1. Cost redus 2. Mai puin munc i mai puin timp MOV 10, AX; pentru nsuirea cunotinelor de programare. Dezavantajele microcontroller-ului sunt: 1. Mai puine posibiliti de a-l programa. 2. De obicei, memorie redus pentru stocarea programului. 3. Vitez mai mic (nu se potrivete pentru unele aplicaii).

POT S FAC LUMEA UN LOC MAI BUN DAR OFER-MI UN COD SURS!

JO

E K

CODUL TU SURS if (x>0) rad=10; COMPILATOR 001010110111001 PROCESOR

START

ACIUNE

INPUT ACTION IF ACTION END Schema logic a algoritmului. TCCR1A |= (1<<WGM10) | (1<<WGM11) | (1<<COM1A1) | (1<<COM1B1); TCCR1B |= (1<<WGM12) | (1<<CS12) ; MOTORPORT = STOPP; sei(); wdt_reset(); Cod surs C pentru AVR
:100000000C942A000C943494BA030C9447000A :100010000C9447000C944700047000C94470044 :100020000C9447000C9447000C9400C94470034 :100030000C9447000C9447000C9447094470024 :100040000C9447000C9447000C9447000C70014 :100050000C94471241FBECFE5D8E0DEBFCDD :1000700B107D9F711E0A6E7B1E001C01D929C

ASSEMBLER FORTRAN

PASCAL

BASIC

C LANGUAGE

C++

C#

PYTHON

JAVA
Exemple de limbaje de programare

Exemplu de cod hexazecimal. Limbajul C are 32 de cuvinte cheie IF, CASE, WHILE Sunt elemente de baz n crearea softului IDE - Integrated Development Environment (Mediu integrat de dezvoltare). Ajut la crearea i dezvoltarea programului.

MUL CX; MOV s1, 256;

Assembler. Assembly language. Limbaj de programare inferior. Soluie excelent pentru programarea unui robot (dar nu pentru un nceptor).

52 1

Programare Programming

Cum se construiete un robot Motivul pentru care am ales microcontroller-ul este unul logic de a nva pas cu pas. Mai nti nvm s programm echipamentul cel mai uor de programat i apoi nvm s-l programm pe cel mai dificil. Alegerea este, de asemenea, mai bun ca urmare a lucrului direct cu intrrile i ieirile microcontroller-ului. Acum trebuie s decidem ce tip de microcontroller trebuie s folosim. Microcontroller-ul nostru trebuie: 1. s aib o capacitate de memorie ct mai mare 2. s fie mai rapid 3. s aib ct mai multe intrri/ieiri Prima cerin se refer la mrimea codului nostru surs. Este inutil crearea unui program mai mare, deoarece este imposibil s-l inscripionm n memoria microcontroller-ului. A doua cerin se refer la frecvena de lucru a microcontroller-ului. Vom folosi un senzor pentru a detecta linia traseului msurnd distana de 10 ori pe secund. Problema care apare este c devine foarte lent. De asemenea se refer la mrimea regitrilor. Este bine s fie ct de mare posibil (astzi cele mai bune microcontrollere au probabil 64 de bii), dar pentru robotul nostru avem nevoie de regitri pe 8 bii. A treia cerin se refer la numrul de senzori sau dispozitive de ieire, care pot fi conectate la microcontroller. Cu ct sunt mai multe, cu att mai bine. Analiznd toate acestea putem afirma c configuraia de care avem nevoie este: de 32kB memorie, 8 MHz frecvena de lucru, 32 de pini pentru dispozitive. Pe pia exist doi mari productori de microcontrollere ai cror parametri sunt asemntori cu cei de mai sus. Primul productor este compania Microchip ce comercializeaz marca PIC iar cellalt este compania ATMEL care comercializeaz marca AVR. Motivul pentru care am ales firma ATMEL Corp. este urmtorul: un suport mai bun pe internet (Avrfreaks.com). Dar nu vei face o greeal dac alegei PIC. Ce tip de microcontroller s alegi? Exist dou posibiliti: prima este aceea de a alege un microcontroller lipit pe PCB (SMD) i a doua variant este aceea de a alege un microcontroller detaabil de la PCB (soclu). ns orice se poate defecta, chiar i un microcontroller, aa c vom alege un model detaabil. Ultima noastr alegere va fi n privina tipului de cip Atmel. Potrivit parametrilor definii mai devreme, cel mai potrivit tip este ATmega32. Este microcontrollerul potrivit pentru robotul nostru. Descrierea general pentru ATMega32: Magistrala de date pe 8 bii (n orice moment poate accesa informaii pe 8 bii) Frecven de lucru de 8 MHz (viteza de lucru) Arhitectur RISC (ct de multe instruciuni poate executa) Arhitectura Harvard (memoria de date i memoria program sunt separate) 32 kB de memorie program (dimensiunea maxim a programului) 32 de regitri cu limea de 8 bii Aceast informaie este descris n detaliu n seciunea ATtmega32.

Cum se construiete un robot DECIZIA II Acum este timpul s lum cea de a doua decizie a acestui capitol. Scopul nostru este de a alege un limbaj de programare pentru robotul nostru. Opiunile noastre sunt: 1. S scriem programul ntr-un cod binar. Dac alegi aceast posibilitate, probabil eti un prieten apropiat al d-lui Gates (proprietarul Microsoft) sau al d-lui Page (proprietarul Google) sau al d-lui Torvalds (cel care a creat Linux) sau al altor 100 de oameni din lume. Nu, aceast opiune nu este pentru noi n acest moment, avnd n vedere cunotinele noastre. Poate n viitor. 2. S scriem programul ntr-un Limbaj de programare inferior limbaj de asamblare. Aceast alegere este excelent pentru cei, care, cu adevrat, vor s i conecteze vieile la programarea microcontrollerelor. Aceast alegere ii va da libertate n programare. Programul tu va fi universal, rapid i vei avea control asupra lui. Dar nu este uor s nvei limbajul de asamblare. Acesta presupune cunotine de programare, care nu pot fi nsuite ntr-o singur lun. Alege acest limbaj cnd realizezi c limbajul de programare superior nu ii ndeplinete cerinele. 3. S scriem programul n Limbaj de programare superior. Este uor de nvat, pentru c cuvintele cheie sunt uor de neles i o lun poate fi suficient pentru nsuirea noiunilor de baz. Considerm aceast opiune cea mai bun alegere. Acum, ntrebarea este ce tip de limbaj de programare superior s folosim? Pascal sau Visual Basic, sau C, sau C++, sau C# , sau altul? Un limbaj procedural sau un limbaj orientat pe obiecte? Cel mai bun algoritm pentru a opta pentru un limbaj de programare este: Tipul de microcontroller ales. n capitolul anterior am motivat alegerea microcontroller-ului Atmega32. Productorul recomand programarea n Assembler sau C (posibil orientat pe obiecte, C ++) i ofer suport complet prin intermediul IDE pentru limbajul de programare C prin AVR Studio. Acest IDE se poate descrca gratuit de pe internet. Vom urma aceast recomandare i vom utiliza limbajul C. GNDII-V Imagineaz-i c sarcina ta este de a construi un robot care folosete camera video pentru a se ghida. Este aceasta o decizie bun? ncearc s te gndeti la culegerea datelor n timp real i la frecvena microprocesorului i microcontroller-ului. De ce nu folosim orice limbaj de programare orientat pe obiecte? Ct de multe cuvinte cheie (aproximativ) pot fi stocate n memoria de 32 kB? SARCINI 1. Gsii exemple din viaa de zi cu zi pentru a explica de ce mrimea regitrilor influeneaz viteza microcontrolerului. 2. Ce tip de memorie poate fi utilizat pentru stocarea programului? Memorie volatil sau nevolatil? 3. Ce limbaj este cel mai probabil utilizat pentru programarea n sistemul de operare Linux?

Programare Programming Programming

53

Cine este productorul? ATMEL

Ce tip este? ATmega32

OOP. Object Oriented Programming. Varianta de programare aleas. Limbaje de programare orientate pe obiecte: C++, C#, etc. Obiecte cu atribute i metode.

Care limbaj de programare? C LANGUAGE Decizia este a voastr.

Instan a obiectului. Verific OOP. schema simplificat

AVR XMEGA megaAVR tinyAVR Familia ATMEL AVR Familia ATMEL megaAVR. ATmega8 ATmega16 ATmega32 ATmega64 ATmega128

PCB. Printed Circuit Board. Este placa de baz a circuitelor electronice. Sunt conectate prin intermediul PCB-ului. BASCOM. Este un limbaj de programare folosit pentru programarea microcontroller-elor Microchip.

ATmegaXXX Capacitate memorie n KB.

Ali productori de microcontrollere: Intel, Advanced Micro Devices (AMD), Analog Devices, Texas Instruments, Motorola, IBM...

Microcontroller ATmega32L.

54

Programare Programming

Cum se construiete un robot DESCRIEREA PINILOR ATMEGA32


ATMEGA32 pinii 1 - 20 PB0 nseamn pin (bit) 0 al portului B. 8 pini ai portului B pot fi folosii ca pini bidirecionali de ieire sau intrare. Asta nseamn c poi s-i foloseti pentru scrierea sau citirea de valori logice n registrul corespunztor portului. Toi pinii pot folosi rezistene interne pull-up. Dac sunt folosii ca intrri, ei pot fi conectai extern la rezistene pull-down. ATMEGA32 pinii 21 - 40 40 PA0 ADC0 Pinul T0 este sursa pentru ceasul Timer/Counter 0. XCK/T0 PB0 1

Cum se construiete un robot DESCRIEREA PINILOR ATMEGA32

Programare Programming Programming

55

Anumite funcii ale pinilor nu constituie subiectul nostru de interes. Nu v ngrijorai dac nu nelegei anumite cuvinte sau expresii. Totul este explicat n detaliu n paginile urmtoare.

Pinul T1 este sursa pentru ceasul Timer/Counter 1. Portul INT2 este utilizat pentru cereri de ntreruperi externe. Poi s conectezi la aceasta, de exemplu un buton, cu care se va executa un anumit cod din programul tu. Ieirea OC0 servete ca flag(semn) cnd Timer/Counter 0 atinge o valoarea cerut. Servete de asemenea ca ieire pentru semnalul PWM furnizat motorului.

T1 PB1

39

PA1 ADC1

PA0 nseamn pinul (bitul) 0 al Portului A. ADC0 nseamn Convertor din Analog n Digital (Analog to Digital Converter), a crui valoare analogic este conectat la pinul Portului A (bit) 0. 8 pini ai portului A au dou posibiliti de utilizare. Intrrile analogice pentru ADC. Aceasta nseamn, c pe aceti pini poi conecta maximum 8 senzori analogici ( sau orice dispozitive a cror ieire este o valoare analogic cuprins ntre 0V i 5V). Aceste valori sunt transformate n valori digitale (n format zecimal, de la 0 la 255) i poi lucra cu acestea n programul tu. Pentru ADC poi folosi n mod exclusiv PORT A. n cazul n care nu utilizezi aceti pini ai portului A pentru a lucra cu valori analogice pentru ADC, poi folosi acest port la fel ca pe celelalte porturi bidirecionale de intrare sau ieire pe 8 bii. Rezult c i poi folosi pentru a scrie sau citi valori logice n/din regitrii acestui port. Toi pinii pot folosi rezistoare interne pull-up. Dac acetia sunt utilizai ca intrri, ei pot fi conectai la rezistene externe pull-down. Toi pinii portului A sunt independeni i pot fi folosii pentru orice situaie prezentat mai sus. AREF este o tensiune de referin pentru ADC. Aceasta poate fi setat la AVCC(de obicei 5V), intern la 2.56V sau orice valoare extern. Dac senzorul tu genereaz valori analogice de la 0V la 2.56V(nu mai mult), folosete AREF 2.56V. Msurarea va fi mult mai precis. Dac senzorul genereaz 0-4.5V, folosete AVCC(5V). Pinul GND este masa sau polul negativ pentru tensiunea de alimentare. AVCC este tensiunea de alimentare pentru ADC. De obicei, pinul este conectat la VCC (plusul tensiunii de alimentare).

Anumite funcii ale pinilor nu constituie subiectul nostru de interes. Nu v ngrijorai dac nu nelegei anumite cuvinte sau expresii. Totul este explicat n detaliu n paginile urmtoare.

INT2/AIN0 PB2

38

PA2 ADC2

PORT B

PORT A

1 ATmega32

40

OC0/AIN1 PB3

37

PA3 ADC3

1 ATmega32 20

40

SS PB4 Pinii pentru programarea ISP (In System Programming). Aceti pini sunt utilizai pentru scrierea memoriei FLASH unde este stocat programul nostru. Fluxul de date trece prin MOSI (I = intrare) ctre C (scriere date n C). Funcia opus o are MISO (O = ieire), fluxul de date vine de la C (ex: verificarea programului). Fluxul de date este fluxul serial de bii transmii separat (0110110..). SCK = semnal de tact, care determin viteza de transmitere a datelor. La fiecare tact se transmite un bit.

36

PA4 ADC4

MOSI PB5

35

PA5 ADC5

20

21

21

MISO PB6

34

PA6 ADC6

SCK PB7

33

PA7 ADC7

Acest pin este utilizat pentru funcia RESET a microcontroller-ului. Pentru a reseta, valoarea 0 logic trebuie conectat cel putin 1.5 s. Resetarea determin restartarea programului i terge coninutul tuturor regitrilor. +-ul tensiunii de alimentare. Tensiunea de alimentare este de la 4V la 5.5 V. Tensiunea maxim este de 6 V. n orice caz, 5 V este cea mai bun valoare. Pinul GND reprezint masa sau polul - al tensiunii. XTAL2 i XTAL1 sunt pinii pentru conectarea os- GND 27p cilatorului de cristal piezo extern. Frecvena de lucru uzual este de 8 MHz. Nu e nevoie s l utilizezi, dar poate crete rapid viteza microcontroller-ului (oscila8 MHz torul intern are frecvena de lucru de doar 1 MHz) i stabilizeaz activitatea. 27p RXD (R nseamn Receptie) i TXD (T nseamn Transmisie) sunt utilizate pentru comunicaie (USART) ntre microcontroller i alte dispozitive, de exemplu alt C sau PC prin portul serial RS232. Se lucreaz cu un flux serial de date cu tact definit (nu este necesar al treilea fir cu semnal de tact ca n programarea memoriilor FLASH). Circuitul MAX 232 este puntea de legtura cu alte dispozitive PCB. Pin-ul INT0 servete pentru cereri de ntrerupere externe. Poi conecta acolo, de exemplu, un buton la a crui apsare s se execute o secven de cod din programul tu. Pin-ul INT2 servete pentru cereri de ntrerupere externe. Poi conecta acolo, de exemplu, un buton la a crui apsare s se execute o secven de cod din programul tu. Ieirea OC1B servete ca indicator (flag), cnd valoarea din Timer/ Counter1 atinge o valoare dorit (cei 8 bii mai semnificativi). Mai este folosit pentru a genera semnalul PWM pentru motor. Ieirea OC1A servete ca indicator (flag), cnd valoarea din Timer/ Counter1 atinge o valoare dorit (cei 8 bii mai puin semnificativi). Mai este folosit pentru a genera semnalul PWM pentru motor.

RESET

32

AREF

VCC

10

31

GND

GND

11

30 29

AVCC

XTAL2

12

PC7 TOSC2

XTAL1

13

28

PC6 TOSC1

RXD PD0

14

27

PC5 TDI Pinii TDI, TDO,TMS i TCK sunt folosii pentru programare via JTAG. JTAG este un mod important de programare deoarece poi realiza tot ce doreti. JTAG permite i depanarea. Modul nostru de programare ISP nu permite depanarea dar este o cale mai uoar pentru nceptori.

INT0 PD2

PORT C

TXD PD1

15

26

PC4 TDO

16 PORT D

25

PC3 TMS

INT1 PD3

17

24

PC2 TCK

OC1B PD4

18

23

PC1 SDA

OC1A PD5

19

22

PC0 SCL OC2 servete ca indicator atunci cnd valoarea din Timer/Counter2 se potrivete cu valoarea cerut. Mai poate fi folosit pentru a genera semnal PWM pentru comanda unui motor.

ICP PD6

20

21

PD7 OC2

56

Programare Programming
RISC (Reduced Instruction Set Computer). Computer cu set redus de instruciuni. Acest tip de calculator poate s execute doar o parte din toate instruciunile posibile. Sau, din setul de instruciuni, cele mai complicate au fost nlturate. n mod paradoxal, performana calculatorului crete. De ce? Calculele complicate sunt rezolvate cu instruciuni simple (ex. 3). Este mai rapid, dect rezolvarea doar printr-o singur instruciune complicat. Atmega32 are 130 de instruciuni. CISC. Computer cu set complex de instruciuni. Acest calculator este capabil s execute toate instruciunile posibile. Unele dintre ele nu sunt folosite, fiind inutile. Instruciune. Modul de a face ceva. Nu este un cuvnt cheie. Dar se pot observa instruciunile din spatele cuvntului cheie. Poate fi de exemplu add, move. Instruciune nseamn comand (ce anume s fac cu datele). Arhitectura Harward. Instruciunile (programul) i datele sunt n memorii separate. Aceste memorii sunt accesibile simultan. Aceasta nseamn c pe un tact se poate executa o singur instruciune. Arhitectura Von Neumann. Programul i datele sunt n aceeai memorie. Aceasta nseamn c pentru execuia unei singure instruciuni sunt necesare cel puin dou tacturi. Primul, n care se precizeaz ce se face, n al doilea cu ce se face. Comparaie. Microcontroller-ele cu arhitectur Harward sunt mai rapide dect cele cu arhitectur Von Neumann. Programarea paralel. E o modalitate mai dificil de programare a microcontroller-ului, dar care permite programarea oricrui tip i coninut al memoriei AVR. Depanarea este un proces prin care se caut erorile programului. Este o soluie software, care permite de exemplu executarea pas cu pas a instruciunilor, oprirea programului n timpul oricrei instruciuni i odat oprit, programul poate s evalueze valorile variabilelor.

Cum se construiete un robot MODULE ATMEGA32

Cum se construiete un robot CERINE Gata cu teoria, s ncepem programarea. Scopul nostru este acela de a scrie un program n limbajul C cu ajutorul Atmel IDE numit AVR Studio, de a-l compila cu ajutorul unui program numit AVR GCC i de a-l ncrca cu ajutorul programatorului ISP numit AVR ISP mkII.

Programare Programming Programming

57

ATmega32 Ucc Frecven 4.5 - 5.5 V 16 MHz

MEMORIE INTERN PROGRAMABIL 32 kB FLASH (PROGRAM) 1024 B EEPROM (BOOT LOADER) 2 kB RAM (DATA) TIMERE / NUMRTOARE

ATMEGA32
MODULE UTILE

Trebuie s rezolvm cteva lucruri de baz: 1. Descrcarea unui IDE pentru programare. AVR Studio se descarc i se folosete gratuit. (www.atmel.com). Descarc un fiier executabil i salveaz-l ntr-un director, unde de obicei i salvezi fiierele de instalare (director special, de exemplu Install). Descarc cea mai nou versiune AVR Studio de 8 bii AVR pentru Windows (sau alt sistem de operare pe care l utilizezi). Astzi, ultima versiune este 4.18. Dac vrei s descarci documentaia, descarc, dar nu este necesar. Oricum, caut ultima versiune sau pachetele de servicii AVR Studio din cnd n cnd. 2. Descrcarea unui compilator. Descarc programul WinAVR (www.sourceforge.com). Este un compilator pentru limbajul C, recunoscut de AVR. Salveaz-l n directorul cu fiierele de instalare descrcate. 3. Instalarea AVR Studio (i a pachetelor de servicii). Nu este o problem. 4. Instalarea Win AVR (fr nici o problem). 5. Instalarea software-ului pentru programator. Urmeaz instruciunile de pe ghidul CD-ului acestuia. 6. Conecteaz PCB (microcontrolerul este n soclul su) cu conectorul programatorului. Conecteaz al doilea cablu al programatorului n oricare dintre porturile USB ale calculatorului tu. Acum eti pregtit s scrii primul tu program, s l compilezi i s l instalezi n microcontroller.

Diferena ntre Atmega 32 i Atmega32L. Folosim Atmega32L, dar practic nu exist nici o diferen. ATmega32L Ucc Frecven 2.7 - 5.5 V 8 MHz

32 PINI INTRARE/IEIRE (4 PORTURI) PORT A

8 BIT TIMER / COUNTER 8 BIT TIMER / COUNTER 16 BIT TIMER / COUNTER GENERATOARE PWM CANAL PWM CANAL PWM CANAL PWM CANAL PWM

PORT B PORT C PORT D COMPARATOR ANALOG CONVERTOR ANALOGIC DIGITAL ADC 0 ADC 2 ADC 4 ADC 6 ADC 1 ADC 3 ADC 5 ADC 7 VALORILE DE REFEIN COMPARATOR

MIPS. Milioane de Instruciuni executate Pe Secund. Este o descriere curent a vitezei procesorului. n trecut viteza era afiat n MHz (GHz). Dar 1 MHz nu reprezint 1 milion de instruciuni pe secund, pentru c o instruciune poate fi executat pe mai multe tacte. MIPS este o descriere mai relevant. 1MIPS = 1 MHz. Acest lucru este valabil doar pentru arhitectura Harward. ATMEGA32 Forma ptrat a ATMega 32 pentru montarea SMD (40 pini). SMD. Dispozitiv montat pe suprafaa. Cablajul nu are guri. Circuitul este montat direct pe suprafaa PCB. Administrarea bateriei. Economisete bateria ori de cte ori este posibil. Caut posibiliti de a scdea consumul. 1 2 MISO SCK RESET MOSI NC RESET SCK MISO 1 2 Ucc MOSI GND Ucc GND GND GND GND Dou variante de conectori ISP. Pot exista mai multe avertismente n programul tu. Compilatorul merge bine. Erorile din program determin compilatorul s nu traduc codul surs.

GNDII-V Ce tip de arhitectur preferi: RISC sau CISC? Imaginai-v c suntei o furnic. ncearcai s v gndii la setul propriu de instruciuni. Ct este curentul consumat de microcontroller, cnd toate porturile sunt configurate ca ieiri iar LED-urile sunt conectate la acestea? MIPS i frecvena de lucru. Sunt aceti termeni comparabili? SARCINI Tipurile de microcontroller Von Neumman i Harvard. ncearc s gseti diferene ntre cele dou (utiliznd documentaia de la bibliotec). Cte numere de 8 bii pot fi stocate pe un EEPROM al ATMEGA32? Ci bii are 1 Byte? (nu este o glum) Crezi c un kilometru are 1024 metri? Locuieti ntr-un bloc cu apartamente? Ce buton apei cnd vrei s ajungi la etajul 4? Numrul 3 cumva?

PROBLEME POSIBILE Programatorul AVR ISP mkll se gsete sub dou forme: 1. Conector cu 6 pini 2. Conector cu 10 pini. Cnd cumperi un programator, alege versiunea cu conector cu 6 pini, dac placa ta de baz suport un astfel de conector. n cazul n care programatorul tu are conectorul cu 10 pini, eti forat s faci o adaptare. Schema pentru reconectarea pinilor este n dreapta. O MIC PAUZ Programatorul fumeaz o igar. Prietena lui ine un pachet de igri i spune: Atenie: Fumatul duneaz grav sntii Ea i arat mesajul programatorului fumtor. Drag, eu sunt interesat de erori nu de atenionri.

58

Programare Programming

Cum se construiete un robot AVR STUDIO

Cum se construiete un robot Cel mai important fiier este main.c. Este codul dumneavoastr surs scris n limbajul C. Cel de-al doilea fiier important este main.hex din directorul Default. n acest director, se afl codul hexazecimal, care a fost compilat din codul surs. Acest cod este inscripionat n microcontroller.

Programare Programming Programming


Urho Kekkonen Hans Christian Andersen Stefan Procopiu Jean Sibelius

59

AVR GCC este un compilator i un modul de detectare a erorilor. Compileaz programe scrise n C sau orientate pe obiecte C++, n cod hexazecimal, folosit apoi de AVR.

Urmtoarea imagine a fost surprins n timpul instalrii AVR Studio pe un calculator cu sistem de operare Windows Vista. Pe un alt sistem de operare procesul poate fi puin diferit.
Main Local AVRStudio417Setup.exe Instalare

Lego Johan Volfgang Goethe Josef Murgas Rulare AVR Studio Ludovit Stur Hamlet Paavo Nurmi Viking Nadia Comaneci

WinAVR-20090313-Install.exe

Instalare

Codul tu surs

Recomandm acest sistem de programare: Creai cte un director special pentru fiecare funcionalitate. De exemplu directorul PWM, directorul ADC, directorul LCD etc. Vor fi pri independente pentru soluia final atunci cnd le vei uni. Ideea de a plasa tot codul surs ntr-un singur program de la nceput nu este o soluie bun, pentru c, cel mai probabil, vei pierde viziunea de ansamblu a codului. Structura directorului dumneavoastr (i a subdirectoarelor) ar putea s arate ca n imaginea urmtoare. Bineneles, eti liber s i creezi propriul tu sistem (logic i uor de administrat).

Niels Bohr Alvar Aalto Janosik Dracula

Directoarele Adc, Lcd, Motor... aici se afl aa numitele fiiere antet (header files). Fiierul antet este un cod surs, care poate fi o parte din programul dumneavoastr main.c. Dar ca s nu fie un fiier main.c mare, putei lua cteva pri din el, s le plasai n alt director i s creai un link ctre ele de la codul surs. varianta 2 varianta 1 main.c some.h main.c

Linus Torvalds Ludwig van Beethoven Ondrej Nepela Michael Schumacher Gruntvig Dadaismus

Recomandm s folosii a doua variant cu fiiere antet. Codul este divizat n pri mai mici care sunt mai bine administrate. Codul hexazecimal rezultat este acelai n ambele variante.

Potrivii numele cu ara de provenien.

60

Programare Programming

Cum se construiete un robot

Cum se construiete un robot n partea de jos a ecranului sunt afiate mesaje ca n imaginea de mai jos. Atenionrile sunt permise pentru c ele nu au nici o influen asupra compilrii. Bineneles este de preferat s nu le avem. Erorile nu sunt permise, ele oprind compilarea. IDE v arat unde este eroarea (numrul rndului precum i cauza).

Programare Programming Programming

61

main

Selectarea limbajului C EEPROM. Electrically Erasable Programmable Read-Only Memory). Memorie Flash folosit AVR ISP mkll este un programator care poate fi folosit n programarea AVR. Poi folosi oricare alt programator dar preferabil este s foloseti programatoare AVR-ISP.

Locaia - Rokey ADC Buton creare director nou RokeyADC

Click Next

Acest mesaj este important

Memorie EEPROM folosit

Bun alegere

Selectare microcontroller

Click Finish

Acum putei vedea codul hexazecimal al codului surs compilat n directorul Default. Codul trebuie inscripionat n memoria Flash a microcontroller-ului. Pentru a face asta, click Tools Program AVR Connect...(sau icoana con ).Pentru a continua, trebuie s v conectai programatorul la PCB-ul microcontroller-ului i la portul USB al computerului dumneavoastr. n urmtoarea imagine este prezentat un programator AVR ISP mkll. Bineneles, putei s folosii oricare programator (utilizarea acestuia este condiionat de PCB-ul microcontrolerului).

Partenerul slovac a folosit tipul de programator - AVR ISP mkII.

Acum este timpul s scriei primul program, s-l compilai i s-l ncrcai n microcontroller. Pentru a face toate acestea, scriei codul din imaginea de mai jos n fiierul main.c. Apoi click pe Build-Rebuild All. Fiierele antet sunt nc goale dar trebuie s v obinuii s compilai codul cu ajutorul acestui buton.

Port conectare PC Tipul programatorului Acest programator ISP a fost folosit de parteneri la nceputul proiectului. Unii dintre parteneri au cumprat i alte tipuri de programator ISP.

Click Connect

Dup ce ai dat click pe butonul Connect, programatorul poate s comunice cu microcontroller-ul i cu computerul (dac funcioneaz bine). Acum dai click pe Tools-Program AVR-Write Flash (sau iconia AVR). Sunt afiate urmtoarele imagini:

62

Programare Programming

Cum se construiete un robot

Cum se construiete un robot Valoarea iniial (din fabricaie) a frecvenei din pagina Fuses este configurat pentru oscilatorul intern 1 MHz. Aceast valoare nu este acceptabil pentru noi (vom folosi cristal extern piezo pentru a mri frecvena). Bifeaz opiunea pentru 8 MHz i apoi click pe Program.

Programare Programming Programming

63

tergerea memoriei Flash ntotdeauna trebuie s fie marcat.

Dup programare se va face o verificare a informaiilor scrise n memoria Flash Demarcai dac v grabii Cutai fiierul HEX dorit

S repetm: 1. Noul microcontroller are bit-ul SPIEN configurat enabled (activat). 2. S nu experimentezi aceast setare. O ajustare greit poate s configureze SPIEN-ul disabled i C nu poate fi programat prin ISP. 3. SPIEN poate fi configurat enabled doar prin intermediu JTAG sau Parallel. 4. Noul microcontroller trebuie s fie configurat pentru utilizarea unui oscilator extern de 8 MHz.

Click pentru a ncepe programarea memoriei Flash

Verificare cod de pe microcontroller Citirea codului din memoria Flash, pe calculator

Aceast seciune nu a fost folosit

Csua trebuie s fie selectat

Selectai aceast opiune

Aceast seciune nu a fost folosit

OK semnific buna funcionare.

Imagine cu meniul Fuses.

RECOMANDARE Coninutul memoriei Flash nu se schimb cnd deschidei un alt proiect n AVR Studio. Atenie la textul opiunii acesteia pentru a nu inscripiona codul hexazecimal al unui proiect nedorit. ATENIE
Programare JTAG. Alt mod de programare AVR. Programare Paralel. Alt mod de programare AVR. El nu constituie un subiect de lucru

Noul microcontroller ATMEGA32 este pregtit din fabric pentru programarea ISP. n cazul n care schimbai (intenionat sau din greeal) bit-ul numit SPIEN (Serial programming enable - activarea programrii seriale) din pagina Fuses n disabled (vezi urmtoarea imagine), devine imposibil s readucei valoarea SPIEN-ului la valoarea enabled (activat) prin intermediul AVR Studio. Astfel, microcontroller-ul nu va putea s fie programat prin ISP. Microcontrolerul nu este distrus dar trebuie s-l reprogramai prin JTAG sau prin programator paralel. Probabil c nu ai procurat nc acest tip de programator. S nu schimbai setarea SPIEN din pagina Fuses.

Imagine cu pagina Main (n cazul unor probleme).

64

Programare Programming

Cum se construiete un robot BAZELE LIMBAJULUI C Cele 4 aspecte ale unui program bun sunt: funcionalitatea, prezentarea grafic, denumirea sugestiv a variabilelor, comentariile codului surs. V amintii? Toate acestea au fost precizate nainte i ar trebui s respectai aceste postulate. Orice limbaj superior de programare are propria sa structur, sintax, propriile cuvinte cheie, i propria structur de programare. Toate ns, sunt foarte similare. Cnd tii s lucrai foarte bine cu unul dintre ele, cu siguran nu vei avea probleme cu celelalte. 1. Comentarii Comentai totul! Acum nelegei absolut tot ce tocmai ai scris, ntr-o lun vei uita multe informaii. Comentariile nu sunt compilate i nu cresc coninutul codului binar. Sintaxa comentariilor: int i=0; // este nevoie s nceap un ciclu de la zero pentru c /* GoGeorgeGo(0,0); DELAY_MS_(100); Cele dou rnduri de deasupra i aceast fraz nu sunt compilate */ 2. Respectarea scrierii cu minuscule Limbajul C este un limbaj case-sensitive adic ine cont de mrimea literei. Cuvntul cheie for este OK, pe de alt parte FOR nseamn eroare (nu este recunoscut ca instruciune de compilator). Cel mai bine este s scriei programul cu litere mici i astfel nu vei face confuzii. n cazul variabilelor i al procedurilor este mai bine s folosii modalitatea numit camel casing: GoGeorgeGo(10), GoGeorgeStop(10), NumberOfSensors... Cnd definii o variabil NumberOfSensors, folosind Numberofsensors undeva n codul dumneavoastr vei obine o eroare. 3. Structura programului n limbajul C

Cum se construiete un robot Sintaxa: #include <stdio.h> //DLL pentru intrri i ieiri #include <math.h> //DLL pentru funcii matematice Reine c bibliotecile predefinite nu au nevoie de calea ctre locaia lor (cale relativ). b) ncrcarea fiierelor de antet (header) nseamn adugarea codului dumneavoastr surs. Fiierele header sunt cumva asemntoare cu bibliotecile, dar nu sunt mprite cu alte programe (dar putei face o bibliotec dintr-un fiier header propriu). Fiierele header (precum i bibliotecile) au extensia .h. Fiierele header fac programele uor de vizualizat. Atenie ns, nu punei prea mult informaie pe o singur pagin! #include <C:\Robot\Motors\motor.h> #include <C:\Robot\Motors\SensorA.h> c) Declararea variabilelor. Fiecare variabil folosit trebuie declarat. Declararea nseamn definirea numelui i a tipului de date pentru o anumit variabil folosit n program. n cele mai multe cazuri vom folosi date de tip ntreg (integer). int Value; //variabil cu numele Value i dat de tip ntreg uint8_t Drive=255; //ntreg fr semn, mrime 8 bii, valoare 0-255 char NuOfSe=X; //variabilei caracter NuOfSe i se atribuie valoarea X Value=10; //aceast operaie este permis Prin declarare putei atribui o valoare implicit sau o putei face ulterior n timpul derulrii programului. d) int main(void) este punctul de nceput al programului. Fiecare program trebuie s aib aceast funcie. Dar o poi folosi o singur dat n codul tu surs. Programul ncepe derularea cu aceasta. Sintaxa: int main(void) { //locul celor mai importante construcii ale programului //instruciuni, condiii, cicluri, calcule, operaii cu bii } e) Condiii, cicluri, calcule, operaii cu bii Condiiile sunt de fapt decizii. n cazul n care distana pn la perete este mai mic de 20 cm, ntoarcei la stnga. n cazul n care este mai mare de 20cm, mergei nainte. n construcia dumneavoastr putei folosi o condiie simpl, care mparte derularea programului n dou direcii sau condiii complexe, care mpart programul n mai multe direcii. Condiia evalueaz tot timpul o expresie logic (mai puin de 20cm? DA rezultatul expresiei logice este adevrat (true) sau NU rezultatul este fals (false)). Sintaxa int i; if (i>0) //expresie logic {

Programare Programming Programming


Cale relativ (relative path). n legatur cu locaia de unde este apelat biblioteca. include motor.h nseamn c fiierul motor.h este localizat n directorul n care se gseste programul principal include PWM/motor.h nseamn c fiierul motor.h se afl n subdirectorul PWM, localizat n directorul n care se gsete programul principal Cale absolu (absolute path). Calea ctre bibliotec trebuie descris complet. C:\Robot\Motors\motor.h) Variabil. Poate memora o valoare. Aceast valoare poate s se schimbe n timpul executrii programului. Declararea. Presupune definirea numelui i tipului de date ale variabilei. Cum s te recunoti i cum s tii cui i aparii (eti un membru al unui grup)? Exemplu: My name is John Doe and I am 16 years old nseamn c unica ta identificare este numele i c faci parte dintr-un grup de adolesceni. Cu semn (signed). Valoarea poate fi mai mare sau mai mic dect 0. Fr semn (unsigned). Valoarea este mai mare dect 0. int8_t x; // variabila x poate avea valoare de la -128 to 127 uint8_t s; // variabila s poate avea valoare de la 0 to 255 int main(void) int nseamn valoarea returnat cnd programul se termin main este numele funciei void nseamn gol, adic procedura main nu presupune nici o valoare din exterior. i Condiie simpl i<0 i>=0

65

Library. DLL. Dynamic Linked Library. Biblioteca este un cod disponibil care este adugat (linked) codului tu. O bibliotec are mai multe funcii. Poate fi folosit n mai multe aplicaii. Este motivul principal pentru utilizarea DLL - urilor un singur cod mprit/utilizat pentru mai multe programe. Bibliotecile au de obicei extensia .dll (programele pentru Windows) i .h n limbajul C.

a) b) c) d) e) f)

ncrcarea bibliotecilor ncrcarea fiierelor de antet Declararea variabilelor(constantelor) int main(void) { condiii, cicluri, calcule, operaii cu bii, ... adic pri ale programului }

a) ncrcarea bibliotecilor nseamn adugarea bibliotecilor n program. Nu este recomandat s se ncarce o bibliotec dac nu este nevoie de ea n program, iar dac foloseti instruciuni dintr-o bibliotec care nu este ncrcat n program, computer-ul va semnala o eroare. Bibliotecile sunt create de autorii limbajului de programare i tu doar le utilizezi (poate n viitor le vei actualiza sau le vei crea).

i Condiie complex -100<i<0 0=i<10 11<i<100

66

Programare Programming

Cum se construiete un robot MotorStop(); } MotorTurn(20,90); } //observ aezarea codului surs. Divizarea programului n mai multe direcii este puin mai dificil Sintaxa: int i; if (i=0) { MotorStop(); //oprete micarea } else if (i<0) { MotorTurnLeft(90); //ntoarce 90 de grade la stnga } else if (i>0) { MotorTurnRight(90); //ntoarce 90 de grade la dreapta } Conjuncii i disjuncii Putei altura condiii logice n modul urmtor: if ((i=0)&&(j=0))... //returneaz true dac i i j sunt 0 if ((i=0)||(j=0))... // returneaz true dac i sau j sunt 0 Se las codul fr paranteze doar dac n interior este doar o comanda (nu mai multe): if (i>0) MotorStop(); else MotorTurn(20,90); Bucle de program Reprezint o repetare a unor instruciuni. Numrul de repetri depinde de valoarea logic a unei condiii. Exist dou posibiliti principale de a programa: Cnd tii exact numrul de repetiii, folosii comanda for. Cnd nu tii exact numrul de repetiii, trebuie s folosii comanda while. Sintaxa: int i=0; for (i=0; i<10; i=i+1) //i=i+1 se poate scrie i++ { MotorTurnLeft(90); //ntoarce la stnga de 10 ori cu 90 de grade, adic // 900 de grade } Aceeai construcie while: while (i<10) { MotorTurnLeft(90); // ntoarce la stnga de 10 ori cu 90 de grade, //adic 900 de grade i++; //crete unitar i, cnd i este egal cu 10 ciclul se oprete }

Cum se construiete un robot Cea mai util utilizare a instruciunii while este infinity looping (bucla infinit). Se repet totul din bucla while pn cnd unele calcule din bucl duc la rezultatul false al condiiei de buclare. Scriem un exemplu de utilizare mai complex a instruciunii while, mpreun cu if, i alte comenzi. Atenie la punerea n pagin! #include <stdio.h> //DDL pentru I/O #include <C:\Robot\Tools\tools.h> //fiier header int difference; difference=20; //sau int difference=20 int main(void) //nceputul unui program { int i=0; //din aceleai motive while(i) { MotorGo(100,100); //robot mers nainte int sensor0=GetADC(0); //msurm distana de la senzorul 0 if(sensor0<50) // robot aproape de margine { MotorStop(); //se oprete micarea MotorTurnRight(90); //robotul se ntoarce ctre dreapta while(i) { MotorGo(100,100); // deplasare nainte int sensor1=GetADC(1); if (sensor1<30) { DoSomething(); } else if ((sensor1>30)&&(sensor1<40)) { DoSomethingOther(); } else { StopMotor(); } } } } De asemenea exist instruciunea switch pentru condiii, care evalueaz valorile irurilor, dar poate fi nlocuit de if i else if i este mult mai prietenoas pentru utilizator. Sintaxa: char letter; //sau tip de date numeric switch (letter) { case A : ActionA(); case B : ActionB(); break; //se termin bucla switch n acest caz case C : ActionC(); default :AnyOtherAction(); } default :AnyOtherAction(); }

Programare Programming Programming

67

Mica siren, Copenhaga.

68

Programare Programming

Cum se construiete un robot REGISTRI Imagineaz-i un deget uman. Pe mas se afl o ceac fierbinte de ceai. Cnd o atingi simi c e fierbinte. Degetul tu ii servete ca intrare (dispozitiv de intrare-citire). Temperatura cetii este transmis spre procesare ctre creierul tu cu ajutorul unui senzor tactil. mpinge aceast ceac cu degetul. n acest moment degetul tu face o aciune - mic ceaca pe mas. Servete ca o ieire (comand venit din interior printrun dispozitiv de ieire). Microprocesorul trebuie s procedeze la fel. Trebuie s simt ce l nconjoar ca s poat lua decizii n funcie de aceste condiii externe trebuie de aib intrri. Pe de alt parte trebuie s aib capacitatea de a controla mediul nconjurtor, de obicei prin generarea unor tensiuni. Acestea sunt ieirile (rezultatele) sale. Degetul uman poate fi n acelai timp input i output. mpingi ceaca i simi temperatura acesteia n acelai timp. GNDII-V

Cum se construiete un robot dea n jurul microcontrolerului. Acetia sunt pinii. Pinii sunt mprii n patru pri numite PORTS (porturi). Fiecare port are 8 pini. Restul pinilor din microcontroller sunt ntrebuinai n alt scop (vezi seciunea cu descrierea pinilor ATMega). Pentru a avea un sistem, porturile sunt denumite astfel: PORT A PORT B PORT C PORT D Fiecare dintre ele au cte 8 pini i sunt marcate de la 0 la 7. Porturile sunt conectate la mediul nconjurtor. Aceasta nseamn c PORT A i PORT B sunt porturi de intrare i restul de ieire? Poate la nceputul istoriei microcontroller-ului. Acum este ceva mai greu dar foarte logic i variabil. Un port poate fi i de ieire i de intrare. Depinde de programator. Nu exist un port explicit de intrare sau de ieire. Portul este setat pentru intrare sau ieire. Mai mult, se poate seta fiecare pin n parte (de intrare sau de ieire). Aceasta nseamn c PORT B poate fi setat de exemplu n acest fel: pinii 0, 5 i 7 s fie intrri i restul ieiri. AVR are 4 porturi (PORT A, PORT B, PORT C, PORT D). Fiecare dintre ei are 8 pini (de la 0 la 7). Pinii servesc la citirea datelor din mediul nconjurtor (de exemplu senzori) sau pentru scrierea datelor ctre mediul nconjurtor (de exemplu tensiune pentru motoare). Fiecare port este conectat la trei regitri. Fiecare dintre cei trei regitri are 8 bii (nimic surprinztor). Faptul c numrul ordinal specific de pin al portului este conectat la acelai numr ordinal de bit al registrului rmne ntotdeauna valabil. Regitrii conectai la port sunt numii DDRx, PORTx, PIN, unde x-ul poate fi nlocuit cu A, B, C sau D. De exemplu DDRC, PORTA, PIND. Urmtoarea imagine reprezint regitrii corespunztori PORT D.
DDRD PORT D PORTD PIND

Programare Programming Programming

69

OBIECT

IEIRE

INTRARE

ATmega32 20 21 5 4 3 2

Port B

40

Port A

Port D

Port C

I/O. Input/Output. ntotdeauna cu privire la un obiect. Intrare nseamn informaie pentru obiect. Ieire nseamn informaie de la obiect. Intrarea presupune scrierea n regitri. Informaia despre temperatura senzorului este stocat n registru; la fiecare citire se rescrie peste valoarea precedent. Ieirea reprezint citirea din registru. Informaia despre viteza motoarelor este preluat de la pinii ataai regitrilor i se pot controla motoarele.

Locaia porturilor pentru ATMEGA32. Observ c un pin al portului D este alturi de portul C.

Este chiar simultan? Sau degetul este intrare pentru un timp foarte scurt i apoi devine ieire? Ct de mult dureaz aceste intervale? Oare creierul nostru este att de imperfect? BINE DE TIUT I/O nseamn Input/Output Registrul este o zon de memorie, unde datele sunt stocate sub form binar (0 sau1 ). 0 nseamn logic false i are valori ale tensiunii continue n intervalul 0V-0.8V. 1 nseamn logic true i are valori ale tensiunii continue n intervalul 3.5V-5V. Fiecare tensiune ntre valoarile logic false i true este o valoare nedefinit i foarte probabil va cauza resetarea programului. Registrul are propria sa dimensiune. Dimensiunea registrului este definit de un numr de locuri adiacente pentru stocarea biilor. Fiecare loc poate fi scris cu valori logice 0 sau 1. Fiecare microcontroller are un numr diferit de regitri i dimensiunea lor poate varia. Atmega32 are 32 de regitri i atributul lor comun este c au dimensiunea de 8 bii (Atmega32 are regitri de 8 bii). Regitrii, precum i pinii regitrilor au nume proprii. n regitri se stocheaz date. Mai muli regitri ofer posibilitatea de a lucra cu mai mult informaie n acelai timp. Mai muli bii ntr-un registru nseamn acelai lucru. Ambele influeneaz viteza de lucru a unui robot. Acum avem o ntrebare important: care este mecanismul de transfer al datelor de la regitri i ctre regitri? n ce mod pinii regitrilor intr n contact cu mediul nconjurtor? PORTURI Rspunsul este simplu: cu ajutorul porturilor. Regitrii sunt foarte importani, ei stocheaz informaia. Ei trebuie s fie accesibili. Ei sunt accesibili prin degetele microcontroller-ului, care se pot ve-

Ordinea pinilor - corect 8 7 6 5 4 3 2 1

Ordinea pinilor - incorect Nu exist port de ieire. Nu exist port de intrare. Exist port, care poate fi de ieire i de intrare.

Fiecare bit poate avea nume. Cel mai semAl cincilea nificativ bit bit 7 6 5 4 3 2 1 0

Pentru setarea direciei (I sau O) Pentru stabilirea valorilor de ieire Pentru a citi datele de intrare REGISTRUL DDRx

1 registru = 8 bii Cel mai nesemnificativ bit Fiecare bit poate avea valoare 0 sau 1 Registrul poate avea un nume ADCH ADCL

Anumii pini sunt definii de program pentru ieiri, restul pentru intrri.

Registrul de 16 bii este alctuit din 2 regitri de 8 bii. De exemplu registrul ADC este alctuit din ADCH (H nsemnnd HIGH -superior) i ADCL (L nsemnnd regitri LOW).

DDRx verific dac portul x va fi de intrare sau ieire. n cazul n care bitul este setat la valoarea 0, pinul corespunztor portului este setat intrare (citirea valorilor de la senzori). Dac bitul este setat unei valori logice TRUE pinul corespunztor portului este setat ieire (genernd tensiune pentru orice aciune). EXEMPLE Comanda urmtoare stabilete toi pinii portului D pentru valorile citite, adic pentru intrri. DDRD=0b00000000

70

Programare Programming

Cum se construiete un robot REGISTRUL PINx

Cum se construiete un robot NTREBRI I RSPUNSURI ntrebare: Este necesar s prescriei pinii oricrui port pentru citire (intrri)? Rspuns: Nu, toi pinii sunt stabilii implicit pentru citire. I: Cnd stabilii toi pinii porturilor drept ieiri, pot genera ei doar valori logice? R: Da, pot. Aceste valori logice pot fi modificate cu o frecven foarte mare i prin schimbarea duratei ciclului, valoarea tensiunii poate varia de la 0 la 5 V. I: Cnd portul este prescris ca intrare, pot aceti pini s lucreze doar cu valori logice? R: Nu, putei conecta orice tensiune de la 0 la 5 V la pin i s lucrai cu aceast valoare. I: Ci voli sunt la pinii microcontroller-ului care sunt setai ca ieire? R: n cazul valorii logice 0, maximum sunt 0.6V. n cazul valorii logice 1, minimum sunt 4V. I: Care este valoarea corect a rezistorului pull-up? R: De la 20k la 100k, sau folosete rezistorul pull-up intern.

Programare Programming Programming

71

PIN.Port IN.

DDRA=0b00001111 seteaz cei 4 pini din stnga portului A pentru citire i 4 pini din dreapta portului A pentru scrierea valorilor, adic pentru ieiri. Registrul PINx stocheaz datele, care sunt scrise cu ajutorul portului x. Bineneles, pinii portului x trebuiesc setai pentru citire cu ajutorul registrului de citire PORTx. Nu este posibil s-l folosii pentru trimiterea de date ctre port. n cazul n care portul este stabilit pentru ieire, biii registrului PINx urmeaz datele, care sunt trimise pinilor din port.

Rspunsuri la ghicitori despre codificatoare: 1. Codificatorul genereaz impulsuri, dar robotul nu se mic. De ce? Se afl pe ghea. 2. V-ai mprit codificatorul rotativ n 360 de grade. Se pare c este bine. Dar nu suntei n msur s-l oprii n locuri definite. De ce? Diametrul este prea mare. 3. Comportamentul robotului era excelent cnd l-ai testat asear acas. Dar cnd ai vrut s-l prezini diminea la coal nu ai avut succes. De ce? Rsritul soarelui influeneaz comportamentul. 4. Cnd folosii codificatoare n robot, cteodat microcontroller-ul se reseteaz. Cnd nu sunt folosite totul este ok. De ce? Codificatorul are nevoie de mai multe calcule din partea microcontroller-ului. 5. Robotul meu are codificator optic rotativ absolut cu o pereche emitor /detector. Ar putea fi adevrat propoziia? Da, piesele negre ale codificatorului sunt n nuane de negru. Alb este aproximativ la 0 grade, negru la 360. Dar detectorul de lumin trebuie s poat detecta nuane de gri i programul s le utilizeze.

EXEMPLE DDRA=0b00000000 //n primul rnd pinii portului A sunt stabilii pentru citirea valorilor (intrare) //Seteaz pinii al aptelea i al optulea ai portului A pe 1 logic (5Volti) //Aloc aceast valoare variabilei i int i = PINA //Variabila i va conine reprezentarea zecimal a valorii binare 0b00000011

GANDII-V REGISTRUL PORTx Registrul PORTx conine informaii, care sunt trimise la pinii portului pentru a controla mediul nconjurtor. Aceasta nseamn c pinii portului urmresc biii registrului PORTx. Bineneles pinii portului trebuie s fie setai pentru ieire. EXEMPLE DDRA=0b11111111 //n prima linie pinii portului A sunt stabilii pentru scrierea valorilor (ieire) //Conecteaz fiecare pin al portului A la anodul unor LEDuri i // catozii lor la mas. PORTA=0b11111111 //LED urile vor lumina. REZISTOARE PULL-UP n exemplul precedent este o greeal n ceea ce privete LED-ul. Pinii microcontroller-ului pot fi ncrcai cu un curent maxim de 40 mA. n cazul unui LED cu consum redus nu este o problem. Dar n cazul necesitii unui consum mai mare (exemplu motor direct sau servo), acest curent ar fi foarte probabil peste 40 mA i portul poate fi distrus. Cum s rezolvi aceast problem? Exist o idee electronic bun pentru alimentarea acestor tipuri de dispozitive (motor, servo) aa numitele rezistoare de ridicare (pull up). Dispozitivul este alimentat din sursa plcii de baz, nu din pinul portului. Imaginai-v c trebuie s detectai semnale de la 20 de senzori i s controlai 20 uniti de stocare. Ai putea s folosii ATMega32? ncearcai s desenai o schem simpl pentru utilizarea rezistorului pull-up pentru ieire! SARCINI 1. Scriei codul surs pentru programul care va aprinde LED-urile de pe primul i ultimul pin al portului D. 2. Scriei un alt program care va pune n funcie un motor pe pinul 3 al portului C. PAUZ Codul Morse: Mai jos este numele de familie al unui faimos filozof i profesor danez (el a influenat considerabil sistemul educaional n Europa) scris n codul morse. --. .-. ..- -. - ...- .. --.

72

Programare Programming

Cum se construiete un robot OPERAII CU BII Limbajul C nu este performant n setarea biilor regitrilor. Dar lucrul cu biii regitrilor este extrem de important. De ce? Pentru c programarea unui microcontroller nseamn s scrii i s citeti n/din biii regitrilor. Valoarea n registru (sau n variabile) poate fi scris n trei moduri: zecimal: DDRB=146 hexazecimal: DDRB=0xA2 binar: DDRB=0b10010010 Cum s prescrii al treilea i al aptelea bit din PORTA la 1(HIGH)? PORTA = (1<<PA2) | (1<<PA6); //restul biilor sunt stabilii LOW PORTA | = (1<<PA2) | (1<<PA6); //restul biilor au starea anterioar Cum s prescrii al treilea i al aptelea bit din DDRA la 0(LOW)? DDRA = ~ ((1<<PA2) | (1<<PA6)); // restul biilor sunt stabilii HIGH DDRA & = ~ (1<<PA2) | (1<<PA6); // restul biilor au starea anterioar Aceeai funcionalitate este realizat mai simplu prin: PORTA = (1<<2) | (1<<6); //noteaz doar numrul de ordine al biilor n loc de PA2 n cazul n care biii de port au nume definite TCCR1B |= (1<<WGM12) | (1<<CS12) ; //biii numii WGM12 i CS12 sunt prescrii HIGH n registrul TCCR1B if(bit_is_set(PINC,0)) {...} //citete valoare din condiie if(bit_is_clear(PINC,0)) {...} //citete valoarea din condiie
GND 15 kOhm +5V

Cum se construiete un robot ECRAN LCD Urmtorul capitol va fi dedicat convertorului analogic/digital. Intrarea ctre microprocesor este o valoare analogic de la senzor (de exemplu senzor de proximitate). Aceast valoare analogic va fi schimbat ntr-una digital prin intermediul ADC. Ea va reprezenta distana. Pentru un test i o evaluare mulumitoare a robotului, este necesar afiarea acestei distane (respectiv valoarea zecimal corespunztoare acestei distane). n ce fel? O modalitate este de a folosi anumite instrumente de depanare, livrate cu programatorul JTAG. Dar aceast soluie este prea scump, de aceea n-o vom folosi. Mai ieftin i facil este folosirea unui ecran LCD pentru afiarea tuturor datelor pe care le definim n programul nostru. Folosim dou linii (2 rnduri) de afiaj LCD. Fiecare linie are 16 caractere alfa numerice. Poate fi folosit orice LCD compatibil cu HD 44780. LCD-ul poate lucra n modul 4 sau n modul 8 de funcionare. Modul 8 permite citirea valorilor din LCD, dar folosete 8 bii ai Portului D pentru a trimite/primi date. Vom folosi modul pe 4 bii (doar scrierea datelor pe afiaj, dar salvnd 4 bii ai portului). Pentru conectarea LCD-ului folosim Port D. De ce? Pentru c Portul A este folosit de ADC, Portul C este folosit pentru comanda motoarelor iar Portul B este folosit pentru programare. Singurul port liber este Portul D.
LCD compatibil HD44780

Programare Programming Programming

73

Valori de adevr poarta I: 0 I 0 = 0 0 I 1 = 0 1 I 0 = 0 1 I 1 = 1

ADC. Analog to Digital Converter. Convertor Analogic-Digital

Valori de adevr poarta SAU: 0 SAU 0 = 0 0 SAU 1 = 1 1 SAU 0 = 1 1 SAU 1 = 1 Valori de adevr poarta XOR 0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0 OPERATORI MATEMATICI + Adunare - Scdere / mprire * nmulire ++ Incrementare -- Decrementare Operatori logici egal inegal mai mic ca mai mare ca mai mic sau egal ca mai mare sau egal ca nu i sau

== != < > <= >= ! && ||

Port B

ATmega32

1 RS R/W ENA DB7 DB6 DB5 DB4 2 1 3 4 5 6 14 13 12 11 10 9 8 7 15 16

40 Port A Podul i castelul din Bratislava. 31 30 GND +5V

+5V GND Port D

10 31 14 15 16 17 18 19 20

SET nseamn HIGH CLEAR nseamn LOW ine minte: PORTB & = ~ (1<<5); //sterge bit-ul PORTB | = (1<<5); //seteaz bit-ul PORTB ^ = (1<<5); //schimb valoare bit (^ este XOR)

PD0 PD1 PD2 PD3 PD4 PD5 PD6

Port C

21

Luminozitatea LCD-ului. Pentru luminozitate maxim se conecteaz pinul 3 la pinul 2 fr poteniometru.

ENA. Semnal de tact pentru LCD. R/W. Definete procesul de citire/ scriere. RS. Definete trimiterea unei comenzi sau dat.

Explicaiile codului surs pentru afiarea datelor nu sunt importante n acest moment. Copiaz directorul LCD n proiectul tu i fisierul lcd16.c n directorul main pentru utilizare. Adugai aceste instruciuni n fiierul main.c: InitLCD(); SendString(ISR ADC YES, 1, 5); //1 nseamn prima linie (1 - 2), 5 nseamn poziia de start din linie (0 - 15) SendInt(senzor7,2,12); //transmite valori ntregi ale variabilei senzor7 ctre a doua linie, 12- poziie de start

74

Programare Programming

Cum se construiete un robot ADC

Cum se construiete un robot ADC IN PRACTIC


Microcontrollerele AVR au ADC ataat la portul A (ADC partajeaz portul A). ADC funcioneaz n dou moduri: 1. Modul conversie unic ADC execut conversia i apoi i oprete activitatea (conversie unic). Aceasta nseamn c conversia se face o singur dat. 2. Modul continuu ADC execut conversia i ncepe alt conversie imediat. Acest fenomen poart numele de conversie continu. Divizorul: ADC-ul are nevoie de un semnal de tact ca s lucreze. AVR-ul nostru are o frecven de 8 MHz. Aceasta nseamn c la fiecare aproximativ 0.1 microsecunde ADC convertete valori analogice n valori digitale. Este prea mare i inutil (i scade performana microcontroller-ului). Frecvena optim este de la 50 kHz la 200 kHz. O frecven joas nseamn o mai mare precizie de msurare, o frecven mai mare nseamn o execuie mai rapid. Aceast frecven este stabilit de valoarea divizorului (are acelai neles c setarea PWM). Divizorul poate fi stabilit pe 7 valori diferite: 2, 4, 8, 16, 32, 64, 128. Portul A are 8 pini de I/O. Fiecare are propria posibilitate ADC (numit canal). Fiecare pin poate fi conectat la un senzor. Aceasta nseamn c poi detecta i lucra cu semnale de la 8 senzori deodat n programul tu. ADC-ul n funciune pe canalul 3 nseamn msurarea valorii analogice de la al 37-lea pin Atmega32. ADC lucreaz cu 4 regitri: ADMUX alegerea tensiunii i canalului de referin, care este utilizat de fapt ADCSRA - starea i controlul ADC ADCL a ADCH - doi regitri de 8 bii, care conin rezultatele conversiei. Ei sunt marcai ca regitri ADC. Pentru ncrcarea rezultatului conversiei sunt utilizai doi regitri. De ce? Pentru c rezultatul este pe 10 bii i un registru are o capacitate de stocare doar pe 8 bii.

Programare Programming Programming

75

Distana (de exemplu 45 cm) SENZOR

nelegerea ADC-ului nseamn nelegerea noiunilor de baz ale microcontrolerului. TEORIE Cele mai multe mrimi fizice i modific valorile continuu pas cu pas (cresctor, descresctor). Aceasta nseamn c mrimea poate atinge orice valoare ntr-un interval definit. Intervalul definit este dat de valoarea minim i cea maxim a mrimii fizice. Valoarea din interiorul intervalului poate fi detectat printr-un senzor, care o schimb ntr-o valoare electric tensiune. Cum funcioneaz microcontroller-ul cu aceast valoare? Exist dou posibiliti: 1. Utiliznd comparatorul analogic. Compar dou valori analogice cu rezultate true sau false (higher-lower). 2. Utiliznd convertorul analogic-digital. Convertete o valoare analogic ntr-o valoare digital. Aceast valoare digital este utilizat de programul tu. Prin folosirea unui comparator analogic obinem informaii despre temperatur, dac este peste sau sub valoarea referin dar nu avem informaii continue despre temperatur (n orice moment). Dac scopul este de a urmri dac nivelul apei dintr-un ru este peste starea critic, aceast soluie este mai bun (i aceasta va fi discutat n capitolele urmtoare). Dar, pentru evaluarea vitezei de cretere a nivelului apei, exist doar un singur mod folosind ADC. Cum se procedeaz? Trebuie s schimbai valoarea analogic n valoare digital. Aceasta nseamn c, de exemplu, 212 mm sunt schimbai de ctre senzor n 2.32V i aceast valoare trebuie reprezentat la nivel de bii. Ci bii? Imagineaz-i c ntr-un bit: poi stoca 2 valori (2^1), 0 sau 1. Imagineaz-i c 0V de la un senzor este 0 logic i 2.32V este 1 logic. Ce se ntmpl cu 2.20V? Imagineaz-i c sunt 2 bii: poi stoca 4 valori (2^2). nc nu este suficient pentru intervalul nostru de valori. Imagineaz-i c sunt 8 bii: poi stoca 256 valori (2^8). mprirea n 256 de valori ar putea fi potrivit. Imagineaz-i c sunt 10 bii: poi stoca 1024 valori (2^10). mprirea n 1024 de valori diferite este excelent pentru noi (dar probabil pentru SMT tot nu este suficient, este nevoie de o mai mare precizie). nc nu am definit valoarea maxim a unei mrimi fizice. Se tie c fiecare senzor genereaz, de obicei, valori de la 0 la o anumit valoare maxim (exemplu 5V). Aceast valoare maxim este numit tensiune de referin. Cnd senzorul genereaz o tensiune de la 0 la 5 V i pentru stocarea valorilor folosim regitri de 8 bii (256 valori diferite) suntem capabili s msurm valoarea de intrare cu o precizie de 5/256 voli.

Valoare analogic (de exemplu 2.1 V)

Partajarea. Un dispozitiv poate fi utilizat de doi utilizatori. Un port este utilizat pentru mai multe activiti. Glum dragu pentru profesorii mai n vrst: Nu-mi mpart niciodata pipa i nevastahmmmnevasta cteodat dar pipa niciodat. DIVIZORUL nseamn DIVIZOR FRECVEN

Microcontroller ADC Valoare digital (11010010)

Intervalul de temperatur. Valoarea minim este de -273.15 grade Celsius (0 grade Kelvin). Valoarea maxim este probabil temperatura de pe suprafaa Soarelui.

8 MHz frecvena ceasului Divizor Frecv. Rezultat 2 4 MHz fr precizie 4 2 MHz fr precizie 8 1 MHz fr precizie 16 500 kHz fr precizie 32 125 kHz OK 64 62 kHz excelent 128 31 kHz lent

SMD. Surface Mount Device. SMT. Surface Mount Technology.

ADC Registrul de selecie multiplexor ADMUX

7
REFS1

6
REFS0

5 ADLAR Orientarea la stnga

4
MUX4

3
MUX3

2
MUX2

1
MUX1

0
MUX0

Selectarea tensiunii de referin 0 0 1 1 0 1 0 1

Neglijabile (valoarea iniial)

Selecia canalului (pin conversie valoare)

Tensiune de referin

Referin extern (0 V la tensiunea de alimentare), sursa trebuie s fie conectat la pin-ul 32. Surs de tensiune (probabil 5V). Nu este necesar s se conecteze la pin-ul 32 (vezi schema). rezervat Tensiune de referin intern de 2.56 V (valoarea este produs de uC). O surs poate fi conectat la pin-ul 32. 0 ADC poate converti valoarea analogic ntr-o valoare pe 10 bii. Trebuie memorat n doi regitri ADCL i ADCH (16 bii n total). n acest caz rezultatul este aliniat la stnga, ADCH este plin i ADCL are 2 bii ocupai n acest caz rezultatul este aliniat la dreapta i ADCH este plin i ADCL are ultimii doi bii ocupai 0 001, 010 etc 1 1 1 0 0

2.56 V Senzor 2V 3V precizia este de 0.01 V Vcc (5 V) 2.56 / 256 5 / 256 precizia este 0.02 V definit de utilizator

GNDII-V Msori o distan de pn la 80 cm. Tensiunea de referin este de 5V. Pentru stocarea valorilor foloseti un registru de 10 bii. Care este precizia de msurare a distanei?

ADC convertete valoarea de la pin-ul 0 al port-ului A ADC convertete valoarea de la pin-ul 1...6 etc. ai port-ului A ADC convertete valoarea de la pin-ul 7 al port-ului A

Diferen tensiune de referin

76

Programare Programming

Cum se construiete un robot


ADC Registru de stare i control

Cum se construiete un robot


ADCSRA
0
ADPS0

Programare Programming Programming

77

7
ADEN 0 1

6
ADSC

5 ADATE

4
ADIF

3
ADIE

2
ADPS2

1
ADPS1

COD SURS ADC Exemplul codului surs este pentru senzorul de distan Sharp, dar el poate fi folosit pentru orice dispozitiv care produce valori analogice pe care le poi transforma n valori digitale. Valoarea maxim de la senzorul Sharp nu va fi peste 2.56V, deci putem folosi tensiunea de referin la nivel intern de 2.56V. Acest cod poate fi n fiierul header numit adc.h i poate converti valoarea analogic ntr-una digital; pinul respectiv este setat ca variabil n modul conversie unic. n codul surs main.c ar trebui s fie: int distance2=GetADC(2); //citirea valorii de la senzor pe pinul 2 - port A n adc.h poate fi codul surs: //declararea procedurilor void Init_ADC(uint8_t senzor); int GetADC (uint8_t senzor); //faza de iniializare void Init_ADC(uint8_t senzor) { ADCSRA = 0; // setare registru ADSCRA la valorile implicite ADMUX = 0; // setare registru ADMUX la valorile implicite //stabilirea bitului ADLAR al registrului ADMUX la 1 alinierea la stnga a // rezultatului ADMUX = (1<<ADLAR) | senzor; ADCSRA = (1<<ADPS2) | (1<<ADPS1); //Divizor la 64, 62 kHz //activarea conversiei, pornirea conversiei ADCSRA |= (1<<ADEN) | (1<<ADSC) ; } int GetADC(uint8_t senzor) { Init_ADC(senzor); //buclare pna cnd ADIF este setat pe 1 logic while (!(ADCSRA & (1<<ADIF))) { } int temp = ADCH; return temp; } Acum putei lucra cu variabila distance2 n programul principal, n acest mod: main.c int distance2=GetADC(2); if(distance2>40) { Go(); } else { Stop(); }

Valoarea 0 oprete conversia ADC (oprirea anuleaz conversia n curs) Prescriei valoarea ADEN la 1 pentru activarea conversiei 0 0 0

Divizorul este setat cu valoarea 2

Divizorul este setat la 2, 4, 8, 16, 32, 64 (001 este echivalent 001, 010... cu 000) Divizorul este setat la valoarea maxim 128 0 1 1 1 1 valoarea 0 nu conteaz (devine 0 cnd se termin o conversie) stabilii valoarea 1 cnd se dorete pornirea conversiei 0 Semnal de ntrerupere. 0 nseamn c nu exist o conversie n curs Devine 1 cnd s-a terminat conversia i este scris n registrul ADC. Este folosit n program pentru a se ti dac s-a terminat o conversie. Programul nu trebuie s ntreprind nici o aciune pn nu se termin conversia.

Ceilali bii nu ne intereseaz pentru obiectivele noastre din proiect.

Registrul de date ADC

ADCH
8
ADC8

15
-

14
-

13 -

12
-

11
-

10

9
ADC9

Registrul de date ADC

ADCL
0
ADC0

Poarta Brandenburg, Berlin

7
ADC7

6
ADC6

5
ADC5

4
ADC4

3
ADC3

2
ADC2

1
ADC1

Acesta este coninutul regitrilor cnd bit-ul ADLAR din registul ADMUX este 0. Registrul de date ADC

ADCH
8
ADC2

15
ADC9

14
ADC8

13 ADC7

12
ADC6

11
ADC5

10
ADC4

9
ADC3

Registrul de date ADC

ADCL
0
-

7
ADC1

6
ADC0

5
-

4
-

3
-

2
-

1
-

Acesta este coninutul regitrilor cnd bit-ul ADLAR din registul ADMUX este 1.

INEI MINTE 1. Rezultatul ADC este pe 10 bii. Cei mai importani bii sunt cei din stnga. Cnd aliniezi rezultatul la dreapta i vrei s citeti un singur registru (ADCL) pentru controlul programului, vei pierde doi din cei mai semnificativi bii. Trebuie s aliniezi rezultatul la stnga i s citeti registrul ADCH. n acest caz pierzi doi bii dar care nu prezint o importan foarte mare. Desigur, poi citi toi cei zece bii i atunci nu conteaz alinierea (dar trebuie s programezi citirea unei valori din doi regitri). n cazul robotului nostru vom folosi citirea doar dintr-un singur registru (ADCH i alinierea la stnga a rezultatului). 2. ADC poate lucra de asemenea continuu. Aceasta nseamn c atunci cnd o conversie se termin, o alta ncepe. n teorie oprirea conversiei cauzeaz ntreruperea iar rezolvarea acestei ntreruperi pornete o nou conversie. Acest proces se repet i trebuie programat cu atenie. Avantajul acestei soluii este c ai tot timpul valorile senzorilor la dispoziie, fr fi nevoie s ncepi manual o conversie. Se pot citi valorile de la cei 8 senzori prin conversie continu. Acest lucru poate face codul surs mai scurt. Dar atenie: aceast soluie scade performanele microcontroller-ului i crete consumul de curent din acumulatori. (V amintii despre administrarea bateriei?). Pornete conversia atunci cnd vrei s citeti datele de la un senzor!

78

Programare Programming

Cum se construiete un robot Codul surs anterior are o problem de rezolvat : am msurat distana doar o singur dat ns rezultatul nu este relevant. O soluie mai bun este aceea de a msura de exemplu de zece ori ntr-un ciclu. Apoi se terg valorile minim i maxim. Din restul de msurtori se aproximeaz valoarea. Codul surs : int NumberOfConversion=10; int GetADC(uint8_t senzor) { Init_ADC(senzor); int i; uint8_t MinValue=255; uint8_t MaxValue= 0; volatile uint32_t temp=0; for (i=1; i<=(NumberOfConversion+2); i++) { while (!(ADCSRA & (1<<ADIF))) { } if (ADCH>=MaxValue) MaxValue=ADCH; if (ADCH<=MinValue) MinValue=ADCH; temp += ADCH; } temp -= MinValue; temp -= MaxValue; temp /= NumberOfConversion; return temp; } GNDII-V ncercai s analizai algoritmul codului surs de mai sus pentru a aproxima valoarea (eliminnd valoarea maxim i minim). OSCILATORUL CU CRISTAL

Cum se construiete un robot WATCH DOG TIMER Avei un cine care latr cnd e ceva n neregul n jurul casei tale? Dac da, atunci folosii versiunea n carne i oase a soluiei de software watch dog timer. Una dintre cele mai des ntlnite sarcini n programare este s securizezi toate situaiile nedefinite i instabile. Imagineaz-i c n timpul ctorva milisecunde tensiunea de alimentare scade la 2 V. Poate s se ntmple, dar cauza nu este important acum. Cum s rezolvi aceast situaie? nchide alimentarea sau restarteaz programul. Restartarea este probabil mai bun. Operaia poate fi securizat cu ajutorul Watch Dog Timer (WDT). Watch Dog Timer este o soluie software de resetare a programului n timpul unei situaii neateptate. Cnd se reseteaz microcontroller-ul? De obicei, atunci cnd primete comanda reset. Se poate folosi n urmtoarele situaii: 1. Tensiunea de alimentare scade sub 2.7V; 2. Cnd la pinul de resetare al microcontrolerului este conectat valoarea logic false pentru o perioad mai mare de 1.5 microsecunde; 3. Watch dog genereaz un semnal de resetare; 4. Cderea sursei de alimentare 5. Altele Aceste situaii genereaz comanda reset. Doar una dintre acestea poate fi influenat de tine ca programator WDT (dar i situaia de la punctul 2). Celelalte situaii sunt posibile dar inacceptabile .WDT previne astfel de situaii. De ce resetarea este periculoas? Toi regitrii vor reveni la valorile implicite. Toate variabilele sunt terse. Cum funcioneaz watch dog timer? Este un cronometru. El numr impulsurile de la cristal (intern sau extern). El pornete de la valoarea maxim i descrete cu fiecare impuls pn la zero. n momentul n care valoarea devine zero, el genereaz semnalul reset. Programul pornete din nou din punctul de start. Pe parcursul activitii normale a robotului, semnalul reset generat de WDT este inacceptabil. De aceea, un programator trebuie s reseteze WDT n interiorul codului su surs. Aceasta nseamn c el nu trebuie s permit s se ating valoarea zero i s se genereze reset. Dar se aplic n timpul activitii normale a robotului. n cazul unei stri nedefinite, WDT trebuie s genereze Reset. Numrtoarea invers a WDT este controlat de divizor. Aceasta nseamn c este imposibil s setezi aceast perioad continuu, ci doar n pai (8 pai). Cea mai lung numrtoare invers pentru microcontrolerul AVR este de 2 secunde. Ca i programator, ai totul la ndemn. Poi s permii sau nu activitatea WDT i s setezi durata de descretere. Nu utilizai WDT dac nu este strict necesar! Crete consumul de energie! Utilizai WDT atunci cnd lucrai cu motoare.

Programare Programming Programming

79

Brownout.- cderea alimentrii pentru scurt timp Blackout - ntreruperea alimentrii cu energie electric

Programul se reseteaz singur? Probabil c nu resetezi WDT!

Codul surs WDT: #include <avr/wdt.h> wdt_enable(WDTO_2S); wdt_reset();

GND

27p

XTAL2

8 MHz 27p XTAL1

Conectarea cristalului extern la microcontroller.

Corpul uman are nevoie de o inim pentru a tri. Fiecare btaie a inimii se sincronizeaz cu activitile corpului. O orchestr are un metronom. Fiecare btaie a metronomului indic o aciune a instrumentelor muzicale. Acest lucru este valabil i pentru microcontrolere. Ele trebuie s aib ceva, care s le sincronizeze, care s le determine viteza. Fiecare btaie de tact nseamn efectuarea unei aciuni. Mai multe bti de tact pe secund nseamn o vitez mai mare a execuiei comenzilor. Microcontroller-ul nostru are un cristal intern prin intermediul oscilatorului RC, care lucreaz cu frecvena de 1 MHz. Frecvena nu este att de precis (i din cauza cldurii din interiorul microcontroller-ului), aadar, este recomandat s se utilizeze oscilator cu cristal extern (ceas extern); acesta poate fi setat la o frecven mai mare de 8 MHz. Frecvena acestui oscilator extern este mai precis i aceast soluie este utilizat pe scar larg. Pentru a schimba frecvena de tact de la 1 MHz la o frecven extern de 8 MHz, trebuie s selectezi aceast frecven n pagina Fuse (vezi capitolul anterior) i s conectezi cristalul la pinii XTAL2 i XTAL1 (figura din stnga).

Oscilatorul cu cristal Utilizeaz rezonana mecanic a unui cristal din material piezoelectric pentru a genera un semnal electric cu o frecven precis. Cel mai utilizat material pentru producerea cristalelor este cuarul.

Scrie cel mai mare numr folosind doar alte dou cifre.

80

Programare Programming

Cum se construiete un robot TIMER / NUMRTOR

Cum se construiete un robot n care mod este posibil s se rein orice valoare pentru un timp definit (ntrebare legat de temporizator) ? Este simplu. Definim timpul dup numrul de incrementri ale T/C. Dac stii rspunsurile putei s programai acest modul fr probleme. INEI MINTE Temporizatorul/ Contorul este doar un registru (sau set de regitri) cu cteva caracteristici, care necesit programare pentru a fi utilizat. Trebuie conectat la periferice pentru a putea citi ceva (ex. semnale de la codificator) sau pentru a face ceva (genera PWM la punile H). Aceast conexiune este oferit de ctre regitri. O caracteristic a T/C este apelarea unei ntreruperi temporare interne cnd se reseteaz la 0. Aceast oprire temporar intern poate fi procesat de ISR din programul creat. TIMER / COUNTER IN PRACTIC 1. trebuie s existe un registru care stabilete ct de repede T/C i crete valoarea. Pentru a seta aceast valoare avem nevoie de 3 bii (astfel vom putea obine 8 viteze posibile). Registrul este numit TCCR0. 2. un alt registru trebuie s stocheze valoarea T/C. Trebuie s putem citi acest registru, dar exist uneori situaii, cnd este necesar s se scrie (ex. pentru orice motiv dorim s incrementm ciclic de la 100 la 120, aceasta nseamn nceperea cresterii valorii cu 100 n baza 10 i trebuie s putem sa scriem aceast valoare n registru). Acest registru se numeste TCNT0. 3. cel mai important registru este cel care poate stoca orice valoare (de la 0 la 256 n zecimal), ceea ce reprezint valoarea cerut. Se numete registru de comparare. Valoarea cerut poate fi de exemplu viteza motorului sau numrul de tacturi de la codificator. Oricum, cnd valoarea n registrul de comparare este egal cu valoarea n registrul care stocheaz incrementrile, ntreruperea implicit va fi generat. Aceast ntrerupere poate fi procesat n program. Acest registru se numete OCR0. Regitrii ataai la T/C sunt uneori numii dup prima i a doua liter a T/C. Ultimul numr este numrul T/C. TC1 este un registru al Temporizator/ Contorului 1. Regitrii pentru controlarea T/C sunt denumii TCCRn (n este 0, 1 sau 2). Aceasta nseamn c Temporizator/Contor 0 are un registru numit TCCR0, Temporizator Contor2 are un registru numit TCCR2. Interesant este Temporizator/Contor1, care are limea de 16 bii. Registrul su este de asemenea numit TCCR1, dar este divizat n regitri de 8 bii, TCCR1A, TCCR1B. Acetia serveau la configurare, adic programatorul poate cu ajutoul acestor regitri s seteze valoarea divizorului de frecven i configuraia PWM. Ambele vor fi explicate n cele ce urmeaz.

Programare Programming Programming

81

255 0 Perioada T Numrtor pe 8 bii care numr de la 0 la 255. Dup atingerea valorii maxime numrtorul revine la valoarea 0. 255

Incrementarea nseamn creterea valorii cu 1. Matematic: x =x +1; x++; Decrementarea nseamn scderea valorii cu 1. Matematic: x=x-1; x--; Valori incrementate de la 0x00 la 0xFF REGISTRU Semnal de ceas (divizat) DIVIZOR Semnal de ceas Schem numrtor 8 bii

DEFINIIE Temporizatorul este un dispozitiv care reine o valoare definit pe o perioad de timp. Contorul este un dispozitiv care mrete /descrete valoarea sa sub influena unui semnal de tact intern/extern. TEORIE Este esenial s se neleag aceast parte. Temporizatorul i contorul reprezint dou pri ale unui dispozitiv electronic. Observai fia de date ATMega 32, unde se gsesc informaii marcate Timer/Counter, i nu temporizator sau contor distinctiv. Temporizatorul/Contorul (T/C) reprezint un registru. Registrul poate avea 8 bii sau 16 bii. ATMega 32 are 3 Temporizatoare/Contoare. Dou dintre acestea au 8 bii i un Temporizator/Contor are registru de 16 bii. Temporizator/ Contor 0 i Temporizator/Contor 2 sunt cele pe 8 bii i Temporizator/Contor 1 este cel pe 16 bii. Temporizator/Contor numr de la 0 la maxim. Acesta i mrete valoarea doar cnd primete impulsuri (semnal de tact). Acest impuls apare de obicei de la ceasul intern al microcontroller-ului sau de la sursa extern (ex. codficator). GNDII-V

0 Period T Numrtor pe 8 bii care numr de la 255 la 0. Dup atingerea valorii minime numrtorul revine la valoarea 255. ISR. Interrupt Service Routine. Partea de program care trateaz o ntrerupere. TCCR0. Registrul de control pentru Temporizator/Numrtor 0. TCCR1. Registrul de control pentru Temporizator/Numrtor 1. TCCR2. Registrul de control pentru Temporizator/Numrtor 2. Registrul dedicat T/C 0 se termin cu cifra 0. Registrul dedicat T/C 1 se termin cu cifra 1. Registrul dedicat T/C 2 se termin cu cifra 2. Divizorul mparte frecvena ceasului pentru a controla viteza de incrementare. Divizorul poate fi setat s divid la 1, 8, 64, 256, 1024. TINEI MINTE! Acest manual este destinat nceptorilor. Cel mai bun material de studiu este fia de informaii de la productor.

ATmega32

8 bit Timer/Counter 0 16 bit Timer/Counter 1 8 bit Timer/Counter 2 Structura Temporizatoarelor/ Numrtoarelor pentru ATMega32

Care este valoarea maxim pe care o poate atinge T/C ? n cazul n care T/C are 1 bit, poate numra de la 0 la 1 (2^1). n cazul n care are 2 bii, poate numra 4 impulsuri.(2^2). n cazul n care are 8 bii poate numra de la 0 la 255.(2^8). n cazul n care are 16 bii poate numra de la 0 la 65 535(2^16). T/C de lime mai mare nseamn valoare maxim mai mare. Care este frecvena pe care o utilizeaza T/C pentru incrementare ? Cu alte cuvinte, ct de des (de rapid) i crete T/C valoarea ? Depinde de utilizarea sa. n cazul generrii PWM-ului este utilizat pentru incrementarea ceasului intern. Dac nu se utilizeaz divizor de frecven i frecvena ceasului este 8 MHz, incrementeaz pe aproape o zecime de microsecund. Cnd se utilizeaz un divizor de frecven cu 8, durata incrementrii este de o microsecund. Dar la T/C pot fi conectate de asemenea alte semnale de numrare- de ex. de la codificator. Ce se va ntmpla cnd T/C ajunge la maxim ? Revine la 0 i ncepe s numere din nou de la 0 la maxim. Ce nseamn valoarea T/C ? Valoarea T/C este de obicei expresia zecimal a valorii binare din T/C. Dar cteodat putem vedea valoarea ca valoare binar. T/C pe 8 bii i pstreaz valoarea ntre 0-255. T/C pe 16 bii poate reine valori ntre 0-65 535.

NUMRTOARE

NUMRTOR INCREMENTAL NUMRTOR DECREMENTAL Dou tipuri de numrtoare dup sensul de numrare.

82

Programare Programming

Cum se construiete un robot Descrierea regitrilor Temporizatorului/Numrtorului


Registrul de control al T/C TCCR0

Cum se construiete un robot TEORIA PWM-ULUI Robotul nostru utilizeaz motoare de curent continuu cu magnet permanent pentru deplasare. Exist doar o posibilitate de a controla micarea - prin modificarea tensiunii de alimentare. De exemplu dac tensiunea scade de la 5V la 2,5 V, viteza descrete la jumtate din viteza anterioar. Problema const n controlul tensiunii de alimentare a motorului. Prima posibilitate este utilizarea rezistorului variabil n serie cu motorul. Aceast soluie duce la risip de energie prin cldura generat de rezistor. Un alt mod este de a comuta ntre 0 i 5 V tensiunea de alimentare, cu o anumit frecven. Cnd factorul de umplere este 0%, tensiunea medie este 0V pe durata ntregii perioade, iar motorul nu se rotete. Dac n prima jumtate de perioad tensiunea este 5V i n a doua jumtate este 0V, valoarea medie va fi 2,5V i funcionarea motorului nu va fi afectat de alternarea tensiunilor. Acesta se va roti la jumtate din viteza sa maxim. Nu exist pierdere de energie n alte pri adiionale. Ct poate fi frecvena de alternare a tensiunii ? Optim. nseamn nici joas (motorul va cala), nici nalt (interferen electromagnetic cu mediul). Cea mai bun soluie este n jur de 20 kHz.
Registrul Comparator al Ieirii OCR0

Programare Programming Programming

83

7
FOC0

6
WGM00

5 COM01

4
COM00

3
WGM01 CS02

2
CS01

1
CS00

Pentru Modularea n Durat Semnalului (PWM)

Pentru divizarea semnalului de ceas util la controlul vitezei de incrementare.

PWM. Pulse Width Modulation. Valoarea tensiunii medii este modificat prin durata pulsului. PWM este un semnal dreptunghiular cu perioad fix i factor de umplere variabil. Factorul de umplere. Este un procent ntre durata de semnal de 5V i totalul perioadei. Interferen electromagnetic. Fiecare modificare de curent creaz un impuls electromagnetic. PWM-ul poate produce cmp electromagnetic. Observaie. Curentul maxim pe un pin este de 40 mA. Acesta este un motiv de a utiliza puni H pentru controlul motoarelor. U [V] 100 % 75 % 25 % 50 %

Registrul T/C TCNT0

Registrul pentru stocarea valorilor T/C este numit TCNTn (n este 0, 1 sau 2). Din registru poi citi ntotdeauna valoarea T/C. Biii 0-7 stocheaz valoarea T/C. Diverse valori la momente diferite.

Registru pentru stocarea valorii, definit de programator. Este o valoare, care este comparat permanent cu valoarea din registrul TCNT. Ce se va ntmpla cnd aceste dou valori sunt egale? ntreruperea este generat (i poate fi tratat de program) sau este folosit n generarea semnalului PWM. Biii 0-7 stocheaz valoarea pentru comparaia cu TCNT0, valoare constant la momente diferite.

Sunt nc dou probleme de rezolvat : Cum se poate obine semnalul PWM de la microcontroller i cum se poate transforma acest semnal n semnal electric pentru alimentarea motorului. S rezolvm mai nti prima problem. A doua a fost deja rezolvat n capitolul Electronic cu ajutorul punilor H. Stim c : 1. Microcontroller-ul poate genera semnal PWM. 2. Atmega32 poate genera 4 semnale PWM simultan. 3. T/C 0 pe 8 bii poate genera 1 semnal PWM. 4. T/C 1 pe 16 bii poate genera 2 semnale PWM. 5. T/C 2 pe 8 bii poate genera 1 semnal PWM. Principiile generrii semnalului PWM vor fi detaliate n cazul T/C 1 pe 16 bii. Tacturile furnizate la 8MHz, mprite de ctre divizor, dau viteza de descretere a numrtorului. Divizare mai mare nseamn descretere mai lent i vice-versa. Numrtorul contorizeaz de la maxim la 0. Maximul corespunde la 5V. Cnd ajunge la 0 (0V), revine la maxim i i descrete valoarea din nou, n bucl. Viteza descreterii este influenat de ctre divizor. Rezultatul este un semnal tip dini de fierstru, ale crui vrfuri sunt mai mult sau mai puin ascuite. Valoarea dorit a tensiunii, aa numitul semnal de comparare, este valoarea obinut direct (n cazul variaiilor lente ale vitezei), i este combinat cu semnalul tip dini de fierstru al numrtorului. La intersecia acestor semnale se genereaz pulsurile. Cnd valoarea cerut este maxim, pulsurile sunt nguste i vice-versa. Astfel se genereaz pulsuri cu lime variabil, utilizate de punile H. Temporizatorul ATMega32 PWM pe 16 bii este ataat portului D, bit4 i bit5. Exist ieiri pentru controlul a 2 motoare. Modurile de operare ale PWM sunt descrise n imagini. Dac utilizai doar 1 semnal PWM, nu conteaz care mod va fi folosit. n cazul controlului a dou motoare, se recomand PWM cu corecie de faz i frecven, dar ncercai s experimentai !

GNDII-V Imaginai-v un secundar la ceasurile voastre. Gsii comparaia cu Temporizatorul/Numrtor. Imaginai-v limba care indic ora. Faceti la fel. Imaginai-v c setai ora de trezire la 7.00. La fel, setai i caracteristica Temporizatorului/Numrtorului ? Care este frecvena decreterii cnd frecvena ceasului de 8 MHz este imprit de divizor cu 8 ? SARCINI ncercai s setai regitrii mai sus menionai pentru ca T/C 2 s realizeze urmtoarea aciune: (ceasul intern este 8 MHz): n 10 secunde de la pornirea robotului, acesta se va opri din micare (aceast sarcin este puin dificil, dar dac citii paginile urmtoare ale crii, o vei rezolva. ncercai i vei fi cu un pas nainte.). De ce?

Perioada T Diverse forme de semnal PWM.

255

Perioada T

0 255

Perioada T U[V]

0 OCR0=80 5V 0

Factor de umplere 40%, tensiunea medie este de 2 V. Generarea PWM-ului n imagini.

84

Programare Programming

Cum se construiete un robot Motoarele pot fi controlate cu un anumit numr de pai. Putei s le controlai n 3 pai (teorie, nu practic) - repaus, la jumtate din viteza maxim, vitez maxim. n mod natural, cea mai bun metod este de a comanda numrul de pai maxim posibili. Cu T/C1 pe 16 bii pot fi aproximativ 65000 niveluri de vitez diferite. Acest numr este cu mult mai mare dect avem nevoie. Numrul nivelurilor de vitez (ntre viteza maxim i repaus) este posibil de setat (setm aa numitul bit de precizie). O valoare indicat ar fi 256. PWM N PRACTIC 1. Setarea pinilor 4 i 5 ale portului D ca ieiri. Se genereaz PWM. DDRD| =(1<<5)| (1<<6) ; 2. Setai divizorul registrului TCCR1B la biii CS12, CS11 si CS10 : CS12-CS11-CS10 0-0-0- PWM este oprit (economisire energie baterie) 0-0-1- PWM este activ cu valoarea divizorului de 1 0-1-0-PWM este activ cu valoarea divizorului de 8 0-1-1- PWM este activ cu valoarea divizorului de 64 1-0-0- PWM este activ cu valoarea divizorului de 256 alegerea noastr 1-0-1- PWM este activ cu valoarea divizorului de 1024 TCCR1B=0X04 ; 3. Setarea modului PWM. Pentru setare se utilizeaz registrul TCCR1, biii WGM13, WGM12, WGM11, WGM10 (2 dintre acetia sunt n registrul TCCR1A i urmtorii n registrul TCCR1B). WGM13 - WGM12 - WGM11 - WGM10 1-0-0-0- Faza i frecvena PWM - alegerea noastr 1-0-1-0- Corectarea fazei PWM 1-1-1-0- PWM rapid TCCR1A=(0<<WGM11)|(0<<WGM10); TCCR1B|=(1<<WGM13)|(0<<WGM12); 4. Setarea modului comparatorului (incrementare sau decrementare) din registrul TCCR1A cu biii COM1A1 i COM1A0 COM1A1 - COM1A0 0 - 0 - Modulul PWM este oprit. 1 - 0 - PWM este pornit - mod incrementare - alegerea noastr 1 - 1 - PWM este pornit - mod decrementare 5. Setarea valorii maxime a temporizatorului (determin frecvena PWM i numrul valorilor posibile ale PWM - bit de precizie) ICRI=255; // alegerea noastr 6. Setarea valorii comparatorului (PWM-ul necesar pentru dou motoare) la regitrii OCR1A i OCR1B. OCR1A=155, alegerea noastr pentru primul motor, gama poate fi ntre 0-255(maxim) OCR1B=155 alegerea noastr pentru al doilea motor, gama poate fi ntre 0-255(maxim) Putei s ncepei experimentele.

Cum se construiete un robot NTRERUPERI Imaginai-v ca v programai robotul. Deodat sun telefonul. Probabil v ridicai i mergei s vorbii. Apoi continuai programarea. Sau v putei continua programarea ignornd telefonul. Sunetul telefonului reprezint o ntrerupere la care putei sau nu s reacionai. Reacia dumneavoastr este o rutin de tratare a ntreruperii. n primul caz scriei n program aa numita rutin de ntrerupere, n al doilea nu-l scriei. Aceasta este o ntrerupere extern. Ce spunei despre situaia n care se termin bateria? Aceasta situaie de ntrerupere este propus de productorul PC-ului dumneavoastr i foarte probabil fiierul vostru se va salva iar calculatorul se va nchide. Totui trebuie s setai aceast opiune a calculatorului vostru nainte. n caz contrar, calculatorul se va nchide i fisierul nu va fi salvat. Astfel, trebuie s decidei ce se va ntampla cnd se termin bateria. Aceasta este o ntrerupere intern i este ndeplinit de ctre microcontroller. Ce se va ntampla cnd apar mai multe ntreruperi n acelai timp? Cea cu prioritate mai mare va fi rezolvat. ntreruperile sunt semnale interne sau externe, care, dac intervin pe parcursul rulrii unui program, se execut imediat o rutin dedicat (aceast rutin se programeaz, cu diferite proceduri n funcie de tipul de ntrerupere) i apoi executarea programului principal este reluat, din locul unde a rmas. ntreruperile sunt dificil de programat, dar sunt foarte utile. WDT este de asemenea un tip de ntrerupere, dar nu poate fi programat (se reseteaz doar, pentru a nu reseta ntregul program). ATMega32 are 18 ntreruperi interne (ex. descreterile numrtorului la 0) i 3 ntreruperi externe (ex. apsarea manual a unui buton). Sunt permise 3 ntreruperi externe : INT0, INT1, INT2. Acestea sunt ataate la PD2, PD3, PB2 (pini 16, 17 i 3). ntreruperile pot fi declanate de orice schimbare de valoare logic pe PD2, PD3 sau PB2 (cu excepia INT2). Exemplu de rutin de tratare a ntreruperii: #include <avr/interrupt.h> //ncrcarea bibliotecii pentru ntreruperi sei() //activarea ntreruperilor //instruciunea cli() dezactiveaz ntreruperile ISR(INT0_vect) //rutina de tratare a ntreruperii (ISR) din INT0 { unele comenzi; } n codul nostru folosim ntreruperi pentru controlul motoarelor (ntreruperi externe - numrul de pulsuri de la codificator).

Programare Programming Programming

85

Subrutin. Procedur. Se apeleaz din programul principal. Dup ce execuia este finalizat, programul continu din punctul de unde s-a apelat procedura.

ntreruperile externe sunt numite i ntreruperi hardware, cele interne sunt numite ntreruperi software. O clasificare mai bun este cea de ntreruperi implicite (interne) i explicite (externe). Execuia secvenial a instruciunilor ISR

C1

C2
ntrerupere

C3

C4

C5

ISR. Interrupt Service Routine. Codul executat dup generarea ntreruperii.

Stadionul olimpic, Helsinki.

12 6 2

6 3 1

Completeaz cu un numr; 1 nu este corect.

86

Programare Programming

Cum se construiete un robot REGLAREA PID


P =Kp x e (t)

Cum se construiete un robot

Programare Programming Programming

87

PID. Proporional, Integrator i Derivativ.

Conceptul PID a fost menionat de cteva ori nainte. Acum va fi explicat n detaliu. Exist dou tipuri de valori: dorite i reale. Valoare dorit nseamn valoarea de care avem nevoie. De exemplu 20 grade Celsius, temperatura din interiorul locuinei, 50km/or viteza n localiti, 10 cm distana pn la un perete. Valoarea real nseamn 21 grade n interior(soarele stralucea), 60km/or ( la vale), 8 cm distan (un motor este mai lent). Diferena dintre valoarea dorit i cea real este o deviaie (eroare). Ceea ce ne trebuie nou este reducerea deviaiei (fr eroare). Procesul prin care se ajunge la eroare nul se numete reglare. Eroarea are 2 pri : cantitatea (magnitudinea) i viteza de cretere (descretere). Aceste dou pri sunt reflectate de ctre reglarea PID. Scopul reglrii este minimizarea erorii. Una dintre modalitile atingerii acestui scop este reglarea PID. Aceasta const din trei pri : - partea proporional - partea integratoare - partea derivativ Imaginai-v c suntei oferul i trebuie s mergei pe un drum drept. 1. Cnd mergei drept nainte, totul este n regul. Nu este nevoie s reglai direcia. 2. Cnd maina ncepe s vireze la stnga, fixai direcia ctre dreapta. Dac deviaia mainii este mic, corecia aplicat este de asemenea mic. Dac este mare, corecia aplicat este de asemenea mare. Matematic putem spune c rspunsul este proporional cu deviaia mainii. Ce se ntmpl cnd meninei volanul n acelai unghi? Probabil vei merge ctre stnga i deviaia se va acumula ctre stnga. Atunci vei ntoarce volanul ctre dreapta. Foarte probabil vei oscila n jurul liniei drepte. Aceasta nseamn c raspunsul vostru este proporional cu magnitudinea erorii. 3. Cnd deviaia este mare, corecia aplicat este mare. Se pune ntrebarea ct de rapid crete deviaia (trebuie s rotii volanul mai mult). Cu ct este mai rapid creterea deviaiei, cu att este mai mare corecia. Dac deviaia nu se modific nseamn adugarea valorii 0 de la aceast component. Aceasta este partea derivativ a controlului PID. 4. n orice caz cnd deviaia nu devine 0 imediat. Deviaia acumulat n timpul reglrii este corectat de partea integratoare a regulatorului PID. Acesta este valid : RSPUNS = P+I+D P reprezint reacia la mrimea erorii I reprezint o reacie la timpul de anulare a erorii D este o reacie la viteza de cretere a erorii

Comparator Valoare dorit

Eroare

I =Ki x e(t)d(t)

Rspuns

D =Kd x de(t)/dt Valoare real

Reglare P

Reglare PD

U [V] semnal dorit


al rea l

semn

Regulator PD

Exemplu de urmrire a peretelui cu ajutorul reglrii PID. Valoarea cerut. 2,5 V. Este o tensiune care corespunde la 20 cm distan senzor-perete. Valoare real. 2,6 V. Robotul puin prea aproape de perete. Comparator. Acesta compar valoarea cerut i valoarea real. Rezultatul este 0,1V. Aceasta este o eroare care trebuie anulat. Eroare. 0.1V. Rezultat de la comparator. Membrul P. Partea proporional a PID. Ieirea poate fi 0,5V. Membrul I. Integrala dup eroare a PID. Ieirea poate fi 0,2 V. Nu utilizm aceast parte. Membrul D. Derivata erorii a PID. Ieirea poate fi 0,1 V dac viteza modificrii erorii este mic sau 0,9V dac viteza modificrii erorii este mai mare. - Suma componentelor P i D este 0,5V + 0,1V=0,6V n primul caz i 0,5V + 0,9V=1,4V n al doilea caz. Aceasta nseamn c viteze mari de variaie a erorii conduc la o tensiune mai mare, iar cele mai mici conduc la tensiuni sczute (nu se produc oscilaii). Rspuns. Tensiunea aplicat motorului este influenat de ctre valoarea sumei componentelor PID. Cnd distana era de 20cm, tensiunea la motoare era de 3V (de exemplu). Acum unul dintre ele va fi alimentat la 3V+0,3V=3,3V. Al doilea va primi 3V - 0,3V= 2,7V. Robotul se ntoarce ctre perete. Noi am dorit aceast reacie. Calculul este realizat de ctre programul nostru, tensiunea mai mic sau mai mare este generat de microcontroller prin PWM. La actuator : tensiunea ctre motoare. Reglarea PID este un proces continuu. Programul nostru folosete reglarea PID de dou ori: - cnd robotul este la 20 cm de obiect i drumul ctre obiect este meninut cu ajutorul reglajului PID, pe baza msurtorii provenit de la 2 senzori. - cnd robotul se ntoarce cu obiectul n apuctor i urmrete peretele cu ajutorul unui senzor.
perete 2.5 V Eroare = 0.1 V Eroare = 0 V 2.6 V 2.5 V 3V 3V 2.7 V Microcontroller 3.3 V Reglarea PID cnd se merge ctre obiect, este realizat cu doi senzori. Eroarea se calculeaz cu ajutorul diferenei dintre cei doi senzori. Obiect 0.8 V

t [s] U [V] semnal dorit


semn al rea l

Ctre actuator

0.8 V

2.5 V 2.5 V

Regulator PID

t [s] U [V] semnal cerut


al rea

Regulator ideal

PID IN PRACTIC

semn

t [s]

Partea I a PID este utilizat doar pentru reglri mai precise. De obicei atingem rezultatele corecte doar cu prile P i D ale regulatorului PID.

Reglarea PID pentru urmrirea zidului este realizat cu un senzor. Eroarea se calculeaz relativ la o valoare constant.

88

Programare Programming

Cum se construiete un robot CODUL PID

Cum se construiete un robot

Programare Programming Programming

89

Coeficienii P i D sunt dificil de calculat. Cea mai bun cale pentru a i stabili este cea experimental.

// acesta este un cod pentru urmrirea peretelui folosind un regulator PD // presupune int Speed_Left,Speed_Right,Deviation,y1,P,P1,D,D1,sum,xalt,drest; GoGeorgeGoPID(int i) //codul este aplicabil oricruia dintre cei 8 senzori { P=12; //constanta de proporionalitate P D = 20; //constanta aciunii derivative D int sensor1=GetADC(i); //tensiunea proporional cu distana dorit Deviation = sensor1-70; //70 n zecimal nseamn o distan de 20 de cm D1 =D*(Deviation - xalt); D1 = D1 + drest; if (D1>255) drest = D1 - 255; else if (D1<-255) drest = D1 + 255; else drest = 0; //componenta P P1 = P *Deviation; y1 = P1+D1; int y2 = y1 / 2; xalt = Deviation; int Speed=125; if (y1 > 0) //viraj la dreapta { Speed_Left = Speed + y2; if (Speed_Left > 255) { Speed_Left = 255; y2 = Speed_Left - Speed; } y1 = y1 - y2; Speed_Right = Speed - y1; if (Speed_Right < 0) Speed_Right = 0; } if (y1 < 0) //viraj la stnga { Speed_Right = Speed - y2; if (Speed_Right > 255) { Speed_Right = 255; y2 = Speed - Speed_Right; } y1 = y1 - y2; Speed_Left = Speed + y1; if (Speed_Left < 0) Speed_Left = 0; } //urmeaz linii de cod pentru PWM //setarea vitezei motoarelor OCR1B=Speed_Left; //vitez motor stng OCR1A=Speed_Right; //vitez motor drept }

Dac gseti rspunsul la problema de mai jos, nseamn c poi construi un robot original! Ai la dispoziie 6 bee de chibrituri. Construiete 4 triunghiuri egale cu aceste bee de chibrituri.

GNDII-V Codul de deasupra nu conine toate comentariile. ncercai s adugai comentarii la fiecare linie de cod. O MIC PAUZ Un programator n cod C vine la munc Luni i i spune: M duc s mai dorm nc de dou ori i va fi din nou weekend.

90

Soluii

Cum se construiete un robot

Cum se construiete un robot

Soluii

91

SOLUII

92

Soluii

Cum se construiete un robot SOLUIE - DANEMARCA Scopul grupului danez a fost de a construi un robot de la zero. Studenii danezi au dorit s urmreasc ndeaproape modul n care lucreaz i modul n care se construiete. Din punct de vedere mecanic am utilizat Lego. Robotul pe care l-am construit trebuie s urmreasc o linie. Doi senzori detecteaz dac trebuie sa mearg ctre dreapta, ctre stnga sau nainte. Exemplu: Dac robotul vireaz ctre stnga controller-ul oprete roata stng pn cnd senzorul spune controllerului c s-a revenit pe linia de urmat.
Senzor Viraj dreapta Senzor Viraj stnga Programator PicKit Punte H Poate schimba sensul curentului. Motorul drept. Punte H Poate schimba sensul curentului. Motorul stng.

Cum se construiete un robot SOLUIE - FINLANDA

Soluii

93

Dou tipuri de senzori sunt folosite pentru robot.

Start

Init

Exist cinci senzori Sharp GP2D120IR (vezi imaginea) n robotul nostru: doi n fa, unul n spate i cte unul pe pri. Unul dintre senzorii frontali se orienteaz n jos. Acesta msoar n permanen distanele pn la posibilele obstacole de lng robot. Astfel, robotul detecteaz gardul i alte posibile obstacole. Senzorul orientat n jos este utilizat doar ca s opreasc robotul cnd a ieit din zona incintei. Utilitatea principal a senzorilor IR este de a evita impactul cu gardul cnd robotul ncearc s gseasc obiectul din spaiul incintei. Senzorii IR pot fi de asemenea utilizai la apropierea de obiect, dar aceast caracteristic nu este folosit n robotul nostru. Ieirea din incint se consider detectat atunci cnd unul dintre senzorii laterali nu mai sesizeaz obstacol. Robotul se va roti i va iei din incint. n acest moment robotul este paralel cu gardul. Apoi merge nainte i pstreaz distana pn la gard constant (ex. 5cm). Ideea este c robotul urmeaz gardul i gsete drumul ctre ieire. Poarta incintei este gsit atunci cnd robotul pierde semnalul de la senzorul lateral. Atunci robotul se ntoarce spre ieirea din incint i se oprete. Apoi merge nainte pn detecteaz o linie neagr pe podea. Linia este detectat de senzorul orientat n jos. Dupa detectarea liniei robotul se oprete. Senzorul ultrasonic este folosit pentru detectarea obiectului din incint. Senzorul ultrasonic este localizat n partea de sus a robotului, la o nlime mai mare dect cea a gardului incintei pentru a nu-l detecta (obiectul este mai nalt dect gardul incintei). Senzorul ultrasonic este instalat n partea de sus a unui servomotor, ceea ce ajut ca senzorul s fac msurtori n jurul su, ntr-un domeniu de 180 de grade. De aceea nu este nevoie ca robotul s se roteasc cnd caut obiectul. Pe de alt parte, aceasta nseamn c poziia unghiular a senzorului trebuie cunoscut tot timpul. Informaia primit este legat de poziia servomotorului n timpul msurtorilor. Pentru a obine aceast informaie servomotorul este comandat pas cu pas. Astfel se tie direcia ctre care este poziionat senzorul ultrasonic i robotul se poate roti n direcia corect dup detectare. Dup detectarea obiectului, robotul se rotete ctre acesta i apoi realizeaz alte msurtori. Aceasta se ntmpl pn cnd obiectul se va afla exact n faa robotului. Apoi robotul se apropie ct mai mult de obiect. La orice oprire robotul reia msurtoarea pentru a-i corecta poziia i a verifica dac direcia de detectare este corect. Aceast aciune se repet pn cnd robotul ajunge la obiect.

Definire variabile Definire funcii Bucla principal

Microcontroller

Senzori IR Sunt perfeci pentru pentru evitarea obstacolelor i urmrirea de linii. Le folosim la robotul nostru pentru a detecta poarta i gardul care nconjoar incinta cu piesa. Pentru c senzorii emit lumin infraroie senzorii nu sunt adecvai pentru utilizarea n lumina Soarelui. Oricum senzorii Sharp nu sunt foarte afectai de lumina ambiental. Senzori cu ultrasunete Ideea de baz este c senzorul cu ultrasunete msoar distana prin utilizarea sonarului. Un puls cu ultrasunete este transmis de la unitate i distana ctre int este determinat prin msurarea timpului n care sunetul pleac i revine la senzor. Intervalul de msurare este de la 2 cm la 3 metri.

Setare intrri i ieiri

da

DAC stnga i dreapta sunt high nu DAC dreapta este low i stnga high nu

Senzorul este unul care sesizeaz lumina reflectat, ieftin, de la Optek, OPB 705. Are un LED care lumineaz i un fototranzistor care detecteaz lumina reflectat. Tranzistorul este legat la +5V printr-un rezistor 270K. Aceasta permite computerului s citeasc dac exist lumin reflectat sau nu. Rezistorul trebuie s fie de valoare mare, deoarece amplificarea fototranzistorului este relativ mic. Microcontroller-ul este Microchip PIC16F690. Am ales acest controller deoarece este foarte ieftin.Totul a fost foarte bine documentat, dar profesorii au avut mult de citit. Mai mult, Microchipul nu ofer un Compilator C. Totui exist cteva compilatoare disponibile pe pia. Knudsen Data din Trondheim Norvegia au o versiune pe 8 bii care poate fi utilizat n scop didactic. Software-ul nu este unul gratis, dar este scutit de taxe. Controllerul are trei porturi, toate putnd fi setate ca intrri sau ieiri.

Vireaz dreapta da

Locaiile senzorilor IR. (marcai cu dreptunghiuri negre) Msur Da

Vireaz stnga da

DAC stnga este low i dreapta high nu

Detecie

Nu Rotete servo cu un pas ntoarce robot Logica de detecie a senzorului cu ultrasunete i un servomotor. Aceast schem semnific citirea unui semnal acustic emis ctre cel mai apropiat obiect din aria de acoperire. Pentru acest lucru senzorul trimite un puls i ateapt revenirea semnalului. Durata de revenire este proporional cu distana pn la obiect.

Schema bloc a soluiei daneze

CD-ul cuprinde o descriere mai detaliat despre setarea tuturor componentelor.

94

Soluii

Cum se construiete un robot SOLUIE - GERMANIA Germanii au analizat cum s ndeplineasc sarcinile robotului. Dup cum am vzut, incinta era prea mare pentru a gsi obiectul cu senzori la distana de tip senzori ultrasonici sau cu infrarou ntr-un timp rezonabil.
Echipa de proiect romn

Cum se construiete un robot SOLUIA - ROMNIA

Soluii

95

Regula spune c trebuie s gasim obiectul. Nu menioneaz c obiectul trebuie s fie unul pasiv. Deci am construit un robot care poate gsi 128 obiecte diferite cu logica de decodare a adresei. Am construit un emitor care poate fi plasat pe un obiect, i care poate transmite diferite semnale codate. Robotul detecteaz semnalele i decide pe care obiect s-l ridice mai nti pentru a-l aduce n afara incintei. Soluia a fost ndeplinit cu componente standard, care pot fi cumprate din orice magazin de piese electronice. Codul surs (cu documentaia), diagrama circuitului electronic i descrierea constructiei robotului german apar pe pagina www.rokey.eu (pagina Germaniei) i sunt de asemenea adugate pe CD. Not: echipa Germaniei a fost cea coordonatoare n timpul proiectului. Ei au schiat partea mecanic (motoare, roi) i elemente electronice de baz (scheme , PCB) care au fost utilizate de celelalte echipe pentru a face robotul s funcioneze (senzori, programare). SOLUIE - SLOVACIA
Nu

Prenume i Nume Romel Vicol Silvia-Daniela Ionacu

Poziia n cadrul instituiei Director L.S.P Profesor, Electro-Mecatronic

Responsabilitatea n proiect Asigurarea condiiilor optime pentru desfurarea proiectului Coordonator proiect Realizare robot ROKEY Realizare Ghid Realizare pagin Web

Arcul de Triumf, Bucureti

Silviu-Marian Poboroniuc

Cadru universitar la Facultatea de Realizarea ghidului Inginerie Electric, Energetic i Proiectarea i realizarea straInformatic Aplicat (IEEI)-Iai tegiei de control a robotului ROKEY Profesor Mecanic Mecatronic Profesor de Limba Englez Realizarea ghidului Realizarea ROKEY Realizarea Ghidului Comunicarea ntre instituiile partenere Realizarea paginilor Web Realizarea ghidului Realizarea ghidului Realizarea ROKEY Realizarea ghidului Realizarea ROKEY

Bica Mariana Bacoc Ana Cristiana Botan

Maria Ciulei Adrian Dasclu Eusebiu Ghergu Radu Ionacu

Profesor de Electronic Profesor de Electronic Profesor de Informatic

Start Mergi nainte 30 de cm

Inginer masterand n cadrul Realizarea ghidului Facultaii de Automatic i Calcu- Realizarea ROKEY latoare Iai Inginer doctorand Facultatea de Proiectarea i realizarea straInginerie Electric, Energetic i tegiei de control a robotului Informatic Aplicat - Iai ROKEY Profesor de Limba Englez Realizarea Ghidului Comunicarea ntre instituiile partenere Realizarea Ghidului Comunicarea ntre instituiile partenere

Dnu-Irimia Constantin

Da

Detecie pe parcursul ntoarcerii (1 senzor)

Echipa Slovaciei a considerat c problema localizrii obiectului este o sarcin complex i astfel au aprut cteva direcii de lucru abordate : 1. controlul motoarelor (rotirea la stnga sau la dreapta cu diferite viteze) 2. msurarea distanelor cu senzori Sharp i ADC 3. prezentarea msurtorilor pe LCD (necesar pentru evaluare) 4. reglarea PID (deplasarea ctre obiect dup localizarea acestuia)- cu ajutorul celor 2 senzori, ntoarcerea prin urmrirea peretelui - cu un singur senzor) 5. lucrul cu servomotorul i apuctorul (prinderea obiectului) Cnd am rezolvat aceste sarcini sub form de rutine, le-am adugat la codul surs. Toate elementele de control ale robotului, sub form de cod surs, sunt adugate pe CD.

Teodora Mandrea

Mers nainte ctre obiect (PID, 2 senzori)

Carmen Ranete

Profesor de Limba Englez

Marius tefan-Ciprian

Da

Distana ctre obiect<5mm

Asistent, Facultatea de Ingi- Proiectarea i realizarea stranerie Electric, Energetic i tegiei de control a robotului Informatic Aplicat - Iai ROKEY Maistru, Mecanic Maistru, Electronic Elev, profilul Informatic Elev, profilul Informatic Elev, profilul Informatic Elev, profilul Telecomunicaii Elev, Tehnician Tehnic de calcul Realizarea ROKEY Realizarea ROKEY Realizarea ROKEY Realizarea ghidului Realizarea ROKEY Realizarea paginii web Realizarea ROKEY Realizarea paginii web

Nu

Constantin Dasclu Dumitru Grap Robert Srbu Bogdan Mardare Paul Sticea Andrei Ranghiuc

Prindere obiect (servo) Mers nainte

Controlul motoarelor Da
Distana de la gard < 20 cm

Msurarea distanei

Regulatoare PID

Control Servo

Adrian Sava Vasile Croitoru

Operator Realizarea ghidului Realizarea ROKEY Realizarea paginii web Realizarea ROKEY Realizarea paginii web Realizarea ROKEY Realizarea paginii web Realizarea ROKEY Civa roboi din Romnia.

Elev, profil Informatic Elev, profil Informatic Elev, profil Informatic

Nu Alin Fuior SFRIT Afiare valori msurate Iulian Rotaru

Urmrete peretele ctre ieire (1 senzor, PID)

Schem de baz pentru atingerea obiectivului

96

Soluii

Cum se construiete un robot


ROKEY (Poza 1) reprezint un robot mobil, nzestrat cu microcontroller, care poate fi considerat implementarea fizic a multor aspecte menionate n acest ghid. Rolul lui ROKEY este de a cuta intrarea ntr-o camer delimitat de perei, cu forme dreptunghiulare, de a apuca un obiect care trebuie cutat n camer i de a-l aduce afar din incint. Algoritmul de lucru este structurat n apte pai: 1. apropierea de peretele camerei 2. cutarea intrrii n incint 3. intrarea n incint 4. cutarea obiectului 5. apucarea obiectului gsit 6. cutarea ieirii din camer 7. eliberarea obiectului La nivel general trebuie menionat faptul c sistemul tip robot mobil este nzestrat cu: un microcontroller ATMega32 apte senzori de proximitate un bra mobil nzestrat cu un apuctor dou motoare de curent continuu Subiectul va fi dezvoltat avndu-se n vedere urmtoarele dou aspecte: A. Hardware: care reprezint implementarea fizic a robotului ROKEY B. Software: care are n vedere implementarea codului surs necesar pentru funcionare.

Cum se construiete un robot


O alt manier de interconectare a unui dispozitiv la un microcontroller este cea a braului mobil care comunic prin intermediului modulului serial RS232 (USART) cu microcontroller-ul. Pinii pentru recepie i pentru transmisie sunt PD0 i respectiv PD1. n continuare vom aborda fiecare dintre aceste elemente ceva mai n detaliu pentru o nelegere mai profund a fiecrei componente din ansamblu. a) Senzori ROKEY este dotat cu 7 senzori de proximitate Sharp GPD12 (Poza 6) care au rolul de a sesiza obstacole i de a msura distana pn la acestea. Exist i o excepie de la regul. Unul dintre senzori i anume cel orientat nspre sol, situat sub robot, are rolul de a sesiza diferena de culoare pentru intrarea n incint. Deci n mod particular i la distane foarte mici fa de sol senzorul poate sesiza fr probleme diferenele de nuane ale podelei, explicaia fiind c nivelul de tensiune este diferit la trecerea de pe o suprafa alb pe una neagr i invers. Ceilali senzori sunt situai pe dou niveluri, cel inferior i cel superior, n numr de cte trei. Senzorii nivelului inferior ajut la ntoarcerea sau la evitarea coliziunii sistemului mobil cu pereii incintei de lucru. Senzorii nivelului superior sunt folosii pentru detectarea obiectului de recuperat i pentru centrarea pe acesta n timpul deplasrii. Pe parcursul implementrii, la nceput, s-a folosit un singur senzor central pe partea superioar care s-a dovedit n multe cazuri a fi ineficient. Astfel s-a ajuns la ataarea a doi senzori suplimentari de proximitate Sharp GPD12 (Poza 6) n stnga i n dreapta, necesari pentru centrarea pe obiect atunci cnd se realizeaz procedura de recuperare a acestuia. b) Actuatori n privina actuatorilor se poate ncepe cu menionarea motoarelor de curent continuu. Acestea sunt dou la numr, unul pe partea stng i cellalt pe partea dreapt. Cele dou motoare pot fi alimentate cu maxim 9V pentru a obine turaia maxim. Conexiunea ctre microcontroller nu este direct, ci se realizeaz prin intermediul a dou puni H care au rolul de a adapta nivelul de tensiune i curentul necesare pentru funcionarea adecvat a acestora. De asemenea punile H au i rolul de a oferi operabilitate n ambele sensuri ale motoarelor. Un dezavantaj al motoarelor de curent continuu este ilustrat perfect n cazul acestui sistem mobil. Acesta se contureaz prin nivelul de precizie sczut al controlului motoarelor. De aceea pentru un control mai eficient s-au adugat doi senzori n apropierea roilor cu striaii. Senzorii numr impulsurile generate de striaii i astfel putem determina cu exactitate unghiul de rotaie, viteza i numrul de rotaii ale motoarelor. Aceti senzori sunt interconectai prin intermediul a dou circuite Trigger-Schmitt pentru a transforma semnalul analogic n semnal digital corespunztor lucrului cu microcontrollere. Per total se observ astfel c motoarele mpreun cu senzorii reprezint un sistem de sine stttor, avnd de altfel o plac de dezvoltare separat pentru implementarea circuitelor necesare pentru funcionare. Un alt subsistem esenial din sistem este braul mobil. Acesta are rolul de a prinde obiectul care trebuie recuperat. Exist dou mari pri mobile ale acestui bra, cletele care este dotat cu dou servomotoare, unul pentru nchiderea i deschiderea degetelor cletelui i unul pentru rotirea acestuia, ct i un servomotor care ridic i coboar ntregul bra Controlul motoarelor acestui bra este realizat de un driver servo Lynxmotion SSC32 (Poza 10). Acesta are rolul de a primi comenzi pe interfaa serial sub format ASCII, adic n caractere alfanumerice, i de a comanda servomotoarele n urma analizrii mesajelor primite. Acest modul are posibilitatea de a controla pn la 32 de servomotoare. n cazul nostru nu a fost nevoie dect de 3 canale i anume 0, 1 i respectiv 2. Formatul mesajului este de forma: # <ch> P <pw> T <time> <cr>. <ch> reprezint numrul canalului motorului care se dorete a fi controlat, <pw> constitutie durata pulsului care este necesar pentru a aduce motorul ntr-o anumit poziie, <time> reprezint perioada de timp n care s se execute comanda, <cr> provine de la termenul carriage-return i are rolul de a semnaliza finalizarea mesajului aa cum # are menirea de a semnala nceputul mesajului. Este de reinut faptul c durata pulsului are valori ntre 500 i 2500 de microsecunde. De regul, un servomotor va fi centrat dac perioada pulsului este de 1500 de microsecunde, pentru a-l aduce n poziia de -90 de grade este necesar un puls cu limea de 500 de microsecunde, iar pentru 90 de grade este necesar un puls de 2500 de microsecunde. Astfel este simplu a fi calculate eventualele poziii intermediare. Intervalul de timp n care trebuie s se execute o micare <time> este calculat n milisecunde i poate avea valoarea maxim de 65535 ms. Spre exemplu dac dorim s centrm un servomotor aflat pe canalul 0, ntr-un interval de o secund, este necesar s se utilizeze comanda: # 0 P 1500 T 1000 <cr>. Dac se studiaz documentaia aferent SSC32 se va observa c pot exist i alte forme de comenzi care pot fi utilizate. n cazul lui ROKEY s-a utilizat doar tipul de comand menionat mai sus, nefiind necesar o alt sintax.
Enable A Intrare 3 Intrare 4

Soluii

97
Motor Servo 3
CH0 CH1 CH2 CH3 CH4 CH5 CH6

Motor Servo 1

M
CH0

Motor Servo 2

M
CH1

M
CH2

DRIVER SSC32 Linii de comunicaie RS232 Modul RS232 (USART)

ATMEGA 32
PD0 PD1 PD4

PORT D
PD2 PD3 Semnal senzor Semnal senzor

PD7 PD6 PD5

Poza 1 Robotul ROKEY

A. Hardware Implementarea sistemului are n vedere dou mari subcategorii: 1. Componente mecanice 2. Componente electronice i electrice Pentru o mai bun nelegere a componentelor fizice de mai jos, se prezint o schem bloc a ntregului sistem (Poza 2). 1. Componente mecanice n ce privete aspectul mecanic putem preciza ca ROKEY este n mare realizat dintr-un cadru de lemn cruia i-au fost adugate elemente de suport precum bare de lemn i uruburi (Poza 3). Placa de susinere a braului robotic reprezint de asemenea un element important. Aceasta are rol de suport, dar i de circuit electric n acelai timp. Braul robotic cu trei grade de libertate conine elemente precum gheare de prindere i articulaii ataate motoarelor (Poza 4). Aceste elemente mecanice sunt acionate de trei servomotoare. Exist de asemenea dou roi care asigur deplasarea robotului ROKEY i care sunt controlate de motoare de curent continuu (Poza 3). Semisfera de suport din spatele robotului are un rol foarte important n deplasarea i echilibrul ntregului sistem. 2. Componente Electrice i Electronice Sub aspect electric i electronic putem detalia mult mai multe idei. De exemplu microcontroller-ul (Poza 5), creierul ntregului sistem, este unul de tip ATMega32 produs de ATMEL. Acesta funcioneaz cu o magistral de 8 bii la o frecven de 8 Mhz. Memoria de program este de 32 de kilooctei, care este mai mult dect suficient pentru stocarea codului surs pentru controlul robotului. Dintre modulele interne ale lui ATMega32 am utilizat: 1. Convertorul Analogic-Digital cu o rezoluie pe 10 bii 2. Dou dintre cele 4 canale pentru generarea semnalului PWM pentru motoarele de curent continuu 3. ntreruperile externe 4. Modulul de comunicaii seriale USART Tensiunea de alimentare pentru ATMega32 este de 5V. Sursa de alimentare format din 6 acumulatoare de cte 1,2 V are o tensiune total de 7,2 V, care ndreptete folosirea unui regulator de tensiune de la 7,2 V la 5 V, care are codul 7805. Tensiunea de 7,2 V este necesar pentru a putea controla motoarele pentru deplasare i pe cele ale braului robotic. Fiecare microcontroller trebuie s fie ataat n final unei plci de dezvoltare. n cazul nostru placa de dezvoltare conine toate elementele importante pentru ROKEY. De exemplu toate PORTURILE de intrareieire ale microcontroller-ului sunt interfaate pe plac, mpreun cu portul de comunicaii seriale i pinii de alimentare. De exemplu 7 pini ai PORT-ului A sunt folosii pentru conectarea senzorilor de proximitate necesari pentru orientarea corect a lui ROKEY. Pinii PD4 i PD5 sunt conectai la cele dou motoare de curent continuu printr-un driver de motoare care conine dou puni H. Pinii PD2 i PD3 sunt ataai unor circuite Trigger-Schmitt, avnd rolul de a prelua semnalul de la senzorii roilor pentru a putea estima viteza sau unghiul de rotaie. Roile reprezint striaii care sunt sesizate de doi senzori de proximitate. Semnalul este transformat ntr-unul digital de ctre circuitele Trigger-Schmitt.

Punte H

Circuite Punte H Trigger Schmitt

M
Motor stng de curent continuu

Senzori proximitate

Poza 3 Dou motoare de curent continuu montate pe asiu

Motor drept de curent continuu

Poza 2 - Schema bloc ROKEY

Poza 4 - Bra robotic cu trei grade de libertate

ROKEY Vaslui, Romnia, 21.03.2010.

Poza 5 Placa cu microcontrollerul

ROKEY Trencin, Slovacia, 25.03.2010.

Enable B

Input 1

Input 2

Senzori proximitate

Convertor

98

Soluii

Cum se construiete un robot


B. Software Pn acum am luat n considerare doar aspectele de implementare fizic sau hardware ale lui ROKEY. Totui, cum este normal n orice sistem incorporat (cu microcontroller), trebuie s existe i implementarea software a unui algoritm care s-l determine s funcioneze. Cu ajutorul programului software putem controla toate componentele menionate n partea hardware ale lui ROKEY. Pentru nceput va fi prezentat o schem logic general care s evidenieze ntregul algoritm (Poza 11). Dup ce s-a creat o imagine general privind codul rulat de robot, trebuie precizat c schema din poza 11 este varianta final de soft implementat pe ROKEY. Vom explica n continuare fiecare etap din schema logic i se va ajunge la nivel de cod efectiv n C, implementat n microcontroller-ul robotului. Prima funcie Init_USART(); are rolul de a stabili valorile corespunztoare registrelor interne pentru funcionarea la parametrii dorii ai modulului serial USART. DDRD=(0<<1)||(1<<0); seteaz pinii pentru RX i TX ca pini de intrare i respectiv de ieire. UBRRL=12; configureaz modulul USART pentru viteza de 38.4kbps, necesar pentru comunicaia corespunztoare cu driverul braului mobil.

Cum se construiete un robot


n rndurile care urmeaz am exemplificat rutina de scanare la stnga mpreun cu condiia de ieire: while(!object_detected) { if ((GetADC(Sens_UP)>30)&&(GetADC(Sens_MIDDLE)>30)) object_detected=1; if (!object_detected) { FahreKurveStart(LINKS, 45, 30); while((!FahrtBeendet())&&((GetADC(Sens_UP)<=30)||(GetADC(Sens_MIDDLE)<=30))); FahrtStopp(); } .. } Rutina ObjectGet() execut prinderea obiectului folosindu-se tot de funcia ARM_Move() menionat la ARM_Initialize(). ExitSearch() are menirea de a scoate sistemul mobil din incint mpreun cu obiectul. Funcia este mprit n dou pri: centrarea ctre peretele interior i apropierea de acesta, ntoarcerea la 90 de grade la dreapta i orientarea spre ieire urmrind peretele interior pn la ntlnirea liniei negre de la ieire. Per ansamblu rutina se aseamn cu cea de cutare a intrrii i se observ acest lucru din exemplificarea cu fragmentul de cod de mai jos: while(GetADC(Sens_DOWN)>((last_down_val)-8)) { last_down_val=GetADC(Sens_DOWN); if (GetADC(Sens_MIDDLE)>=90) { FahreKurveStart(RECHTS, 45, 50); while(!FahrtBeendet()); FahrtStopp(); } else { if (GetADC(Sens_LEFT)<60) { MotorRun(20, 60, ML_VORWAERTS, MR_VORWAERTS); } if ((GetADC(Sens_LEFT)>=60)&&(GetADC(Sens_LEFT<=100))) { MotorRun(40, 40, ML_VORWAERTS, MR_VORWAERTS); } if (GetADC(Sens_LEFT)>100) { MotorRun(60, 20, ML_VORWAERTS, MR_VORWAERTS); } } } Funcia ObjectRelease() elibereaz obiectul folosind funcia ARM_Move(), ca i celelalte funcii de control ale braului. n aceste cteva rnduri am explicat pe scurt algoritmul de funcionare al robotului ROKEY. Totui, exist multe alte idei interesante, care pot fi remarcate direct n codul surs al sistemului mobil proiectat. n cadrul paginilor de mai sus am dezbtut cele mai importante aspecte de implementare de pe parcursul proiectului i elementele noi n comparaie cu stadiul de nceput al implementrii. Se poate observa c tot codul surs este modularizat pentru o mai bun nelegere a rutinelor funcionale. De exemplu partea pentru controlul motoarelor este cuprins n fiierul motor.h. Parametrii de configurare ai fiecrui modul pot fi studiai mpreun cu documentaia aferent lui ATMEGA32 i astfel se poate ajunge la o implementare complet a acestui sistem sau de ce nu la o dezvoltare ulterioar dup idei noi.

Soluii

99

Poza 10 Controller SSC32 Lynxmotion

Poza 6 Senzor Sharp GPD12.

ARM_Initialize(); are rolul de a pregti braul sistemului mobil pentru lucru. Aceast funcie lucreaz de fapt pe baza alteia n diverse ipostaze. Funcia n cauz este ARM_Move() care este urmat de o ntrziere de 1500 de milisecunde. De exemplu ARM_Move(ARM_up); are rolul de a ridica braul n poziie vertical. Tot n aceast manier se vehiculeaz i celelalte comenzi ctre bra (deschidere gheare, coborre bra): void ARM_Initialize(void) { ARM_Move(ARM_up); // ridic bra DELAY_MS_( 1500 ); ARM_Move(ARM_open); // deschidere bra DELAY_MS_( 1500 ); ARM_Move(ARM_calibrate); // echilibrare bra (orizontal) DELAY_MS_( 1500 ); } Funcia EntranceSearch(); cuprinde rutina de cutare a intrrii n incint. Odat stabilite valorile de funcionare, ROKEY se va apropia de peretele exterior al incintei dup care va executa o ntoarcere de 90 de grade spre dreapta. Dup aceast etap va urmri conturul peretelui pn cnd senzorul de dedesubt va observa linia neagr de la intrarea n incint. while(GetADC(Sens_DOWN)>=30) { if (GetADC(Sens_LEFT)<60) { MotorRun(20, 60, ML_VORWAERTS, MR_VORWAERTS); } if ((GetADC(Sens_LEFT)>=60)&&(GetADC(Sens_LEFT<=100))) { MotorRun(50, 50, ML_VORWAERTS, MR_VORWAERTS); } if (GetADC(Sens_LEFT)>100) { MotorRun(60, 20, ML_VORWAERTS, MR_VORWAERTS); } } FahrtStopp(); Exemplificarea de mai sus red exact rutina de urmrire a peretelui exterior pn la detectarea dungii negre de la intrare. Funcia MotorRun() controleaz viteza celor dou motoare. Dac sistemul este prea departe de perete acesta se apropie printr-un viraj fin la stnga, iar dac se apropie prea mult sistemul va vira uor la dreapta. Odat intrat n incinta de cercetat, funcia ObjectSearch() i preia rolul de scanare pentru a gsi obiectul. Astfel ROKEY va merge nainte 20 de centimetri dup care va cerceta, prin rotire, 90 de grade la stnga i apoi 180 de grade la dreapta, dac obiectul exist n spaiul baleiat. n cazul n care nu a detectat obiectul, sistemul mobil va reveni la poziia iniial, va nainta 20 de cm i va rencepe scanarea. Dac n timpul scanrii s-a detectat obiectul, robotul se oprete n acea poziie i se apropie de obiect pn la 3 cm dup care prsete funcia ObjectSearch(). Apoi robotul se centreaz cu ajutorul senzorilor nivelului superior pe obiect, pentru a nu-l pierde din raza de aciune.

Start
Init_USART(); //iniializare USART DDRD=(0<<1)||(1<<0); UBRRL=12;

ARM_Initialize(); //iniializare bra robotic //ridicare bra //deschidere clete //echilibrare gheare (orizontal)

Init_Motor(); //iniializare motoare //initializare registre interne PWM cli(); OCR1A=0; OCR1B=0; MOTORSPORT=STOPP; sei();

Poza 7 Sensor Sharp CNY70.

EntranceSearch(); //cutare intrare //se merge perpendicular pe perete (10 cm) //se vireaz dreapta la 90 de grade //se merge pe lng perete pn la ntlnirea liniei negre a intrrii

ObjectSearch(); //cutarea obiectului la stnga i la dreapta se merge pn la 10 cm distan de obiect //se centreaz pe obiect dac este gsit //se orienteaz ctre obiect periodic pn se ajunge la distana de 3 cm de acesta

Poza 8 - Poziiile celor 7 senzori de proximitate.

ObjectGet(); //se prinde obiectul //se las braul //se centreaz ghearele orizontal //se nchid ghearele //se ridic braul

ExitSearch(); //se caut ieirea //se centreaz robotul perpendicular pe perete //se ntoarce la dreapta cu 90 de grade // se merge pe lng perete pn cnd se ajunge la linia neagr

ObjectRelease(); //se elibereaz obiectul //se echilibreaz ghearele orizontal //se las braul //se deschide braul //se ridic braul

Poza 9 Caracteristica distan tensiune a senzorului de proximitate Sharp GPD12.

SFRIT

Stop Poza 11 Schema bloc a algoritmului.

S-ar putea să vă placă și