Manuel Asuro FR

81
ASURO Licence by DLR Fabricant AREXX, Zwolle - PAYS BAS JAMA, Taichung - TAIWAN www.arexx.com MODE D’EMPLOI Modèle ARX-0 © DLR & AREXX

description

Le manuel du robot Asuro d'Arexx, en français.

Transcript of Manuel Asuro FR

ASURO - 1 -

ASURO

LicencebyDLR

Fabricant

AREXX, Zwolle - PAYS BASJAMA, Taichung - TAIWAN

www.arexx.com

MODE D’EMPLOIModèle ARX-0�

© D

LR &

AR

EXX

ASURO - � -

Mises en Gardeu Ledroitderetournerleproduits’éteintavecl’ouverturedessachetscontenantlespièces etcomposants.u Avantdecommencerlemontage,lireattentivementlemoded’emploi.u Manierlesoutilsavecprudence.u Nepasconstruirelerobotenprésenced’enfantsenbasâge.Ilspeuventseblesseraveclesoutils ouavalerdepetitscomposants.u Respecterlapolaritédelapile.u Nepasmouillernilapile,nilesupportdepile.SileASUROestmouillé,retirerlapileet séchertouteslespiècesaumieux.u Encasdenon-utilisationpendantplusd’unesemaine,ilestrecommandéderetirerlapile.

ASUROAssemblage & Mise en Service

IntroductionASUROestunpetitrobotmobileentièrementprogrammableenCquiaétédéveloppéàl’InstitutdeRobotiqueetdeMécatroniqueduCentreallemandd’aéronautiqueetd’aérospatiale(DLR)àdesfinsd’enseignement.Pourl’électronicienexpérimenté,sonassemblageestunjeud’enfants.Pourledébutant,ilesttoutàfaitàsaportée.Al’exceptiondescircuitsimprimés,touslescomposantssontdesstandardsdisponiblesdanslecommerce.LaprogrammationsefaituniquementavecdeslogicielsFreeware.ASUROestdoncidéalpourdestechniciensamateursquisouhaitentselancerdanslescircuitscommandésparprocesseur,desprojetsd’études,desformationscontinuesoudescoursdusoirpouradultes.Etantdonnéquetoutel’électroniquefaitappelàdeslogicielsFreeware(pourledomaineprivé),ASUROapportelapreuvequ’ilesttoutàfaitpossibledeconstruireunrobotopérationnelsanslogiciels,technologieetmachines-outilscompliquésetcoûteux.

ASUROpossèdeenplusdesonprocesseurRISCdeuxmoteursàcommandeindividuelle,untraceurdeligneoptique,sixdétecteursdecollision,deuxodomètrespourlesroues,troisafficheursoptiquesetuneunitédecommunicationàinfrarougequipermetlaprogrammationetlatélécommandeàpartird’unPC(voirfig.0.1).

Lepointd’exclamationdansuntriangleattirel’attentionsurdesconsignesqu’ilfautrespecterscrupuleusementsouspeinededestructiondumatérieloudeblessures.

IlvadesoiqueASUROn’estpasunjouetetestinterditauxenfantsdemoinsdetroisanscarilcontientdesdouzainesdepetitespiècesqu’unenfantpeutavaler.Ilnevousresteplusqu’àprépareruneballedeping-pongetdespilesoudesbatteriesetvouspouvezcommencer.

Ahoui,ASUROestlesiglepour«AnotherSmallandUhh…?RobotfromOberpfaffenhofen»!

©DLR&AREXXOberpfaffenhofen �004

JanGreweRobinGruber

WWW.DLR.DE

Fig. 0.1 SYNOPTIQUE ASURO (Annexe E)

ASURO - � -

Table des matières

I. Mécanique 6

1. Outils nécessaires 6

�. Préparatifs mécaniques 7

2.1.Pignons 72.2.Balledeping-pong 72.3.Détecteursderoue 8

II. Electronique 9

�. Petit Manuel de Brasage 9

3.1.Panne,BrasageetTempérature 93.2.PréparationdesComposants 103.3.BrasagedesComposants 113.4.Dessoudagedecomposantsmalmontés 12

4. Implantation 1�

4.1.ImplantationdutransmetteurinfrarougeRS232 134.2.TransmetteurinfrarougeUSBfini 154.3.ImplantationdelaplatineASURO 164.4.Montagedumoteur 204.5.Alimentationélectrique 20

5. Mise en service et Test �1

5.1.TransmetteurinfrarougeRS232 215.2.TransmetteurinfrarougeUSB 225.2.1.Windows 225.2.2.Linux 235.3.MiseenservicedelaplatineASURO 245.3.1.Elémentsvisuels 255.3.2.Phototransistors(T9,T10) 255.3.3.Commutateurs 265.3.4.Détecteurphotoélectrique(Odométrie) 265.3.5.Entraînements 265.3.6.TransmetteurIR 265.3.7.Fini? 27

ASURO - 4 -

6. Diagnostic de défaillance �8

6.1.LetransmetteurIRRS232nefonctionnepas 286.1.1.Latoucheetlesigneaffichéneconcordentpas 286.1.2.LeprogrammeTerminaln’éditepasdesignes 286.1.3.Celanefonctionnetoujourspas 286.2.LetransmetteurinfrarougeUSBnefonctionnepas 286.2.1. Windows 286.2.2. Linux 286.3.LesLEDarrières(D15,D16)neluisentpasaprèslamisesoustension! 286.3.1.AucunedesdeuxLEDneluit 286.3.2.Seulement1LEDsurles2s’allume 296.3.3.LaLEDd’état(D12)nes’allumepasen2couleursaprèslamisesoustension 296.4.Unélementd’affichagenefonctionnepas 296.4.1.LaLEDd’étatD12nefonctionnepas 296.4.2.LaLEDavantD11nefonctionnepas 296.4.3.LaLEDarrièregaucheD15nefonctionnepas 306.4.4.LaLEDarrièredroiteD16nefonctionnepas 306.5.LeDétecteurodométrique(T9,T10)neréagitpas 306.6.Uncommutateurnefonctionnepascorrectement 306.6.1.Plusieurscommutateursontétéactionnés 306.6.2.Lecomportementdel’affichageindiqueuneinversiondescommutateurs 316.6.3.Ilsubsistetoujoursunproblème 316.7.Unebarrièrelumineuseréflectricenefonctionnepas 316.7.1.Aucunedesbarrièreslumineusesnefonctionne 316.7.2.Labarrièrelumineusegauchenefonctionnepas 316.7.3.Labarrièrelumineusedroitenefonctionnepas 316.8.Unentraînementnefonctionnepas 326.8.1.Aucunentraînementneréagit 326.8.2.Lemoteurgauchenetournepasdutoutouseulementdansunsens 326.8.3.Lemoteurdroitnetournepasdutoutouseulementdansunsens 326.8.4.Unmoteurtournedanslemauvaissens 326.9.InterfaceIR 326.9.1.ASUROn’émetpasdesignaux 326.9.2.ASUROnereçoitpasdesignaux 326.9.3.Celanefonctionnetoujourspasparfaitement 33

7. Derniers réglages �4

III. Informatique �58. Installation der Software und erste Schritte �5 8.1.Windows 358.1.1.OutilFlash 358.1.2.Installationdel’EditeurdeprogrammeetduCompileur 358.1.3.CopiedesprogrammesdedémonstrationdeCDROMsurledisquedur 398.2.Linux 51 8.2.1.OutilFlash 51 8.2.2.Compiler 528.3.Flash-L’outildeProgrammationd’ASURO 538.3.1.FonctionnementduprogrammeFlash 538.4.ErreursFlash 548.5.Votrepremierprogrammepersonel 54

ASURO - 5 -

9. C pour ASURO 56

9.1. Bases de la Programmation en C 569.1.1.Généralités 569.1.2.VariablesetTypesdedonnées 579.1.3.DirectivesdeCompilation 599.1.4.Conditions 599.1.5.Boucles 619.1.6.Fonctions(Templates) 629.1.7.PointeursetVecteurs 649.2.Descriptiondesfonctionsd’ASURO 659.2.1.voidInit(void) 669.2.2.voidStatusLED(uncaractèredcharcolor) 669.2.3.voidFrontLED(uncaractèredcharstatus) 679.2.4.voidBackLED(uncaractèredcharleft,uncaractèredcharright) 679.2.5.voidSleep(uncaractèredchartime72kHz) 679.2.6.voidMotorDir(unsignedcharleft_dir,unsignedcharright_dir) 679.2.7.voidMotorSpeed(unsignedcharleft_speed,unsignedcharright_speed) 689.2.8.voidSerWrite(unsignedchar*data,unsignedcharlength) 689.2.9.voidSerRead(unsignedchar*data,unsignedcharlength,unsignedinttimeout) 689.2.10.voidLineData(unsignedint*data) 699.2.11.voidOdometrieData(unsignedint*data) 709.2.12.unsignedcharPollSwitch(void) 71

IV. Annexes 7�

A. Nomenclature 7�

B. Schémas techniques ASURO 74

C. Transmetteur IR RS��� 75

D. Transmetteur IR USB 76

E. Synoptique ASURO 77

F. Synoptique processeur AVR 77

G. Contenu ASURO 78

H. Informatique la partie électronique 79

ASURO - 6 -

Partie I. Mécanique

1. Outils nécessairesPourlemontaged’ASURO,ilvousfaut-enplusdescomposants-lesoutilsetmatériauxsuivants:

Petitétauoutroisièmemaincar2mainsnesontpastoujourssuffisantesCutterousciePetitepinceUnepetitepincecoupantedecôtépourl’électroniqueEventuellementunepinceàdénuderFeràsouder:Ilestrecommandéd’utiliserunferàsouderpourl’électronique(env.20Wà40W)ouunestationdesoudage(aumoins50W)Soudure:Brasurepourl’électroniquede1mmd’épaisseur,lecaséchéantsansplombFilàdessouderd’env.2-3mmpourenleverlabrasureauxendroitsoùellenedoitpassetrouverPapierdeverreàgrainfinCollerapide,àdeuxcomposantsouàchaudEventuellementunpetitmarteauEventuellementunmultimètreOrdinateur:PortableouPCavecWindowsouLinux

Fig. 1.1.: Outillage nécessaire

ASURO - 7 -

�. Préparatifs mécaniques

Avantdeselancerdanslestravaux,ilestimpératifdevérifiersitouteslespiècesnécessairessontaucomplet.LeplussimpleestdeseservirdelanomenclaturedespiècesenannexeA.Avantdecommencerlapartieélectronique,ilfauteffectuerquelquestravauxmécaniques.

�.1. Pignons

Pourquelesmoteurspuissenttransmettreleurforceàl’engrenage,ilfautmonterlespignons(cesontlespetitesrouesdentéesprésentantuneperforationde1,9mmet10dents)surl’axemoteur.Silespignonsn’ontpasencoreétémontéssurlesmoteurslivrés,ilfautlefairemaintenant.Aceteffet,ilfautplacerunpignonsansforcersurl’axedechaquemoteur.Ils’agitsimplementdelefairetenirsurl’axe.Posezensuitelemoteuraveclepignonverslebassurunesurfacepastropdure(plastique,carton,etc.)ettapotezdoucementavecunpetitmarteausurl’axequidépassesurledessusjusqu’àcequel’axeestcomplètementenfoncédanslepignon(voirfig.2.1).Ilestégalementpossibled’enfoncerlepignondansl’axeàl’aided’unétau.Danscecas,ilfautcependantexercerlapressionuniquementsurl’arbremoteuretnonpassurleboîtieroulesroulements.

Fig. �.1.: Montage des pignons sur l’axe moteur

�.�. Balle de ping-pong

ASUROdoitglisserplustardsurunedemi-balledeping-pongqu’ilfautfabriquer.Lemieuxestdeprendreuneballeentièreetdelascieroucouperendeuxàl’aided’uncutter(attentionauxdoigts!).Ecrêtezlesbordsàl’aided’unelimeoud’unpapierdeverre.

Fig. �.�.: Balle de ping-pong sciée en deux

Nepasutiliserd’outilsélectriquesenraisondurisqued’incendie!

Mécanique

ASURO - 8 -

�.�. Détecteurs de roue

Pournepasdécevoirladiodeluminescenteetletransistorphotoélectrique(barrièrelumineusepourl’odométrie)quisetournerontpaslasuiteentouteconfianceverslepremierengrenage,ilfautappliquersurlafacesanspignondesdeuxpremièresrouesdentées(cellesà50età10dents)lesautocollantsàmotifnoiretblanc(voirfig.2.3.).

Pluslemotifpossèdedesegments,pluslenombredetoursdelarouedentéeetdonclavitessed’ASUROsontdéterminésavecprécision.D’unautrecôté,ladifférencemesuréeentreclairetsombrediminue.

Fig.2.4.:Exemplededétecteurs

Voilà,lapremièrepartieestterminée.Lescomposantsmécaniquessonttousprêtsmaintenant

Unecourtepause...

Et on continue avec l’électronique.

Mécanique

Fig.2.3.:MontagederRadsensormuster

ASURO - 9 -

Partie II. Electronique

�. Petit Manuel du BrasageBienqu’ASUROnecomportequedescomposantscâblésetseprêtedoncàmerveilleàl’implantationmanuelleàladifférencedescomposantsSMDimplantésensurface(Fig.3.1montrelacomparaisonentreleboîtierlepluspetitetlenôtredanslequelleprocesseurd’ASUROestdisponible.Lapuceausiliciumestlamêmedanslesdeuxboîtiers!),ilfautrespectercertainesconsignes,surtoutpourlessoudeurspeuexpérimentés.

Il va de soi que le circuit imprimé doit être absolument hors tension. Eteindre ne signifie pas ‚hors tension’! Il faut enlever les piles!

�.1. Panne, Brasage et Température

LaFig.3.2montrelesbaseslesplusimportantesdubrasage!

L’extrémitédangereusedoitavoirunetempératuredebrasaged’env.360°Cpourunesoudureàteneurenplombetenv.390°Cpourunebrasuresansplomb.Pouramorcerlebrasagedesaxes,ellepeutêtreunpeuplusélevée(420°C).Ilestrecommandéd’utiliserunepannepointuecommeuncrayondepapierpourlesimplantationssuruneplatineélectronique.Vouspouvezutiliserunepannepluslargepourlesaxes.

N’oubliezpasd’humidifierl’éponge(ellenedoitpasgoutter)etd’étamerlapanneavecunpeudesoudurejusteavantd’appliquerleferàsoudersurl’emplacementàbraseraprèsunepauseouaudébutdubrasage.Sidesrésidusdebrasuresontrestésaccrochésàlapanne,ilfautsimplementlesessuyersurl’éponge.

Utilisezdelabrasureélectroniquede0,8ou1mmdediamètre.

Fig. �.1.: Comparaison du boîtier le plus grand et le plus petit qui existe pour l’ATmega8L

ASURO - 10 -

Fig. �.�.: Bases du brasage

�.�. Préparation des Composants

Toutepersonneayantuneexpériencedubrasageélectronique,connaitleproblème:ilmanquetoujoursunemain.C’estpourquoiilsexistentquelquesastucespourmaîtriserlesdifférentscomposantsjusqu’àcequel’onsacheseservircorrectementd’unferàsouderetdebrasure.

