Küsimus:
Mis kasu on ARM-põhise elektroonika kasutamisest?
Lars Pötter
2016-02-10 02:56:39 UTC
view on stackexchange narkive permalink

Enamik elektroonikat kasutab mikrokontrollereid nagu AVR, kuid ma näen ARM-kiipe uues elektroonikas. ARM-kiibid on väidetavalt võimsamad, kuid millistes 3D-printimisega seotud valdkondades võiks see aidata? Mis on funktsioonid, millega AVR võitleb ja kus ARM võiks parem olla?

Kiire liikumine? Delta printerid? Graafiline kuva?

Ja kas AVR on tõesti selle piirang?

Viis vastused:
Ryan Carlyle
2016-02-11 05:18:08 UTC
view on stackexchange narkive permalink

3D-printeri kontrollerid peavad tegema palju asju väga-väga kiiresti. Kinemaatika ja dünaamika arvutuste tegemine, saates samal ajal tuhandeid täpselt sünkroniseeritud samm-impulsse sekundis, on tõesti väga raske . Vanemates 3D-printerikontrollerites kasutatav 8-bitine mikrokontrollerite sari on põhimõtteliselt 1990. aastate lõpu ajastu Mr Coffee protsessor. Need on protsessori aja jooksul täielikult ära kasutatud, täites lihtsate (nt ristkülikukujuliste) printerite põhifunktsioonid ja täiendava arvutuskoormuse lisamine ähmastab need ja põhjustab aeglustusi, kogelemist, pause jne.

"Aga minu 8-bitine printer töötab hästi," ütlete te. Ei, see pole nii. Teie printimise jõudlus on sellega piiratud, olenemata sellest, kas saate sellest aru või mitte. Viilutajad varjavad teie eest nüüd automaatselt palju püsivara jõudluse puudujääke. Näiteks perimeetrite printimiskiiruse olulise aeglustamise tavapraktika on suuresti tingitud sellest, et 8-bitistel protsessoritel on ebapiisavad ressursid kaheks:

  1. mitme gkoodi segmendi kõverate tsentripetaalse kiirenduse arvutuste tegemine
  2. Gcode edastamisel / töötlemisel ja gcode liikumise planeerimisel palju väga väikeste segmentidega, näiteks orgaaniliste mudelite või siledate kaaridega

Kui esitatakse koos väga väikeste seeriatega segmendid sujuva kaare või keeruka kõverana, lämmatab 8-bitine püsivara tõenäoliselt käsu töötlemise vajaliku kiiruse ja viib prindile kogelemise. Need uskumatult lühikesed pausid võimaldavad ekstruuderis jääksurvel ekstra plastikut välja suruda, muutes trükisele veidi hinge. Nii et enamik viilutajaid kümnendavad kõverad ja väljastavad gcode vähendatud eraldusvõimega, et püsivara koormust kergendada. Probleem on lahendatud, eks?

Kuid on veel üks probleem - kõigi suuremate avatud lähtekoodiga 3D-printeri kontrollerite aluseks olevad GRBL-i liikumisjuhtimise algoritmid olid loodud paljude otseteede ja häkkimistega, et 8-bitised protsessorid saaksid piisavalt kiiresti käituda. Näiteks vaatleb põhialgoritm kiiruse või kiiruse muutust ainult kahe segmendi vahelises nurgas ja kasutab seda, et otsustada, millal liikumissuunas aeglustada / kiirendada. See ei arvuta ega arvesta tsentripetaalset / radiaalset kiirendust. Karbiliste ja väikese eraldusvõimega mudelite printimisel on see tõeliselt tõhus häkkimine, kuid see ebaõnnestub siledate kurvide korral, kus on palju väikeseid segmente. Püsivara ei tuvasta ühtegi märkimisväärset kiiruse muutust tahvlikõvera kahe peaaegu lineaarse segmendi nurgas ja seega ei aeglusta kõverat. Nii et keerukas geomeetria trükitakse efektiivselt püsikiirusel ja kiirendamata.

Komplekssete perimeetrite kiirendamata printimine tähendab, et hea kvaliteedi saavutamiseks peab käskitav etteandekiirus olema väga madal. Enamik printereid on keerulistes perimeetrites piiratud umbes 40 mm / s või vähem, vaatamata sellele, et enne muude kiirusepiirangute saavutamist on võimalik töötada madala keerukusega täites 80–120 mm / s.

