Feb 292012
 

Pewnie niektórzy RepRap maniacy przekonwertowani mniej lub bardziej ze światka maszyn CNC zastanawiają się – po co nam firmware ? Przecież można by drukarką RepRap sterować za pomocą portu LPT, tak samo jak cyfrową frezarką – wystarczy program kontrolny (Mach3 lub EMC). Dla tych, którzy są zacietrzewionymi fanami CNC jest np EMCRepRap oraz EMCArduino, ale sprawa nie jest do końca taka prosta jak by się mogło wydawać – a przynajmniej użycie mikroprocesora i firmware’u przynosi tyle korzyści, że opłaca się to robić.

Po pierwsze : mikrokontroler (ATmega644P w większości przypadków) zajmuje się monitorowaniem temperatury i reagowaniem na jej zmiany włączając i wyłączając grzałkę. Kontrolowane są : grzałka na głowicy ekstrudera oraz stół do drukowania. Można to też zrobić niezależnie, dobudowanym termostatem, i nadal sterować maszyną przez port LPT, ale …

Po drugie : drukarka wyposażona w elektronikę z mikroprocesorem może drukować zupełnie samodzielnie, przy dodaniu do niej czytnika kart SD. W tej chwili bez problemów można kupić takie czytniki dla elektroniki RAMPS czy Sanguinololu, a niektóre drukarki są w nie wyposażone standardowo (RapMan).

W tym artykule zajmiemy się więc sprawą podstawową : jak załadować na ATmegę bootloader i firmware.

 Ale może zacznijmy od początku. Wszystko zaczęło się od Arduino, i jego klona – Sanguino. Na tej elektronice zbudowano model trzeciej generacji, który spopularyzował technologię domowego druku 3d – przez to, że był tani i w pełni open source. Potem zaczęły powstawać nowe modele elektronik sterujących, ale wszystkie miały wspólne cechy – takie jak komunikacja przez Serial Port i oprogramowanie ładowane ze środowiska Arduino.

Dla niewtajemniczonych, przypomnijmy, że Arduino to pierwsza zupełnie otwarta platforma do eksperymentów z tzw ‘programowaniem namacalnym’ :-) (physical computing), gdzie z bardzo dużą łatwością możemy za pomocą komputera sterować silnikami, światłami oraz innymi kinetycznymi bądź interaktywnymi instalacjami. Arduino było z pewnością niesamowitym katalizatorem przemian, które zbliżyły do siebie świat fizyczny i wirtualny. Więcej informacji o Arduino można znaleźć na wikipedii i oficjalnej stronie projektu.

Dlatego też, aby załadować oprogramowanie na płytkę, należy postępować tak samo jak w przypadku tradycyjnego Arduino – bo ogólnie rzecz biorąc, elektronika typu Sanguinololu czy RAMPS to jest Arduino (!) – szczególnie ta druga, która właściwie oznacza RepRap Arduino Mega Pololu Shield.

Tak więc aby zrobić coś w kierunku załadowania oprogramowania, musimy najpierw upewnić się, czy na chipie jest tzw bootloader. Jest to specjalny program, który umożliwia ładowanie na niego kodu programów sterujących – czyli jest to coś w rodzaju mikro-systemu operacyjnego. Jeśli kupiliśmy gotowy zestaw, i chcemy tylko zmienić oprogramowanie, to nie ma się czym martwić, bootloader powinien być na miejscu. Jeśli jednak kupiliśmy czysty chip ze sklepu elektronicznego, to prawdopodobnie jest on zupełnie pusty.

W takim wypadku musimy użyć programatora oraz avrdude lub avrstudio, żeby ‘wgrać’ bootloader. Jeśli nie mamy programatora, ale posiadamy np Arduino, możemy zrobić to używając tej techniki. Ja używam zwykłego avrdude i wpisuję polecenia z linii komend – takie jak ustawienie wewnętrzych ‘bezpieczników’ (fuse), oraz załadowanie pliku z bootloaderem (powinien nazywać się ATmegaBOOT_644P.hex – można go znaleźć w katalogu z instalacją Sanguino).

Jeśli nasz chip jest gotowy, podłączamy naszą elektronikę do komputera kablem USB i odpalamy Arduino (które można ściągnąć stąd). Pamiętajmy jednak, że np do Sanguinololu musimy mieć doinstalowany dodatek Sanguino, do ściągnięcia z http://sanguino.cc/ . Potem już sprawa wygląda prosto – otwieramy katalog z oprogramowaniem, i wybieramy główny plik projektu (powinien nazywać się tak samo jak katalog w którym jest – czyli np. sprinter.pde albo marlin.pde). Po otwarciu tego pliku, powinniśmy zobaczyć coś jak poniżej :