Lesextrémitésdeconnexiondestransistors,diodesluminescentes,circuitsimprimés,commutateursboutons,condensateursetjumpersd’ASUROsontdéjàdirigéesdansunsens.Celaresteencoreàfairesurlesdiodesetlesrésistances.Pourdesraisonsdeplace,touteslesrésistancessontimplantéesàlaverticale.Celasignifiequel’undesfilsrestetelqu’ilestetl’autredoitêtrecourbéà180°.Lacourbedevraitavoirundiamètrede2,5mmetsesitueràquelquesmillimètresdedistancedelarésistancedefaçonànepasexerceruneforcemécaniquequirisqueraitdediminuersonfonctionnement.

Lorsdubrasageultérieur,uncerclesurlecircuitimpriméindiqueau-dessusdequeltroularésistancedoitseplaceretunpetittraitdansqueltrouilfautintroduirelefilcourbé.

Lesdiodessontimplantéesàl’horizontale,c’est-à-direlesdeuxfilsdoiventêtrepliésà90°(sipossibleaumoyend’unepetitepince)àunedistancequipermetdelesimplanterfacilementdanslesperforationscorrespondantsurlaplatine.

Electronique

Le processeur IC1 ATmega8, le composant IC3 CD4081 et le récepteur IR IC2 SFH5110-36 sont sensibles à l’électricité statique.

Cela signifie qu’ils peuvent être détruits par un simple contact si la personne est chargée électriquement ce qui peut arriver en traversant simplement un tapis. Avant de manipuler ces composants, il est conseillé de se relier à la terre au moyen d’un ruban de masse ou tout du moins toucher le boîtier métallique d’un appareil ou un radiateur.

Des vapeurs qui se forment pendant le brasage sont nocifs à long terme. Evitez de les respirer. Si possible, aspirez-les! Un autre type de brasure que l’étain de brasage pour l’électronique et de flux à base d’acide risquent de détruire le circuit!

Embout dangereux

ASURO - 11 -

Fig. �.�.: Composants avec des fils pliés correctement

Fig. �.4.:Réalisation d’un point de brasure propre

�.�. Brasage des composants

Lorsquelescomposantsontétépréparés,ilfautlespasserdanslesperforationssurlaplatine.Pourlescomposantsn’ayantque2ou3fils,pliezlesfilsendessousdelaplatinedirectementàl’endroitdelaperforation(env.30à40°sontsuffisants)pourqu’ilsnepeuventplustomber.

Quantauxcomposantspossédantplusdefilstelsquelessocketspourlescircuitsimprimés,ilsuffitdeplierlesdeuxfilsopposésversl’extérieur.Nepliezpaslesfilsàplusde45°carencasd’erreur,ildevienttrèsdifficiledelesretirer.

Electronique

A. Composant

B. Chauffez la zone à souder en mettant la panne du fer en contact avec la piste de circuit imprimé et la patte du composant pendant environ � secondes.

C. En maintenant le fer en place, amenez la soudure dans cette zone.

D. Soudure

E. Secteur de recourbement rond sans bords

F. Panne

G. Une soudure réussi doit être lisse et brillante et bien s’étaler tant sur la patte du composant que sur la pastille de cuivre du circuit imprimé.

H. Recourbez les jambes pour qu’ils ne peuvent plus tomber.

I. Pliez le secteur à une certaine distance de la composant.

A

I

HF

B

C

G

E

D

ASURO - 1� -

Lorsquelecomposantaétéfixé,ilfautchauffersimultanémentlefiletlapastilleaumoyendelapanneduferàsouder,enajoutantunpeudefildesoudureàcetendroit.Celui-cifusionneets’écouledanslaperforation.Ilfautajouterdufildesoudurejusqu’àcequelaperforationsoitcomplètementfermée(voirfig.3.4).Ensuiteilfautretirerd’abordlefildesoudureetensuiteleferetattendrelerefroidissementdel’emplacement.Ilnefautenaucuncasbougerlecomposantpendantlerefroidissementafind’éviterdesfauxcontactsparlasuite.

Lespastillesquisontconnectéessurlasurfacecuivréeaudessusetendessouspeuventdemanderunpeuplusd’apportthermiquejusqu’àcequelefildesouduresesoitécoulédanslaperforation.

Lesmauvaisesbrasuressereconnaissentpardesdépôtsdesoudurerondssurlapastilleouunesurfacemate(outrèsmatepourlasouduresansplomb).Ilfautlesrattraper.

Pourimplanterlessocketsouautrespiècesquidoiventêtrecouchéesàplatsurlaplatine,ilexisteuneastuce:Ilfautd’abordbraserunseulfilducomposant.Ensuiteonappuielégèrementaveclesdoigtssurlapièceetchauffeencoreunefoislasoudure(Attention:Lapiècepeutdevenirtrèschaude),pourquelapiècepuisseseposersurlaplatine.Ensuiteilfautbraserlesautresfilsetliquéfierencoreunefoislapremièrebrasureavecunpeudefildesoudure.Lorsquelecomposantestbrasé,lesextrémitésdesfilsquidépassentdoiventêtrecoupéesàrasdelaplatineaumoyend’unepincecoupantedecôté,sanstirersurlefil.

Electronique

Tresseàdessoud-erprofessionnelle

�.Retirer le fer à souder et la tresse dès que la tresse a absorbé la soudure.

1.Poser la tresse à dessouder sur la soudure et chauffer les deux en même temps.

�.4. Dessoudage de composants mal montés

Siuncomposantaétémalimplanté,ilfautleretirer.CommeASUROpossèdeuneplatinedoublefaceavecdesperforationsàdoublecontact,l’entreprisen’estpasfacile.

Laprocéduresuivanteafaitsespreuves:D’abordilfautliquéfiertouslespointsdebrasageducomposantenquestion(éventuellementàapportantencoreunpeudefildesoudure)etretirerlecomposantàl’aided’unepince.Ensuite,ilfautdégagerlestrousàl’aided’unetresseàdessouder.

Aceteffet,ilfautplacerlatresseàdessoudersurl’emplacementdelasoudureetchaufferlesdeuxjusqu’àcequelatresseaitabsorbélasoudure.Ensuite,ilfautretirerleferàsouderetlefildesoudure.Ilpeuts’avérerutiled’absorberaussilefildesouduresurl’autreface.

Lorsque vous coupez les fils, veillez à ne blesser personne avec les fils qui sont éjectés. Evidemment les composants sur le côté supérieur de la platine ne doivent pas se toucher. Au besoin, il faut les redresser.

ASURO - 1� -

4. Implantation

Avez-vouslulesconsignesdubrasage?Vraiment?

4.1. Implantation du transmetteur infrarouge RS���

•IC1:Oncommencerparsouderuniquementlesocketà8brochesdontlapolaritédoitcorrespondreàlapolaritémarquéesurlaplatine.

•D1,D2,D3:1N4148,respectezlabonnepolarité!NepasconfondreavecleZPD5.1ouBZX55-C5V1(Impression)!

•D4:ZPD5.1ouBZX55-C5V1,respectezlabonnepolarité!Nepasconfondreavecle1N4148(Impression)!

•C2,C4:100nFcéramique,Impression:104

•C3:680pFcéramique,impression:681

•Q1:BC547(A,BouC)ouBC548(A,BouC)

•R1,R5:20kOhms,5%(rouge,noir,orange,doré)

•R2:4.7kOhms,5%(jaune,violet,rouge,doré)

•R3:470Ohms,5%(jaune,violet,marron,doré)

•R6:10kOhms,5%(marron,noir,orange,doré)

•R7:220Ohms(rouge,rouge,marron,doré)

• C1: 100 μF/ au moins 16V, respectez la bonne polarité!

•TR1:condensateur10kOhms

•D5:SFH415-ULEDIR(boîtiernoir),respectezlabonnepolarité!Leboîtierdoitreposeràplatsurlaplatine!

•IC2:SFH5110-36CIrécepteurIR,plierlesfilsavecunepince!Respectezlabonnepolarité(lafacebombéedoitêtreorientéeversledessus),Attention:Sensibilitéélectrostatiqueet–avisauxsoudeursdébutants–sensibleàlachaleur!

•X1:FicheSub-Dfemelleà9contacts,Leboîtierdoitreposeràplatsurlaplatine.Ilfautégalementsouderleslanguettesdefixation!

•IC1:InsérerleNE555P,respecterlapolaritéindiquée(nezoucercle)!

Electronique

Fig. 4.1.: Implantation du transmetteur infrarouge RS���

Jetezundernierregardcritiquesurlessouduresetvérifiezlabonneliaisonetl’absencedecourts-circuitsetrattrapezlesdéfautslecaséchéant.

Fini!

Electronique

4.�. Transmetteur Infrarouge USB fini

UntransmetteurIRUSBfiniestdisponibleenoption.

Electronique

Fig. 4.�.: Transmetteur Infrarouge USB

Fig. 4.4.: Vue de dessous du transmetteur Infrarouge USB

Fig. 4.�.: Vue de dessus du transmetteur Infrarouge USB

ASURO - 16 -

4.�. Implantation de la platine ASURO

Lesdeuxaxespluslongspourledeuxièmeniveaud’engrenagesontsoudésoucolléssurledes-sous.Lasoudureestpréférablecarlescorrectionssontplussimplesàeffectueretlerefroidisse-mentestplusrapidequed’attendrequelacolleaitprise.

Lesdeuxaxespluscourtsseplacentsurledessusetplusendirectionducentredelaplatine.Avantl’implantation,vouspouveznettoyerlesaxesàl’endroitdelacolleoudelasoudure(passurlasurfacederoulement)avecdupapierdeverretrèsfin(grain240ouplus)pourqu’ilsabsor-bentmieuxlacolleoulefildesoudure.Sivousdécidezdesouder,ilestrecommandédeprocéderdelamanièresuivante:

Fixezd’abordlesaxespluslongs.Aceteffet,posezlaplatinesurledessusetplacezl’axejusqu’àlabutéedanslafente.L’axedoitreposersurtoutelalongueur.Etamezlapanneetappuyezl’axeaveclapannesurlaplatine.Dèsquel’axeestchaud,ajoutezdufildesoudureauxpointsdecontact.Decettefaçonvousreliezl’axeàlaplatine.Dèsquel’axeaétésoudéetoutautour,ilfautlepousserdavantageavecuntournevissurlaplatineetretirerleferàsouder.Poursouderl’axe,ilestconseilléd’augmenterlatempératuredufer(env.420°C)etd’utiliserunepannelarged’env.3mm.Pourlescomposantsélectroniques,ilfautbiensûrbaisserlatempératureàenv.360°C.

Lorsquel’ensembleestrefroidi,ilfautsouderledeuxièmeaxesurledessousdelaplatine.En-suite,c’estletourdesdeuxaxessurledessus.Lafig.4.5représentelaplatineaprèslemontagedesaxes.

Lorsquelesaxessontrefroidis,ilfautinsérerlesrouesdentées.Lesdentsdesrouesdoiventmordreproprementetlesrouesdoiventtournerfacilement.Sicen’estpaslecas,lesaxesontétésoudésdetraversetdoiventêtreredressés(cen’estpasunepunitionmaisunexercice)oualorsdesrésidusdesouduresetrouventdanslapartieàl’extérieurdelaplatineetdoiventêtreretirés.Lemieuxestdeseservird’unelimefineoudepapierdeverre.Quandtouts’insèrecorrectement,mettezdecôtélesrouesdentéespourimplantertouslesautrescomposantsàleuremplacementdédiésurlaplatine.

Fig. 4.5.:Platine d’ASURO après le montage des axes

Electronique

ASURO - 17 -

L’implantation se fait dans l’ordre suivant:

•IC1:D’abordseulementlesocket.Ilfautmontersoitun28broches(sidisponible)oudeuxà14brochesl’underrièrel’autre.Respectezlabonnepolarité(l’encocheestdirigéeversl’encochedel’impressiond’implantationsurlaplatine)!

•IC3:Seulementlesocket,14broches.Respectezlabonnepolarité(l’encocheestdirigéeversl’encochedel’impressiond’implantationsurlaplatine)!

•K1,K2,K3,K4,K5,K6:Capteurs.Aplacerleplusdroitpossiblesurlaplatine!

•Q1;Oscillateur8MHz

•D1,D2,D3,D4,D5,D6,D7,D8:1N4148;respectezlabonnepolarité!

•D9:1N4001;respectezlabonnepolarité!

•JP1:Connecteurà2broches.Lesbrochescourtessontsoudées,lecavaliercorrespondantn’estpasencoreimplanté!

•D12:LEDbicolore,diamètre3mm,troisfilsdeconnexion.Attentionàlapolarité.(Lerepéragepeutêtredifférent.Danstouslescas:lefillepluscourtdoitallerdansletracécarré)!

•C2,C3,C4,C5:100nFcéramique;impression:104

•C6,C7:4,7nFcéramique;impression:472

Fig. 4.6.: Implantation sur le dessus de la platine principale d’ASURO

Electronique

ASURO - 18 -

•T1,T3,T5,T7:BC327-40ouBC328-40

•T2,T4,T6,T8:BC337-40ouBC338-40

•R1,R2,R3,R4,R5,R6,R7,R8,R19,R21:1kOhm,5%(marron,noir,rouge,doré)

•R9,R16:220Ohms,5%(rouge,rouge,marron,doré)

•R10,R17,R22,R31:470Ohms,5%(jaune,violet,marron,doré)

•R11:100Ohms,5%(marron,noir,marron,doré)

•R12:12kOhms,1%(marron,rouge,noir,rouge,marron)

•R13:10kOhms,1%(marron,noir,noir,rouge,marron)

•R14,R15:20kOhms,5%(rouge,noir,orange,doré)

•R18,R20:4,7kOhms,5%(jaune,violet,rouge,doré)

•R23:1MOhm,5%(marron,noir,vert,doré)

•R24:1kOhm,1%(marron,noir,noir,marron,marron)

•R25,R26,R32:2kOhms,1%(rouge,noir,noir,marron,marron)

•R27:8,2kOhms,1%(grau,rouge,noir,marron,marron)

•R28:16kOhms,1%(marron,bleu,noir,rouge,marron)

•R29:33kOhms,1%(orange,orange,noir,rouge,marron)

•R30:68kOhms,1%(bleu,grau,noir,rouge,marron)

• C1, C8: Elko 220 μF 10V ou plus, respectez la bonne polarité!

•IC2:SFH5110-36CItransmetteurinfrarouge,plierlesfilsàl’aided’unepince!Respectezlabonnepolarité(Côtébombéeverslehaut).Attention:Sensibilitéélectrostatiqueet–avisauxsoudeursdébutants–sensibleàlachaleur!

•D10:SFH415-UIR-LED5mm;boîtiernoir.Respectezlabonnepolarité!Leboîtierdoitreposersurlaplatine!

•T11,T12:LPT80A,Transistorphotoélectrique.Boîtierincoloredoitreposersurlaplatine.Respectezlabonnepolarité!

