Quali sono i vantaggi dell'utilizzo di un'elettronica basata su ARM?


22

La maggior parte dei dispositivi elettronici utilizza microcontroller come un AVR, ma vedo i chip ARM nella nuova elettronica. Si dice che i chip ARM siano più potenti, ma in quali settori legati alla stampa 3D questo potrebbe aiutare? Quali sono le caratteristiche con cui l'AVR lotta e dove un ARM potrebbe essere migliore?

Movimento ad alta velocità? Stampanti Delta? Display grafico?

E l'AVR è davvero la limitazione lì?

Risposte:


23

I controller per stampanti 3D devono fare molte cose molto, molto velocemente. Eseguire calcoli cinematici e dinamici mentre si inviano molte migliaia di impulsi step sincronizzati con precisione al secondo è davvero, davvero difficile . La linea di microcontrollori AVR a 8 bit utilizzata nei vecchi controller per stampanti 3D è sostanzialmente un processore Mr Coffee di fine anni '90. Sono completamente, completamente al massimo sul tempo del processore, eseguendo le funzioni di stampa di base in semplici stampanti (ad esempio cartesiane) e l'aggiunta di un carico di calcolo aggiuntivo li bloccherà e causerà rallentamenti, balbuzie, pause e così via.

"Ma la mia stampante a 8 bit funziona bene", dici. No, non lo fa. Le tue prestazioni di stampa sono limitate da esso, che tu lo realizzi o meno. Le affettatrici ora nascondono automaticamente molte delle carenze prestazionali del firmware. Ad esempio, la pratica standard di rallentare notevolmente le velocità di stampa sui perimetri è in gran parte il risultato di processori a 8 bit con risorse inadeguate per due cose:

  1. Esecuzione di calcoli di accelerazione centripeta per curve su più segmenti gcode
  2. Tenere il passo con la trasmissione / elaborazione gcode e la pianificazione del movimento per gcode con molti segmenti molto piccoli, come nei modelli organici o archi lisci

Quando viene presentato con una serie di segmenti molto piccoli in un arco uniforme o una curva complessa, il firmware a 8 bit probabilmente si strozzerà con la velocità di elaborazione del comando richiesta e introdurrà la balbuzie alla stampa. Queste pause incredibilmente brevi consentono alla pressione residua nell'estrusore di espellere un po 'di plastica in più, facendo un po' di brio sulla stampa. Quindi la maggior parte delle affettatrici decimano automaticamente le curve e producono gcode con una risoluzione ridotta per alleggerire il carico sul firmware. Problema risolto, vero?

Ma c'è un altro problema: gli algoritmi di controllo del movimento GRBL alla base di tutti i principali controller di stampanti 3D open source sono stati progettati con molte scorciatoie e hack per consentire ai processori a 8 bit di eseguire abbastanza velocemente. Ad esempio, l'algoritmo di base esamina solo la variazione di velocità o velocità nell'angolo tra due segmenti e lo utilizza per decidere quando decelerare / accelerare lungo la direzione del movimento. Non calcola né considera l'accelerazione centripeta / radiale. Questo è un trucco davvero efficace quando si stampano modelli boxy a bassa risoluzione, ma fallisce miseramente su curve morbide con molti piccoli segmenti. Il firmware non rileva alcun cambiamento di velocità apprezzabile all'angolo di due segmenti quasi lineari all'interno della curva sfaccettata, e quindi non rallenta per la curva.

La stampa di perimetri complessi non accelerati significa che la velocità di avanzamento comandata deve essere molto bassa per ottenere una buona qualità. La maggior parte delle stampanti è limitata a circa 40 mm / s o meno su perimetri complessi, nonostante sia in grado di eseguire forse 80-120 mm / s su riempimento a bassa complessità prima di raggiungere altri limiti di velocità.

