Home › Forum › Pc – Computer & co. › Come compilare Marlin 2 per BIGTREETECH SKR mini E3
-
AutorePost
-
14 Marzo 2020 alle 13:29 #1792Magnetic_dudAmministratore del forum
Questa non è proprio una guida, ma tutti gli step che ho fatto per compilare questo firmware (Marlin 2.0) per questa scheda (la BTT SKR Mini E3 1.2). Così tra 6 mesi la posso rileggere per eventuale ricompilazione, senza dimenticarmi niente.
Volevo usare Platform.io con Atom, ma dice non è più supportato. Quindi sono passato a VS Code, che ha un download portatile, senza installazione, qui. https://code.visualstudio.com/download
Mi baso sulla guida pubblicata qui in inglese: https://marlinfw.org/docs/basics/install_platformio_vscode.html
Vado nelle estensioni, cerco PlatformIO, lo installo, riavvio VS Code.
Il firmware pubblicato da Bigtreetech è vecchio di mesi, chissà con che bug, non si sa che versione esatta è. Mi baso quindi sul firmware normale Marlin.
Avrei voluto clonare il repository, ma il pulsante clone in VS Code non funziona. Forse da installare git? Vabbé per ora copio semplicemente i file da https://github.com/MarlinFirmware/Marlin/archive/2.0.x.zip
Ho provato a usare AutoBuildMarlin, per fare tutto in automatico, ma non sono stato in grado di farlo funzionare. Vabbé, allora faccio a mano.
Le configurazioni di base, quelle che tutte le guide indicano, non sono più presenti in Marlin-2.0.x/config/, ma all’interno un file di testo chiamato Readme.md indica che sono disponibili su https://github.com/MarlinFirmware/Configurations/archive/release-2.0.5.zip
Scarico, prendo i file .h contenuti in Configurations-release-2.0.5/config/examples/BigTreeTech/SKR Mini E3 1.2 e li metto in Marlin-2.0.x/Marlin, sovrascrivendo il contenuto.
Copio anche i due file mancanti da Configurations-release-2.0.5.zip\Configurations-release-2.0.5\config\examples\Creality\Ender-3
Siccome ho copiato i file per un logo personalizzato al boot, abilito
#define SHOW_CUSTOM_BOOTSCREEN
e
#define CUSTOM_STATUS_SCREEN_IMAGE
In futuro cambierò anche l’immagine del boot
I valori del PID del letto riscaldato variano rispetto alla board originale. Li lascio variati.
Configurare il sensore di livello, ABL. Uso un sensore a induzione su piano in acciaio con PEI. Cavo marrone sul 5V (della ventola interna, altri connettori non funzionano…), cavo blu sul ground, cavo nero sul positivo dello Z-stop (quello di destra, con il quadrato)
Attivo #define FIX_MOUNTED_PROBE
Avendo montato la sonda sul guscio Petsfang mini, imposto gli offset di conseguenza.
#define NOZZLE_TO_PROBE_OFFSET { 48, -2, 0 }
Cambio anche #define CUSTOM_MACHINE_NAME con uno a mia scelta
Abilitare #define Z_SAFE_HOMING
In configuration_adv.h abilito:
#define ARC_SUPPORT
Cambio #define FILAMENT_CHANGE_UNLOAD_LENGTH 100 così poi lo tiro a mano invece che aspettare l’espulsione lenta
Inizialmente ho avuto la genialata di cambiare il file platformio.ini con quello presente in https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/blob/master/firmware/V1.2/Marlin-2.0.x-SKR-Mini-E3-V1.2/platformio.ini
Però tutto quello che ottengo è un errore nella compilazione, mi dice can’t open file ‘Marlin/src/HAL/HAL_STM32F1/build_flags.py’: [Errno 2] No such file or directory
Provo su un altro PC. Invece che usare Windows reinstallo tutto su linux e rifaccio tutti gli step da zero.
In realtà invece no, siccome quel file platformio.ini è vecchio di mesi (quindi: anni nel mondo informatico), non contiene le giuste istruzioni per la compilazione. Cambiare default_envs con STM32F103RC_btt.
Ora mi dice:
.pio\build\STM32F103RC_btt\firmware.elf section
.rodata' will not fit in region
romperché il firmware è troppo grosso per la memoria… devo quindi trovare un’altra alternativa… mi mancano poco meno di 4k…
14 Marzo 2020 alle 13:39 #1793Magnetic_dudAmministratore del forumCi sono riuscito!
Ho fatto tre cose:
Ho cambiato la lingua dei menu in italiano:
#define LCD_LANGUAGE it
Ho disattivato ARC_SUPPORT
//#define ARC_SUPPORT
E tolto il bootscreen
//#define SHOW_BOOTSCREEN
Finalmente, dopo tre ore ho il file firmware.bin!!! Se solo riuscissi a trovare il lettore di microsd per poterlo caricare nella stampante 3d…
14 Marzo 2020 alle 13:40 #1794Magnetic_dudAmministratore del forumAh, il file si trova in: Marlin-2.0.x\.pio\build\STM32F103RC_btt
15 Marzo 2020 alle 12:17 #1796Magnetic_dudAmministratore del forumAncora non ho trovato un lettore usb di microsd, quindi non ho provato.
Mi sono accorto che non ho attivato il sensore di fine filamento. Da togliere il commento a:
#define FILAMENT_RUNOUT_SENSOR
Il sensore di fine filamento (un pulsante NC) va connesso al pin PC15, indicato sulla scheda come E0-STOP
Dopo aver interrotto il circuito, lo faccio proseguire per 25 mm decommentando:
#define FILAMENT_RUNOUT_DISTANCE_MM 25
Inoltre, ho commentato //#define MESH_BED_LEVELING e abilitato
#define AUTO_BED_LEVELING_BILINEAR
#define RESTORE_LEVELING_AFTER_G28
Sembra che non ci sia abbastanza memoria per ABL UBL, che in teoria sarebbe migliore. Penso che comunque con un piano da 23 cm non ci sia grande differenza.
Il sensore di livello va collegato a PC14, indicato sulla scheda come PROBE, il pin di destra
16 Marzo 2020 alle 11:36 #1797Magnetic_dudAmministratore del forumFunziona! Ho collegato il +5V della sonda (filo marrone) al +5V del connettore SPI, che sarebbe quello in alto a dx (gruppo di 6)
Non funziona l’auto home. Probabilmente devo invertire il segnale della sonda:
#define Z_MIN_ENDSTOP_INVERTING true
e
#define Z_MIN_PROBE_ENDSTOP_INVERTING true
Siccome #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN non è commentato, va usato il pin Z-STOP invece del pin PROBE.
Nessuna speranza di avere una schermata di boot personalizzata, non c’è abbastanza spazio nemmeno per un loghetto 40×40 pixel…
Dopo aver aggiornato il firmware, il file firmware.bin non viene rinominato in firmware.cur e quindi viene flashato tutte le volte. Rimuovere il file manualmente dalla microsd altrimenti viene reinstallato a ogni singolo avvio, con perdita di tempo molto grande
16 Marzo 2020 alle 16:08 #1799Magnetic_dudAmministratore del forumI problemi non sono finiti. Nemmeno il tempo di finire la calibrazione dello Z-offset e la scheda si bloccava, facendo un ronzio stranissimo. Dopo un’oretta di troubleshooting sono riuscito a capire che si trattava di surriscaldamento del processore: era bollente! (Anche se ci avevo messo un dissipatore in alluminio). La ventola che è posizionata sopra al processore però non partiva subito, partiva solo quando si mandava un file in stampa. Ho quindi capito che, rispetto alla board originale, FAN0 è la ventola di stampa, FAN1 è la ventola per la scheda madre. Ho scambiato i connettori, ora è molto più stabile in quanto ha dissipazione attiva.
Altro problema è il calcolo del piano, è estremamente inaffidabile. Forse la temperatura influisce sull’affidabilità del sensore, che è a induzione. Quindi, abilito il comando M48 per poter vedere l’affidabilità:
// Enable the M48 repeatability test to test probe accuracy
#define Z_MIN_PROBE_REPEATABILITY_TESTPoi farò le misurazioni solo all’avvio della macchina, con il piano freddo, e non a ogni file. Così posso usare anche una matrice di 5×5 misurazioni per maggiore precisione (se no si perderebbe un sacco di tempo)
Dico di spegnere il riscaldamento durante le misurazioni:
#define PROBING_HEATERS_OFF // Turn heaters off when probing
#if ENABLED(PROBING_HEATERS_OFF)
#define WAIT_FOR_BED_HEATER // Wait for bed to heat back up between probes (to improve accuracy)
#endife
// Warn on display about possibly reduced accuracy
#define DISABLE_REDUCED_ACCURACY_WARNINGAbilito anche l’opzione per fare più misurazioni e fare la media:
#define MULTIPLE_PROBING 3
#define EXTRA_PROBING 1Purtroppo con queste funzioni in più, mi mancano 7k di memoria
Cerco cosa disattivare, ma attivo #define G26_MESH_VALIDATION che potrebbe essere molto utile. Ora mi mancano 12k di memoria.
Disattivo #define SLIM_LCD_MENUS e risparmio 6k di memoria
Disattivo #define INDIVIDUAL_AXIS_HOMING_MENU e risparmio altri 0.5k
Disattivo anche il bootlogo
Disattivo:
#define LEVEL_BED_CORNERS
#define EEPROM_CHITCHAT
#define LCD_BED_LEVELING
#define STATUS_CHAMBER_ANIM (in advanced)
Ma niente, #define G26_MESH_VALIDATION non può essere attivato. Disattivandolo si risparmia un sacco di spazio, si può riattivare il boot logo
23 Marzo 2020 alle 9:51 #1822Magnetic_dudAmministratore del forumL’estrusore salta troppi step. Disabilito #define STEALTHCHOP_E in configuration_adv.h
-
AutorePost
- Devi essere connesso per rispondere a questo topic.