Käsu töötlemiskiiruse piirangute vahel ja vähese energiatarbega protsessorite poolt nõutavad puudused liikumise planeerimisel peavad printimiskiirused olema praktikas palju väiksemad, kui füüsika ja printeri riistvara seda rangelt nõuavad. See kõik pärineb 8bit protsessoritelt. Lahendused ja parimad tavad selle probleemiga toimetulemiseks on nii sügavalt sisse lülitatud tööriistakettidesse ja ökosüsteemi, et väga vähesed inimesed mõistavad, et probleem on isegi olemas. Kuid see on tõeline piir, millest on võimalik üle saada: range protsessor, mis töötab rangema liikumisplaneerijaga, võib luua parema printimiskvaliteediga suurema keskmise printimiskiiruse.

Nagu öeldud, liiguvad ARM-il põhinevad püsivara vaid aeglaselt arenenumate liikumiskorraldajate poole. See on praegu suur arengupiirkond, mis tegelikult viib eelseisva nihke madalama hinnaga ARM-idelt nagu Cortex M3 veelgi kiiremate protsessorite poole. Tegelikult ei ole 84 MHz Arduino Due maksimeerimine hunniku püsivara funktsioonide abil nii raske.

8-bitiste protsessorite kasutamine muudab printerid ka LOUDERiks. Tüüpilise 8-bitise printeri protsessori aja suurim tarbija on samm-katkestus, mis käivitab mootori liikuma panemiseks samm-impulsid. On üsna tüüpiline, kui Atmega AVR-is> 60% kõigist taktsüklitest kasutatakse astmeliste impulsside käivitamiseks. Kuna see toimub katkestusena, pigistatakse muud töötlemistoimingud, mida printer peab tegema, - näiteks kiirenduse arvutused ja kütteseadme juhtimine - samm-katkestuse sündmuste vahel lühikestesse ruumidesse.

Ilma püsivara hoolika kujunduseta "tõrjuvad" samm-impulsid muud funktsioonid, nagu LCD-ekraanide värskendused ja kiirendusarvutused, täielikult välja. Suuremate liikumiskiiruste võimaldamiseks ilma kõiki protsessori ressursse kasutamata on 8-bitistel tarkvararakenditel režiim nimega "sammude kahekordistamine", mis käivitab kaks (või neli või kaheksa) astmelist impulssi samm-sammult nii, et pool (või veerand või kaheksas) ), sest sama liikumiskiiruse saamiseks võib kasutada paljusid astmelisi katkestusi. See tava vähendab protsessori kitsaskohti, kuid põhjustab mootori karedamat ja valjemat liikumist, kuna samm-impulsse lastakse pigem purske kui püsiva sagedusega. Tegelikult langeb mootori mikrotaseme tase funktsionaalselt jämedamale režiimile, kui astmeline katkestus tulistab topelt- või neljakordseid samme. Nii et mootorid muutuvad valjemaks, vähem täpseks ja äärmuslikel juhtudel võib neil olla resonantsiga probleeme.

Huvitav kõrvalmõju on see, et kui vahetate Marlini-põhise printeri 1/16 mikrotasemelt 1/32 mikrostempelile ja hoiate samu printimiskiirusi, hakkab püsivara lihtsalt kahekordistama, langetades teie efektiivse mikrotaseme astme paremale tagasi 1/16-ni.

ARM-põhised püsivara kasutavad ka sammude kahekordistamist, kuid lubatavad sammude määrad on enne kahekordse / neljarattalise astme kasutamist tavaliselt ~ 8 korda kõrgemad. See võib tähendada suuremat kiirust ja / või sujuvamat liikumist.

Delta kinemaatika, automaatse nivelleerimise funktsioonid, suurte printerite jaoks ülisuure sammulugemisega käikude arvutamine ja muud täiustatud funktsioonid võtavad kõik 8-bitises protsessoris palju kella tsükleid. Kehv püsivara kujundus või hooletult funktsiooni lisamine, mis nõuab mõnda täiendavat ruutjuurt ja trig-funktsiooni, võib protsessori täielikult ummistada. Selline funktsioonide hiilimine ja koodipuhumine on aja jooksul tõsiselt mõjutanud Marlini jõudlust, kuna inimesed küsivad üha enam vana AVR-i.

Võrdluseks - 32-bitisel protsessoril pole ainult kiirem kell ja rohkem taktsükleid, vaid see suudab ka palju keerukamat matemaatikat teha vähemate tsüklitega, kuna sellel on spetsiaalne riistvaraline funktsionaalsus, mis hoolitseb paljudest sammudest, mida 8-bitine protsessor tarkvaras tegema peab.