Tra i limiti di velocità di elaborazione dei comandi e le carenze del pianificatore di movimento richieste dai processori a bassa potenza, le velocità di stampa devono essere molto più basse in pratica di quanto strettamente richiesto dalla fisica e dall'hardware della stampante. Tutto questo proviene da processori a 8 bit. Le soluzioni alternative e le migliori pratiche per affrontare questo problema sono così profondamente integrate nelle toolchain e nell'ecosistema che pochissime persone si rendono conto che c'è persino un problema. Ma è un limite reale che può essere superato: un processore ad alta velocità con un pianificatore di movimento più rigoroso potrebbe generare velocità di stampa medie più elevate con una migliore qualità di stampa.

Detto questo, i firmware basati su ARM si stanno lentamente spostando verso pianificatori di movimento più avanzati. Questa è una grande area di sviluppo in questo momento che sta effettivamente spingendo un prossimo spostamento da ARM di fascia bassa come Cortex M3 verso processori ancora più veloci. In realtà non è poi così difficile ottenere un Arduino Due a 84 MHz accumulando un sacco di funzionalità del firmware.

L'uso di processori a 8 bit rende anche le stampanti PIÙ FORTE. Il maggiore consumatore di tempo del processore in una tipica stampante a 8 bit è l'interrupt stepper che attiva gli impulsi di passo per far muovere i motori. È abbastanza tipico che> 60% di tutti i cicli di clock su un Atmega AVR vadano a impulsi di scatto. Poiché ciò si verifica come un interrupt, altre attività di elaborazione che la stampante deve eseguire, come i calcoli dell'accelerazione e il controllo del riscaldatore, vengono schiacciate nei brevi spazi tra gli eventi di interruzione stepper.

Senza un'attenta progettazione del firmware, gli impulsi step "elimineranno" completamente altre funzionalità come gli aggiornamenti del display LCD e i calcoli dell'accelerazione. Al fine di consentire frequenze di movimento più elevate senza utilizzare tutte le risorse del processore, i firmware a 8 bit hanno una modalità chiamata "raddoppio del passo" che attiva due (o quattro, o otto) impulsi di passo per passo-passo in modo che metà (o un quarto o un ottavo) ) come molti interruttori stepper possono essere utilizzati per produrre la stessa velocità di movimento. Questa pratica riduce i colli di bottiglia del processore, ma provoca un movimento del motore più forte e più forte perché gli impulsi di passo vengono attivati ​​a raffica anziché con una frequenza costante. In effetti, il livello di microstepping del motore viene portato in modo funzionale in una modalità più grossolana quando l'interruzione stepper fa doppio o quadruplo passaggio. Quindi i motori diventano più rumorosi, meno precisi,

Un interessante effetto collaterale è che se si passa da una stampante basata su Marlin da 1/16 di microstepping a 1/32 di microstepping e si mantengono le stesse velocità di stampa, il firmware inizierà semplicemente a raddoppiare il passo, portando il livello di microstepping effettivo di nuovo a 1/16.

Anche i firmware basati su ARM utilizzano il raddoppio dei passi, ma le velocità dei passi consentite sono in genere ~ 8 volte superiori prima di utilizzare il doppio / quadrante. Ciò può significare velocità più elevate e / o movimenti più fluidi.

Un altro problema con gli AVR a 8 bit è la mancanza di hardware in virgola mobile e la necessità di dedicare molti cicli di clock a calcoli ad alta precisione o alla gestione di numeri molto grandi. La cinematica delta, le funzioni di autolivellamento, il calcolo delle mosse con conteggi dei passi estremamente elevati per le stampanti di grandi dimensioni e altre funzionalità avanzate richiedono molti cicli di clock su un processore a 8 bit. Il design del firmware scadente o l'aggiunta incurante di una funzione che richiede alcune radici quadrate extra e le funzioni di trigge possono impantanare completamente il processore. Questo tipo di strisciamento di funzionalità e code bloat ha gravemente influenzato le prestazioni di Marlin nel tempo, poiché le persone chiedono sempre di più al vecchio AVR.