W obu z powyższych typów firmware (Marlin i Sprinter) mamy specjalną zakładkę ‘configuration.h’ – to właśnie tutaj zmieniamy główne właściwości drukarki, takie jak maksymalne prędkości, przyspieszenia czy kierunki pracy osi lub wielkość obszaru roboczego. Jeśli to dla nas trochę zbyt skomplikowane – to możemy skorzystać z opisywanego ostatnio generatora Marlinów.

Po ustawieniu drukarki według własnych życzeń (szczególnie ważna jest ilość kroków na mm) wybieramy w menu Tools>Serial Port odpowiedni port COM, w menu Tools>Board wybieramy nasz typ elektroniki (Sanguino lub Arduino Mega) i klikamy przycisk ‘Upload’.

Po pojawieniu się białego napisu w oknie dialogowym (jak na ilustracji powyżej) musimy poczekać ok minuty lub dwóch, po czym powinien się nam ukazać napis ‘done uploading’. Możemy teraz połączyć się z drukarką za pomocą naszego host software (Pronterface lub inny), wybierając ten sam port COM i odpowiednią prędkość połączenia (ustawiamy ją w zakładce configuration.h).

Czasem niektóre rzeczy nie idą jednak tak jak chcemy, i pojawia się nam informacja jak poniżej :

avrdude: stk500_getsync(): not in sync: resp=0×15
avrdude: stk500_disable(): protocol error, expect=0×14, resp=0×51

Oznacza to, że Arduino nie może połączyć się z płytką i jej zaprogramować. Zazwyczaj wystarczy użyć przycisku reset – nacisnąć go i puścić w momencie pojawienia się białego napisu po kompilacji kodu (najlepiej spróbować kilka razy). Jeśli to nie pomaga, to sprawdzamy :

- czy na chipie na pewno jest bootloader (uwaga : można mieć chip z działającym firmware, ale bez bootloadera – jest to możliwe, oprogramowanie ładuje się wtedy na chip programatorem – ale nie polecam tego rozwiazania)

- czy da się uploadować  kod z innego komputera ? zdarza się, że firewall blokuje komunikację z portem COM

- czy chip jest dobrze umieszczony w gnieździe (jeśli jest wyjmowalny) albo czy nie ma ‘zimnych’ styków jeśli jest przylutowany do płytki.

Po wyeliminowaniu któregoś z powyższych błędów, oprogramowanie powinno się ładować bez problemu.

 

Czy zmiany oprogramowania są konieczne ? Myślę, że nie – możemy drukować przez długi czas bez kombinowania przy firmware, ale w praktyce po jakimś czasie pojawiają się rzeczy, które chcielibyśmy ‘podkręcić’ – jak przyspieszenia czy maksymalne prędkości. W oprogramowaniu Marlin można to co prawda zrobić z linii komend – ale po resecie wszystko wraca do wartości wpisanych w configuration.h.

 

 

 

  6 Responses to “Firmware – czyli co w ATmega piszczy”

  1. Czy mógłbyś dokładnie, krok po kroku opisać ładowanie bootloadera.

  2. jedno pytanie: jak wgram bootloadera na atmege i włożę mikroprocek do Sanuginololu to jak wgrać firmware? tzn. czy złącze ISP jakie jest na Sanguinololu 1.3a muszę podłączyć do zwykłego programatora czy do jakiejś płytki od Arduino?

  3. zwyczajnie, przez kabel USB używając środowiska Arduino. Ściągasz z http://www.arduino.cc/ , otwierasz sobie firmware i ładujesz. Wszystkie informacje o tym jak to zrobić są właśnie w powyższym artykule :-)

  4. heh dzięki za szybką odpowiedź :P nie znam się na Arduino i troszkę mnie dziwi, że podłączam po prostu Sanguinololu do kompa i przez zwykły kabel USB bez żadnego komputera i jakieś specjalnej płytki mogę wgrać firmware do Mikroprocesor :P Czyli wystarczy Sanguinololu z mikroprocesorem i bootloaderem i zwykły kabel USB do kompa? :P

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

   
© 2011 Suffusion theme by Sayontan Sinha