Welcome! Log In Create A New Profile

Advanced

[Z-as probleem] Marlin, Anet A8, TB6600

Posted by Oxurane 
[Z-as probleem] Marlin, Anet A8, TB6600
March 05, 2021 01:14PM
-=[ Intro ]=-
Momenteel ben ik bezig met het bouwen van een 3D-printer. Ik heb daarvoor een PCB ontworpen (omgedoopt tot 3D-Oomph), die identiek is aan het ontwerp van een controllerboard voor de Anet Ax (6 of 8). Dat is met een Atmega1284P onboard. Om een robuuste sturing voor een of meerdere motoren op een as, heb ik een soort "stepstick" ontworpen op basis van de Toshiba TB6600 driver-IC's. Deze draagt de naam Oomph Twin. Deze stepsticks kunnen 2 stevige NEMA17 of zelfs NEMA23 motoren tegelijk aansturen. En daarmee zijn de gekozen benamingen ook wel duidelijk geworden.
Opmerking : In het verleden heb ik voor een KT40 lasercutter ook een driverboard ontworpen op basis van de TB6600. Dat werkt inmiddels al jaren probleemloos en erg betrouwbaar.

Om jullie een indruk te geven van hoe het ontwerp (controllerboard en Stepstick TB6600) voor de 3D-printer eruit ziet, een paar foto's.

[3D Oomph : Controllerboard]


[Oomph Twin : StepStick]


[Opgebouwde combinatie]


Goed, allemaal mooi en aardig, maar ik loop tegen een probleem aan. Voordat ik de printer in elkaar zou zetten, besloot ik om de 3D-Oomph en Oomph Twin eerst te testen met een losse steppermotor. Daarmee bedoel ik dat alle assen getest worden met een Oomph Twin en daarop een NEMA17 steppermotor aangesloten.
De Oomph Twin werd in de 3D-Oomph gestoken om na opstarten de steppermotor te laten draaien. Als eerste heb ik de X-as getest. Naar en van de home-position verloopt probleemloos : een links-om en rechts-om draaiende motor. Nadat ook een succesvolle test op de Y-as was uitgevoerd, werd de Z-as getest.
En hier gebeurde iets merkwaardigs. Van de home-positie af, levert een draaiende motor op. Terug richting de home-position, nam in het scherm de afstand-teller terug, maar de motor draaide niet.

Oomph Twin (StepStick)
Ik vermoedde dat de Oomph Twin wellicht niet meer goed werkte. Als test dezelfde Oomph Twin terug gestoken in de socket voor de Y-as : werkt als vanouds. Op de X-as ook prima. Dus, weer in de Z-as, en het probleem was er weer. Gelukkig heb ik nog 3 identieke Oomph Twins gebouwd, dus genoeg om te testen. Ik heb ze alle 3 voor de XY,- en Z-as getest. Alle 3 leveren ze exact hetzelfde resultaat op : Bij de Z-as blijft het probleem.
Ik maak daar uit op dat het dan niet aan de Oomph Twin ligt.

3D Oomph (Controller-board)
Tsja, dan ga ik al gauw zoeken in de richting van het controllerboard. Eerst alles nagemeten op contacten en verbindingen van de Atmega1284P tot aan de socket voor de Oomph Twin. Geen kortsluiting of contactonderbrekingen te meten met een multimeter. Ik heb zelfs de pinnen nog na gesoldeerd om er echt zeker van te zjn. Daarna is de Oomph Twin in alle 3 sockets gestoken (X,Y en Z-as). En vervolgens van de pinnen van de Atmega tot aan de pinnen van de TB6600 alles doorgemeten. Geen enkele fout gemeten.
Brakke of vreemde verbindingen zijn daarmee uitgesloten.

Instellingen Marlin
Voor de zekerheid heb ik de as-richting omgekeerd gezet voor de Z-as. ("INVERT_Z_DIR true" versus "INVERT_Z_DIR false")
Zou er iets defect zijn, dan zou dit iets moeten opleveren.

Situatie A : "INVERT_Z_DIR true"
- Van de home-position af : pulsen zichtbaar en motor draait (rechtsom)
- Terug richting home-position : geen pulsen en motor draait niet

Situatie B : "INVERT_Z_DIR false"
- Van de home-position af : pulsen zichtbaar en motor draait (linksom)
- Terug richting home-position : geen pulsen en motor draait niet.

Vervolgens ben ik de instellingen voor de Z-as gelijk gaan stellen als voor de X/Y-as :

