« FabISP » : différence entre les versions
De fablabo
(22 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 36 : | Ligne 36 : | ||
===ressources=== | ===ressources=== | ||
http://www.theme.bac.free.fr/eleve/elv_electronique/Sequence%202/ANNEXES%20SEQ2/BienDebuterCMS.pdf | [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] | |||
==premiers tests de découpe vinyl du circuit== | ==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. | 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. | ||
Ligne 55 : | Ligne 58 : | ||
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]] | 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== | ===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. | 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. | ||
Ligne 69 : | Ligne 74 : | ||
Je suis parti du préréglage "mill traces 1/64" que j'ai réajusté pour correspondre à ce format. | Je suis parti du préréglage "mill traces 1/64" que j'ai réajusté pour correspondre à ce format. | ||
J'ai mis un peu de huile de vaseline sur la plaque, et En 20 minutes, j'avais mon circuit (coupé avec une fraise de 1/32"). | [[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:FabAcademy]] | ||
[[Catégorie:Electronique]] | [[Catégorie:Electronique]] |