In confronto, un processore a 32 bit non ha solo un clock più veloce e più cicli di clock, è anche in grado di fare matematica molto più complesse in meno cicli di clock, perché ha una funzionalità hardware dedicata che si occupa di molti passaggi di 8 bit processore deve fare nel software.

I processori a 8 bit funzionano? Certo, funzionano sorprendentemente bene per quello che sono e ciò che chiediamo loro. Ma limitano senza dubbio le prestazioni e le caratteristiche delle moderne stampanti 3D. Anche l'attuale generazione di processori a 32 bit è già stata ottimizzata da stampanti ad alta velocità e funzionalità matematiche. Il processore a 8 bit è già indietro di due generazioni rispetto a quello che si qualificherebbe come un "moderno" controller per stampante 3D.


Se la matematica e il calcolo in tempo reale sono un problema, allora perché non ci sono molti sforzi nella logica completamente programmabile come FPGA utilizzato per guidare il controllo stepper e simili?
Ripristina Monica - ζ--

Gli FPGA non sono costosi?
Leo Ervin,

Costi extra e complessità. Perché coordinare due chip quando è possibile utilizzare un chip più veloce? Esistono in realtà un certo numero di progetti basati su FPGA là fuori, ma nessuno di essi ha raggiunto la massa critica per l'adozione da parte degli utenti.
Ryan Carlyle,

1
@RyanCarlyle L'idea che due chip debbano essere coordinati non è corretta. Un FPGA può gestire il serial in, analisi, pianificazione e stepping in un pacchetto (con MCU soft-core possibile). Il costo è un fattore però.
Ripristina Monica - ζ--


11

In generale, AVR è in effetti meno potente di molti core ARM utilizzati oggi. La maggior parte delle stampanti con AVR non dispone di coprocessori a virgola mobile, sebbene gran parte del controllo di passi e movimenti possa essere eseguito in matematica a numero intero (tranne G2 / G3). Marlin può interrompere la gestione dei passi fino a 10000 volte al secondo su AVR, traducendo a 40000 passi al secondo. Ciò non è particolarmente utile senza componenti meccanici che possono spostarsi a quelle velocità e stampare comunque risultati significativi (o sono molto più precisi e hanno un conteggio dei passi per mm molto più elevato a una velocità simile).

La visualizzazione grafica non è una cosa particolarmente faticosa da fare a basse velocità: alte velocità o strane interfacce potrebbero richiedere un po 'più di potenza o un interrupt dedicato.

I tempi in cui ARM potrebbe essere importante sono per configurazioni più gravose in matematica e soprattutto in virgola mobile come delta, dove ogni mossa richiede molte operazioni in virgola mobile e trigoni e viene descritta la navigazione nei menu su un AVR a 16 MHz (atmega2560) come "dolorosamente lento", ma Marlin riesce a stampare risultati significativi su stampanti in stile delta.

Chiaramente, un core ARM che è più veloce nell'esecuzione in virgola mobile o supporta hardfloat (hardware che esegue operazioni in virgola mobile in modo molto efficiente) vedrà un vantaggio per tali processi.


3

Generalmente, i microcontrollori come l'AVR sono single core / single threaded, quindi mentre si lavora in un ciclo while per eseguire il controller del motore, potrebbero mancare risorse per fare qualsiasi altra cosa, come navigare in un menu in modo efficiente.

Molti processori ARM al giorno sono multi core / multi thread, il che significa che puoi avere un thread che lavora la tua stampa, mentre un altro è gratuito per tutto ciò che l'utente potrebbe voler fare.

vale a dire qualsiasi processore AVR che esegue un server Web locale per consentire l'accesso remoto alla stampante sarebbe dolorosamente di base, in cui ARM consentirebbe in genere una maggiore flessibilità.


Si noti che se un firmware non utilizza un buon codice multithread, l'overhead delle comunicazioni tra thread e tra processi potrebbe essere estremamente elevato.
Ripristina Monica - ζ--

