Qual é a vantagem de usar um sistema eletrônico baseado em ARM?


22

A maioria dos eletrônicos usa microcontroladores como um AVR, mas estou vendo chips ARM em novos eletrônicos. Diz-se que os chips ARM são mais poderosos, mas em que áreas relacionadas à impressão 3D isso poderia ajudar? Quais são os recursos com os quais o AVR se encontra e onde um ARM poderia ser melhor?

Movimento de alta velocidade? Impressoras Delta? Exibição gráfica?

E o AVR é ​​realmente a limitação aí?

Respostas:


23

Os controladores de impressoras 3D precisam fazer muitas coisas muito, muito rapidamente. Realizar cálculos cinemáticos e dinâmicos enquanto envia milhares de pulsos de passo sincronizados com precisão por segundo é muito, muito difícil . A linha de microcontroladores AVR de 8 bits usada em controladores de impressora 3D mais antigos é basicamente um processador Mr Coffee da era do final dos anos 90. Eles estão completamente esgotados no tempo do processador, apenas executando funções básicas de impressão em impressoras simples (por exemplo, cartesianas), e a adição de carga de cálculo adicional irá atolá-los e causar lentidão, gagueira, pausa e assim por diante.

"Mas minha impressora de 8 bits funciona bem", você diz. Não, não faz. Seu desempenho de impressão é limitado por isso, você percebe ou não. Agora, os cortadores ocultam automaticamente muitas deficiências de desempenho do firmware. Por exemplo, a prática padrão de diminuir bastante a velocidade de impressão nos perímetros é em grande parte o resultado dos processadores de 8 bits terem recursos inadequados para duas coisas:

  1. Executando cálculos de aceleração centrípeta para curvas em vários segmentos gcode
  2. Acompanhamento da transmissão / processamento gcode e planejamento de movimento para gcode com muitos segmentos muito pequenos, como em modelos orgânicos ou arcos suaves

Quando apresentado com uma série de segmentos muito pequenos em um arco suave ou uma curva complexa, o firmware de 8 bits provavelmente engasgará com a taxa de processamento de comando necessária e introduzirá uma gagueira na impressão. Essas pausas incrivelmente breves permitem que a pressão residual na extrusora empurre um pouco mais de plástico, provocando uma pequena espinha na impressão. Portanto, a maioria das ferramentas de corte dizima automaticamente as curvas e gera o código g com resolução reduzida para diminuir a carga no firmware. Problema resolvido, certo?

Mas há outro problema - os algoritmos de controle de movimento GRBL subjacentes a todos os principais controladores de impressoras 3D de código aberto foram projetados com muitos atalhos e hacks para permitir que os processadores de 8 bits sejam executados com rapidez suficiente. Por exemplo, o algoritmo básico apenas analisa a velocidade ou mudança de velocidade na esquina entre dois segmentos e usa isso para decidir quando desacelerar / acelerar ao longo da direção do movimento. Ele não calcula ou considera a aceleração centrípeta / radial de qualquer forma. Este é um truque realmente eficaz na impressão de modelos quadrados e de baixa resolução, mas falha miseravelmente em curvas suaves com muitos pequenos segmentos. O firmware não detecta nenhuma mudança apreciável de velocidade no canto de dois segmentos quase lineares dentro da curva facetada e, portanto, não diminui a velocidade da curva.

Imprimir perímetros complexos sem aceleração significa que a velocidade de avanço comandada deve ser muito baixa para obter boa qualidade. A maioria das impressoras é limitada a cerca de 40 mm / s ou menos em perímetros complexos, apesar de poder executar talvez 80-120 mm / s em preenchimentos de baixa complexidade antes de atingir outros limites de velocidade.

Entre os limites da taxa de processamento de comandos e as deficiências do planejador de movimento exigidas pelos processadores de baixa potência, as velocidades de impressão devem ser muito mais baixas na prática do que o estritamente exigido pelo hardware físico e da impressora. Tudo isso vem de processadores de 8 bits. As soluções alternativas e as práticas recomendadas para lidar com esse problema estão tão profundamente arraigadas nas cadeias de ferramentas e no ecossistema que poucas pessoas percebem que existe um problema. Mas é um limite real que pode ser superado: um processador de alta velocidade executando um planejador de movimento mais rigoroso poderia gerar maiores velocidades médias de impressão com melhor qualidade de impressão.

Dito isto, os firmwares baseados em ARM estão lentamente avançando para planejadores de movimento mais avançados. Esta é uma grande área de desenvolvimento no momento que está realmente afastando os próximos ARMs de baixo custo, como o Cortex M3, em direção a processadores ainda mais rápidos. Na verdade, não é tão difícil maximizar um Arduino Due de 84 MHz, acumulando vários recursos de firmware.

