2017. augusztus 26., szombat

Pen Plotter 4 - InkScape/KiCAD munkamenet rajzoláshoz

A plotter első tesztje (ez it)



a következő munkamenettel készült:
Rajzoltam egy spirált az InkScape-ben, elmentettem DXF-ként és a DXF2GCODE programmal átkonvertáltam
https://sourceforge.net/projects/dxf2gcode/
Kipróbáltam néhány gcode küldőt, de végülis a Raspberry Pi/Ubuntu/Octoprint kombónál maradtam, amivel eléggé tisztában vagyok a 3D nyomtató miatt.
A fenti munkamenetnek van néhány baja:
  • Képtelen megfelelő skálázást produkálni. Azt nem tudom, hogy csak az én bénaságom, vagy a szoftverek baja.
  • A DXF2GCODE inkább hasonlít egy CAM szoftverre mint egy plug and play konverziós megoldásra. A plotternek sokkal egyszerűbb G code-ra van szüksége mint egy CNC marónak. Az a lehetőség, hogy marófejekkel, zsebekkel, stb. dolgozzunk itt teljesen felesleges.
  • Van egy vonal a plotter kezdőpontja és az ábra kezdőpontja között aminek nem kéne ott lennie. Ezt nem a munkamenet okozza, de erre majd visszatérek később.
Ezen a ponton elkezdtem másképp hozzáálni a feladathoz. A DXF egy mechanikai CAD formátum, tehát nem igazán tollas plotterekhez tervezték, ugyanakkor a HPGL kifejezetten a HP tollas plottereinek a nyelve.
Elkezdtem keresni egy programot ami a HPGL-t G code-á alakítja. Találtam néhány konvertert. Egy sem felelt meg a céljaimnak. A nagyja képtelen volt a HPGL AA íveit G2, G3 ívekké alakítani. Ez a konverzió feltételez némi trigonometriai tudást. Úgy látszik ezt néhány programozó nem tudta megugrani. Néhány próbálkozás után feladtam, hogy valami kész megoldást használjak.
Tehát írtam egy konveretert. Megtalálható a plotter github reojában:
https://github.com/sufzoli/suf-3D-Plotter/tree/master/SW/Hpgl2Gcode
Még vannak hiányosságai mint a hiányos hibakezelés vagy az útvonal optimalizáció hiánya, de teszi a dolgát.
Most nézzük meg, hogy működik a munkamenet.
Az eredeti rajz:


Először is a rajz objektumait útvonalakká (path) kell alakítani, másképp nem jelennek meg a HPGL fájlban:


Ha ez kész van elmenthetjük HPGL-ként:



Most jön a trükkös része:
Az InkScape HPGL mentés ablaka kivágó plotterhez tartalmaz alapbeállítáűsokat ami itt nekünk nem jó. Ezért a nagyját meg kell változtatni az alábbiak szerint:

 

Most átkonvertálhatjuk G code-á.
Két különböző beállítást használtam. Az ok, hogy a plotter M280 P0 S50 parancsot használ a fej felemeléséhez és M280 P0 S0 parancsot a letevéséhez.
A szokásos CNC marók G1 parancsot használnak a Z irány mozgatásához. Az elterjedt G code szimulátor a CAMotics nem tudja értelmezni az én toll magasság vezérlő parancsaimat így a szimulációra lecseréltem ezeket G1 Z5 F50-re és G1 Z-2 F50-re:


Az eredmény a szimulátorban:


Jól néz ki, csináljuk meg a plotterhez is:


Mint látható a PenUp és PenDown paraméterek hiányoznak. Az oka, hogy ezek az application config-ban kerültek elhelyezésre.
Ezek után feltöltöttem a fájlt az Octoprintre és kiküldtem a plotternek. Az eredmény katasztrófális. Rajzolt egy két centis szaggatott vonalat a plotter kezdöpontjából kiindulva az ábra kedőpontja felé, majd lerajzolta az egész ábrát a levegőbe (toll felemelve).
Az első pillanattól kezdve tudtam az okot. Ez azonos a korábban említett problémával (vonal a plotter kezdőpontjától a spirál kezdőpontjáig). A G code-ok nem sorrendben hajtódnak végre.
Tudom a Marlin firmware-ről, hogy bizonyos parancsok sorban, más parancsok viszont soron kívül hajtódnak végre. Néhány órán keresztül olvasgattam a Marlin forráskódját, hogy megtaláljam, hogyan lehet ezt a viselkedést megváltoztatni. Sikertelenül. Feladtam ezen a ponton és megkérdeztem a Marlin fórumon.
A válasz sokkal egyszerűbb mint gondoltam. Ha kiteszünk egy M400-as parancsot (vár a korábbi parancsok befejezésére) a soron kívüli parancsok elé az megoldja a problémát. Még a kódon sem kellett változtatnom, a toll vezérlő parancsaim a konfigurációs fájlban vannak.
Az egyetlen szükséges trükk a töbsoros szöveg kezelése a .Net konfigurációs fájlban. Tehát a paraméter most valahogy így néz ki:
M400
M280 P0 S0

És végül az eredmény:


A monverter amit írtam a KiCAD HPGL kimenetét is kezeli. Egyenlőre csak rajzolásra használható és nem nyák marásra. Ez majd később jön.

2017. augusztus 14., hétfő

Graylog, Elasticsearch, maximális mezőszám, graylog_deflector

Csak mert nem vagyok linuxos gyerek.
Néhány napja összeraktam a vadiúj Graylog szerverünket.
Sikeresen hozzákötöttem valami 10+ Windows szervert, hogy begyűjtse az eseménynapló bejegyzéseket róluk.
A project második részeként hozzá akartam adni néhány linux szervert is.
zzáadtam az elsőt, látszik, hogy a begyűjtés működik, az üzenetek beérkeznek, de a konzolon nem jelenik meg semmi. Fura.
Kicsit mélyebbre ásva az index hibalista ezzel volt tele:
{"type":"illegal_argument_exception","reason":"Limit of total fields [1000] in index [graylog_0] has been exceeded"}
Ez azt jelenti, hogy túlment a rendszer a maximális mezőszámon (azt hiszem, hogy a Windows nagytömegű eseménytítusa miatt)
Elolvastam egy rakás fórumbejegyzést róla. Megpróbáltam beállítani az elasticsearch.yml-ben.
Nem segített. Az eredmény egy működésképtelen elasticsearch lett.
Végül lepucoltam az egészet (elasticsearch) az indexekkel eggyüttvéve és újratelepítettem.
Az eredmény:
Lett egy működő elasticsearch-öm. Az 1000-es mezőlimit maradt, de jött hozzá mégegy hiba. Valami ilyesmi:
A graylog_deflector egy index és nem egy alias.
Kugli újra, a hibára rátaláltam, a megoldásra nem. Elkezdtem gondolkodni a guglizás helyett. Amire rájöttem:
  1. Az egyik log fáljból kiderült, hogy az elasticsearch beállításai nem a konfig fájlon keresztül mennek, hanem a web API-n keresztül, JSON objektumokban.
  2. A curl a barátod
  3. A Graylog létrehozza a grylog_deflector-t indexként, ha nem találja a graylog_alias-t. Ezt utána nem tudja használni. Ezzel azután semmit sem tudsz kezdeni a Graylog felületen belül, tehát a dolog el van cseszve.