Kas 8bit protsessorid töötavad? Muidugi, nad töötavad üllatavalt hästi selle nimel, mis nad on ja mida me neilt küsime. Kuid need piiravad vaieldamatult tänapäevaste 3D-printerite jõudlust ja funktsioone. Isegi tänapäeva praeguse 32-bitiste protsessorite põlvkonna maksimeerivad juba kiirprinterid ja matemaatikat nõudvad funktsioonid. 8-bitine protsessor on juba kaks põlvkonda maas, mis kvalifitseeruks "moodsaks" 3D-printeri kontrolleriks.

Kui matemaatika ja arvutamine on reaalajas probleem, siis miks pole täielikult programmeeritavas loogikas palju pingutusi, näiteks FPGA-d kasutatakse samm-juhtimise juhtimiseks?
Kas FPGA-d pole kallid?
Lisakulud ja keerukus. Miks koordineerida kahte kiipi, kui saate kasutada ühte kiiremat kiipi? Seal on tegelikult mitmeid FPGA-põhiseid projekte, kuid ükski neist pole saavutanud kasutajate omastamise kriitilist massi.
@RyanCarlyle Arusaam, et kaks kiipi tuleb kooskõlastada, pole õige. FPGA saab hakkama ühe paketi jadamisse, sõelumisse, planeerimisse ja sammu astumisse (võimalik on pehme südamikuga MCU). Maksumus on siiski tegur.
Kõik katsed kasutada FPGA-sid, mida olen siiani näinud, kasutasid kahte kiipi, kuid aitäh, et osutasite sellele.
http://mobilegeeks.de/wp-content/uploads/2012/11/citizen-kane-clapping-gif.gif
nanofarad
2016-02-10 06:34:47 UTC
view on stackexchange narkive permalink

Üldiselt on AVR tegelikult vähem võimas kui paljud tänapäeval kasutatavad ARM-südamikud. Enamikul AVR-ga printeritest pole ujukoma kaasprotsessoreid, kuigi paljusid sammu- ja liikumiskontrolli saab teha ainult täisarvulises matemaatikas (välja arvatud G2 / G3). Marlin saab AVR-is sammude käitlemiseks katkestada kuni 10000 korda sekundis, tõlkides 40000 sammu sekundis. See pole eriti kasulik ilma mehaaniliste komponentideta, mis saaksid liikuda nende kiiruste juures ja printida siiski sisukaid tulemusi (või on palju täpsemad ja samalaadse kiirusega sammude arv-mm-ga palju suuremad).

Graafiline ekraan ei ole eriti maksustav asi, mida teha madalal kiirusel - suurel kiirusel või imelike liideste korral võib vaja minna natuke rohkem energiat või spetsiaalset katkestust.

Ajad, kui ARM võib olla oluline matemaatiliselt raskete ja eriti ujuvate punktidega raskete seadistuste jaoks, näiteks delta, kus iga liigutus nõuab palju ujukoma- ja trigerioperatsioone ning navigeerimine menüüdes 16MHz AVR-il (atmega2560) on kirjeldatud nagu "valusalt aeglane", kuid Marlinil õnnestub delta-stiilis printeritele sisukaid tulemusi printida.

On selge, et ARM-i tuum on pehme ujuva punkti täitmisel kiirem või toetab kõvasti (riistvara, mis teeb ujukombeoperatsioone väga tõhusalt), näeb selliste protsesside jaoks kasu.

Matt Clark
2016-02-10 10:49:33 UTC
view on stackexchange narkive permalink

Üldiselt on mikrokontrollerid, näiteks AVR, ühe südamikuga / ühe keermega - nii et mootori kontrolleri käivitamiseks mõnda aega töötades võivad teil puududa ressursid midagi muud teha, näiteks menüüs tõhusalt navigeerimiseks.

Paljud ARM-i protsessorid on nüüd mitme tuumaga / mitme keermega, mis tähendab, et teil võib olla üks niit printimisel, samas kui teine ​​on tasuta kõigeks muuks, mida kasutaja soovib.

st Kõik AVR-protsessorid, mis käitavad printerile kaugjuurdepääsu võimaldamiseks kohalikku veebiserverit, oleksid valusad, kus ARM võimaldaks üldiselt palju rohkem paindlikkust.