•D13,D14:IRL80A,IR-LED,Boîtierrosedoitreposersurlaplatine.Respectezlabonnepolarité!

•D15,D16:LED5mmrouge,boîtierrouge,respectezlabonnepolarité(filcourtsurlafacerepérée)!

• S1: Interrupteur Marche/Arrêt

Electronique

ASURO - 19 -

Ilmanqueencoretroiscomposants(ilspermettentdesuivreuntracé).Ilfautcependantlesimplantersurledessousdelaplatineetlessouderparledessusvoirfig.4.7.):

•T9,T10:SFH300,Transistorphotoélectrique5mm,respectezlabonnepolarité!Ilssontlégèrementécartésdelaplatine.

•D11:LED5mmrouge,boîtierrouge,respectezlabonnepolarité(filcourtsurlafacerepérée)!

Fig.4.8.présentelaplatineimplantéejusqu’àprésentparledessusetledessous

Voilà,c’étaittoutcequ’ilfallaitenmatièredecomposantsélectroniques.Maintenantilfautmonterlescomposantsélectromécaniquesetmécaniques.

Fig. 4.8.: ASURO implanté par le dessus et le dessous

Fig. 4.7.:Implantation de la face inférieure de la platine d’ASURO

Electronique

ASURO - �0 -

4.4. Montage du moteur

Lorsquel’implantationdelaplatined’ASUROestterminée,iln’yaplusqu’àmonterlescâblessurlesmoteursetlesfixerprovisoirement.Pourlaconnexiondumoteur,ilvousfautuncâblenoiretunrouged’env.70mmdelongueuravecdesextrémitésdénudéesetétamées.Silescâblesfournisn’ontpasencoreétépréparés,vousdevezdénuderlecâbleauxextrémitéssurunelongueurd’env.4mm,letourneretl’étamerenlemettantencontactavecleferàsouderetunpeudefildesoudure.Vouspouvezensuiteretirerlesrésidusgênantsdesoudureaumoyend’unepincecoupantedecôté.Soudezmaintenantlecâblerougesurlecôtédumoteurmarquéd’unpointrougeoud’unsigne«Plus»etlecâblenoirsurl’autre.

Lescâblesdebranchementdechaquemoteursontensuiteentrelacés(cen’estpasindispensablemaisapportedesavantagesenmatièredecompatibilitéélectromagnétiqueetestd’unplusbelaspect…).

Lecâblerougedumoteurgaucheestsoudédans„ML+“etlenoirdans„ML-„;lecâblerougedumoteurdroitestsoudédans«MR+»etlenoirdans«MR-«.Maintenantilfautinstallerprovisoirementlesmoteurssurlaplatine.Aceteffet,ilfautpasserlecollierdecâbledanslestrousdelaplatineàcôtédesmoteursdefaçonàcequelestêtesdescolliersrestentendessousdelaplatineetpasserlecollierautourdesmoteurs.

4.5. Alimentation électrique

Si ASURO doit être alimenté par piles, le cavalier JP1 doit impérativement être ouvert ! Si vous utilisez des batteries, il faut le fermer. Une mauvaise polarité des batteries lorsque le cavalier est fermé détruit l’électronique !

Lecâblerougedusupportdepilesestsoudé(sanslespiles)dansBAT+etlecâblenoirdansBAT-.Vérifiezensuitequel’interrupteurestenpositionOFFetqueles4pilesoubatteriessontinséréesaveclabonnepolaritédanslesupport.Ilfautfixerlesupportdepilestoutdesuiteouaprèslamiseenserviceenpassantlepluslongcollierdecâbles(amovible)parletroudanslaplatine.

Electronique

ASURO - �1 -

5. Mise en service et Test

Enfintoutestmontéetl’aventurepeutcommencer.Cependant,ilfautchercher,trouveretéliminerleserreursquisesontglisséesetcelasansfairetropdedégâts.

5.1. Transmetteur Infrarouge RS���

Cettemiseenservicenes’appliquequ’autransmetteurRS232àinfrarouge.Toutd’abordilfautvérifierlebonfonctionnementdutransmetteurIRRS232puisquenousenauronsbesoinparlasuitepourl’auto-testduvéhicule.Aceteffet,letransmetteurRS232serabranchésuruneinterfacesérielibreaumoyendelarallongesériellefournie.

Ensuite,ilfautdémarrerleprogrammeTerminaldeWindows«HyperTerminal»(sousLinuxp.ex.«Minicom»).Normalement,vousletrouverezsousDémarrer-->TouslesProgrammes-->Accessoires-->Communications-->HyperTerminal.S’ilnes’ytrouvepas,vousdevezl’installeràpartirduCDWindows.

Lesprogrammesdeterminaldatentenfaitencoredel’époquedesmodemsetavantlorsquelescommunicationsavecd’autresordinateurssefaisaientfréquemmentparlebiaisdel’interfacesérie.Aujourd’huiilssontsurtoututiliséspourseloggerenbasetextesurunautreordinateurparInternet.AprèsledémarragedeHyperTerminal,leprogrammedemandeunnompourlanouvelleconnexion.Ici,vouspouvezsaisirASUROetsélectionnerunsymboledevotrechoix.Danslafenêtresuivante,vousdevezsélectionnersous«Seconnecterenutilisant:»l’interfaceCOMsurlaquellevousavezbranchéletransmetteur.AprèsavoircliquésurOK,voussélectionnez

•Bitsparseconde:2400•Bitsdedonnées:8•Parité:Aucune•Bitsd’arrêt:1•Contrôledeflux:AucunConfirmeravec“OK”.

TenezmaintenantletransmetteurIRàenv.10cmaudessusd’unefeuilledepapierblanche.Lescomposantssontfaceaupapier.Tapezmaintenantquelquestouchessurleclavier.LeprogrammeTerminaldevraitaffichercestouches.LetransmetteurIRenvoielapressionsurlatoucheparlebiaisdeladiodeIR(D5).LesignalréfléchiparlepapieresttransmisauCIrécepteur(IC2)etdelàauPC.Siaucuncaractèreoudescaractèreserronéss’affichent,vouspouveztournerdouce-mentavecunpetittournevisletrimmerentresabutéegaucheetdroiteetappuyerànouveausurquelquestouches,jusqu’àcequelesbonscaractèress’affichent.

L’ensemblenefonctionnepascommedécrit?Dommage.Celasignifiequ’ilyauneerreurqu’ilfautcorriger(voirchapitre6.1).Pourêtretoutàfaitsûr,vouspouvezdébrancherletransmetteurIRetappuyerànouveausurquelquestouches.Aucuncaractèrenedoits’afficher.

Electronique

ASURO - �� -

5.�. Transmetteur Infrarouge USB

Cettemiseenservicenes’appliquequ’autransmetteurInfrarougeUSB.Attention!LetransmetteurUSBn’estpasprotégéparunboîtieretsensibleauxdéchargesélectrostatiques.Avantl’utilisation,vousdeveztoucheruncorpsmétallique(radiateur,boîtierd’ordinateur)pourdéchargerl’électricitéstatiqueéventuelleafind’évitertoutdommage.Vousavezaussilapossibilitéd’installerletransmetteurdansunboîtierquilaissepasserlalumièreinfrarouge.

Electronique

5.�.1 Windows

LetransmetteurUSBestbranchésurunportUSBlireaumoyenducordonUSB.Lemessages’affiche:

“Unnouveaumatérielaétédétecté:AREXXASUROUSB-IR-Transceiver”InstallezensuiteledriverUSBàpartirduCDd’ASURO.Sil’ordinateurnetrouvepasautomatiquementledriver,sélectionnezlerépertoire(D:représenteicilelecteurCD-ROM)

D:\Windows\USB_Driver”.Vousaurezéventuellementbesoindesdroitsd’administrateur.Danscecas,fermezlasessionetouvrezunenouvellesessionentantqu’administrateur.Maintenantundriverestinstalléquipermetd’adresserletransmetteurUSBsousWindowscommeuneinterfacesérienormale.

Sitoutcelas’estpassésansproblème,vouspouvezdémarrerleprogramme„HyperTerminal“,enindiquantcommenomdeconnexionASUROUSBetenchoisissantunsymbole.Danslafenêtresuivante«Seconnecterenutilisant:»,voussélectionnezladernièreinterfaceCOMlibre.Appuyezsur«OK»etsélectionnez:

•Bitsparseconde:2400•Bitsdedonnées:8•Parité:Aucune•Bitsd’arrêt:1•Contrôledeflux:AucunConfirmeravec“OK”.

Tenezmaintenantletransmetteuraveclafacedeladiodeluminescenteverslebasà10cmau-dessusd’unefeuilledepapierblanche.Sivousutilisezletransmetteursansboîtier,vousnedeveztenirlaplatinequeparlaficheouaubordafindenepasperturberlecircuit.TapezmaintenantsurquelquestouchesdansleprogrammeTerminal.LaLEDjaunesurlaplatinedoitclignoteretlestouchestapéesdoivents’affichersurl’écran.

Sicelanefonctionnepas,continuezàlireàpartirduchapitre6.2.

Sitoutabienfonctionné,vouspouvezcontinueraveclamiseenservicedelaplatineASURO.

ASURO - �� -

5.�.� Linux

LetransmetteurUSBestbranchésurunportUSBlibreaumoyenducordonUSB.Vousentendrezunpetit‘Bip’lorsqueLinuxareconnuletransmetteur.Afindevérifiersil’appareilaétécorrectementidentifié,vouspouvezconsulterl’inscriptioncorrespondantedanslerépertoireproc:

foo@bar:/>cat /proc/tty/driver/usb-serialCequidoitgénéreruneéditionquicomporteaumoinslesinscriptionssuivantes(aulieudu“0:”Celapeutaussiêtre“1:”,“2:”etc.):usbserinfo:1.0driver:v1.40:module:ftdi_sioname:”FTDI8U232AMCompatible”vendor:0403product:6001num_ports:1port:1path:usb-00:11.2-1

Pour effectuer un test, vous devez configurer Minicom sur l’interface /dev/ttyUSB0 (ou 1, 2 etc...) etlesparamètressuivants:

•Bitsparseconde:2400•Bitsdedonnées:8•Parité:Aucune•Bitsd’arrêt:1•Contrôledeflux:AucunConfirmeravec“OK”.

Pourcela,ilfautéventuellementavoirlesdroitsdesource.Ilpeutégalementêtrenécessaired’accorderdesdroitsdelectureetd’écritureàl’utilisateurouaugroupe d’utilisateurs souhaités sur le Device /dev/ttyUSB?. Ceci peut se faire avec un chmod u+rw /dev/ ttyUSB0 (ou 1, 2...) ou chmod g+rw /dev/ttyUSB0 (également avec des droits de source).

Tenezmaintenantletransmetteuraveclafacedeladiodeluminescenteverslebasà10cmau-dessusd’unefeuilledepapierblanche.Sivousutilisezletransmetteursansboîtier,vousnedeveztenirlaplatinequeparlaficheouaubordafindenepasperturberlecircuit.

TapezmaintenantsurquelquestouchesdansleprogrammeTerminal.LaLEDjaunesurlaplatinedoitclignoteretlestouchestapéesdoivents’affichersurl’écran.

Sicelanefonctionnepas,continuezàlireàpartirduchapitre6.2.

Sitoutabienfonctionné,vouspouvezcontinueraveclamiseenservicedelaplatineASURO.

Electronique

ASURO - �4 -

5.�. Mise en service de la platine ASURO

Leprocesseur(IC1)n’apasencoreétéinstalléàcestade!

Maintenantcroisezlesdoigtsetmettezl’interrupteursurON.LesdeuxLED(D15,D16)devraientluirefaiblement.Sicen’estpaslecas,mettezimmédiatementl’interrupteurprincipalsurOFFetcontinuezàlireàpartirduchapitre6.3.Toutvabien?Alors,mettezl’interrupteursurOFFetimplantezl’IC1(processeur)etl’IC3(composantAND)(voirFig.5.1).

EventuellementilfautplierunpeulescontactsdesCIpourquetouslescontactspuissents’insérerdanslabonnepositiondanslesocle.LemieuxestdeprendreleCIsurlecôtéetappuyerlescontactslégèrementcontrelebordd’unetable.

Le processeur IC1 ATmega8, le composant IC3 CD4081 et le récepteur IR IC2 SFH5110-36 sont sensibles à l’électricité statique.Cela signifie qu’ils peuvent être détruits par un simple contact si la personne est chargée électriquement ce qui peut arriver en traversant simplement un tapis. Avant de manipuler ces composants, il est conseillé de se relier à la terre au moyen d’un ruban de masse ou tout du moins toucher le boîtier métallique d’un appareil ou un radiateur.

Fig. 5.1.: ASURO après l’implantation des CI

Electronique

ASURO - �5 -

Implanterlestraps(J1)uniquementencasd’alimentationparbatterie.LesfentesdesICdoiventcorrespondreàlafentedusocles’ilaétécorrectementimplanté.Leprocesseuradéjàétépro-gramméd’usineavecunauto-testetvérifieratouslescomposantsaprèslamisesoustension.

Afind’éviterlesproblèmes,lisezd’abordcomplètementlechapitresuivantavantlamisesousten-sionetrevenezensuitesurcepassage.

Allons-y!Mettezl’interrupteursurONetneperdezpasASUROdevue.

5.�.1. Eléments visuels

LaLEDd’état(D12)s’allumebrièvementenorangeetles«LEDsarrières»(D15,D16)luisentégalementmaistrèsfaiblement.Sicen’estpaslecas,mettezl’interrupteurimmédiatementsurOFF(voirchapitre6.3.3).CeciétaitlaphaseBootd’ASURO.Maintenanttouslesélémentsvisuelssontvérifiésindividuellementpendantenv.3secondesdansl’ordresuivant:

•LEDd’état(D12)verte•LEDd’état(D12)rouge•LEDavant(D11)surledessousd’ASURO•LEDarrière(D15)gauche•LEDarrière(D16)droit•Touslesélémentsvisuelsenmêmetemps

Si,contretouteattente,uneerreurseproduit,ilfautimmédiatementéteindreASUROetcorrigerl’erreur(voirchapitre6.4),puisquetouslesélémentsvisuelsquiviennentd’êtretestés,sontindispensablespourlesautrestests.

5.�.�. Phototransistors (T9, T10)

Aprèsletestdesélémentsvisuels,laLEDd’état(D12)doits’allumerenvert.Cecisignifiequelesphototransistorssontmaintenantvérifiés(env.10secondes)quisetrouventsurledessousd’ASUROetquisontnécessairespoursuivreuntracé.Lorsquelesphototransistors(T9,T10)sontéclairés,laLEDarrière(D15,D16)correspondantedoits’allumerets’éteindrelorsqueletransistorn’estpluséclairé.Letransistordroit(T10)dépenddelaLEDarrièredroite(D16)etletransistorgauche(T9)delaLEDarrièregauche(D15).IlestpossiblequelaLEDarrièrecontinueàluirefaiblementàl’étatéteint.Ceciestnormal.Encasd’erreur,l’auto-testpeutsepoursuivreetl’erreurpeutêtrecorrigéeultérieurement.

Electronique