A megoldás a fentiek alapján:

  1. A Graylog web  felületén menj be a System/Indices>Indices-be. Válaszd ki a Default index set-et
  2. Maintanance-ben válaszd ki a Rotate active write index pontot. Ez gyárt egy graylog_0 nevű index-et (csak ez nem fog működni)
  3. A konzolon álítsd le a graylog-ot:
    sudo service graylog-server stop
  4. Kezeljük az 1000 mező problémáját:
    curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
      "index.mapping.total_fields.limit" : "5000"
    }'
  5. Állítsuk le a graylog_deflector index-et:
    curl -XPOST 'localhost:9200/graylog_deflector/_close?pretty'
  6. Töröljük a graylog_deflector index-et:
    curl -XDELETE 'localhost:9200/graylog_deflector?pretty'
  7. Adjuk hozzá a graylog_deflector aliast az újonan gyártott graylog_0 index-hez:
    curl -XPOST 'localhost:9200/_aliases?pretty' -H 'Content-Type: application/json' -d'
    {
        "actions" : [
            { "add" : { "index" : "graylog_0", "alias" : "graylog_deflector" } }
        ]
    }'
  8. Indítsuk el a graylog-ot:
    sudo service graylog-server start
  9. Most a graylog elekzd bőszen indexelni ez akár napokig is tathat, de a begyűjtött üzenetek elkezdenek látszani közben.

2017. július 31., hétfő

Pen Plotter 3. - Működik

Végül működik.
Összeraktam az egészet, újraterveztem a toll tartól.
A probléma a következő volt:
Az SG90-es szervó amit használni akartam túl gyengének bizonyult
A damilos megoldás a Z tengely felhúzására nem bizonyult nagy ötletnek
Az arduino nem tudott elég áramot adni a megakadt szervónak, így újraindult amikor a fejet felhúztam

Az új verzióban:
Az SG90-et lecseréltem egy erősebb MG995-re
A szervó közvetlenül mozgatja a Z tengely kocsit
Hozzáadtam egy 6V-os feszültség szabályozót ami a nagyméretű 12V-os tápról megy és nem az arduinoról.

A fej elektronikája még egy nagy katyvasz, miután nem terveztem még megfelelő panelt hozzá (ez csak akkor fog megtörténni amikor a maró és alézergravirozó fej terv is elkészül):



Végül a kész cucc működés közben:


2017. július 27., csütörtök

Pen Plotter 2. - Proxxon mérése

Van egy Proxxon fúróm. Azt tervezem, hogy felteszem a plotterre mint cseredarab a toll helyére, hogy minimális marási feladatokat meg lehessen csinálni vele.
Ehhez nem akarom az eredeti tápegyeséget használni. Miután a fordulatszám szabályozás a tápegységben van tudni akartam a tulajdonságait:

  • Milyen a vezérlés? Csak sima PWM vagy van rajta valami szűrés?
  • Mi a PWM frekvenciája?

A szerkezet mérése szétszedés nélkül nem tűnt egyszerű feladatnak. Az ok, hogy a Proxxon valami saját idióta csatlakozót használ ami külön nem kapható. Megmértem a tüskék átmérőjét és két 2.3mm-es csigafúróval megoldottam:


A mérések:
Terhelés nélkül:


Minimális sebességen:


Maximális sebességen:


Az én izlésemnek túl zajos. Kiderítettem, hogy 100Hz-en megy és nincs rajta szűrés.
Ezek alapján már meg tudom tervezni az elektronikát a plotterhez.

2017. július 5., szerda

Pen Plotter 1.

Ezt a projectet sajnos nem dokumentáltam útközben olyan mélyen lépésről lépésre, mint kellett volna. Most csak le szeretném írni, hogy hol tartok vele. Leginkább képekben.
Több mint három hónapja, volt egy beszélgetésem a fiammal. Azt mondta, hogy akar egy "rajzoló gépet" építeni velem (tulajdonképpen egy pen plottert). Elkezdtem tervezni egyet.
Némi idővel később kiderült, hogy ő legóból szeretett volna valamit gyorsan összerakni.
Ekkor már túl mélyen benne voltam a tervezésben, ezért nem akartam abbahagyni. Továbbá az tervezem, hogy a szerkezet cserélhető fejet kap, így használható lesz könnyű CNC marónak és lézervágónak/gravírozónak is.
Azt hiszem a terv nagyjából kész:




Néhány dolgot, úgy mint bordásszíjjak, csavarok, távtartók, kábellánc kihagytam belőle.
Itt van az alkatrészek egy része kinyomtatva:



Mint látható, néhány dolog már össze van rakva,  mint az Y tengely meghajtása (kerek fehér cucc középen) és a Z tengely kocsija (a zöld cucc)
Az Y tengely bordás szíj rögzítése:



Rengeteg lyuk. Az alap lap.


Az X tengely összerakva:


folyt köv...

Posta

Lehet, hogy én vagyok a telhetetlen, de számomra ez alapszolgáltatás. Bejelentkeztem az Énpostám című csodára. Feltételezni mertem, hogy ha már van személyes fiókom, akkor az érkező csomagjaim csomagszámát el tudom tárolni és amikor akarom, egy nézetben láthatom, hogy hol vannak a cuccaim. De nem. Marad a szokásos tárolás, sticky note a desktopon és onnan másolgatom be.
Ha ilyesmi nem megy rajta, akkor mégis minek?

2017. június 30., péntek

Medicover

Valamikor Magyarországon:
Ez egy tanulságos történet, egészségügyről, hozzáállásról.

Utazás -22 nap:
Kapok egy levelet a központi rendszertől, hogy a jogosítványom egy hónap múlva lejár. Amint meglátom, hívom a Medicover-t akik a háziorvosomként (nem)funkcionálnak. Kérek időpontot. Meg is kapom a -18. és -17. napra (közte hétvége volt)

Utazás -18 nap:
Megvan a labor és a szemészet

Utazás -17 nap:
Megvan az EKG.
A háziorvos közli, hogy az új előírások miatt alvásvizsgálatra kell mennem, de ne aggódjak, az gyorsan meglesz. Papír nincs a jogsihoz.
Próbálok bejelentkezni a vizsgálatra a recepción, közlik, hogy nem lehet, mert csak telefonon a call centeren keresztül.
Felhívom a call centert. Adnak időpontot: Utazás +17. napra. Kiverem a balhét, hogy ne szórakozzanak velem, vezetenem kell külföldön és addigra lejár a jogsim.
Ok. keresnek korábbi időpontot. Később hívnak.
Nem hívnak, felhívom őket, hogy mi van. Megvan az időpont, csak nem hívtak, az Utazás -11. nap
Később hív aki a készüléket adja, másnap mehetek érte, harmadnap vigyem vissza.

Utazás -16 nap:
Elhozom a készüléket. Remélem, a holnapi nappal végeztünk.
Megtudom, hogy nem, mert külsős orvos értékeli ki és az kb. két hét. Mondom nekik, hogy szóljon a külsős orvosnak, hogy sürgős.

Utazás -15 nap:
Visszaviszem a készüléket, nyomatékosan tudatom velük, hogy sürgős az ügy.

Várok egy hetet, hátha megkapom az eredményt.

Utazás: -5 nap:
Telefonálok. Nincs eredmény. Feleségem is telefonál, hátha elér valamit: Semmi

Utazás: -4 nap:
Telefon, nincs eredmény. Nem értik, hogy mi a bajom, ők megmondták, hogy két hét. Én meg megmondtam, hogy sürgős. Ennyiben maradtunk

Utazás: -3 nap:
Telefon, nincs eredmény. Látja, hogy előző nap is telefonáltam, hozzáírja ezt is a listához.

Utazás: -2 nap:
Telefon, nincs eredmény. Már elég dühös vagyok, kb. az utolsó esélyem, hogy tudjak kint vezetni.

Utazás: -1 nap:
Telefon. Közli az automata, hogy mind a klinikák, mind a call center zárva.
Ez már a pofátlanság netovábbja, annyi gerinc sem volt bennünk, hogy előző nap a pofámba mondják, ne telefonálj holnap te marha, zárva vagyunk, megszívtad.

Gondolkoztam, hogy leírjam-e hogy miért szivattak meg, de nem teszem. Mindenki vonja le magának a történet tanulságait.