schema et montage de robot : Robot Cigale



Voici un petit robot facile à construire et à programmer, qui ne nécessite pas de programmateur spécifique.
Le CI à été conçu avec Kicad le DAO gratuit (et complet) pour électronique.
Le microcontrôleur utilisé peut être un AT90S2313 ou ATtiny2313 de chez AMTEL.


Cette Cigale à été réalisée grâce aux logiciels gratuits Kicad pour l'électronique et Wings3D pour les composants en 3D.

La programmation est en langage BASIC avec le logiciel en démo BASCOM-AVR ici : http://www.mcselec.c.

Pour finir une vidéo :



Liste des composants


Pour les deux cartes:
1 plaque époxy présensibilisé 100 x 75 mm

Carte de commande:
1 microcontrôleur AT90S2313 ou ATtiny2313
1 quartz 4 MHz
2 microrupteurs (modèle longueur 20mm)
1 barrette picots sécables femelle(pour le connecteur de programmation et les ports libres du microcontrôleur)
1 barrette picots sécables mâle (pour les connecteurs des servos et l'alimentation)
1 condensateur 100 NanoFarad (pour le reset)
1 résistance 10 KHoms (reset)
1 condensateur 10 MicroFarad (filtrage et découplage alimentation)
2 servos FUTABA S3003
1 coupleur 4 accus AA 1,2 vols
4 accus NiMh AA 1,2 volts
Carte gestion des yeux:
1 CD4001
1 LDR
2 LEDs vertes ou rouges
2 résistances 10 KOhms (10 000 Ohms)
1 résistance 220 Ohms
1 résistance 2,2 MOhms (2 200 000 Ohms)
1 condensateur 470 NanoFarad
1 transistor PNP (type courant)
1 mini résistance ajustable ronde
Cordon de programmation (In Situe)
5 picots barrette sécable femelle
1 fiche DB25 mâle
3 résistance 330 Ohms
1 cordon 5 fils (genre fil téléphone mais souple) 1 mètre

Une petite explication sur le fonctionnement des Yeux de Sissi : sous un éclairage normal les yeux clignotent si la lumière manque les yeux se mettent en fixe.
Voici le schéma:


Le seuil de lumière (réglable grâce à l'ajustable TRIM)est transmis à la port NOR U1A et inverser par U1B.
Ce signal est transmis à la broche 8 de U1C qui avec avec U1D forme un oscillateur astable commandé, tant que la lumière est suffisante, l'oscillateur fonctionne et les yeux clignotent par le biais du transistor PNP Q1, si la lumière devient insuffisante, le niveau présent sur la broche 8 change d'état, l'oscillateur se bloque et les yeux passent au fixe.

Les Plans

Ici on va voir comment créer l'ossature et l'habillage de la cigale.
Passons aux plans : l'ossature est composée de deux équerres en aluminium de 20 mm de largeur
assemblées par les fixations des servomoteurs.



Pour les pattes utiliser des rayons de bicyclette ou de la corde à piano, pour l'habillage, on peut utiliser une chemise (range dossiers)plastique
que l'on découpe et que l'on fixe avec des vis parker comme sur l'image :



Une fois l'habillage terminer on peint avec de la peinture à l'eau (genre boite à peinture 16 couleurs) et on vernit avec un vernis en bombe.
Voici l'aspect des divers modules version 4001 en place :


Pour les antennes j'ai pris du fil électrique en cuivre, j'ai dû les ligaturer sur les mini-rupteurs avec du fil téléphone car on ne peut pas les souder sur les lamelles. On trouve pas mal d'images de cigales sur le net pour s'inspirer.

Programmation BASIC

Exemple commenté de programmation en BASIC du robot, et lien vers un tutoriel très intéressant sur les microcontrôleurs AMTEL.
Tout d'abord voici un lien à ne pas manquer pour ceux qui débutent sur les microcontrôleurs AMTEL: http://www.atmicroprog.com/.
Maintenant voici un exemple de programmation de la Cigale en BASIC (BASCOM AVR 1.11), avec quelques commentaires :
Code : Bascom
'PROGRAMME Bug Cigale.bas 09/2010 ELEKTOR inspired  inspiré par ELEKTOR 'mic-josi@orange.fr Build 1.3' specify the used micro  -  spécification du microcontroleur ici un AT90S2313 mais 
'un ATtiny2313 fonctionne aussi bien
$regfile = "2313def.dat" ' used crystal frequency  -- Quartz utilisé$crystal = 4000000'Servo's need a pulse in order to operate'with the config statement CONFIG SERVOS 
'we can specify how many servo's we'will use and which port pins are used. A maximum 
'of 14 servos might be used'The SERVO statements use one byte for an interrupt counter and the TIMER0'This 
'means that you can not use TIMER0 anymore'The reload value specifies the interval of the timer in uS  'les Servos on besoin d'ordres par impulsions pour fonctionner'CONFIG permet de 'déclarer les SERVOS nous pouvons spécifier le nombre de servoà Utiliser et les 'broches des ports utilisées.
'Un maximum de 14 servos peut être utilisés.'Les Servos Utilisent Un Octet Pour le Compteur d'interruption et le TIMER0'Cela signifie que vous ne pouvez plus utiliser plus TIMER0'La valeur de reload  'spécifie l'intervalle du Timer en µS 'we use 2 servos with 7 uS resolution(steps)'utilisation de 2 Servos avec une résolution de 7 µConfig Servos = 2 , Servo1 = Portd.0 , Servo2 = Portd.6 , Reload = 7 'we must configure the port D pins used to act as output'configuration des ports D en sortie    Ddrd.0 = 1                                               '  servo 1 (avant)   Ddrd.6 = 1                                               '  servo 2 (arrière)  'we must turn on the global interrupt'on active les interruptions Enable Interrupts 'the servo() array is created automatic.'un tableau servo() est automatiquement créé  'we must configure the port B pins used to act as input'Pinb is for the hardware test (microruptors)'Portb is for the software test 'configuration des ports B en entrée'Pinb dialoguedirectement avec les micros 'rupteurs (moustaches)Portb dialogue avec le programme Config Pinb.0 = InputPortb.0 = 1Config Pinb.3 = InputPortb.3 = 1 'we need to position the legs at the center of the body'see lr adjustable leegs on the photo 'nous devons positionner les pattes au centre du corps'voir lr réglage des pattes sur la photoServo(1) = 13Servo(2) = 13  Dim I As Byte                                 ' variableDim D As BitDim G As BitBegin:                                     'main program'=========================I = 0D = 0G = 0Do                                'boucle  loop'Test mustache left  moustache gaucheIf Pinb.0 = 0 ThenG = 1Servo(1) = 13Waitms 10Servo(2) = 13Waitms 10Gosub Arriered                                          'yes goto rightbackEnd If 'Test mustache right  moustache droiteIf Pinb.3 = 0 ThenD = 1Servo(1) = 13Waitms 10Servo(2) = 13Waitms 10Gosub Arriereg                                              'yes gotoleftbackEnd If ' Sissi the cicada walk straight (on flat)' Sissi la cigale marche tout droit (sur sol plat)Servo(1) = 7Waitms 5Servo(2) = 13Waitms 25Servo(1) = 14Waitms 5Servo(2) = 9Waitms 25Loop                                                        ' fin de boucle  '==========================SOUS PROGRAMMES=====================================    '==========================='Left back Arrière gaucheArriereg:If D = 1 ThenG = 0For I = 1 To 15 Servo(2) = 18 Servo(1) = 14Waitms 30Servo(2) = 12Servo(1) = 12Waitms 30NextFor I = 1 To 7 Servo(2) = 19 Servo(1) = 14Waitms 30Servo(2) = 12Servo(1) = 12Waitms 30Next 'Servos In Order Beford RuturnServo(1) = 13Waitms 10Servo(2) = 13Waitms 10D = 0End If '============================' right back Arrière droiteArriered:If G = 1 ThenD = 0For I = 1 To 10 Servo(2) = 5 Servo(1) = 6Waitms 30Servo(2) = 12Servo(1) = 14Waitms 30NextFor I = 1 To 7 Servo(2) = 16 Servo(1) = 12Waitms 30Servo(2) = 12Servo(1) = 6Waitms 30Next Servo(1) = 13Waitms 10Servo(2) = 13Waitms 10G = 0End IfReturn End                                                         ' END OF ALL                                                    'FIN du PROGRAMME


On peut améliorer la façon dont recule la Cigale devant un obstacle, j'ai programmé une autre façon de reculer comme sur la vidéo ou Sissi tourne mieux mais est en limite d'équilibre.

Maintenant une copie d'écran pour ceux qui veulent aller au plus direct de la programmation:


Pour les Fans D'ELEKTOR

pour les Fans d'ELEKTOR voici la solution pour programmer SISSI
j'ai fait le test avec le programme ELEKTOR qui m'avait posé problème, la cause .....?
les fusibles !
On peut faire marcher Sissi façon ELEKTOR pour cela:

Se rendre sur le site grâce à ce lien:
www.elektor.fr/magaz [...] rand-pas.67863.lynkx

télécharger le programme 040071-11.zip pour BASCOM AVR dans téléchargements gratuit au bas de la page
on peut aussi télécharger l'article complet pour 10 unités de crédit (environ 2 Euros)

La copie d'écran du shéma modifié et de la programmation des fusibles (dans BASCOM AVR) est téléchargeable sur ce lien:
www.cijoint.fr/cjlin [...] 01102/cijbgRkjBw.zip

pour cette modif on peut supprimer le module de gestion des yeux de Sissi et les connecter sur les ports D1 et D5
comme sur la copie d'écran du shéma, ils seront alors gérés par le microcontrôleur .

Nota: si la cigale marche en arrière à la mise en route, il suffit de permuter le branchement des servos avant et arrière
Voila je pense que la modif vaut aussi le coups et ci joint la traduction des commentaires du programme:
Code : Bascom
    '  Awalker_2.bas    7-11-2002      1st version,     A. Vreugdenhil    '                  31-07-2004      adapted to AVR_Bascom version         '  µP-controlled walker, four legs code en BASCOM AVR                   $regfile = "2313def.dat"                        ' ou  "ATtiny2313.dat"         $crystal = 4000000                              ' 4 Mhz            Ddrd.0 = 1                                   '  servo 1 (avant)       Ddrd.6 = 1                                   '  servo 2       Ddrd.1 = 1                                   '  Led 1       Ddrd.5 = 1                                   '  Led 2         Config Pinb.0 = Input    Portb.0 = 1    Config Pinb.3 = Input    Portb.3 = 1         Config Servos = 2 , Servo1 = Portd.0 , Servo2 = Portd.6 , Reload = 10         Enable Interrupts         Servo(1) = 82    Servo(2) = 82         '********* Declaration des variables *******************************         Dim Sense As Byte    ' avant = 1, arrière = 2    Dim Direction As Byte    ' gauche = 2, droite = 1, tout droit = 0    Dim Vp As Byte    Dim Ap As Byte    Dim Counter As Byte    Dim Count2 As Byte    Dim Loop1 As Byte    Dim Difference As Byte         Sense = 2                                       'arriere    Direction = 0                                   'tout droit    Counter = 4    Portd.5 = 0                                     'led 2 Off    Begin:                                          'programme principal    '**********lecture des antennes en premier **************************    Do                                              'boucle principale         Direction = 0    Sense = 1                                       'en avant tout droit    Gosub Step1                                     'appel sous routine du sens    Toggle Portd.1                                  'led 2 bascule    Toggle Portd.5                                  'led 1 bascule     Waitms 35                                       'temps d'attente         If Pinb.0 = 0 Then                              'Test antenne droite       Portd.5 = 0                                  'led 2 eteinte        Portd.1 = 1                                  'led 1 allumée                Direction = 1                                'a droite       Gosub Back                                   'appel ss routine arriere,droite    Elseif Pinb.3 = 0 Then                          'antenne gauche       Direction = 2                                'a gauche       Portd.1 = 0                                  'led 2 allumee       Portd.5 = 1                                  'led 1 eteinte       Gosub Back                                   'appel ss routine arriere,gauche       Sense = 1                                    'en avant       Direction = 2                                'droite       For Loop1 = 1 To 60       Gosub Step1       Waitms 35                                    'boucle de marche       Next Loop1    End If         Loop                                            ' fin de la boucle principale         Back:                                           '*** sous programme arriere ***    Sense = 2                                                               'arriere    For Loop1 = 1 To 75    Gosub Step1    Waitms 35                                       ' boucle de pas    Next Loop1         ' Sense = 1 ,  Direction = 2  = en avant gauche !    ' Sense = 1 ,  Direction = 1  = "comme une horlge" bons pas en avant !!!!!!         ' Sense = 2 ,  Direction = 1  = en arriere droite !    ' Sense = 2 ,  Direction = 2  = en arriere gauche !         '*** make step ***    Step1:    If Sense = 1 Then                               'avant       Counter = Counter + 1    End If         If Sense = 2 Then                               'arriere       Counter = Counter - 1    End If         'raz  avant    If Counter = 13 Then                            'seulement 12 pas             Counter = 1    End If         'raz arriere    If Counter = 0 Then       Counter = 12    End If         'difference angulaire pour les pas    If Sense = 1 Then       Difference = 10    Elseif Sense = 2 Then       Difference = 8    End If         'deplacement tout droit    Count2 = Counter + Difference    Vp = Lookup(counter , Dta1)                    'pattes avant    Ap = Lookup(count2 , Dta1)                     'pattes arriere         If Direction = 1 Then                          'deplacement gauche       Vp = Vp + 5       Ap = Ap - 5    Elseif Direction = 2 Then                      'droite       Vp = Vp - 5       Ap = Ap + 5    End If         Servo(1) = Vp                                   'mouvement des pattes avant    Servo(2) = Ap                                   'mouvement des pattes arriere           Return         End                                             'fin du programme         '********** Donnees de commandes de deplacement des servos ***********    Dta1:    Data 00 , 67 , 72 , 77 , 82 , 87 , 92 , 97 , 92 , 87 , 82 , 77 , 72    Data 67 , 72 , 77 , 82 , 87 , 92 , 97 , 92 , 87 , 82 , 77 , 72 , 67
 
 

Un video du Robot  Cigale

 



Aucun commentaire:

Enregistrer un commentaire