Manuel Asuro FR
-
Upload
joe-andrew -
Category
Documents
-
view
231 -
download
8
description
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 - 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 - 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.