#define DEFAULT_AXIS_STEPS_PER_UNIT { 100, 100, 100, 23 }

en

#define DEFAULT_MAX_FEEDRATE { 300, 300, 300, 25}

Het gaat tenslotte om het laten draaien van een onbelaste steppermotor op een Oomph Twin. Het zou er voor moeten zorgen dat de motor identiek zou moeten reageren voor de X/Y,- en Z-as. Echter, het probleem blijft.

Signalen meten
>> Multimeter
Mij is geleerd dat meten is weten. Vandaar dat ik uiteindelijk de multimeter erbij heb gepakt.
- Z_DIR pin
Linksom en rechtsom liet tot mijn verbazing zien dat het allemaal prima werkte (0 en 5V signalen kloppen).
- Z_ENABLE pin
Ook dat werkt netjes. Keurig netjes te zien dat zodra de motoren aangestuurd moeten worden, het signaal wisselt (0 en 5V signaal)
Bij het uitschakelen van de motoren is ook keurig netjes te zien dat dit ook daadwerkelijk gebeurt.
-Z_STEP pin
Met de multimeter in de "frequentie-teller" stand gekeken wat er hier gebeurt. Hier was iets aparts te zien.
Bij bewegen van de home-position af (toename afstand) werd er iets gemeten, bij beweging richting home-position (afname) niet. Ook als de INVERT_Z-Dir wordt omgekeerd (true / false) in de broncode.

>> Scoop
Een goede reden om de scoop erbij te pakken. En nu wordt zichtbaar dat hier iets aantoonbaar mis gaat. Bij bewegen van de home-position af (afstand toename) zijn 5V-stuurpulsen zichtbaar. Bij terugkeren richting home-position wordt geen enkele step-puls gegeven. Wisselen van de instelling INVERT_Z-Dir (true naar false) levert hetzelfde probleem op.
Met andere woorden, alleen bij beweging richting home-position worden geen pulsen verzonden (ongeacht de ingestelde draairichting van de motor).

-=[ Vraag ]=-
Dankzij bovenstaande stappen en controles krijg ik steeds meer het idee dat er "iets" niet goed staat ingesteld in de broncode van Marlin.
Maar wat ?
Kennelijk gaat er iets mis bij het bewegen richting de home-position. Het gekke is dat de positie op het scherm wel veranderd.
Het geeft mij het idee dat er een variable is, die netjes wordt bijgehouden voor de positie en in het scherm wordt bijgehouden. Echter, in geval van beweging richting home-position, wordt op de achtergrond vergeten om ook nog de motor aan te sturen met step-pulsen.

Vandaar mijn vraag of iemand dit probleem herkent of meegemaakt heeft en kan aangeven wat de oorzaak is. Ik ben op een dood punt aangekomen en loop vast op een merkwaardig raadsel. Of is er sprake van een bug in de broncode van Marlin ?

P.S.1 Ik maak gebruik van Arduino 1.8.5 en Marlin 1.1.9.
P.S.2 Ik heb de bronbestanden toegevoegd, waar ik in sta te spelen met de instellingen. Die dingen die veranderd zijn, staat commentaar bij.

Edited 2 time(s). Last edit at 03/05/2021 01:15PM by Oxurane.
Attachments:
open | download - Configuration.h (73.2 KB)
open | download - Configuration_adv.h (70.2 KB)
Re: [Z-as probleem] Marlin, Anet A8, TB6600
March 07, 2021 11:54PM
Het probleem is eindelijk opgelost na (heel) lang speuren. Dat werd veroorzaakt doordat ik een kleine hint in het display zag.

Het blijkt dat voor het bewegen over de X/Y-as geen limit-sensor nodig is. Voor de Z-as wel.
Nadat een druktoets is verbonden aan de Z-as, dient deze bij opstarten ingedrukt te zijn. Zodra een nieuwe Z-as positie is ingesteld en de motor begint te draaien, meteen de druktoets loslaten. En vanaf dat moment kan elk willekeurige Z-positie ingesteld worden en zal de motor beide kanten op kunnen draaien.

Weer wat geleerd.

Omdat ik het belangrijk vind om deze kennis te delen, laat ik hieronder de foto's zien die me een stille hint gaven. Wellicht dat iemand in de toekomst tegen hetzelfde probleem aan loopt. Het witte pijltje geeft de hint weer.

Scherm tijdens opstarten :


Scherm na mislukt gestoei met Z-as positionering :


Edited 1 time(s). Last edit at 03/07/2021 11:57PM by Oxurane.
Sorry, only registered users may post in this forum.

Click here to login