O uso de processadores de 8 bits também torna as impressoras MAIS ALTAS. O maior consumidor de tempo do processador em uma impressora típica de 8 bits é a interrupção de passo que dispara os pulsos de passo para fazer os motores se moverem. É bastante típico que> 60% de todos os ciclos de clock em um Atmega AVR atinjam pulsos de passo de disparo. Como isso ocorre como uma interrupção, outras tarefas de processamento que a impressora deve executar - como cálculos de aceleração e controle do aquecedor - são espremidas nos breves espaços entre os eventos de interrupção de etapas.

Sem um design cuidadoso do firmware, os pulsos de passo "eliminam" outras funcionalidades, como atualizações do visor LCD e cálculos de aceleração. Para permitir taxas de movimento mais altas sem usar todos os recursos do processador, os firmwares de 8 bits têm um modo chamado "duplicação de etapas" que dispara dois (ou quatro, ou oito) pulsos de etapa por etapa de interrupção, de modo que metade (ou um quarto ou oitavo) ), quantas interrupções de passo podem ser usadas para produzir a mesma velocidade de movimento. Essa prática remove os gargalos do processador, mas causa um movimento mais alto e mais alto do motor, porque os pulsos de passo são disparados em rajadas, em vez de uma frequência constante. Com efeito, o nível de micro degraus do motor cai funcionalmente para um modo mais grosso quando a interrupção do stepper dispara etapas duplas ou quádruplas. Então os motores ficam mais altos, menos precisos,

Um efeito colateral interessante é que, se você alternar uma impressora baseada em Marlin de 1/16 a 1/32 e mantiver as mesmas velocidades de impressão, o firmware simplesmente começará a duplicar, reduzindo seu nível efetivo de volta para 1/16.

Os firmwares baseados em ARM também usam duplicação de etapas, mas as taxas de etapas permitidas são tipicamente ~ 8 vezes maiores antes que a etapa dupla / quad seja usada. Isso pode significar velocidades mais altas e / ou movimento mais suave.

Outro problema com os AVRs de 8 bits é a falta de ponto flutuante de hardware e precisa gastar muitos ciclos de clock em cálculos de alta precisão ou lidar com números muito grandes. A cinemática Delta, as funções de nivelamento automático, o cálculo de movimentos com contagens de etapas extremamente altas para impressoras grandes e outras funcionalidades avançadas exigem muitos ciclos de clock em um processador de 8 bits. Um design de firmware ruim ou a adição descuidada de um recurso que requer algumas raízes quadradas extras e funções trigonométricas podem atolar completamente o processador. Esse tipo de fluência de recursos e inchaço no código afetou seriamente o desempenho de Marlin ao longo do tempo, à medida que as pessoas perguntam cada vez mais sobre o antigo AVR.

Em comparação, um processador de 32 bits não possui apenas um relógio mais rápido e mais ciclos de clock, mas também é capaz de fazer matemática muito mais complexa em menos ciclos de clock, porque possui uma funcionalidade de hardware dedicada que cuida de muitas das etapas de um 8bit. processador deve fazer no software.

Os processadores de 8 bits funcionam? Claro, eles funcionam surpreendentemente bem pelo que são e pelo que pedimos a eles. Mas eles inquestionavelmente limitam o desempenho e os recursos das modernas impressoras 3D. Até a atual geração atual de processadores de 32 bits já está sendo maximizada por impressoras de alta velocidade e recursos pesados ​​em matemática. O processador de 8 bits já está duas gerações atrás do que se qualificaria como um controlador de impressora 3D "moderno".


Se a matemática e a computação em tempo real são um problema, por que não há muitos esforços na lógica totalmente programável, como o FPGA, sendo usado para controlar o controle de passo a passo e similares?
Reinstate Monica - ζ--

Os FPGAs não são caros?
Leo Ervin

Custo e complexidade extras. Por que coordenar dois chips quando você pode usar um chip mais rápido? Na verdade, existem vários projetos baseados em FPGA por aí, mas nenhum deles atingiu massa crítica para a aceitação do usuário.
Ryan Carlyle

1
@RyanCarlyle A noção de que dois chips precisam ser coordenados não está correta. Um FPGA pode lidar com serial, análise, planejamento e revisão em um pacote (com o MCU de núcleo leve possível). Custo é um fator embora.
Reinstate Monica - ζ-- 20/02


11

Geralmente, o AVR é ​​de fato menos poderoso do que muitos núcleos ARM usados ​​atualmente. A maioria das impressoras com AVRs não possui coprocessadores de ponto flutuante, embora grande parte do controle de etapas e movimentos possa ser realizado apenas em números inteiros (exceto G2 / G3). O Marlin pode interromper a manipulação de etapas até 10000 vezes por segundo no AVR, traduzindo para 40000 etapas por segundo. Isso não é particularmente útil sem componentes mecânicos que podem se mover nessas velocidades e ainda imprimir resultados significativos (ou são muito mais precisos e têm uma contagem de passos por mm muito maior em uma velocidade semelhante).

A exibição gráfica não é algo particularmente exigente em baixas velocidades - altas velocidades ou interfaces estranhas podem exigir um pouco mais de energia ou uma interrupção dedicada.