SileprogrammeHyperTerminal(Windows)ouMinicom(Linux)tourne,letransmetteurIRestbranchéetASUROestsousétroiteobservation,vouspouvezsuivrel’auto-testsurl’écran.

ASURO - �6 -

5.�.�. Commutateurs

ASUROestarrêté,touslesélémentsvisuelssontéteints.C’estbonsigne!Maintenantlescommutateurssontvérifiés(env.15secondes).Appuyezunpeupartoutetobservezcequisepasse.

L’affectationseprésentedelamanièresuivante:K1-->LEDd’état(D12)s’allumeenvertK2-->LEDd’état(D12)s’allumeenrougeK3-->LEDavant(D11)endessousd’ASUROK4-->LEDarrièregauche(D15)K5-->LEDarrièredroite(D16)K6-->Lemoteurgauchetourne(silemoteurnetournepas,vouspouveznéanmoinspoursuivrel’auto-test.Lesentraînementssonttestésséparément.Uneerreuréventuelledansl’entraînementdumoteur(voirchapitre6.8)peutêtrecorrigéeàcemoment-là.L’activationdeplusieursdétecteursengendreunecombinaisondessignaux.Encasd’erreur,l’auto-testpeutsepoursuivre.L’erreurpourraêtrecorrigéeultérieurement.

5.�.4. Détecteur photoélectrique (Odométrie)

LaLEDdetracé(D11)endessousd’ASUROs’allumepourindiquerledébutdutestsuivant(env.15secondes)desdétecteursphotoélectriquespourl’odométrie.LaLEDd’états’allumelorsqu’unpapierblancestplacédevantledétecteur.Silepapieresttenudevantledétecteurgauche(T11),laLEDd’état(D12)s’allumeenvert.Sivoustenezunpapierdevantledétecteurdroit(T12),laLED(D12)doits’allumerenrouge.Lorsquevousretirezlepapier,laLEDs’éteint.Celasignifiequ’un passage clair/sombre est détecté et l’odométrie fonctionne. En cas d’erreur, l’auto-test peut sepoursuivreetl’erreurpeutêtrecorrigéeultérieurement.

5.�.5. Entraînements

LesdeuxLEDsarrières(D15,D16)s’allumentclairement.L’avant-derniertestcommence(env.15secondes).Lesentraînementssontvérifiés.Lemoteurgaucheestpousséenmarcheavantendépartarrêtéjusqu’aunombremaximaldetoursetensuitelerégimediminuejusqu’àl’arrêt.Lesensderotationchangeetpousséànouveaudel’arrêtjusqu’aunombredetoursmaximum.Lemoteurdroitdoitsubirlamêmeprocédure.Ensuitelesdeuxmoteurssontentraînésenmêmetemps.Etvoilàpourladernièrefoislafameuseremarque:Encasd’erreur,l’auto-testpeutsepoursuivreetl’erreurpeutêtrecorrigéeultérieurement.

5.�.6. Transmetteur IR

LorsquelaLEDd’étatclignoteenjaune,ladernièrepartie(env.15secondes)batsonplein.LetransmetteurIRenvoieoureçoitdesdonnées.Pourpouvoirlesrecevoir,ilfautbrancherletransmetteurIRassemblésurlePCetutiliserunprogrammedeterminalcommele«HyperTerminal»deWindows.LaconfigurationestlamêmequepourletestdutransmetteurIR.ASUROrépondauxsignesreçusparlessignessuivantsdansl‘alphabet.Silesdonnéesn’arriventpasdansuntempsimparti,ASUROenvoieun‘T’.Achaquesigneenvoyé,laLEDrouges’ajouteàlaLEDvertecequiexpliqueleclignotementjaune.

Electronique

ASURO - �7 -

SiuncontactvisuelestétablientreASUROetletransmetteurinfrarouge(env.50cmdedistance),un‘T’s’afficherarégulièrementdansleprogramme‘Terminal’oubienlatoucheappuyéesurlePCapparaîtunefois(unsignalenvoyéetréfléchiparletransmetteur)suivieparlalettresuivantedel’alphabet.P.ex.:Latouche«e»estappuyée=>LeprogrammeTerminalaffiche“ef”Latouche«j»estappuyée=>LeprogrammeTerminalaffiche“jk”Latouche«3»estappuyée=>LeprogrammeTerminalaffiche“34”Encasd’erreurreportez-vousauchapitre6.9.

5.�.7. Fini ?

Siuneerreurs’estproduite,ilfautcouperlabatterieetcorrigerl’erreuraumoyenduchapitre6danslamesureoùaucundescomposantsn’aétéendommagé.Ensuiteilfautrépéterl’auto-test.Aprèscela,ASUROestréellementprêtàl’emploietilestcertainquedansl’avenir,uneerreurproviendraitdulogicieletnonpasdumatériel.Sivouseffectuezunauto-testplustardaprèsavoirexécutéplusieursprogrammessurASURO,vousdevezprogrammerASUROaveclefichier«SelfTest.hex»àpartirduCD.

Electronique

ASURO - �8 -

6. Diagnostic de défaillance6.1. Le transmetteur IR RS-��� ne fonctionne pas !

6.1.1. La touche et le signe affiché ne concordent pas

TournerletrimmerTR1jusqu’acequelatouchefrappéeetlesigneaffiché,concordent.

6.1.�. Le programme Terminal n’édite pas de signes

Est-cequelecircuitProgrammateur(IC1)estmontéàl’endroit(l’encocheestdirigéeversles3diodes)?Prendrelatélécommandeinfrarouged’unappareilquelconque(magnétoscope,téléviseur,tuner,etc.)etladirigersurletransmetteurIRetappuyersurquelquestouches.Siriennesepasse,vérifierànouveaulesréglagesduportCOM.SileprogrammeTerminalaffichedessigneserratiques,lapartieréceptionfonctionne(IC2,R3,C4,D4,T1).Touteslesautrespartiesdoiventêtrevérifiées.

6.1.�. Cela ne fonctionne toujours pas

Vérifierlesensdel’implantation(polarité)etlavaleurdetouslescomposants(voirfig.4.1).Vérifierl’absencedecourts-circuitssurlesbrasuresetlaprésencedesouduressèches.Est-cequ’unpointdesoudures’estdécolléquelquepart?Sivousn’aveztrouvéaucuneerreur,vousdevezchercherlecomposantdéfectueuxaumoyenduschémadeconnexions(voirchapitreB)etd’unappareildemesureapproprié(multimètreouoscilloscope).(IC1,IC2,Q1,D4sonttrèsprobablementàl’originedeladéfaillance)

6.�. Le transmetteur infrarouge USB ne fonctionne pas

6.�.1 Windows

Est-cequeledriveraétécorrectementinstallé?Parfoisd’autresnumérosdeportsCOMsontattribuésàlaplacedeladernière.Danscecas,vouspouvezsélectionnerunautreportdansleprogrammeHyperterminaletrépéterletest.Lecaséchéant,vouspouvezégalementvérifierdanslesystèmedegestionquelportaétéattribué.

6.�.� Linux

DébranchezletransmetteurUSB,attendezquelquesinstantsetrebranchez-le.Siaprèscela,l’inscriptiondanslerépertoireprocn’apparaîttoujourspas,ilpeutêtreutiled’installerunnouveaunoyaudesystèmed’exploitation.

6.�. Les LED arrières (D15, D16) ne luisent pas après la mise sous tension!

6.�.1. Aucune des deux LED ne luit

Observezbienetobscurcissezlapièce.Vousnevoyeztoujoursrien?Alorsvérifiezlespointssuivants:

-Est-cequeles4pilessontenplaceetchargéesouest-cequelabatterieestchargée?- Est-ce que le câble de la batterie a été soudé avec la bonne polarité ? (rouge Bat+ / noir Bat-)-Est-cequeladiodeD9(1N4001)aétéimplantéeaveclabonnepolarité?- Est-ce que R22 présente la bonne valeur? 470Ω (jaune, violet, marron, orange)-Vérifiezéventuellementaussi: R18 4,7KΩ Ω (jaune, violet, rouge, orange) R19 1KΩ (marron, noir, rouge, orange) R20 4,7KΩ Ω (jaune, violet rouge, orange) R21 1KΩ (marron, noir, rouge, orange)

ASURO - �9 -

6.�.�. Seulement 1 LED sur les � s’allume

Est-cequelesdiodes(boîtierrose)D13(gauche),D14(droite)ainsiquelesphototransistors(boîtiertransparent)T11(gauche),T12(droite)ontétéimplantésaubonendroit(voirfig.4.3)etaveclabonnepolarité?

Est-cequelesrésistancessuivantesprésententlabonnevaleurR18,R19(gauche)etR20R21(droite)?4,7KΩ (jaune, violet, rouge, orange)1KΩ (marron, noir, rouge, orange)

Est-cequelescomposantssontimplantésaubonendroit?(Regardezl’impressionsurlaplatinepourlesrésistances!)

6.Diagnosticdedéfaillance

6.�.�. La LED d’état (D1�) ne s’allume pas en � couleurs après la mise sous tension

LaLEDd’étatnes’allumepasdutout=>Voir6.4!

La LED d’état vacille => Tension de batterie trop faible => Changer les piles/batteries. Si elles sont neuves/chargées,vérifiezlesrésistancesR12etR13.12KΩ ( marron, rouge, noir, rouge, marron)10KΩ ( marron, noir, noir, rouge, marron)

6.4. Un élément d’affichage ne fonctionne pas

Est-cequeleprocesseuraétécorrectementimplanté?(polarité!)

6.4.1. La LED d’état D1� ne fonctionne pas

VérifierlapolaritédelaLEDD12.VérifierlarésistanceR10,R31.470Ω ((( (99(jaune, violet, marron, orange)

Untestsimpleconstitueàretirerleprocesseur(IC1)etd’établirlecontactentrebroche7*(VCC)etbroche14(LEDd’états’allumeenvert)oubroche4(LEDd’états’allumeenrouge).Sicetestréussit,ledéfautsetrouvedanslepro-cesseurouoscillateurouunepisteestinterrompue.

*Broche1setrouveenhautàgauche.Ensuiteoncomptedelagaucheverslebasetdeladroiteverslehaut

6.4.�. La LED avant D11 ne fonctionne pas

VérifierlapolaritédeD11.

VérifierlarésistanceR9.220Ω (rouge, rouge, marron, orange)

Untestsimpleconstitueàretirerleprocesseur(IC1)etd’établirlecontactentrebroche7*(VCC)etbroche12(LEDavants’allumeenrouge).Sicetestréussit,ledéfautsetrouvedansleprocesseurouoscillateurouunepisteestinterrompue.

*Broche1setrouveenhautàgauche.Ensuiteoncomptedelagaucheverslebasetdeladroiteverslehaut

ASURO - �0 -

6.Diagnosticdedéfaillance

6.4.�. La LED arrière gauche D15 ne fonctionne pas

VérifierlapolaritédeD15.

VérifierlesrésistancesR19,R18.1kΩ (marron, noir, orange, orange)4,7 kΩ (jaune, violet, rouge, orange)

Untestsimpleconstitueàretirerleprocesseur(IC1)etd’établirlecontactentrebroche7(VCC)etbroche24(LEDarrièregauches’allumeenrouge).Sicetestréussit,ledéfautsetrouvedansleprocesseurouoscillateurouunepisteestinterrompue.

6.4.4. La LED arrière droite D16 ne fonctionne pas

VérifierlapolaritédeD16.

VérifierlesrésistancesR21,R20.1kΩ (marron, noir, orange, orange)4,7 kΩ (jaune, violet, rouge, orange)

Untestsimpleconstitueàretirerleprocesseur(IC1)etd’établirlecontactentrebroche7(VCC)etbroche23(LEDarrièredroites’allumeenrouge).Sicetestréussit,ledéfautsetrouvedansleprocesseurouoscillateurouunepisteestinterrompue.

6.5. Le Détecteur odométrique (T9, T10) ne réagit pas

VérifierlapolaritéT9,T10.

Vérifier les résistances R14 20KΩ (rouge,noir,orange,or) , R15 20KΩ (rouge,noir,orange,or).VérifierégalementsiR15n’apasétéimplantéàl’enversavecR23ouR28!

Avecunmultimètrevouspouvezmesurerlesignaldudétecteursurlesbroches25ou26lorsqueleprocesseur a été retiré. (Obscur / 0V, clair / VCC).

6.6. Un commutateur ne fonctionne pas correctement

6.6.1. Plusieurs commutateurs ont été actionnés

Vérifier R12 12KΩ (marron,rouge,noir,rouge,marron) et R13 10KΩ (marron,noir,noir,rouge,marron).Ilfautvérifier:R25,R26,R27,R28,R29,R30,R32!

R24 1KΩ ( marron,noir,noir,marron,marron)R25 2KΩ ( rouge,noir,noir,marron,marron)R26 2KΩ ( rouge,noir,noir,marron,marron)R27 8,2KΩ ( gra, rouge,noir,marron,marron)R28 16KΩ ( marron,bleu,noir,rouge,marron)R29 33KΩ ( orange,orange,noir,rouge,marron)R30 68KΩ ( bleu,gr,noir,rouge,marron)R32 2KΩ ( rouge,noir,noir,marron,marron)

Danscertainscasisolés,ilpeutarriverqu’enraisondestolérancesdescomposants,l’affichagen’estpasreconnumaiscecipeutêtrecorrigéultérieurementparlelogiciel.

ASURO - �1 -

6.Diagnosticdedéfaillance

6.6.�. Le comportement de l’affichage indique une inversion des commutateurs

Lesrésistancesdescommutateursenquestionontétéinversées.

Ilfautvérifier:R24 1KΩ ( marron,noir,noir,marron,marron)R25 2KΩ ( rouge,noir,noir,marron,marron)R26 2KΩ ( rouge,noir,noir,marron,marron)R27 8,2KΩ ( gris, rouge,noir,marron,marron)R28 16KΩ ( marron,bleu,noir,rouge,marron)R29 33KΩ ( orange,orange,noir,rouge,marron)R30 68KΩ ( bleu,gris,noir,rouge,marron)R32 2KΩ ( rouge,noir,noir,marron,marron)

6.6.�. Il subsiste toujours un problème

Vérifier les résistances R23 1M ΩΩ (marron,noir,gr,or), R24 1KΩ ( marron,noir,rouge,or),R12 12KΩ ( marron,rouge,noir,rouge,marron), R13 10KΩ ( marron,noir,noir,rouge,or) et C7 220 F/10V!

6.7. Une barrière lumineuse réflectrice ne fonctionne pas

6.7.1. Aucune des barrières lumineuses ne fonctionne

VérifierlarésistanceR22!470 Ω ( jaune,violet,marron,or)

VérifierlapolaritédeD13etD14.D13etD14sontlesdeuxboîtiersbipolairesrosesprésentantunpetitpicsuruncôté.Cepicdoitregarderversl’extérieurdelaplatine.

6.7.�. La barrière lumineuse gauche ne fonctionne pas

VérifierlarésistanceR18!4,7KΩ ( jaune,vio,rouge,or)

Vérifierl’implantationdeT11.T11estleboîtierbipolairetransparentprésentantunpetitpicquidoitregarderversl’extérieurdelaplatine.

6.7.�. La barrière lumineuse droite ne fonctionne pas

VérifierlarésistanceR20!4,7KΩ ( jaune,vio,rouge,or)

Vérifierl’implantationdeT12.T12estleboîtierbipolairenoiroutransparentprésentantunpetitpicquidoitregarderversl’extérieurdelaplatine.

Avecunmultimètrevouspouvezmesurerlesignaldudétecteursurlesbroches24ou23lorsqueleprocesseur a été retiré. (Clair 0V, obscur / VCC).

ASURO - �� -

6.Diagnosticdedéfaillance

6.8. Un entraînement ne fonctionne pas

6.8.1. Aucun entraînement ne réagit

Vérifierlapolaritéetl’implantationd’IC3.

6.8.�. Le moteur gauche ne tourne pas du tout ou seulement dans un sens

IlfautcontrôlertoutlepontmoteurconstituédestransistorsT1,T2,T3,T4(est-cequelesbonstransistorsontétéimplantésauxbonsendroits),desdiodesD1,D2,D3,D4(polarité!)etdesrésistancesR1,R2,R3,R4.

T1,T3(BC327-40ouBC328-40),T2,T4(BC337-40ouBC338-40)

R1, R2, R3, R4 1KΩ ( marron,noir,rouge,or)

6.8.�. Le moteur droit ne tourne pas du tout ou seulement dans un sens

IlfautcontrôlertoutlepontmoteurconstituédestransistorsT5,T6,T7,T8(est-cequelestransistorsontétéimplantésauxbonsendroits),desdiodesD5,D6,D7,D8(polarité!)etdesrésistancesR5,R6,R7,R8.

T5,T7(BC327-40ouBC328-40),T6,T8(BC337-40ouBC338-40)

R5, R6, R7, R8 1KΩ ( marron,noir,rouge,or)

6.8.4. Un moteur tourne dans le mauvais sens

Ilfautintervertirlesdeuxcâblesdeconnexionsurlemoteurquitournedanslemauvaissens.

6.9. Interface IR

6.9.1. ASURO n’émet pas de signaux

VérifierlapolaritédeladiodeIRD10.Est-cequelarésistanceR16estcorrecte?220 Ω ( rouge,rouge,marron,or)

6.9.�. ASURO ne reçoit pas de signaux

UncontactvisueldoitexisterentreletransmetteurIRetASURO(distanceenv.50cm)etletransmetteurdoitêtreenétatdefonctionnement(voirchapitre6.1).

Est-cequeIC2estcorrectementimplanté?VérifierlarésistanceR17etC2!470 Ω ( marron,noir,marron,or)100nF(impression104)

Sivousn’aveztoujourspasidentifiél’erreur,réfléchissezsivousn’avezpas«soudé»l’IC2aulieudelebraser.L’IC2estsensibleàlachaleuretapuêtreendommagépendantl’implantation.Danscecas,vousdevezvousprocureretimplanterunnouveauCI(SFH5110-36).

ASURO - �� -

6.Diagnosticdedéfaillance

6.9.�. Cela ne fonctionne toujours pas parfaitement

VérifiezlapolaritédeC8.220 F/ au moins 10V

SilatransmissiondedonnéesduPCversASUROposetoujoursdesproblèmes,vousdeveztournerunpeuletrimmerTR1dutransmetteur.

Lacolleàdeuxcomposantsalaréputationd’avoiruneffetsensibilisantcequisignifie:ondéveloppedesallergiescontredeplusenplusdematières.Ilnefautdoncàaucunprixqu’elleentreencontactaveclapeau.Utilisezdesgantsenvinyle.Encasdecontact,lavezvosmainsimmédiatementetsoigneusementavecdusavon!Al’origine,lacollerapideaétédéveloppéepourlachirurgie.Ons’enaperçoitlorsquedeuxboutsdepeaucollentensembleenquelquessecondes.Sicelaseproduitsurlesdoigts,vouspouvezlessépareràl’aided’eauchaude,desavonetd’unpeudepatience.Enaucuncascelanedoitseproduiresurleslèvresoulespaupières!Nevousgrattezenaucuncaslevisageetnevousfrottezjamaislesyeuxlorsquevousmanipulezunecollerapide!

ASURO - �4 -

7. Derniers réglagesLubrifierlégèrementlesessieuxetplacezl’engrenageaveclebeaumotifnoiretblancsurl’essieucourt.Placezlepneusurl’engrenagecomportantles50et12dents.Montezl’ensemblesurl’essieuarrièreetfixez-leaumoyend’unebaguedefaçonàcequel’ensemblepuissetournerfacilement.

Déplacezlemoteurquiétaitfixéprovisoirement,jusqu’àcequ’ilsoitdroit,quesonpignonmordesurtoutelalargeurdupremierengrenageetquepignonetengrenagetournentfacilement(répéteréventuellementl’auto-testcompletpourvérifiersitouttournelorsdutestmoteur).

Lorsquevousaveztrouvélabonneposition,tenezfermementmoteuretplatineetfixezlesdeuxensembleenmettantquelquesgouttesdecollerapidesurlecôtédanslafenteentrelemoteuretlaplatine.N’oubliezpasquemêmelacollerapidemetparfoisquelquesminutesàdurcir.

Appliquezmaintenantdelacollerapidesurl’arêtedechaquecôtédelademieballedeping-pongetcollez-lasurledessousdelaplatinedirectementderrièrelescomposantsdesuividetracé(voirFig.7.1)etlaissezsécher.

Fig. 7.1.: ASURO fini

7.Derniersréglages

ASURO - �5 -

Partie III. Informatique

8. Installation du logiciel et premières étapesInsérezleCD-ROMd’ASUROdanslelecteur.Ildémarreautomatiquement.Siledémarrageautomatiqueaétédésactivé,vousavezlapossibilitéd’ouvrirleCDavecWindowsExplorer.Aprèslasélectiondelalangue,voustrouvereztoutdanslechapitre«Software»dontvousavezbesoinpourl’utilisationd’ASURO.Commencezparinstallercesprogrammes.L’installationducompilernécessitedesdroitsd’administrateur.Sil’utilisateuractuelnepossèdepascesdroits,ildoitfermerlasessionetouvrirunenouvellesessioncommeadministrateur.

Pendantl’installationdulogiciel,lesétapessuivantessedérouleront:

1.Installationdel’outilFlashpourtransmettresespropresprogrammessurASURO2.Installationd’unéditeurdeprogramme(ProgrammersNotepad2,PN2)etd’uncompileur(WinAVR)3.Copied’unprogrammededémonstrationsurledisquedur4.InstallationdesoutilsMAKEetCLEANdanslemenudel’éditeur(PN2).

8.1 Windows

8.1.1 Outil Flash

Vouspouvezsoitcopierl’outilFlashdansunrépertoiresurledisquedur(p.ex.:C:\Programme\Flash)oul’exécuterplustarddirectementàpartirduCD.Danstouslescas,ilestutiledeplacerunraccourcisurlebureaud’oùvouspourrezdémarrerl’outilFlashrapidement.

Cliquezsur[Save]

8.1.� Installation de l’Editeur de programme et du Compileur

L’installationducompileurnécessitedesdroitsd’administrateur(parcequel’enregistrementestmodifiépendantl’installation).Sil’utilisateuractuelnepossèdepascesdroits,ildoitfermerlasessionetouvrirunenouvellesessioncommeadministrateur!

Cliquezsur[Install]

COMPILER WinAVR (�00�091�)

WINDOWSestunemarqueedeposedeMicrosoftCorporation.

ASURO - �6 -

8.Informatique

Lafenêtresuivantes’affiche:

Cliquezsur[IAgree]

Lafenêtresuivantes’affiche:

Cliquezsur[Next]

ASURO - �7 -

Lafenêtresuivantes’affiche:

Cliquezsur[Install]

Lafenêtresuivantes’affiche:

Attendez…

8.Informatique

ASURO - �8 -

…jusqu’àcequel’éditeurProgrammersNotepad2(PN2)s’afficheaveclefichierREADME.txt.

Fermezmaintenantlafenêtre‘ProgrammersNotepad2’.

Surlebureauapparaîtleraccourci‘ProgrammersNotepad2’:

L’éditeurdeprogrammeetlecompileursontmaintenantinstallés.

8.Informatique

ASURO - �9 -

8.1.�. Copie des programmes de démonstration du CD ROM sur le disque dur

Copierledossier‚ASURO_src’àpartirduCDROMdansundossier(p.ex.‘C:\ASURO_src’)surledisquedur.

Mettezlesfichierscopiésensurbrillancedanslerépertoirecibleetfaitesunclicdroitsurlasourispourdésactiverlaprotectiond’écrituredanslesPropriétés.

Ajout d’une fonction de compilation dans le menu de l’éditeur de programme

Ouvrez‘ProgrammersNotepad2’endouble-cliquantsursonraccourcisurlebureau:

Sélectionnez‘Options’danslemenu‘Tools’.

Lafenêtre‚Options’s’affiche.

SélectionnezmaintenantTools.

8.Informatique

ASURO - 40 -

Sélectionnez ‘C/C++’ dans ‘Scheme’ sur le côté droit.

‘C/C++’ est sélectionné.

Cliquezsur[Add](…pourajouterunnouveloutil)

8.Informatique

ASURO - 41 -

Lafenêtre‘NewTool’s’affiche.

Saisirlesréglagessuivantsoulessélectionneràl’aidedelatoucheParcourir :Name:makeCommand:C:\ASURO_src\FirstTry\Test-all.batFolder:C:\ASURO_src\FirstTry

Cliquezsur[OK]

UnnouveloutilPNdunomde‚Make’estimmédiatementdisponibledanslemenuprincipal‚Tools’.

(Sil’outilestactivé,unfichierBatchdunomdeTest-clean.batestexécutéquicompileleprogrammetext.c–enmêmetempsqueasuro.c–etgénèreunfichiertext.hex)

8.Informatique

ASURO - 4� -

Installation d’une fonction de Nettoyage dans le menu de l’éditeur de programme

Sélectionnez à nouveau ‚Options’ dans le menu principal ‚Tools’ et encore une fois dans ‚Scheme’: „C/C++“

Cliquezsur[Add]pourajouterunautreoutil

8.Informatique

ASURO - 4� -

Lafenêtre‘NewTool’s’affiche.

Saisirlesréglagessuivantsoulessélectionneràl’aidedelatoucheParcourir :Name:cleanCommand:C:\ASURO_src\FirstTry\Test-clean.batFolder:C:\ASURO_src\FirstTry

Cliquezsur[OK]

UnnouveloutilPNdunomde‚Clean’estimmédiatementdisponibledanslemenuprincipal‚Tools’.(Sil’outilestactivé,unfichierBatchdunomdeTest-clean.batestexécutéquieffacedesfichierstemporairesdansledossierC:\ASURO_src\FirstTry.

8.Informatique

ASURO - 44 -

Danslafenêtredesoptions,lesdeuxfonctionssupplémentaires‘make’et‘clean’doiventapparaîtredanslemenu‚Tools’.

Cliquezsur[OK].

8.Informatique

ASURO - 45 -

Cliquezsur[Open].

Atitred’essai,ouvrezlefichier’C:\ASURO_src\FirstTry\test.c’:

8.Informatique

ASURO - 46 -

Lefichiertest.cs’ouvre.

Lorsquevoussélectionnez‚Tools’…

…vousvoyezlesdeuxnouveauxoutils‚make’et‘clean’.

Cliquezsur‚make’

8.Informatique

ASURO - 47 -

Lefichiertest.c(avecasuro.c)seramaintenantcompilé…

…etsileprogrammenecontientpasd’erreurs(cequiestprobablepuisqu’ils’agitduprogrammededémonstration)lemessages’affiche:Errors:none.

Ques’est-ilpassé?Unfichiertest.hexaétégénéréàpartirdufichiertest.c(etasuro.c).Cefichierreprésenteleprogrammetraduitenlangagemachinequiestmaintenantprêtàêtrechargédanslamémoired’ASURO.Leprogrammelui-mêmenefaitrienmaisnousenauronsbesoinultérieurementpourtesterl’outilFlash.

Commentest-cequecelaafonctionné?Lafonction‘make’appellelefichierBatchTest-all.bat(unfichierBatchcontientunelistedelignesdecommandesquisontexécutéesl’uneaprèsl’autre).LefichierTest-all.batexécutelacommande‘makeall’.‘make’exécutetoujoursunfichiermakequidoitsetrouverdanslemêmedossier(lorsdelaprogrammationd’ASURO)quelefichierTest-all.bat.

UnfichierMakeestunfichierdetextequidéterminelafaçondecompilerunouplusieursprogrammes.Celaresteencorerelativementsimplesileprogrammen’esttraduitqu’àpartird’unseulfichiermaisdepuisquedessystèmesd’exploitationentierssontécritsenCetquelecodeestrepartisurplusieursfichiersquidoiventêtretraduitsetliésdansunordreprécis,mêmeunfichierMakepeutdevenirtrèscompliqué.Leterme‘all’appellelaparticule‚all’danslenomdefichierMakequisignifiequ’ilfauttraduireunprojetcompletetnonpasseulementcertainesparties.

8.Informatique

ASURO - 48 -

LefichierMakequifaitpartiedenotreprogrammededémonstrationestécritdetellefaçonqu’ilcompileunfichierdunomdetest.cavecasuro.c(quicontientquelquesfonctionspré-définies)etgénèreunfichier.hexquipeutêtrechargételqueldansASURO.

Attention! Cela signifie aussi que tant que le fichier Make n’est pas modifié mais seulement copié, votre propre programme doit toujours s’appeler test.c.

SivousvouleztoutsavoirsurlesfichiersMake(cequin’estpasnécessairepourlespremierspas),vouspouvez consulter la documentation p.ex. sur le site Internet http://www.gnu.org/directory/make.html.

Les bases de la programmation d’ASURO sont expliquées au chapitre 9.

Lacompilationd’unprogrammegénèrequelques«fichierssecondaires»quinesontrequisesquependantlatraductionetdeviennentensuitesuperflus.L’outilnouvellementcréé‘Clean’permetdeleseffacer.

WWW.AREXX.COM

8.Informatique

ASURO - 49 -

Lorsdel’ouverture…

…vouspouvezvoirlesfichiersgénérés…

(Cliquezsur[Cancel])

…etaprèsl’exécutionde‘clean’…

8.Informatique

ASURO - 50 -

…vousallezvoir…

…quelesfichiersgénérésontétéeffacés.

Commentcelas’est-ilproduit?

L’outil‚clean’aappelélefichierBatchTest-clean.batquiadémarréMakeavecleparamètre‚Clean’.Cecientraînel’exécutiondelafonctionCleandanslefichierMakeeteffacetouslesfichierssuperflus.

8.Informatique

ASURO - 51 -

8.�. LINUX

L’installationdulogicielrequiertdesdroits‚Root’.SoitvousvousdéloggezetvousvousloggezànouveauentantqueRootouvousouvrezuneshelletvousacquérezdesdroitsRootavec„su“.

8.�.1 Outil Flash

InsérerleCD-ROMASURO,lemonterlecaséchéantetcopierlesdeuxoutilsFlash“asuroflash”et“asurocon” du répertoire “/Linux/Tools/” dans le répertoire “/usr/local/bin”.

Autorisez ensuite l’exécution “chmod a+x /usr/local/bin asurocon asurofl ash”.Si un “asuroflash” saisi dans une shell n’est pas localisé, il faut ajouter le chemin “/usr/local/bin” dans la variable%PATH-Variableouappelerleprogrammeaveclechemincomplet.

Le premier programme a été traduit sans erreurs.

Fig.8.1.:OutilFlash

8.Informatique

ASURO - 5� -

8.�.� Compiler

PourinstallerlecompilerGnupourprocesseursAVR,insérezleCD-ROMASUROetinstallezàpartirdurépertoire “/Linux/Compiler/” au moins les paquets suivants dans l’ordre indiqué:

1.avr-binutils-....rpm2.avr-gcc-....rpm3.avr-libc-....rpm

L’installationestplusquesimple!Entrertoutsimplementlacommande:rpm-i<paket>.rpmdanslamachinepossédantlesdroitsRoot.

Fini!

LeséditeursExmacs,KateouKeditconviennentparfaitement.Atitred’essai,vouspouvezcopier(commeutilisateur normal) les fichiers de démonstration du répertoire “/ASURO_src/FirstTry/” du CD dans le répertoire Home p.ex. sous “~/ASURO/”.

Ensuitevousouvrezuneshell,vousallezdanslerépertoireci-dessusetvousentrez‚make’.Sitoutaétécorrectementinstallé,celaseprésenteraàpeuprèsdelamanièresuivante:(voirfig.8.2)

Fig. 8.�.: Make all

8.Informatique

ASURO - 5� -

8.�. Flash – L’Outil de Programmation d’ASURO

Pourcela,nousavonsbesoinduprogrammeFlash(voirfig.8.3).

Afinquetoutsepassebien,vousdevezévidemmentconnecterl’interfaceRS232ouletransmetteurUSB-IR.Démarrezensuiteleprogrammeetsélectionnezl’interfacequiafonctionnélorsdelamiseenservice.Sélectionnez le fichier « Test.hex » du répertoire “C:\ASURO_src\FirstTry” (ou ~/ASURO/).

PréparezASURO(finietprêtàl’emploi)etcliquezsurleboutonProgrammedansl’outilFlash.ASUROdoitêtreencontactvisuelavecletransmetteurIR(env.50cmdedistanceentreletransmetteurIRetASURO,lesdeuxfacesd’implantationsontdirigéesl’uneversl’autreetaucunobstaclenesetrouvedanslechemindelalumière).

MettezASUROsoustension(S1surON)avantquelabarred’étatnesoitcomplètementarrivéesurladroite.Sivousn’avezpasétéassezrapideousilaprisedecontactnes’estpascorrectementdéroulée,éteignezASURO,cliquezdenouveausurProgrammeetmettezASUROsoustension.

Silaprisedecontactaréussi,vousvoyezsurl’indicationd’étatetdanslafenêtreduprotocolequelefichierTest.hexesttransmissurASUROoùilestsauvegardédanslamémoireFlashduprocesseurafind’êtretoujoursdisponible,mêmeaprèslacoupuredel’alimentation.

Sileprocessuss’estcorrectementdéroulé,vousdevezéteindreetremettreASUROsoustensionafindedémarrerleprogramme.LeprogrammerécemmentécritestexécutéetlaLEDvertes’illuminebrillamment.

8.�.1. Fonctionnement du programme Flash

DèsqueleprogrammeFlashestexécuté,l’ordinateuressaied’établiruneliaisonavecASUROpendant10secondes.SivousmettezASUROsoustension,laLEDd’états’allumeen2couleurspendantenv.1seconde.CeciestlaphaseBoot.ASUROvérifiesilePCaunnouveaulogicielpourluiqu’ilchargelecaséchéant. Après une nouvelle mise hors/sous tension, ce logiciel démarrera.

Fig. 8.�.: Outils Flash pour Windows et LINUX

8.Informatique

ASURO - 54 -

8.4. Erreurs Flash

Leserreurssuivantespeuventseproduirependantleflashage:

•“c”ChecksumError.ASUROareçud’autresdonnéesquecellesenvoyéesparlePC.Cecipeutêtreprovoquépardeséclairagesparasites(p.ex.desnéons),despetitescoupurespendantlecontactvisueletautres.

•“t”Timeout.LecontactvisuelavecASUROaétéinterrompu.

•“v”VerifyError.ASUROaécritdesdonnéeserronéesdanssamémoireFlash.Celanedevraitnormalementpasseproduireetcelaindiquequelamémoirenon-volatile(Flash-EEPROM)estenfindeviecequin’arrivetypiquementqu’après10.000programmations.Après10tentativesvainesdecorrigerl’erreur,leflashageestarrêté.

SideserreursChecksumseproduisentfréquemmentpendantleflashage,ilest souventsuffisantd’éteindreoudebaisserunpeulalumièredelapièce,notamment quandils’agitdetubesfluorescents.

Appuyeztoujoursd’abordsurleboutonProgrammeetmettezASUROsoustension

ensuitesinonuntéléchargementdelogicieln’estpaspossible!

8.5. Votre premier programme personnel

Avantdepasseràunpetittourd’horizondelaprogrammationC,voiciunpremierpetitprogrammepersonnalisé.Aceteffet,nouschargeonslefichiertest.cdurépertoireC:\Mesfichiers\ASURO_src\FirstTryaumoyendubloc-noteProgrammersNotepad(Linux:ouunautreéditeur):

#include“asuro.h”intmain(void){Init();while(1);return0;}

Pourlespremiersessais,ilestimpératifqueleprogrammeportetoujourslenomdetest.ccarlefichierMakededémofourni(unfichierquidécritlatraductiond’unprogramme)estconstruitdecettefaçon.Aussi,ilestplussimpledecontinuerl’écritureàpartird’unexempleexistant.Plustard,vouspourrezconcevoirvospropresprogrammesetécrirevospropresfichiersMake.

8.Informatique

ASURO - 55 -

Leprogrammechargéseramodifiécommesuit(Attentionàl’orthographeexacte!Veillezauxmajusculesetminuscules!):

#include“asuro.h”intmain(void){Init();StatusLED(RED);while(1);return0;}

SélectionnerensuitedenouveauMakedanslemenuTools(sousLinux:Taper„make“dansuneshell dans le répertoire “~/ASURO/” ou bien configurer l’éditeur en conséquence et attendre la compilationjusqu’àcequ’iln’yaitplusdenouveauxmessagesdanslafenêtred’état).VérifiersiProcessExitCode:0s’afficheenbasdelafenêtred’état.Celasignifiequelecompileuracomprisettraduitleprogramme.Siunautrecodes’affiche,vousdevezchercherl’erreuràl’aidedesmessagesd’erreur.

Danslaplupartdescas,ilsuffitdecommencerlarecherchedanslaligneoù,d’aprèslafenêtred’état,lapremièreerreurestapparue.Lenumérodeligneàlaquellesetrouvelecurseurs’affichetoutenbasàgauchedansl’éditeur.

Silacompilations’estdérouléesanserreurs,lenouveauprogrammeestprêtauflashage.Aceteffet,ilfautconnecterletransmetteurIR,démarrerl’outilFlash,sélectionnerlefichiertest.hexetlabonneinterfaceCOM,mettreASUROencontactvisuelavecletransmetteurIR,cliquersurleprogramme,mettreASUROsoustensionetattendrelatransmissionduprogramme.

Si,d’aprèslafenêtred’état,latransmissions’estdérouléesansheurts,éteindreASURO,unesecondedesuspenseet….BRAVO…laLEDd’états’allumeenrouge.Afind’éviterd’écriredeslignesdeprogrammationsansavoirlesconnaissancesnécessaires,nousvousrecommandonsdelirelechapitresuivantavantdevouslancerdansd’autresexpériences.

8.Informatique

ASURO - 56 -

9. C pour ASUROCechapitretraitedulangagedeprogrammationC.SeulslespartiesdeCnécessairesàlaprogrammationd’ASUROserontexpliquées.Ilnes’agitenaucuncasd’uneintroductioncomplètedanslelangageC.Pourcela,ilexistedesouvragesspécialisés.Caétéchoisicommelangagedeprogrammationparcequ’ilestlargementrépanduetqu’ilexisteaumoinsuncompileurCpourpresquechaqueprocesseur.

PourASURO,nousavonsretenulecompileurGNU-Ccarils’agitd’unprogrammegratuit(freeware)quigénèrequand-mêmeuncodebienoptimisépourl’ATmega8,leprocesseurd’ASURO.

SivoussavezdéjàprogrammerenC,allezdirectementauchapitre9.2carcequisuitneprésenteabsolumentaucunintérêtpourvous.Nousnedonnonsiciquelesélémentsdelangagelesplusindispensablespourtransmettredelafaçonlaplussimplelesconnaissancesqu’ilfautabsolumentavoirpourlefonctionnementd’ASURO.

Etnevousenfaitespas:sivouspensezconsciencieusementàvosparenthèsesetpoints-virgules,lelangageCn’estpassidifficilequecela.

9.1. Bases de la Programmation en C

9.1.1. Généralités

LeprocesseurtraitetoujoursunprogrammeCexpressionaprèsexpressionduhautverslebas2.Uneexécutionsimultanéededeuxcommandesn’existepas,entoutcaspasdansleprocesseurd’ASURO.

Ilfautdoncréfléchird’aprèsceprincipe:Unecommandeaprèsl’autre.Lesespacesaudébutdeslignesdanslesexemplesnesontpasforcémentnécessairesmaistrèsutileslorsqu’ilfautmaintenirunecertaineclartédansdesprogrammespluslongs.

ChaqueexpressionenCsetermineparun«;»cequipermetaucompileurdedifférencierlesexpressions.

Sivousvoulezréunirplusieursexpressionscequiseranécessairepourlesfonctions,bouclesouconditions(nousyreviendronsplustard),leblocd’expressionsestencadrésd’accolades(«{«,«}»).

Exemple:

#include “asuro.h”int main (void) {/* Tout ce qui sera marqué ici doit rentrer dans un bloc */}

1P.ex.:BrianW.Kerninghan,DennisM.Ritchie:“ProgrammiereninC”,HanserVerlag,ISBN3-446-15497-3

2Desméthodesquiinterviennentdansledéroulementséquentieldescommandes,sontappelés„Flux“etserontexpliquésplus

loindanslechapitre

ASURO - 57 -

Sivousvoulezexclurecertaineslignesducode,vousdevezcommencerleblocdecommentairepar “/*” et le terminer par “*/ ”. Pour n’exclure qu’une seule ligne, il suffit de placer un “//“ devant la ligne3enquestion.Decettefaçon,lecompileurignorelespartiesexclues.Celapermetd’insérerdescommentairesdansleprogrammesansperturberlatraduction.

9.1.�. Variables et Types de données

Lesvariablessontdes„récipients“pourlesdonnées.Aucoursd’unprogramme,vouspouvezlesdécrire,leslireetlesmodifier.Pourpouvoirutiliserunevariable,vousdevezd’abordladéclarer.Cecidétermineletypedelavariableetéventuellementaussisavaleurinitiale.Letypedéfinitlegenredenombresvouspouvezmémoriserdanslavariable(nombresentiers,nombresentierspositifs,fractionsdécimales…).

Lenomd’unevariabledoitcommencerparunelettre(«_»estégalementconsidérécommeunelettre)etpeutcontenirdeschiffresmaispasdecaractèresspéciaux.Ilfautdifférencierentrelesminusculesetmajuscules;doncxetXsontdesvariablesdifférentes.Traditionnellement,lesnomsdevariablessontdonnésenminuscules.Lesdésignationssuivantessontdéjàréservéesetnepeuventpasêtreutiliséescommenomsdevariables:

auto default float long sizeof union break do for register static unsigned case double goto return struct void char else if short switch volatile const enum int signed typedef while continue extern

Lestypesdedonnéessuivantesprésententunintérêtpourlaprogrammationd’ASURO:

Typ Plage de valeur Observation

char -128...+127 valeurunbyte;peutprendreuncaractèredublocdecaractères

uncaractèredchar 0...255 charsanscaractèreint -32768..+32767 magnitudeminimalesignéeuncaractèredint 0...65535 intmagnitudeminimalenonsignéefloat valeurdesimpleprécision

3 “//” est un caractère de commentaire selon le standard C++. Comme le compileur utilisé est en fait uncompileurC++,celafonctionnemaispeutprovoquerdesmessagesd’erreurschezd’autres compileurs

9. C pour ASURO

ASURO - 58 -

9. C pour ASURO

Ladéclarationsefaitsoit„hors“delafonctionmain()commevariableglobale(celasignifiequelavariables’appliqueàlatotalitéduprogramme),àl’intérieurdelafonctionmain()(danscecas,ellenes’appliquequ’aucodedeprogrammationquisetrouvedanslafonctionmain())ouàl’intérieurdesaproprefonction(danscecas,ellenes’appliquequ’àcelle-ci).

Leplusbellevariablenesertàriensil’onnesaitpascommentonpeutentrerousortirdesdonnées.

Ilsuffitd’uneaffectationpourentrerdesdonnées:

a=17; // a a maintenant la valeur de 17

oud’uncalcul:

a=17+23; // a est maintenant 40 b=a+3; // b est maintenant 43 b=b*2; // b est maintenant 86

Etmaintenantdanstoutleprogramme:

#include“asuro.h” intmain(void){ int i; // i peut prendre des nombres entre -32768 et 32767 caractère char; caractère // peut prendre des nombres entre -128 et 127 // i=3; caractère =17+i; // caractère est maintenant 20 i=i/2; // Division par 2, il faut toujours arrondir; i est donc 1! return0; }

Ilexistequelquesabréviationspratiques.Onpeutaussiécrire

i=i+1;

comme:

i++;et

i=i-1;

correspondà: i--;

ASURO - 59 -

9. C pour ASURO

9.1.�. Directives de Compilation

Vousvousêtescertainementdéjàdemandéàquoiservaitle#include“asuro.h”.Ladirective#includesignifiesimplementqueletextequisetrouvedanslefichierindiqué,estinclusdansleprogrammeetseratraduitlorsdelacompilation.Danslecasprésent,certainesroutinesquisontnécessairesaufonctionnementdurobot,sontrenduesdisponibles.

Uneautredirectiveimportante(etilyenad’autresquidépasseraientlecadredecetouvrage)estcequel’onappelleleremplacementdetexte.Celui-cialaforme

#defineNAMEtextederemplacement

etestessentiellementutilisépourladéfinitiondeconstantes.

SilesymboleNAMEapparaîtdanslecode,ilestremplacéautomatiquementparletextederemplacement.LeNAMEdans#definerevêtlamêmeformequelesnomsdevariables.EnlangageC,ilestdevenuusueld’utiliserdesmajusculespourNAMEdans#define.

Exemple:

#include“asuro.h” #defineVALEURINITIALE33 intmain(void){ inti; i=VALEURINITIALE; // i est maintenant 33 return0; }

Aufait,lesdirectivesdecompilationnesontpassuiviesd’unpoint-virgule!

9.1.4. Conditions

Ilestsouventnécessairedefaireexécuterdescommandeslorsquecertainesconditionsontétéremplies.Aceteffet,nousavonsbesoindestructuresdecontrôle.Laplussimplequipermetdeformulerdesdécisionsestl’expression“if-else”.

Lasyntaxesuivantes’applique:

if(condition) Blocd’expression1 else Blocd’expressions2

Leprocesseurvérifiesilaconditionestvraie.Siellel’est(doncinégalà0)leblocd’expression1estexécuté,sinonceseraleblocoptionneld’expression2.

ASURO - 60 -

9. C pour ASURO

Sivousvoulezprendreunedécisionparmiplusieursoptions,vouspouvezutiliserlesexpressions“elseif”:

if(Condition1) Blocd’expressions1 elseif(Condition2) Blocd’expressions2 elseif(Condition3) Blocd’expressions3 elseif(Condition4) Blocd’expressions4 else Blocd’expressions5

Lesconditionssuivantessontpossibles:

Exemple:

#include“asuro.h” intmain(void){ Init() while(1){ if(PollSwitch()>0){StatusLED(RED);} else{StatusLED(GREEN);} } }

Sil’undescapteursdecollisionestactionné,ladioded’états’allumeenrouge,sinonelleestverte.Lesautresélémentsserontexpliquésplusloin.

DanslelangageC“1”signifie«vrai»et“0”«faux».Lacondition

if(0){StatusLED(RED);}

signifiequeStatusLED(RED)neserajamaisexécuté.

Opérateur SIGNIFICATION== Comparaisonlogiqueavecégalà!= Comparaisonlogiqueavecn’estpaségalà

< Comparaisonlogiqueavecpluspetitque> Comparaisonlogiqueavecplusgrandque<= ComparaisonlogiqueavecplusPetitouégalà>= Comparaisonlogiqueavecplusgrandouégalà

ASURO - 61 -

9. C pour ASURO

9.1.5. Boucles

Lesbouclespermettentd’exécuterplusieursfoisdesexpressions.Danslaboucle„while“,uneconditionestévaluée.Silaconditionestvraie,leblocd’expressionsestexécutéetlaconditionestvérifiéeànouveaujusqu’àcequ’elledeviennefausse.

while(Condition) Blocd’expressions

Exemple: #include“asuro.h” intmain(void){ Init() MotorDir(FWD,FWD); // Les deux moteurs avancent MotorSpeed(120,120); // Les deux moteurs à demie puissance StatusLED(GREEN); // Commuter la diode d’état sur vert while (PollSwitch()==0) { // Tant qu’il n’y a pas eu de collision... SerWrite(“Alles OK!\n”,10); // ... Explosion de joie } MotorSpeed(0,0); // Collision! Arrêt immédiat! StatusLED(RED); // Commuter la LED d’état sur rouge while(1){ SerWrite(“Aua!\n”,5); // Profonde tristesse! } }

L’expression“for(expr1,epr2,expr3)”équivautà:

expr1; while(expr2){ Blocd’expressions expr3; }

Laboucle„for“estnormalementutiliséecommeboucledecomptage

for(i=0;i<n;i++) ...

Exemple: #include“asuro.h” intmain(void){ Init() int zaehler; // Déclarer variable pour le comptage for (zaehler=0; zaehler<10; zaehler++) { // répéter dix fois: SerWrite(“Los geht’s!\n”,12); // Envoyer “C’est parti!” } MotorDir(FWD,FWD); // Les deux moteurs avancent MotorSpeed(120,120); // Les deux moteurs avancent à demie puissance while (1) { // Ensuite ne plus rien faire! } }

ASURO - 6� -

9. C pour ASURO

“while(1)”équivalentde“for(;;)”estunebouclesansfincarlaconditionpourl’arrêtneserajamaisfausse(donc0).

Uneautreboucleestlaboucle„do“.

do Blocd’expressions while(Condition);

Al’opposédelaboucle„while“,laconditionestvérifiéeàlafindublocd’expressions.Cettebouclesedérouleaumoinsunefois.

9.1.6. Fonctions (Templates)

Lesdéfinitionsdefonctionsrevêtenttoujourslaformesuivante

TypedefonctionNomdelafonction(ParamètreType1Nomduparamètre1,Typedeparamètre2Nomduparamètre2,...)

Super!Desdéfinitionsdefonctions!Etcelasertàquoi???C’esttrèspratiquemaisaussipluscompliquéetonpeutlelireaussiunpeuplustard...

Ilarrivefréquemmentquedespartiesserépètentendifférentsendroitsduprogramme.Soitilfautlesréécrireàchaquefois(trèsennuyeuxetcomplètementconfus)ouondéclareunefoisunefonction.

Souventonaimeraitaffecteraussiuneouplusieursvaleursàunefonction.Ainsiunefonction(personnelle)deAvanceunpeu()esttoutsimplementplussympasionpeutluidirelavitesse,laduréeoulatrajectoire.Cecisefaitaumoyendesparamètres.

Ilarriveaussiparfoisqu’unefonctionrenvoieunevaleurcommec’estlecasd’unefonctionCombiendecapteurssontenfoncés().Cecisefaitàl’aidedelavaleurderetourdelafonctionquiestgénéréequelquepartàunmomentdonnédanslafonctionetrenvoyéeparl’expressionreturn.C’estpourquoichaquefonctionsetermineparreturn;oureturnCHIFFRE;.

Lafonctionmain()estparticulièrecarelleconstituelepointd’insertiondansunprogramme.Danslecasd’ASURO,cettefonctionestexécutéeaprèslamisesoustension.Lafonctionmain()doitexisterdanschaqueprogramme!

ASURO - 6� -

9. C pour ASURO

Aprèsavoirvulestypesdedonnéesetavoirabordéunpeulesfonctions,nousallonsnousentraînersurunepetitefonctiond’exercicequidoitmultiplierdeuxchiffresà8bitsetrenvoyerlerésultat.

intMult(chara,charb) /* la fonction renvoie une valeur int, porte le nom de Mult et reçoit deux char comme paramètres */ { // Début de la fonction int c; // Variable c est déclaré comme int c = a * b; // calcule c return c; // renvoie c } // fin de la fonction

Etvoiciencoreunepetiteroutinequiexécutelafonctionquenousvenonsdedéfinir:

int main (void) // La fonction main renvoie toujours un int, // et ne reçoit pas de paramètres { // Début de la fonction char mult1,mult2; // Définition de deux variables char int erg; // Définition d’une variable int qui doit contenir // le résultat de la multiplication des // variables mult1 et mult2l mult1 = 2; // Affectation mult2 = 10; // Affectation erg = Mult(mult1,mult2); // Rappel de la fonction Mult définie auparavant return0; } // Fin

ASURO - 64 -

9. C pour ASURO

9.1.7. Pointeurs et Vecteurs

Nousnetraitonsicidespointeursetvecteursquedanslamesureoùilssontnécessairespourlefonctionnementd’ASURO.

Silesdétecteursdetracéoulesdétecteursodométriquessontlus,nousavonsbesoindevecteurs.Leurdéclarationestextrêmementsimple:

intlData[2]; intoData[2];

Ilenressortque2vecteurs(IData,oData)contenant2élémentssontcrééspourlesdétecteursdetracéoudétecteursodométriques.Aprèsappeldelafonctioncorrespondanted’ASURO(LineData(),OdemetrieData()),l’élément[0]contientlavaleurdudétecteurgaucheetl’élément[1]celledudétecteurdroit.

Voiciunpetitexemple:Sisurlesdeuxdétecteursdetracéceluidedroiteestpluséclairéqueceluidegauche,ilfautexécuterl’expression1,sinonl’expression2.

int lData[2]; // Affecter la mémoire pour les valeurs mesurées LineData(lData); // Saisie des valeurs mesurées if(lData[1]>lData[0]) Expression1; else Expression2;

Afindepouvoirutiliserlesfonctionsd’interfacesérielle(SerWrite(),SerRead())nousavonsbesoindechaînesdecaractèresquisontdéclaréesdelamanièresuivante:

charmessage[]=“Mettreuntexteici”;

Pourenvoyerunechaînedecaractèresdanslecasd’ASURO,ilsuffitd’appelerjustelafonctionSerWrite()aveclesparamètrescorrespondants.Lepremierparamètreindiqueletexteoubienlavariabledelachaînedecaractèresetledeuxièmeparamètrelenombredecaractèresdelachaînequidoiventêtreenvoyés.

SerWrite(message,20);

Oubien SerWrite(“Mettreuntexteici”,20);

Envoyerparlebiaisdel’interfacesérieIR“Mettreuntexteici”.

ASURO - 65 -

9. C pour ASURO

LafonctionSerRead()aétédéfiniepourrecevoirdescaractèresdansASURO.Lepremierparamètrecontientlavariabledelachaînedecaractèresdanslaquellelescaractèresreçussontmémorisés,ledeuxièmeparamètreindiquelenombredecaractèresàrecevoiretletroisièmereprésenteunTimeout.Celasignifiequelafonctions‘arrêtesiaucunedonnéen’aétéreçuependantunlapsedetempsdéfini(tempsduprocesseur).Sileparamètreestréglésur0,lafonctionattendlaréceptiondetouslescaractères.

Voiciunexemple:ASUROdoitrecevoirparlebiaisdel’interfaceIR“Salutmevoici”:

charmessage[]=”01234567890123456789”;

L’espacepourrecevoirletexteaétécréé.Lachaînedecaractèrescrééedoitêtresuffisammentgrandepourpouvoiraccueillirletexte.

SerRead(message,18,0);

Enregistre18caractèresetattendjusqu’àcequetouslescaractèressontarrivés.Nouspartonsduprincipequelachaînedecaractères«Salutmevoici»estenvoyée.Lemessagedelachaînedecaractèrespréalablementdéfiniseprésentemaintenantcommececi:

Salutmevoici456789Lespremiers18caractèresdumessageontétéécrasésparlescaractèresreçus.

9.�. Description des fonctions d’ASURO

Afindefaciliterlepluspossiblelaprogrammationd’ASURO,ilexistequelquesfonctionsprédéfinies.Ellesnesontpasforcémentoptimalesetpourcertainesapplicationsilseraitcertesmieuxd’écrirevospropresfonctions.

Lesfonctionssontreprésentéesd’unemanièreclassiquedanslestyledeleurdéclaration.Celuiquisesentunpeuperdu,devraitregarderlesexemples.

Afind’évitertoutmalentendu,lesfonctionsquicommandentquelquechosetellesquelafonctiond’entraînementoulesfonctionsconcernantlesélémentsd’indicationfixentdesréglagesquirestentvalablesjusqu’àcequ’ellessoientmodifiées.Donc,uneLEDd’étatverterestevertejusqu’àcequ’uneautrecouleursoitrégléeouqu’elleestéteinte.

ASURO - 66 -

9. C pour ASURO

9.�.1. void Init(void)

Lemicroprocesseurdoitêtremisdanssapositiondedépart.Cettefonctiondoittoujoursêtreexécutéeaudébutd’unprogrammesinonleprocesseurnesauraitmêmepascequ’ildoitfairedesesjambes.

UnprogrammepourASUROdoitseprésenterauminimumdecettefaçon:

#include“asuro.h” intmain(void){ // déclarer ici les variables requises Init(); // mettre ici vos propres idées de programme while(1); // Boucle sans fin return 0; //n’est plus exécutée }

Pourquoilabouclesansfinàlafindelafonctionmain()?Normalementlafindelafonctionmain()parreturn0;signifielafind’unprogramme.Cependant,avecASUROilpeutarriverquedespartiesd’unprogrammeflashéautrefoissoientexécutéesouqueleprogrammedémarreànouveaucequientraînedeseffetsbizarres.Pouréviterceci,leprogrammeest«emprisonné»dansunebouclesansfinaprèsavoireffectuétoutessestâchescequireprésenteunefindéfinieduprogramme.

9.�.�. void StatusLED(uncaractèred char color)

LaLEDd’état(D12)peuts’allumer.LesparamètrespossiblessontOFF,GREEN,REDouYELLOW

Exemple:LaLEDd’étatdoits’allumerenrouge

StatusLED(RED);

Okay,okay,encoreunefoistoutleprogramme:

#include“asuro.h” intmain(void){ Init(); StatusLED(YELLOW); while(1); // Boucle sans fin return0; }

ASURO - 67 -

9. C pour ASURO

9.�.�. void FrontLED(uncaractèred char status)

LaLEDfrontale(D11)peutêtrealluméeouéteinte.Lesparamètrespossiblessont:ONouOFF.

Exemple:LaLEDfrontalesoits’allumer:

FrontLED(ON);

9.�.4. void BackLED(uncaractèred char left, uncaractèred char right)

LesLEDarrières(D15etD16)peuventêtrealluméesouéteintes.Lepremierparamètredécritl’étatdelaLEDarrièregauche(D15)etledeuxièmeparamètrel’étatdelaLEDarrièredroite(D16).Lesparamètrespossiblessont:ONouOFF.

Exemple:VousvoulezallumerlaLEDarrièredroite(D16)etéteindrecelledegauche(D15):

BackLED(OFF,ON);

9.�.5. void Sleep(uncaractèred char time7�kHz)

Cettefonctionmetleprocesseurenattentependantuneduréerégléecequiestidéalpourprogrammerdestemporisations.Elleestbaséesuruntimerde72kHzetpeutrecevoircommeparamètremaximallavaleurde255(unsignedchar)4.

Exemple: 0,003s Leprocesseurdoitattendrependantenv.3ms==>1=216.LafonctionSleep()e3msappeléecommesuitpouruneattentede3ms: 7�KHz

Sleep(216);

9.�.6. void MotorDir(unsigned char left_dir, unsigned char right_dir)

Cettefonctiondéterminelesensderotationdesdeuxmoteurs.Elledoitêtreexécutéeavantleréglagedevitesse.DesparamètrespossiblessontFWD(avance),RWD(recul),BREAK(freinsouarrêt,lesdeuxmoteurssontcourt-circuitésparlespontsdetransistors)etFREE(rouelibre).

Exemple:Lemoteurgauchedoittournerenavantetlemoteurdroitdoitêtrearrêté: MotorDir(FWD,BREAK);

4C’estdelamauvaisefoidelapartdesauteurspourvousforceràréfléchir!

ASURO - 68 -

9. C pour ASURO

9.�.7. void MotorSpeed(unsigned char left_speed, unsigned char right_speed)

Cecidéterminelavitessedesmoteurs.Lavaleurmaximalepossibleest255(unsignedchar).Lemoteurnecommenceàtournerqu’àpartird’unevaleurd’env.60(dépendfortementdelaconstructionmécanique).Lavaleurindiquéenedonneenfaitquelapuissanceélectriquequelemoteurdoitrecevoir.Lenombredetoursréelquienrésulte,dépendégalementd’autresfacteurstelsquedufrottementoudelapente.

Exemple:Lemoteurgauchedoittourneràlavitessemaximaleetlemoteurdroitnedoitpastournerdutout.LesensderotationadéjàétédonnéeparlafonctionMotorDir().

MotorSpeed(255,0);

9.�.8. void SerWrite(unsigned char *data, unsigned char length)

Cette fonction transmet les données d’ASURO par le biais de l’interface sérielle IR avec 2400Bit/s,No-Parity,1StopBit,NoFlowControl.C’estlemêmeréglagequiestutilisépourtesterletransmetteurIR(quil’auraitdeviné!).Lepremierparamètrecontientl’adressedesdonnéesàenvoyeretledeuxièmeindiquelenombredebytesàtransmettre.

Exemple:Lachaînedecaractères„Saluttoi!“doitêtreenvoyéeparl’interfacesérielleIR.

SerWrite(“Saluttoi!”,12);

9.�.9. void SerRead(unsigned char *data, unsigned char length, unsigned int timeout)

C’esttrèsbiendepouvoirenvoyerdesdonnéesparl’interfacesérieIRmaisilpeutaussiêtreutiled’enrecevoiretc’estjustementcequefaitcettefonction.Lepremierparamètreestlepointeursurl’espacemémoireoùilfautenregistrerlesdonnéesreçues.Ledeuxièmeparamètreindiquelenombredebytesdedonnéesàattendre.Letroisièmeetdernierparamètrerègleladurée(Timeout).Celaévitequelafonctionattendedesdonnéespendantuneduréeillimitée.Enl’absencededonnéesauboutd’uncertainlapsedetemps,lafonctionesttoutsimplementinterrompue.Letoutpremiercaractèredesdonnéesreçuesestdanscecasécrasépar‘T’(Timeout).Sivousmettez«0»dansletroisièmeparamètre,lafonctionattendjusqu’àcequelenombredebytesindiquésdansledeuxièmeparamètre,aitétéreçu.

Dèsquecettefonctionaétéutilisée,ASUROpeutdémarrer.Parfoislerésultatdelaprogrammationn’estpasceluiquiétaitprévu.Vousdevezdoncvousassurerqu’ASUROnepuissepassemettreendangerlui-mêmeoulesautrespardesmanœuvresinattendues.

ASURO - 69 -

9. C pour ASURO

Exemple:Vousvoulezrecevoirlachaînedecaractères„Demarre“toutenvousassurantquetouslescaractèresontétéreçusparASUROavantdecontinuer.Remarque:Seuls7caractèresserontreçus.Iln’yapasdevérificationsilachaîne«Demarre»estvraimentarrivée.

#include“asuro.h” intmain(void){ char daten[7]; //affecter la mémoire Init(); SerRead(daten,7,0); // lire les données MotorDir(FWD,FWD); MotorSpeed(120,120); while(1); // Boucle sans fin return0; } . .

9.�.10. void LineData(unsigned int *data)

Cecipermetlalecturedesphototransistorsendessousd’ASURO.Ilfautdonneruneadressedemémoirequipeutaccueillirdeuxentiersrelatifs.Cettefonctionremplitalorslecontenudel’adresse avec les valeurs du convertisseur A/D des deux phototransistors. Le premier entier relatifreçoitlavaleurdeconversionduphototransistorgauche(T9)etledeuxièmelavaleurduphototransistordroit(T10).Laluminositémaximalecorrespondàunevaleurde‘1023‘.L’obscuritécorrespondàunevaleurde‘0’.Généralement,lesdeuxvaleursextrêmesnesontjamaisatteintes.Lavaleurmesuréesesituequelquepartentrelesdeux.

Exemple:Lecturedesphototransistors(T9,T10)

unsigned int data[2]; //Allocation de la mémoire . . LineData(data);

data[0]contientlavaleurduphototransistorgauche(T9).

data[1]contientlavaleurduphototransistordroit(T10).

ASURO - 70 -

Etvoicileprogrammeentier:

#include “asuro.h” // Suivi du tracé de la façon la plus simple intmain(void){ uncaractèred int data[2]; //Allocation mémoire Init(); FrontLED(ON); // Mise en service éclairage du tracé MotorDir(FWD,FWD); // Les deux moteurs en avant while(1){ // Boucle sans fil; ASURO doit suivre un tracé // pendant une durée indéfinie LineData(data); // Lire les valeurs de luminosité actuelle des phototransistors // if (data [0] > data [1] ) // à gauche plus lumineux qu’à droite... {MotorSpeed(200,150);} // ... accélérer plus à gauche... else {MotorSpeed(150,200);} // ... sinon accélérer plus à droite! } return0; }

9.�.11. void OdometrieData(unsigned int *data)

Labarrièrelumineuseestévaluée.Lesdiodesélectroluminescentes(D13,D14)sontactivéesetles valeurs du convertisseur A/D des phototransistors (T11, T12) sont renvoyées. Tout comme danslafonctionLineData(),ilfautaffecterunemémoireavecdeuxentiersrelatifsquiseraensuiteremplieparlafonction.Lepremierentierrelatifcontientlavaleurduconvertisseurduphototransistorgauche(T11)etlasecondelavaleurintégraleduphototransistordroit(T12).Laluminositémaximalecorrespondàunevaleurde‘1023‘5.L’obscuritécorrespondàunevaleurde‘0’.Généralement,lesdeuxvaleursextrêmesnesontjamaisatteintes.Lavaleurmesuréesesituequelquepartentrelesdeux.

Exemple:Lecturedelabarrièrelumineuse

unsigned int data[2]; //Allocation mémoire . . OdometrieData(data);

data[0]contientlavaleurduphototransistorgauche(T11)data[1]contientlavaleurduphototransistordroit(T12)

Afind’évitertoutmalentendu:OdometrieData()nelitpasdirectementlenombredetoursmaisseulementlaluminositéactuelledudisquedelabarrièrelumineuse.Ilappartientauprogrammeurd’interpréterlesvaleursdeluminosité,lecomptagedespassagesclair-foncéetladéterminationdunombredetoursdelaroue!

5Pourdesraisonstechniques,lesvaleurssontexactementl’inversedecellesdesphototransistorsdusuividutracé.Une

concessionfaiteàlasimplicitéducircuit.

9. C pour ASURO

ASURO - 71 -

9. C pour ASURO

9.�.1�. unsigned char PollSwitch(void)

Lescapteurstactiles(K1-K6)sontévalués.Cettefonctiondelivreunbyte.Cebytenousditquelcapteurtactileaététouché.Lecapteur1poselebit5etlecapteur6lebit0.

Bit.Bit0(1)->K6Bit1(2)->K5Bit2(4)->K4Bit3(8)->K3Bit4(16)->K2Bit5(32)->K1

Silescapteurs1,3et5étaienttouchés,lafonctionrenverrait32+8+2=42.

Ilfautéventuellementappelerlafonctionplusieursfoisàlasuiteavantd’obtenirle„bon“résultat.LecondensateurchargéC7doitd’abordsedéchargeretcelapeutprendreuncertaintemps.Si le convertisseur A/D scanne trop tôt, des valeurs de tension les plus disparates peuvent être mesurées.

Exemple:

unsignedchartaste; . . taste=PollSwitch(); if(taste>0){MotorSpeed(0,0);}

Voilà,c’esttout.Maintenantvouspouvezlaisserlibrecoursàvotreproprecréativité.

ASURO - 7� -

Teil IV. AnnexesA. Nomenclature:Enplusd’uneballedeping-pong,ilvousfautlespiècessuivantespourlaconstructiond’unASURO:

1xPlatineASURO2xMoteursTypeIgarashi2025-021xDiode1N40018xDiodes1N41484x Transistors BC 327/40 ou BC 328/404x Transistors BC 337/40 ou BC 338/401xCircuitintégréCD4081BE1xProcesseurATmega8L-8PC(préprogrammé)1xRécepteurIRSFH5110-361xLEDIRSFH415-U2xPhototransistorsSFH3003xLEDs5mmrougeclairdiffus1x Double LED 3mm rouge/verte2xPhototransistorsSide-LPT80A2xLEDsSideIRL80A1xOscillateur8MHz2x Condensateurs électrolytiques 220μ F min. 10V RM 3,5/104xCondensateurscéramiques100nFRM5,082xCondensateurscéramiques4,7nFRM2,541x 100Ω 1/4 W 5%2x 220 Ω 1/4 W 5%4x 470 Ω 1/4 W 5%10x 1KΩ 1/4 W 5%1x 1KΩ 1/4 W 1%3x 2KΩ 1/4 W 1%2x 4,7KΩ 1/4 W 5%1x 8,2KΩ 1/4 W 1%1x 10KΩ 1/4 W 1%1x 12KΩ 1/4 W 1%1x 16KΩ 1/4 W 1%1x 20KΩ 1/4 W 5%1x 33KΩ 1/4 W 1%1x 68KΩ 1/4 W 1%1x 1M Ω 1/4 W 5%3xSocle14br.6xDétecteurstactiles1xInterrupteur1xSupportdepile1xJumper1xBarette2polRM2.52x Engrenages 10/50 dents; Perçage 3,1mm Module 0,52x Engrenages 12/50 dents; Perçage 3,1mm Module 0,52xPignonsmoteur10dents2xBaguederéglagepouressieu3mm

ASURO - 7� -

IV. Annexes

4xColliersdecâble1xColliersdecâblesamovibles2xPneusencaoutchouc38mm2xTigeenlaiton42mmdelongueur,3mmdediamètre2xTigeenlaiton24,5mmdelongueur,3mmdediamètreEnv.15cmfilmultibrinsrouge0,14mmEnv.15cmfilmultibrinsnoir0,14mm2xDisquesencodeur(voir2.4)

Pour le transmetteur IR RS-���, il vous faut les composants suivants:

1xPlatinetransmetteurIR-RS2323xDiodes1N41481xDiodezénerZPD5.11xTransistorBC547A,BouCouBC548A,BouC1xCircuitintégréNE555N1xRécepteurIRSFH5110-361xLEDIRSFH415-U1x Condensateur électrolytique 100 μF au moins 16V RM 2,5/62xCondensateurscéramiques100nFRM5,081xCondensateurcéramique680pFRM2,541x 220Ω 1/4 W 5% ou mieux1x 470 Ω 1/4 W 5% ou mieux1x 4,7KΩ 1/4 W 5% ou mieux 1x 10KΩ 1/4 W 5%2x 20KΩ 1/4 W 5% ou mieux1x Trimmer 10KΩ droit RM 2,5/51xSocle8pol.1xFicheSUB-D9-broches

Vousavezlapossibilitéd’utiliserletransmetteurUSB:LetransmetteurIRUSBestégalementlivrécommeproduitfini!

ASURO - 74 -

B. Schémas techniques ASUROIV. Annexes

ASURO - 75 -

IV. Annexes

C. TRANSMETTEUR IR RS���

ASURO - 76 -

D. TRANSMETTEUR IR USB

ASURO - 77 -

IV. Annexes

E. SYNOPTIQUE ASURO

F. SYNOPTIQUE PROCESSEUR AVR

TransmetteurInfrarougeRS232/USB2400Bd

Vérificationdelapilel’interfacesérie(Communication)(Programmation)

LEDd’état(Bicolore)

Entraînements

Odométrie(Barrièrelumineuseréfléchissante)

LEDarriére

Détecteurstactiles(6Commutateurs)

Détecteursdetracé(Phototransistor,LED)

ASURO - 78 -

IV. Annexes

G. CONTENU D’ASURO

ASURO - 79 -

Résistance variable(Potentiometer)

Résistance

Condensateur

Condensateur électronique (ELCO)

Transistor

-

BetEsontsimplementdesexem-ples,lapositionpeutvarierenfonctiondutype

NPNtype

PNPtype

Composant Montage PCB symbole Circuit symbole

Lorsquelecomposantcomportedesrepéragesàproximitédespattes,lapolaritéestextrêmementimportante!Unepolaritéerronéepeutendommagerlecomposantvoirelecircuitcomplet!Pourplusd’informationvoyezaussileFicheTechniqueDossier!

(Zener)Diode

+

AA CC A C

IV. Annexes

H. Informatique la partie électronique

Polarité importante!

A C

ASURO - 80 -

PHOTOTRANSISTORSFH-�00

IR-LED SFH415-U

LED rouge D15-D16

Composant Montage PCB symbole Circuit symbole

DUO LED D1�

IR-LED IRL80ASide type Transparent

Ceramic OscillateurQ1

IC Atmega 8L

PHOTOTRANSISTORSide type LPT80ARose colore

IR-Receiver SFH5110

IC CD4081

IC NE555

.

Rouge

CACA

lefillepluscourtdoitallerdansletracécarré

C(Cathode)=filcourtsurlafacerepérée filcourt= C=-

Notice!Respectezlabonnepolarité

Notice!Côtébombéeverslehaut

Notice!Respectezlabonnepolarité

.

Nonpolarité

Respectezlabonnepolarité

Respectezlabonnepolarité

Respectezlabonnepolarité

Repérage

Repérage

Repérage

C(Cathode)=filcourtsurlafacerepéréefilcourtsurlafacerepéréefilcourtsurlafacerepéréeNoir

IncoloreE

A

Respectezlabonnepolarité

ASURO - 81 -

Interrupteur (On/Off) S1

Moteur

Connecteur � brochesJP1

Composant Montage PCB symbole Circuit symbole

Capteurs K1-K6

IC (Socket)

Fiche SUB-D connecteur

NON SYMBOLE

NON SYMBOLE

(M+ Gauche/Droit M-)

Repérage

Réparer des erreurs de Platine:S’ilmanqueunmorceaudepiste,qu’ellesoitcoupéeouqu’elleaitétépeléeauniveaud’unepastille

Enutilisantuncouteauouuncutter,grattezlevernisdelapistedefaçonàmettrelecuivreànu.Pliezlapatteducomposantendirectiondelapistemanquante.

Lescircuitsimpriméssontconstituésd’unepistedecuivrequiétablituneliaisonélec-triqueaveclespattesdeconnexiondescomposants.Lecuivreestrecouvertdesou-dureauxpattes.Unecoucheisolantedevernisvertprotègelapistedecuivrecontredescourts-circuitsetl’oxydation(formationderouille).Sinouschauffonslecuivretroplongtempslorsdelasoudure,lapatteetlapistedecuivrepeuventsedétacherdelaplaquette.Afinderéparerlesdommages,noussommessouventobligésd’enleverunepartiedelacouchedevernissanségratignerlapistedecuivre.Pourcela,ilestrecommandéd’utiliseruncouteauavecunelamecourbée(p.ex.uncutter)ouenpinceauenfibredeverre. Placez la tresse sur la Placez la tresse sur la

portion de soudure que portion de soudure que vous voulez enlever.vous voulez enlever.

La Dessoudure

Chauffez la soudure Chauffez la soudure au travers de laau travers de latresse pour que tresse pour que celle-ci l’absorbe celle-ci l’absorbe par capillarité.par capillarité.

Réparer des erreurs de soudure

Enutilisantunechutedefilenprovenancedespattesdecomposantscoupées,réalisezlaconnexionentrelesdeuxmorceauxdepisteouentrelapisteetlapatteducomposantpréalablementpliée.