[[category:Electronique]]
[[category:FabAcademy]]
==de quoi s'agit -t-il==
je vais tenter de la réaliser à l'aide de la technique de [http://fab.cba.mit.edu/content/processes/PCB/vinylcut.html découpe vinyl de cuivre], pour expérimenter cette dernière.
==liste du matériel==
* 1 microcontroleur ATTiNY44A-SSU
* 1 cristal 20Mhz
* 1 résistance 0 Ohms
* 2 résistances 49.9 Ohms
* 1 résistance 499 Ohms
* 1 résistance 1 KOhms
* 1 résistance 10 KOhms
* 2 condensateurs 8 pF
* 1 condensateur 0.1 uF
* 1 condensateur 1 uF
* 2 diodes zenner 3.3V
* 1 connecteur de nappe : http://www.mouser.fr/ProductDetail/FCI/71600-006LF/?qs=yJYkLTYh5760qKJxwPD6hA==&_cdc=1
* 1 connecteur USB (en fonction du design choisi)
===ressources===
[http://www.theme.bac.free.fr/eleve/elv_electronique/Sequence%202/ANNEXES%20SEQ2/BienDebuterCMS.pdf débuter avec les CMS]
[http://wiki.jelectronique.com/souder_des_cms un autre tuto]
==fabrication du PCB==
===premiers tests de découpe vinyl du circuit===
J'ai choisi d'essayer d'expérimenter la technique de [http://fab.cba.mit.edu/content/processes/PCB/vinylcut.html réalisation du du circuit avec une découpe vinyl] dans du cuivre adhésif.
[[image:Fabisp.Firstry.vinyl.jpg|400px]]
les premiers tests ne sont pas trop concluants : la trace trop détaillée est difficile à découper proprement.
J'essaye donc de modifier le circuit pour le rendre plus adapté à ce type de fabrication.
[[image:FabispKayVinyl.png|400px]]
par rapport à la version de Andy, cette version contient moins de tracés, et surtout de petites chutes.
Hélas, je n'ai pas eu plus de succès avec cette version...je décide alors de fraiser le circuit avec la [[CNC-MDX20|modela]]
===fraisage avec la modela et fabmodules===
[[image:fabisp.Fabmodules2pcb.jpg|600px]]
J'avais quelques appréhensions car depuis plusieurs mois que nous luttions à faire fonctionner cette machine avec fabmodules, nous n'avions jamais réussi, principalement à cause du câble de liaison propriétaire USB-série, qui nécessitait un contrôle de flux.
Guillaume avait travaillé des jours entiers pour comprendre comment faire fonctionner la machine avec des logiciels propriétaire sous windows bien moins performants que fabmodules (plusieurs heures de calcul à chaque fois) et plus rebutants (sous windows) : je rends hommage à son engagement et sa persévérence qui lui a permis de mettre au point une méthode de travail qui fonctionne.
Finalement, pour la fabacademy 2014, Neil gershenfield a réécrit le driver de la modela dans fabmodules, et maintenant ça marche ! merci Neil!
Du coup, après toutes ces luttes rocambolesques, l'usage de fabmodules parru très simple et facile d'abord.
Comme outils de fraisage, j'ai utilisé une pointe de javelo 0.25mm à 0.4mm de profondeur.
Je suis parti du préréglage "mill traces 1/64" que j'ai réajusté pour correspondre à ce format.
[[Image:Fabisp.Oiled.jpg|300px]]
[[Image:Fabisp.Milling.jpg|300px]][[image:fabisp.AfterMilling.jpg|300px]]
J'ai mis un peu de huile de vaseline sur la plaque,
[[image:fabsip.Pcb.jpg|600px]]
et En 20 minutes, j'avais mon circuit (coupé avec une fraise de 1/32").
==quelques problèmes d'approvisionnement==
Notre fablab étant encore en cours de construction, nous n'avons pas encore tout approvisionné.
Pour ce qui est de l'électronique, il n'est as évident en france de trouver les références de l'inventaire fablab dans des quantités humaines (<5000) et des délais raisonnables.
Malgré que j'aie pratiquement tout trouvé, il me manque encore des condensateurs qui me sont proposé chez farnell sous un délai de plusieurs semaines.
Je suis donc bloqué à ce stade et j'attends donc les pièces...
==soudure==
J'ai soudé les composants au fer et à l'étain.
Ce ne fut pas très facile avec une panne de 0.8mm : une plus petite serai mieux
Une petite erreur provoquai un court circuit : un peu d'étain s'était glissé sous un condensateur. J'ai dut le dessouder pour nettoyer.
mise à jour 1 mai 2014 : j'ai refait le circuit qui ne foncionnait pas
Maintenant je sais bien souder les CMS :
[[image:Fabisp.soldered.jpg|600px]]
==programmation==
Pour programmer le programmateur, il faut utiliser [http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip le firmware fournit en cours ]
===avec l'AVRISP V2===
C'est un programmateur tout fait
pour qu'il soit reconnu sous linux , il faut faire quelques manipulations :
créer une règle udev pour le programmateur :
<code lang=bash>$ sudo gedit /etc/udev/rules.d/20-avrisp.rules</code>
remplir le fichier avec la ligne suivante :
<code lang=bash># Atmel Corp. AVRISP mkII
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", MODE="660", GROUP="uucp",SYMLINK+="avrdev"</code>
puis s'attribuer le groupe uucp
<code lang=bash>$ sudo adduser <nom d'utilisateur> uucp</code>
enfin, relancer la session pour que la modification fasse effet
[[image:Fabisp.programming.jpg|600px]]
Lorsqu'on cable de circuit cible au programmateur, c'est déjà bon signe si la led s'allume en vert.
ensuite, après avoir décompresser le dossier firmware, éditer le fichier makefile pour indiquer qu'on programme avec l'AVRISP :
<code lang:bash>AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE)</code>
ensuite on lance la compilation :
<code lang:bash>make hex</code>
le résultat de la compilation :
<code lang:bash>avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/usbdrv.c -o usbdrv/usbdrv.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/oddebug.c -o usbdrv/oddebug.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c main.c -o main.o
avr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -o main.elf usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o
rm -f main.hex main.eep.hex
avr-objcopy -j .text -j .data -O ihex main.elf main.hex
avr-size main.hex
text data bss dec hex filename
0 2020 0 2020 7e4 main.hex
</code>
Puis on regle les fusibles :
<code lang:bash>make fuse</code>
résultat :
<code lang:bash>avrdude -c avrisp2 -P usb -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.11s
avrdude: Device signature = 0x1e9207
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.04s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.04s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.11s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.04s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
</code>
enfin, on upload le programme :
<code lang:bash>make program</code>
résultat :
<code lang:bash>avrdude -c avrisp2 -P usb -p attiny44 -U flash:w:main.hex:i
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.11s
avrdude: Device signature = 0x1e9207
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "main.hex"
avrdude: writing flash (2020 bytes):
Writing | ################################################## | 100% 73.70s
avrdude: 2020 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex contains 2020 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 71.44s
avrdude: verifying ...
avrdude: 2020 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
avrdude -c avrisp2 -P usb -p attiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.11s
avrdude: Device signature = 0x1e9207
avrdude: reading input file "0xDF"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.04s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDF:
avrdude: load data hfuse data from input file 0xDF:
avrdude: input file 0xDF contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.04s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.04s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.04s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
</code>
Le programmateur est maintenant prêt à fonctionner : il ne reste plus qu'à dessouder les juppers 1 et 2.
Pour férifier qu'il réagit bien, je tape
<code lang:bash>lsusb</code>
Lorsque j'ai branché le programmateur, il apparait dans la liste sosu cette forme :
<code lang:bash>Bus 003 Device 013: ID 1781:0c9f Multiple Vendors USBtiny</code>
ça y est, j'ai un FabISP qui fonctionne !
==utilisation==
Il faut faire une petite manip pour pouvoir utiliser le FabISP sans être root, sans quoi on a une erreur
<code>avrdude: error: usbtiny_transmit: error sending control message: Operation not permitted
</code>
http://mightyohm.com/blog/2010/03/run-avrdude-without-root-privs-in-ubuntu/
[[Catégorie:FabAcademy]]
[[Catégorie:Electronique]]