Pange tähele, et kui püsivara ei kasuta head mitmekeermelist koodi, võib niididevahelise ja protsessidevahelise suhtluse üldkulud olla äärmiselt suured.
Ärge ajage segi mitme tuumaga suure jõudlusega rakenduste protsessoreid reaalajas optimeeritud M-klassi protsessoritega. Jah, on kahetuumalisi Cortex-M, millel on muljetavaldav jõudlus, kuid need pole mitmekeermelised.
amra
2016-02-11 04:05:50 UTC
view on stackexchange narkive permalink

AVR-protsessor on tavapärase printimise jaoks piisava jõudlusega. Kuid sellel puudub jõudlus

  • delta printerite jaoks (vt hexafraction vastus)
  • kuva menüü (see on minu RepRap printeril, mis kasutab ATmega2560, kohutavalt aeglane)
  • veebiliides (ethernet)

Tehniliste näitajate võrdlus peaks olema iseenesestmõistetav. See konkreetne ARM-protsessor on vähemalt kümme korda kiirem kui ATmega2560:

protsessor ARM-Cortex M3 LPC1769 (kasutatakse Smoothieboardis)

  • protsessor: Cortex-M3, 1 südamik
  • arhitektuur: ARMv7-M (32-bitine)
  • sagedus: 96-120 Mhz
  • mälu
    • välk: 512 kB
    • mälu: 64 kB

mikrokontroller ATmega2560

  • arhitektuur: 8-bitine
  • sagedus: 16 MHz
  • mälu
    • välkmälu 256 KB, millest 8 KB kasutab alglaadur
    • SRAM: 8 KB
    • EEPROM: 4 KB
JamesP166
2018-09-26 02:13:45 UTC
view on stackexchange narkive permalink

AVR-protsessorid on 8-bitised - seega saavad nad korraga mälust andmeid tuua ainult 8 bitti -, samal ajal kui ARM on 32-bitine ja saab korraga tuua andmeid 32-bitiselt. Positsiooni eraldusvõime nõuab minimaalselt 24-bitist väärtust - see tähendab, et AVR võtab positsiooni jaoks 3 andmeotsingut -, samas kui ARM võtab 1 andmeedastuse.

Veelgi hullem on see, et AVR-protsessorid jagavad kella sisemiselt 3-ga, nii et 40 MHz AVR töötab tavaliselt sagedusel 13,3 MHz, samas kui ARM on 1 taktsükkel siinitehingu ja käskude töötlemise kohta - see hõlmab 32-bitist 32-bitist mitmekordset ühes taktsüklis.

Mälukaart on sisse lülitatud ARM-protsessorite laius on 32-bitine või 4 GB, samal ajal kui 8-bitistel protsessoritel on ainult 16-bitise või 64-bitine aadressibuss - see tähendab, et panga vahetamine mängib kõiki üle 64-bitisi programme - see võtab juhiseid ja aega - ARM-iga pole see probleem.

Kulude aspektid on umbes samad mis AVR-idel - see nõuab lihtsalt ümberkujundatud püsivara.

Mis puutub FPGA-desse:

  • need maksavad sama või rohkem kui protsessor
  • Need on kiired, spetsiaalsed seadmed ja neid saab konfigureerida spetsiaalsete ülesannete jaoks
  • Neil on täiendavaid kulutegureid:
    • on vaja palju rohkem sidumiskatteid, kuna FPGA vooluringide kiirusest.
    • nõuda täiendavaid toiteallikaid, põhitasandeid ja toiteplaane - mis kipub tähendama (ja nõuab) minimaalselt 4-kihilist või võib-olla 6-kihilist plaati, mis lisab elektroonika maksumusele

FPGA lisamine AVR-ile maksab palju rohkem kui võimsama ARM-protsessori juurde minek.

Tere ja tere tulemast SE.3DPrintingule! Teie vastus võib palju kasu saada õigest suurtähest, paigutuse parandamisest ja mälu suuruse õigest kasutamisest. Palun värskendage vastust.
Tere James ja suur tänu väga huvitava ja informatiivse vastuse eest. Kuid ma nõustuksin 0scariga ... õige suurtähtede kasutamine, õigete SI-ühikute (st MHz, GB, KB jne) järjepidev kasutamine parandaks teie vastuse loetavust drastiliselt, nagu ka mitmete kriipsude kasutamise vähendamine. (`- -` ja` - - - -`), mis pigem häirivad, tbh.


See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...