Os momentos em que o ARM pode ser importante são para configurações mais pesadas em matemática e especialmente em ponto flutuante, como delta, onde cada movimento requer muitas operações de ponto flutuante e trig e navegação nos menus em um AVR de 16MHz (atmega2560) é descrita como "dolorosamente lento", mas Marlin consegue imprimir resultados significativos em impressoras no estilo delta.

Claramente, um núcleo ARM que seja mais rápido na execução de ponto flutuante suave ou que suporte hardfloat (hardware que executa operações de ponto flutuante com muita eficiência) terá um benefício para esses processos.


3

Geralmente, microcontroladores como o AVR são de núcleo único / de rosca única - portanto, enquanto trabalha em um loop while para executar o controlador do motor, pode haver falta de recursos para fazer qualquer outra coisa, como navegar com eficiência em um menu.

Muitos processadores ARM hoje em dia são multi-core / multi-thread, o que significa que você pode ter um thread trabalhando na impressão, enquanto outro é gratuito para qualquer outra coisa que o usuário queira fazer.

ou seja, qualquer processador AVR executando um servidor da web local para permitir acesso remoto à impressora seria extremamente básico, onde o ARM geralmente permitiria muito mais flexibilidade.


Observe que, se um firmware não usar um bom código multithread, a sobrecarga da comunicação entre threads e entre processos poderá ser extremamente alta.
Reinstate Monica - ζ--

Não confunda os processadores de aplicativos de alto desempenho com vários núcleos com os processadores de classe M otimizados em tempo real. Sim, existem Cortex-M dual core com desempenho impressionante, mas eles não são multiencadeados.
Sean Houlihane 26/09

2

O processador AVR possui desempenho suficiente para impressão padrão. Mas falta desempenho para

  • impressoras delta (consulte resposta em hexafraction )
  • menu de exibição (é muito lento na minha impressora RepRap que usa ATmega2560)
  • interface web (ethernet)

A comparação de especificações técnicas deve ser autoexplicativa. Essa CPU ARM específica é pelo menos 10 vezes mais rápida do que o ATmega2560:

CPU ARM-Cortex M3 LPC1769 (usado no Smoothieboard )

  • CPU: Cortex-M3 , 1 núcleo
  • arquitetura: ARMv7-M (32 bits)
  • frequência: 96-120 Mhz
  • memória
    • Flash: 512 kB
    • RAM: 64 kB

Microcontrolador ATmega2560

  • arquitetura: 8 bits
  • frequência: 16 MHz
  • memória
    • Memória flash 256 KB, dos quais 8 KB usados ​​pelo gerenciador de inicialização
    • SRAM: 8 KB
    • EEPROM: 4 KB

1

Os processadores AVR são de 8 bits - portanto, eles só podem buscar dados da memória 8 bits por vez - enquanto um ARM é de 32 bits e pode buscar dados de 32 bits por vez. A resolução da posição requer um valor mínimo de 24 bits - isso significa que o AVR realiza três buscas de dados para a posição - enquanto o ARM realiza uma busca de dados.

Pior ainda, os processadores AVR dividem internamente o relógio por 3, de modo que um AVR de 40 MHz é executado em 13,3 MHz normalmente, enquanto um ARM é de 1 ciclo de clock por transação de barramento e processamento de instruções - isso inclui um múltiplo de 32 por 32 bits em 1. ciclo do relógio.

O mapa de memória nos processadores ARM tem 32 bits de largura ou 4 GB, enquanto os processadores de 8 bits têm apenas um barramento de endereços de 16 bits ou 64 KB - o que significa que a troca de banco entra em ação em qualquer programa acima de 64 KB - isso requer instruções e tempo para ser feito - enquanto com o ARM isso não é um problema.

Os aspectos de custo são praticamente os mesmos dos AVRs - apenas requerem um firmware reprojetado.

Quanto aos FPGAs:

  • Eles custam o mesmo ou mais do que o processador
  • São dispositivos rápidos, especializados e podem ser configurados para tarefas especializadas
  • Eles têm fatores de custo adicionais:
    • muito mais capas de desacoplamento são necessárias devido à velocidade dos circuitos no FPGA.
    • Requer fontes de alimentação adicionais, planos de aterramento e planos de energia - o que tende a significar (e exigir) um mínimo de uma placa de 4 camadas, ou possivelmente 6 camadas, o que aumenta o custo da eletrônica

O resultado da adição de um FPGA a um AVR custará muito mais do que ir para um processador ARM mais poderoso.


1
Olá e bem-vindo ao SE.3DPrinting! Sua resposta pode se beneficiar muito da capitalização correta, melhoria do layout e uso correto do tamanho da memória. Atualize a resposta.
0scar

Olá James, e muito obrigado pela sua resposta muito interessante e informativa. No entanto, eu concordo com 0scar ... uso correto de maiúsculas e minúsculas, o uso consistente das unidades SI corretas (por exemplo, MHz, GB, KB etc.) melhoraria drasticamente a legibilidade de sua resposta, assim como a redução do uso de múltiplos traços ( - -e - - - -) que são bastante perturbadores, tbh.
Greenonline
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.