Non confondere i processori di applicazioni multi-core ad alte prestazioni con i processori di classe M ottimizzati in tempo reale. Sì, ci sono Cortex-M dual core con prestazioni impressionanti, ma non sono multi-thread.
Sean Houlihane,

2

Il processore AVR ha prestazioni sufficienti per la stampa standard. Ma manca di prestazioni per

  • stampanti delta (vedi risposta esafrazione )
  • menu di visualizzazione (è terribilmente lento sulla mia stampante RepRap che utilizza ATmega2560)
  • interfaccia web (ethernet)

Il confronto delle specifiche tecniche dovrebbe essere autoesplicativo. Questa particolare CPU ARM è almeno 10 volte più veloce rispetto all'ATmega2560:

CPU ARM-Cortex M3 LPC1769 (utilizzato in Smoothieboard )

  • CPU: Cortex-M3 , 1 core
  • architettura: ARMv7-M (32 bit)
  • frequenza: 96-120 Mhz
  • memoria
    • Flash: 512 kB
    • RAM: 64 kB

Microcontrollore ATmega2560

  • architettura: 8 bit
  • frequenza: 16 MHz
  • memoria
    • memoria flash 256 KB di cui 8 KB utilizzati dal bootloader
    • SRAM: 8 KB
    • EEPROM: 4 KB

1

I processori AVR sono a 8 bit - quindi possono solo recuperare dati dalla memoria 8 bit alla volta - mentre un ARM è a 32 bit e può recuperare dati a 32 bit alla volta. La risoluzione della posizione richiede un valore minimo di 24 bit - ciò significa che l'AVR accetta 3 recuperi di dati per la posizione - mentre ARM prende 1 recupero di dati.

Peggio ancora, i processori AVR dividono internamente il clock per 3, in modo che un AVR a 40 MHz stia funzionando a 13.3 MHz in genere, mentre un ARM è 1 ciclo di clock per transazione bus ed elaborazione delle istruzioni - questo include un multiplo di 32 bit per 32 bit in 1 ciclo dell'orologio.

La mappa di memoria sui processori ARM è larga 32 bit o 4 GB, mentre i processori 8 bit hanno solo un bus di indirizzo di 16 bit o 64 KB - il che significa che la commutazione del banco entra in gioco su qualsiasi programma superiore a 64 KB - questo richiede istruzioni e tempo per da fare - mentre con ARM non è un problema.

Gli aspetti di costo sono quasi gli stessi degli AVR: richiede solo un firmware riprogettato.

Per quanto riguarda gli FPGA:

  • Costano lo stesso o più del processore
  • Sono dispositivi veloci, specializzati e possono essere configurati per attività specializzate
  • Hanno ulteriori fattori di costo:
    • sono necessari molti più cappucci di disaccoppiamento a causa della velocità dei circuiti nell'FPGA.
    • Richiedono alimentatori aggiuntivi, piani di massa e piani di potenza - che tende a significare (e richiedono) un minimo di una scheda a 4 strati, o possibilmente 6 strati, il che aumenta il costo dell'elettronica

Il risultato dell'aggiunta di un FPGA a un AVR costerà molto di più rispetto a un processore ARM più potente.


1
Ciao e benvenuto su SE.3DPrinting! La tua risposta potrebbe trarre molti benefici dalla corretta capitalizzazione, miglioramento del layout e uso corretto della dimensione della memoria. Si prega di aggiornare la risposta.
0scar

Ciao James e molte grazie per la tua risposta molto interessante e istruttiva. Tuttavia, concordo con 0scar ... corretta capitalizzazione, uso coerente delle unità SI corrette (ad es. MHz, GB, KB, ecc.) Migliorerei drasticamente la leggibilità della tua risposta, così come una riduzione dell'uso di più trattini ( - -e - - - -) che sono piuttosto fonte di distrazione, TB.
Greenonline
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.