Modifications

Aller à : navigation, rechercher

FabISP

9 190 octets ajoutés, 24 septembre 2014 à 15:35
programmation
===ressources===
[http://www.theme.bac.free.fr/eleve/elv_electronique/Sequence%202/ANNEXES%20SEQ2/BienDebuterCMS.pdfdé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.
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 mkIISUBSYSTEM=="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.oavr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -x assembler-with-cpp -c usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.oavr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c usbdrv/oddebug.c -o usbdrv/oddebug.oavr-gcc -Wall -Os -DF_CPU=20000000 -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=attiny44 -c main.c -o main.oavr-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.orm -f main.hex main.eep.hexavr-objcopy -j .text -j .data -O ihex main.elf main.hexavr-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 = 0x1e9207avrdude: reading input file "0xDF"avrdude: writing hfuse (1 bytes): Writing | ################################################## | 100% 0.04s avrdude: 1 bytes of hfuse writtenavrdude: verifying hfuse memory against 0xDF:avrdude: load data hfuse data from input file 0xDF:avrdude: input file 0xDF contains 1 bytesavrdude: reading on-chip hfuse data: Reading | ################################################## | 100% 0.04s avrdude: verifying ...avrdude: 1 bytes of hfuse verifiedavrdude: reading input file "0xFF"avrdude: writing lfuse (1 bytes): Writing | ################################################## | 100% 0.11s avrdude: 1 bytes of lfuse writtenavrdude: verifying lfuse memory against 0xFF:avrdude: load data lfuse data from input file 0xFF:avrdude: input file 0xFF contains 1 bytesavrdude: 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 = 0x1e9207avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option.avrdude: erasing chipavrdude: reading input file "main.hex"avrdude: writing flash (2020 bytes): Writing | ################################################## | 100% 73.70s avrdude: 2020 bytes of flash writtenavrdude: verifying flash memory against main.hex:avrdude: load data flash data from input file main.hex:avrdude: input file main.hex contains 2020 bytesavrdude: 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 = 0x1e9207avrdude: reading input file "0xDF"avrdude: writing hfuse (1 bytes): Writing | ################################################## | 100% 0.04s avrdude: 1 bytes of hfuse writtenavrdude: verifying hfuse memory against 0xDF:avrdude: load data hfuse data from input file 0xDF:avrdude: input file 0xDF contains 1 bytesavrdude: reading on-chip hfuse data: Reading | ################################################## | 100% 0.04s avrdude: verifying ...avrdude: 1 bytes of hfuse verifiedavrdude: reading input file "0xFF"avrdude: writing lfuse (1 bytes): Writing | ################################################## | 100% 0.04s avrdude: 1 bytes of lfuse writtenavrdude: verifying lfuse memory against 0xFF:avrdude: load data lfuse data from input file 0xFF:avrdude: input file 0xFF contains 1 bytesavrdude: 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]]
0
6 691
modifications

Menu de navigation