HobbyCNC fórum
FTP tárhely: http://cnctar.hobbycnc.hu v0.9.6 Régi HobbyCNC oldal: http://archiv.hobbycnc.hu

Új regisztráció / Átregisztráció a régi fórumról
    
   


Elektronika

Léptetőmotorok, vezérlőbeállítások

 

Időrend:
Oldal 1 / 492 Ugrás ide:
Sorok:
1  2  3  4  5   Következő ►  Utolsó ►|

  Fórum főoldal  |  A lap aljára

Robsy1 | 252    2024-08-18 05:35:58 [24670]

Előzmény: B.Zoltán, 2024-08-17 16:17:52 [24667]


Rabb Ferenc | 4341    2024-08-17 22:28:06 [24669]

Kössz a kiegészítést, sok sikert a módosításhoz.

Előzmény: guliver83, 2024-08-17 22:10:34 [24668]


guliver83 | 3228    2024-08-17 22:10:34 [24668]

Én néztem el véletlenül , nem azt a motort tettem ide, nekem olyan van amibe elől csapágy a szénkefe felé pedig bronz persely.
Hogy egyértelműen legyen ez egy hengerkéses fűnyíró, nem kell neki gyorsan forogni.
Van benne egy hajtómű, ugyan úgy mint egy csavarbehajtóba ez által lassan forog és nagyon szépen vágja a gyepet.

Most hogy találtam teljesen csapágyas motort lehetséges teszek egy próbát ezzel is.

Előzmény: Rabb Ferenc, 2024-08-17 14:25:41 [24664]


B.Zoltán | 1720    2024-08-17 16:17:52 [24667]

Fiammal pár évvel ezelőtt kísérleteztünk egy 3 Nm motorral, a nyomaték görbéjét próbáltuk megrajzolni, ott derült ki, hogy igenis egy 3 Nm motor (4.2A 2.73V) képes 100-120 W-t felvenni a hálózatról, 400 ford/percnél. És persze ha nincs terhelve, akkor emlékeim szerint ez 10-20 W körül van.

Ezért nagyon függ a motornak az áramfelvétele (amit Robsy is ír), hogy hogy van megterhelve, mert a vezérlő egyre jobban emeli a fázisfeszültséget az indukcióhatás miatt, ezért emelkedik a teljesítmény felvétel. Mert az a 2V 4V fázisfeszültség szinte csak álló helyzetben igaz, de amikor nagy sebességgel forog, kénytelen emelni a feszültséget, hogy át tudja hajtani azt az áramot a tekercseken.

Az esztergába beépítve a 3 Nm motor, és egy 1.2 Nm motor úgy, hogy 400 ford/perc fordulaton forog a 3 Nm motor, 40 W-tól nem fogyasztanak többet ketten. Én is ezért teljesen fölöslegesnek érzem azokat a hatalmas tápegységeket, amit terveznek egyesek. Mert általában nem terheljük ki a léptetőmotort a biztonság miatt sem teljesen. És a terhelés is sok esetben pillanatszerű.

Előzmény: Robsy1, 2024-08-16 16:02:50 [24645]


Rabb Ferenc | 4341    2024-08-17 15:59:59 [24666]

Ha szebb nem is lettem - bár rám férne, okosabb mindenképpen. Egész pontosan: nem kellet volna belepofáznom...

Előzmény: PSoft, 2024-08-17 15:11:39 [24665]

PSoft | 18555    2024-08-17 15:11:39 [24665]

„És még egy gonosz kérdés: 100W alatti felvett teljesítményű motorral hol lehet füvet nyírni, talán virágcserépben?”

Gondolom, valami hasonló lehet mint ez.
Használok egyet én is, kizárólag szegélyvágásra.
Silány kínai mivolta ellenére...meglepően jól teljesít.
Elöl golyós, hátul szintercsapágy van a motorban.

Előzmény: Rabb Ferenc, 2024-08-17 14:25:41 [24664]


Rabb Ferenc | 4341    2024-08-17 14:25:41 [24664]

Azt írod, hogy a kefe oldalon bronz csúszócsapágy van, a linken szereplőben viszont elöl-hátul golyós.

Most akkor merre van az előre?

És még egy gonosz kérdés: 100W alatti felvett teljesítményű motorral hol lehet füvet nyírni, talán virágcserépben? Bocs'

Előzmény: guliver83, 2024-08-17 14:06:40 [24663]


guliver83 | 3228    2024-08-17 14:06:40 [24663]

Sziasztok
Kellene valami megoldás.
Adott egy fűnyíró amben vany egy kicsi DC motor, folyamatosan tönkremegy a motor.
A kihajtás részénél csapágy van a szénkefe részénél , bronz persely. A broz persely megszorul állandóan.

https://www.hestore.hu/prod_10044639.html?gross_price_view=1&source=gads&gad_source=1&gclid=Cj0KCQjwlIG2BhC4ARIsADBgpVQ6YkAWdMfO_YY8h64ti3MwIhz0wHK0D8hO39_91sglH4X3iYvlq2QaAjWnEALw_wcB#

    


svejk | 32940    2024-08-17 13:39:50 [24662]

A meghatározó rész számomra egyenlő a megszerszett tudásukat, tapasztalatukat önzetlenül és érthetően megosztó de a tudásukkal nem kérkedő fórumtársak.
Ha ezek közül engem bárki is a heverjának tekint az külön megtiszteltetés számomra.

Amit Te előítéletnek nevezel az a megkülönböztetet figyelem amiért a közel húsz évnyi itteni munkásságod alatt azt hiszem tettél épp eleget...

No, de "ugorgyunk!" ahogy mondta Pósalaky úr...

Előzmény: Robsy1, 2024-08-17 12:34:06 [24661]


Robsy1 | 252    2024-08-17 12:34:06 [24661]

"A fórumozók meghatározó részének még ugyan etikailag kifogásolható a válaszod"

Ez a te céleményed, de szerintem előitéletes, és azt a pár haverodat nem nevezném meghatározó résznek, hiszen a szokásos pár emberkéről van szó, akiknek nem tetszik a szakmai igazság, és az amikor a tévedéseikre, hiedelmeikre felhívom a figyelmet. Kicsinyes emberi reakcióként besértődnek, és bántásnak, kioktatásnak érzik az igazságot. Erről pedig természetesen a valóságban szó sincs.

TBS-Team legalább most beismerte, hogy butaságot írt.
Tanult belőle mindenki. Ez a lényeg. Senkit nem sértegetek, leírom az igazat.
Azt is jó lenne tudomásul venni, és megérteni végre itt egyeseknek, hogy van mögöttem 40 évnyi motorhajtás, CNC tapasztalat, és fejlsztői, tervezői tudás, amiért rengeteget dolgoztam. Az egyetem megtanították nekem a villamos motorok kéttárolós matematikai modelljét. Számomra ez a döntő, és azt nagyon nem bírom elviselni, amikor sokadszor tőlem egy adott témában sokkal kevesebbet tudó ember ragaszkodik a felületes, vagy tévhit dumájához, és sértve érzi magát, ha valaki rávilágít a hibás tudására. Holott pedig csak a segítőkészség, és az ostoba netes dezinformáció elleni küzdelem jegyében írkálgatok ide néha, amikor már túl nagy a tévhit.

A világunk sokkal szebb, és jobb lenne, ha nem szekértáborok, haveri körök, hiedelmek mentén élnének egyesek, hanem kizárólag a TÉNYEK, műszaki igazságok számítanának.

Előzmény: svejk, 2024-08-17 10:56:28 [24660]


svejk | 32940    2024-08-17 10:56:28 [24660]

A fórumozók meghatározó részének még ugyan etikailag kifogásolható a válaszod, de legalább van már benne hasznos rész.

Bár természetesen a legfontosabb képlet ott sem szerepel, vagyis a tengelyen leadott teljesítmény kiszámolása.
lásd: 'Képletek, számítások' téma, 3. hozzászólás
amiből:
Teljesítmény(W) = Forgatónyomaték(Nm) * fordulatszám(1/s) * 6,28

(persze írhatnánk, hogy P=Omega*M de ugye itt nem egyetemi előadást kell tartani)

Az energiamagmaradás törvénye szerint legalább ennyi teljesítményt bele kell pumpálni, hogy ezt a tengelyen leadja. A gyatra hatásfokot most mellőzzük.


Én tegnap rákerestem Kicsa fórumtársunk motorjára de sajnos nem találtam nyomatékgörbét.
Persze amikhez szoktak adni azoknak sem sok közük van az igazsághoz de iránymutatóknak jó.
Én egyébként a 300 ford./perces fordulatra szoktam ezeket számolni, itt a tapasztalatom szerint a névleges nyomatékuk kb. 50 %-át tudják ezek a léptetőmotorok.

Figyelembe véve, hogy hogy a trafós tápok rövid időre túlterhelhetőek és a maximális teljesítményigény sem állandó a gépen én egy 160 W-os trafóval megelégednék.

Előzmény: Robsy1, 2024-08-17 07:54:55 [24654]


Kicsa | 1241    2024-08-17 10:41:38 [24659]

Köszönöm szépen a videókat és a mért eredményeket.

Időközben kicsit változott a helyzetem,hála a "kicsi kínaiaknak". Ha beírjátok a keresőbe a DM860A kifejezést,gyorsan a vezérlő adatlapjához-forgalmazóihoz lehet eljutni. Ahol is látni lehet az általam említett AC 80 V-os maximum betáplálási lehetőséget.
Tegnap délután letekertem a transzformátor egyik szekunder tekercséből annyit,hogy mérés alapján AC 78 V-ot kaptam,nagy örömömre be is akartam kötni tesztre. Ekkor látom,hogy az én vezérlőmön ! DC ! 80 V a maximális bemeneti érték,GND és +VCC jelölésekkel.
Kicsit kutakodva megtaláltam a Longs Motor által gyártott vezérlő adatlapját,ahol erre a típusra (holott a típusszám itt is DM860A) DC 80 volt betáplálás a maximum,AC lehetőségről nem szól semmit a pdf.
Gyorsan megbontva a vezérlőt,a bemeneti oldalon egy 100 V-os,470 uF-es pufferkondi bizonyítja : ez bizony nem viseli el az AC 80 V feszültséget.

Így a trafóból tovább tekertem és be kell szereznem egyenirányítást-puffert is mindenképpen.

Köszönöm mindenkinek a segítséget,ha kicsit szemfülesebb lettem volna,még talán viták sem alakulnak ki ebből.

Előzmény: TBS-TEAM, 2024-08-17 07:45:47 [24653]


ANTAL GÁBOR | 4608    2024-08-17 08:55:19 [24658]

Köszönöm , én 12 esre emlékeztem , Így érthető a módszered .

Előzmény: Robsy1, 2024-08-17 08:51:34 [24657]


Robsy1 | 252    2024-08-17 08:51:34 [24657]

A 24635 kinduló bejegyzéseében ezt írta TBS-TEAM:
"Pl: egy 20Nm léptetőmotor 110H150-6504A19-B55"

Így jött ki, nem értem miért használsz tévesen 12Nm adatot ebben az esetben.

Előzmény: ANTAL GÁBOR, 2024-08-17 08:20:18 [24656]


ANTAL GÁBOR | 4608    2024-08-17 08:20:18 [24656]

Egyébként meg egy gyors közelítő számolással megkapjuk, hogy pl. 1 1/s motor fordulatnál ~120W körüli hasznos P-t lead az a motor.

Kérlek részletezd egy kicsit a közelítö módszeredet !

n= 1 1/s ebből a szögsebesség ( omega) = 6.28 1 /s
M névleges = 12 Nm

Nálad hogyan jön ki a P hasznos = 120W ?

Előzmény: Robsy1, 2024-08-17 07:54:55 [24654]

TBS-TEAM | 2723    2024-08-17 08:08:26 [24655]

Igen teljesen igazad van, hogy nem elegendő az UxI képlet,
sokkal bonyolultabban lehet pontosan kiszámolni a valós értékeket.
Arra világítottam rá, hogy a léptetővezérlő feszültsége és a léptővezérlő leadott max árama nem azt jelenti, hogy bődületes nagy tápegység kell.
Szinte mindenki többszörösen is túlméretezi a tápegységeket,
gigantikus pénzeket dobnak ki az ablakon.

Előzmény: Robsy1, 2024-08-17 07:54:55 [24654]


Robsy1 | 252    2024-08-17 07:54:55 [24654]

Úgy biztos nem, hogy egy ÁLLÓ motortengely helyzetű léptető motorra is csak néha igaz U*I képletettel néphülyít itt TBS-TEAM.

Egyébként meg egy gyors közelítő számolással megkapjuk, hogy pl. 1 1/s motor fordulatnál ~120W körüli hasznos P-t lead az a motor. Ez már lényegesen több, mint az emberünk elhibázott és elvi hibás okoskodása.
Az ok pedig roppant egyszerű. A léptető motor fordulatszámával arányos indukált feszültséget termel, ha elkezd forogni. Innentől kezdve természetesen nem igaz a primitív motor címke P=U*I képlet.

A felvett villamos Pmax pedig a Pmax hasznos/hatásfok képlettel számítható, ahol a Pmax-ot a motor M/n függvénygörbéje alapján szélsőérték számítással (deriválás, stb...) lehet megkapni. Ennek részletesebb matematikájával, levezetésével pedig nem untatnám a Fórumot, akit érdekel, vegye fel velem a kapcsolatot, és szívesen elmondom a részleteket.

Előzmény: svejk, 2024-08-16 17:15:56 [24651]


TBS-TEAM | 2723    2024-08-17 07:45:47 [24653]

Egy 2021 decemberi max áramfelvétel teszt.
IES2320 2Nm Integrált léptetőmotorvezérlő+motor+encoderrel.


TBS-TEAM | 2723    2024-08-16 19:54:21 [24652]

Egyik ügyfelünknek építettünk tekercsvágót.
X-Z tengely 12Nm léptető 86HSE12N-B38.
HSS86 Léptető meghajtó. 50% tartóáram.
60V AC táp.
X tengely 245kg.



  

Előzmény: Kicsa, 2024-08-16 15:01:37 [24641]


svejk | 32940    2024-08-16 17:15:56 [24651]

Tehát akkor hogyan kell???

Előzmény: Robsy1, 2024-08-16 16:02:50 [24645]


svejk | 32940    2024-08-16 17:11:28 [24650]

Már írtam sokszor...
Írd le a véleményed, állításod, vagy még inkább a jó megoldást és punktum.

Bízz a fórumtársakban, hogy el tudják dönteni melyik válasz a helyes(ebb)!

Előzmény: Robsy1, 2024-08-16 15:59:13 [24644]


PSoft | 18555    2024-08-16 16:34:16 [24649]

Kár hogy "belenyúltál".

Végre lett volna egy kis péntek délutáni olvasgatni való, a végletekig unalmas adok-veszek nézegetése mellé.

Előzmény: svejk, 2024-08-16 15:44:42 [24643]


hostya | 3096    2024-08-16 16:05:38 [24646]

"De leginkább a személyeskedés maradjon ki, - ez utóbbi a többieknek szól."

Egyetértek!

Én a többiekhez tartozom, de nagyon csípte szemem Robsy hozzászólása.
Bocsánat érte..

Előzmény: svejk, 2024-08-16 15:44:42 [24643]


Robsy1 | 252    2024-08-16 16:02:50 [24645]

"Pl: egy 20Nm léptetőmotor 110H150-6504A19-B55
Fázisáram 6,5A
Fázisfesz:4,68V
~30W/fázis max:ˇ~60W"

Ez egy szakmaiatlan téves számítás.
Nem lehet ehg léptető motor teljesítményét ilyen primitív fesz szorozva árammal képelettel kiszámítani, totál hibás beírásod ez.

Előzmény: TBS-TEAM, 2024-08-16 13:02:05 [24635]


Robsy1 | 252    2024-08-16 15:59:13 [24644]

Az mióta személyeskedés, hogy felhívtam valaki figyelmét, hogy félrevezették, és ő még ezt meg is köszönte?
Miért törölted ki, és véded ezzel a szakmaiatlanságot egy műszaki fórumon?

Előzmény: svejk, 2024-08-16 15:44:42 [24643]

svejk | 32940    2024-08-16 15:44:42 [24643]

A kérdésedre már megkaptad a választ itt: 'Elektronika' téma, 24631. hozzászólás
Ezt megerősítette más is itt: 'Elektronika' téma, 24634. hozzászólás

Úgy kb. ezzel le is lehetne zárni a témát.

De leginkább a személyeskedés maradjon ki, - ez utóbbi a többieknek szól.

Előzmény: Kicsa, 2024-08-16 15:01:37 [24641]


Kicsa | 1241    2024-08-16 15:01:37 [24641]

Ha jól gondolom,adott feladathoz a motornak adott teljesítményt kell leadnia. Ez a teljesítmény leegyszerűsítve,veszteségek és minden egyéb nélkül P=UxI képlet alapján adódik.
Arra céloztam az állandó teljesítménnyel,hogy nagyobb feszültség esetén kisebb áram szükséges adott teljesítmény leadásához.
Ha szerinted nem helyes az egyszerűsített levezetése,akkor tudnál segíteni abban,hogy adott helyzetben mi lenne a "helyes"méretű puffer? (vagy hálózati transzformátor?)

A betáp legyen akkor kb 80V AC feszültség.
A motor 11.3 Nm tartónyomatékú,névlegesen 5.6 V tekercsfeszültségű 3,5A/fázisú motor lenne.
A vezérlő,a már említett DM860A.

Köszönöm szépen!

Előzmény: Törölt bejegyzés


Kicsa | 1241    2024-08-16 13:53:51 [24639]

Köszönöm a gyors levezetést. Valóban,a motor teljesítménye állandó. Nagyobb feszültség esetén kisebb áram,így nem kell olyan nagy puffer. Megesik,hogy az ember egy értékre koncentrál,a másik lényeges érték mellett pedig elsiklik. Köszönöm!

Előzmény: TBS-TEAM, 2024-08-16 13:02:05 [24635]


Kicsa | 1241    2024-08-16 13:39:40 [24638]

Köszönöm mindkettőtöknek,így fogok tenni.
Letekerek a szekunderből,megtáplálom a motorokat és ha gond adódna a pufferrel,akkor utólag beépítem.
Köszönöm szépen!

Előzmény: Rabb Ferenc, 2024-08-16 11:44:32 [24633]


TBS-TEAM | 2723    2024-08-16 13:09:58 [24637]

Bizzál benne több 100-akár 1000W feletti tápokat építenek be.

Előzmény: mex, 2024-08-16 13:06:05 [24636]


mex | 1190    2024-08-16 13:06:05 [24636]

Ezt a "mindenki" véleményem szerintmég a hobbisták körében sem állja meg a helyét...

Előzmény: TBS-TEAM, 2024-08-16 13:02:05 [24635]


TBS-TEAM | 2723    2024-08-16 13:02:05 [24635]

Egy kis tévedésbe van mindenki ezekkel a léptetó vezérlőkkel.
Pl: DM860
80V AC bemenet.
Max motor áram 7,2A

Ez nem azt jelenti, hogy az AC oldalt 7,2A terheli, hanem a
léptető motor árama.

Pl: egy 20Nm léptetőmotor 110H150-6504A19-B55
Fázisáram 6,5A
Fázisfesz:4,68V
~30W/fázis max:ˇ~60W

A vezérlő fogyasztása elhanyagolható, de legyen 10W.
Ősszesen: ~70W.
30-40% méretezzük felül: ˇ~100W.

80V/1,25A trafó kell.

Előzmény: Kicsa, 2024-08-16 11:08:00 [24632]


Robsy1 | 252    2024-08-16 11:47:01 [24634]

Kár ezzel foglakoznod, ugyanis ebben a vezérlőben a tápfeszültség árama csak töredéke a motoráramnak.
Ahhoz meg bőven elég a benne lévő pufferkondi.

Előzmény: Kicsa, 2024-08-16 11:08:00 [24632]


Rabb Ferenc | 4341    2024-08-16 11:44:32 [24633]

Ha a gyártó letette a (kínai) esküt az AC táplálásra, akkor nincs miért aggódnod. De ha mégsem nyert, még mindig ráérsz a trafó és a vezérlő közé beépíteni az egyenirányítót és a kondenzátort/kondenzátorokat.

Elvileg arra készülsz, mintha a két motor állandóan 7.2A-el terhelné a 80V-os trafót. Ez több mint 1000VA Na ez szerintem soha nem fog bekövetkezni - de lelked rajta...

Előzmény: Kicsa, 2024-08-16 11:08:00 [24632]


Kicsa | 1241    2024-08-16 11:08:00 [24632]

Van egy két szekunderes trafóm,ami a tápot szolgáltatja majd. A két szekundert sorbakötöm,így kb 87 V AC feszültségem van. A külső szekunderből tudok letekerni,hogy a feszültség bemenjen 80 V alá,utána ráköthetném direktben ezt is. A kérdés inkább a pufferre irányult : ökölszabályként amperenként 1000-1500 uF lenne az elvárható puffer. A vezérlő tud csúcsban 7,2 A-t : kétlem,hogy a vezérlőbe beleférne egy ekkora,feszültségtűrésben is passzoló puffer.
Röviden : ha ki van hajtva a vezérlő,elegendő-e a belesében lévő puffer a csúcsáramokhoz vagy érdemesebb kívül egyenirányítani,pufferelni jócskán és ezt bekötni a vezérlő(k)be? 2 ilyen maghajtót szeretnék rákötni erre a tápra.

Előzmény: Rabb Ferenc, 2024-08-16 10:53:31 [24631]

Rabb Ferenc | 4341    2024-08-16 10:53:31 [24631]

Ha 80V AC-vel is megtáplálható akkor miért akarod egyenirányítani és szűrni, mikor dobozon belül úgyis egyenirányítja és szűri?

Előzmény: Kicsa, 2024-08-16 10:19:52 [24630]


Kicsa | 1241    2024-08-16 10:19:52 [24630]

Sziasztok,
lehet hogy volt már róla szó,de nem találok róla semmit sem.
DM860A léptetőmotor meghajtó tápfeszültsége adatlap szerint maximum 80 V AC vagy 110 V DC lehet. Gondolom a belső egyenirányítás miatt DC táp esetén mindegy a polaritás.
A kérdésem a pufferkondenzátor : érdemes vezérlőn kívül egyenirányítani és pufferelni vagy elég lehet a vezérlőben lévő pufferkondi? Nem tudom,hogy milyen értékűt építettek bele,én külső puffer esetén olyan 2x4700 uF-re gondoltam.
Köszönöm szépen!


OlyFlyer | 80    2024-08-05 19:29:04 [24629]

Amazonon keresztül vettem a tolómerőket.

https://www.amazon.se/dp/B0BTYYMTQ2?psc=1&ref=ppx_yo2ov_dt_b_product_details Ez volt az eladó, de jelenleg nincs több.

Előzmény: tekes, 2024-08-05 18:58:25 [24627]


Rabb Ferenc | 4341    2024-08-05 19:14:13 [24628]

Előzmény: OlyFlyer, 2024-08-05 18:40:28 [24626]


tekes | 99    2024-08-05 18:58:25 [24627]

Nagyon szép munka, gratulálok!

A tolómérők vége saját fejlesztés, vagy lehet ilyet kapni?

Előzmény: OlyFlyer, 2024-08-05 18:40:28 [24626]


OlyFlyer | 80    2024-08-05 18:40:28 [24626]

Nem tudom valakit ez érdekli, de csináltam egy háromtengelyes digitális displayet amit itt megosztok. Egyszerű, Arduino Uno egy TFT displayjel. Kicsit lassú, de nekem jó lesz az új fúró / marógépemre.





/*------------------------------------------------------------------------------------------------------------------------------
*
* Simple 3-axis DRO based on digital calipers. These calipers seems to use the same sort of interface, so it is easy to
* decode the value and display it on an external display. Reading is slow because of the serial protocol between the
* calipers and the Arduino module. Also the fact that a TFT display shield is used for displaying the values slows it down
* even further. Useable on manual mill, or lathe if slow feed rates are acceptable.
*
* Reading of the calipers is done sequencially. There is no timeout, if one caliper is disconnected or stops working
* then the software will wait forver and won't read the others. If one caliper stops sending data because it is switched off
* or entered a sleep mode then the software will wait forever also. Make sure that the used calipers continue sending data
* even when switched off or the caliper enters sleep mode.
*
* Use it, modify it or distribute it as you like.
*
* ------------------------------------------------------------------------------------------------------------------------------
*/
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_TFTLCD.h> // Hardware-specific library
#include <MCUFRIEND_kbv.h>

// Define colours to be used by the TFT display

#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF

MCUFRIEND_kbv tft;

int decode_axis = 3;
int bit_array[25]; // For storing the data bit. bit_array[0] = data bit 1 (LSB), bit_array[23] = data bit 24 (MSB).
unsigned long time_now; // For storing the time when the clock signal is changed from HIGH to LOW (falling edge trigger of data output).

int Z_CLOCK_PIN = A5;
int Z_DATA_PIN = A4;
int Z_old_unit = 5; // Force unit display at power up - Any value except 0 or 1 is fine to start with
float Z_old_result = 123456.9; // Saved result to avoid repeated display of the same results. Fake data to start with.

int Y_CLOCK_PIN = 13;
int Y_DATA_PIN = 11;
int Y_old_unit = 5; // Force unit display at power up - Any value except 0 or 1 is fine to start with
float Y_old_result = 123456.9; // Saved result to avoid repeated display of the same results. Fake data to start with.

int X_CLOCK_PIN = 12;
int X_DATA_PIN = 10;
int X_old_unit = 5; // Force unit display at power up - Any value except 0 or 1 is fine to start with
float X_old_result = 123456.9; // Saved result to avoid repeated display of the same results. Fake data to start with.

//--------------------------------------------------------------------------------------------------------------------
//
void setup() {
tft.reset(); // Initialize the TFT display
tft.begin(0x9341); // LCD type
tft.fillScreen(BLACK);
tft.setRotation(1); // Display in landscape orientation

pinMode(Z_CLOCK_PIN, INPUT);
pinMode(Z_DATA_PIN, INPUT);
pinMode(Y_CLOCK_PIN, INPUT);
pinMode(Y_DATA_PIN, INPUT);
pinMode(X_CLOCK_PIN, INPUT);
pinMode(X_DATA_PIN, INPUT);
//
// Display the static text on TFT
//
tft.setCursor(0, 10);
tft.setTextColor(GREEN);
tft.setTextSize(2); // 16 x 36 pixels per characters
tft.print (" Adapting Camera");
tft.setCursor(10, 35);
tft.println(" DIY caliper DRO");

tft.setTextColor(WHITE);
tft.setTextSize(3); // Each increase adds 10 pixels in height
tft.setCursor(0, 70);
tft.print(" X :");

tft.setCursor(0, 130);
tft.print(" Y :");

tft.setCursor(0, 190);
tft.print(" Z :");
}

//--------------------------------------------------------------------------------------------------------------------
//
// Simple flow programming. It runs in a loop, not interrupt controlled.
// The program is waiting until the clock signal is high for 500us.
// It starts reading data when it turns low and decodes the caliper data.
//
void loop() {

unsigned long start = micros();

while (digitalRead(Z_CLOCK_PIN) == LOW) {} // If clock is LOW wait until it turns to HIGH
time_now = micros();
while (digitalRead(Z_CLOCK_PIN) == HIGH) {} // Wait for the end of the HIGH pulse
if ((micros() - time_now) > 500) { // If the HIGH pulse was longer than 500 micros we are at the start of a new bit sequence
decode_axis = 3; // Indicate that Z position is to be decoded
decode(); // Decode the bit sequence
}


while (digitalRead(Y_CLOCK_PIN) == LOW) {} // If clock is LOW wait until it turns to HIGH
time_now = micros();
while (digitalRead(Y_CLOCK_PIN) == HIGH) {} // Wait for the end of the HIGH pulse
if ((micros() - time_now) > 500) { // If the HIGH pulse was longer than 500 micros we are at the start of a new bit sequence
decode_axis = 2; // Indicate that Y position is to be decoded
decode(); // Decode the bit sequence
}

while (digitalRead(X_CLOCK_PIN) == LOW) {} // If clock is LOW wait until it turns to HIGH
time_now = micros();
while (digitalRead(X_CLOCK_PIN) == HIGH) {} // Wait for the end of the HIGH pulse
if ((micros() - time_now) > 500) { // If the HIGH pulse was longer than 500 micros we are at the start of a new bit sequence
decode_axis = 1; // Indicate that X position is to be decoded
decode(); // Decode the bit sequence
}
}

//--------------------------------------------------------------------------------------------------------------------
//
// Decode and display the caliper data values on the TFT display.
// The caliper sends a steam of 24 bits as data. This is simple binary data.
// Bit 21 is the sign bit, high = negative, low = positive caliper display value.
// Bit 24 is the unit type, high = inch, low = mm
//
void decode() {

int i = 0;

int Z_sign = 1;
float Z_value = 0.0;
float Z_result = 0.0;
int Z_in_unit = 1; // Saved units used for forcing DRO display update in case of unit change, when the caliper display is zero.

int Y_sign = 1;
float Y_value = 0.0;
float Y_result = 0.0;
int Y_in_unit = 1; // Saved units used for forcing DRO display update in case of unit change, when the caliper display is zero.

int X_sign = 1;
float X_value = 0.0;
float X_result = 0.0;
int X_in_unit = 1; // Saved units used for forcing DRO display update in case of unit change, when the caliper display is zero.

//--------------------------------------------------------------------------------------------------------------------
//
// Start with the Z axis
//
if (decode_axis == 3) {
bit_array[i] = digitalRead(Z_DATA_PIN); // Store the 1st bit (start bit) which is always 1.
while (digitalRead(Z_CLOCK_PIN) == HIGH) {}; // Wait until clock pin is LOW

for (i = 1; i <= 24; i++) {
while (digitalRead(Z_CLOCK_PIN) == LOW) { } // Wait until clock returns to HIGH
bit_array[i] = digitalRead(Z_DATA_PIN);
while (digitalRead(Z_CLOCK_PIN) == HIGH) {} // Wait until clock returns to LOW
}
for (i = 1; i <= 20; i++) { // Turning the value in the bit array from binary to decimal.
Z_value = Z_value + (pow(2, i-1) * bit_array[i]);
}

if (bit_array[21] == 1) {
Z_sign = -1; // Bit 21 is the sign bit. 0 = +, 1 = -
}
if (bit_array[24] == 1) { // Bit 24 tells the measuring unit (1 -> in, 0 -> mm)
Z_in_unit = 1;
if (Z_in_unit != Z_old_unit) { // Force displaying if caliper shows zero to display unit change
Z_old_unit = 1; // Set to 1 to indicate inches
tft.setCursor(210, 190);
tft.fillRect(210, 190, 320, 30, BLACK); // Erase previous characters
tft.print(" in");
Z_old_result = 123456.98; // Fake value to force diplaying the unit change on the TFT display
}
Z_result = (Z_value * Z_sign) / 2000.00;
if (Z_result != Z_old_result) { // Skip displaying if same result as before
Z_old_result = Z_result;
tft.setCursor(85, 190);
tft.fillRect(85, 190, 140, 30, BLACK); // Erase previous characters
if (Z_result != 0) {
if (Z_sign == 1) {
tft.print("+");
}
}
tft.print(Z_result,3); // Display the result with 3 decimals
}
}
else {
Z_in_unit = 0;
if (Z_in_unit != Z_old_unit) { // Force displaying if caliper shows zero to display unit change
Z_old_unit = 0; // Set to 0 to indicate mm
tft.setCursor(210, 190);
tft.fillRect(210, 190, 320, 30, BLACK); // Erase previous characters
tft.print(" mm");
Z_old_result = 123456.89; // Fake value to force diplaying the unit change on the TFT display
}
Z_result = (Z_value * Z_sign) / 100.00;
if (Z_result != Z_old_result) { // Skip displaying if same result as before
Z_old_result = Z_result;
tft.setCursor(85, 190);
tft.fillRect(85, 190, 140, 30, BLACK); // Erase previous characters
if (Z_result != 0) {
if (Z_sign == 1) {
tft.print("+");
}
}
tft.print(Z_result,2); // Display the result with 2 decimals
}
} // Z position is done and updated
}

//--------------------------------------------------------------------------------------------------------------------
//
// Read Y axis position
//
if (decode_axis == 2) {
bit_array[i] = digitalRead(Y_DATA_PIN); // Store the 1st bit (start bit) which is always 1.
while (digitalRead(Y_CLOCK_PIN) == HIGH) {}; // Wait until clock pin is LOW

for (i = 1; i <= 24; i++) {
while (digitalRead(Y_CLOCK_PIN) == LOW) { } // Wait until clock returns to HIGH
bit_array[i] = digitalRead(Y_DATA_PIN);
while (digitalRead(Y_CLOCK_PIN) == HIGH) {} // Wait until clock returns to LOW
}
for (i = 1; i <= 20; i++) { // Turning the value in the bit array from binary to decimal.
Y_value = Y_value + (pow(2, i-1) * bit_array[i]);
}
if (bit_array[21] == 1) {
Y_sign = -1; // Bit 21 is the sign bit. 0 = +, 1 = -
}
if (bit_array[24] == 1) { // Bit 24 tells the measuring unit (1 -> in, 0 -> mm)
Y_in_unit = 1;
if (Y_in_unit != Y_old_unit) { // Force displaying if caliper shows zero to display unit change
Y_old_unit = 1; // Set to 1 to indicate inches
tft.setCursor(210, 130);
tft.fillRect(210, 130, 140, 30, BLACK); // Erase previous characters
tft.print(" in");
Y_old_result = 123456.98; // Fake value to force diplaying the unit change on the TFT display
}
Y_result = (Y_value * Y_sign) / 2000.00;
if (Y_result != Y_old_result) { // Skip displaying if same result as before
Y_old_result = Y_result;
tft.setCursor(85, 130);
tft.fillRect(85, 130, 140, 30, BLACK); // Erase previous characters
if (Y_result != 0) {
if (Y_sign == 1) {
tft.print("+");
}
}
tft.print(Y_result,3); // Display the result with 3 decimals
}
}
else {
Y_in_unit = 0;
if (Y_in_unit != Y_old_unit) { // Force displaying if caliper shows zero to display unit change
Y_old_unit = 0; // Set to 0 to indicate mm
tft.setCursor(210, 130);
tft.fillRect(210, 130, 140, 30, BLACK); // Erase previous characters
tft.print(" mm");
Y_old_result = 123456.89; // Fake value to force diplaying the unit change on the TFT display
}
Y_result = (Y_value * Y_sign) / 100.00;
if (Y_result != Y_old_result) { // Skip displaying if same result as before
Y_old_result = Y_result;
tft.setCursor(85, 130);
tft.fillRect(85, 130, 140, 30, BLACK); // Erase previous characters
if (Y_result != 0) {
if (Y_sign == 1) {
tft.print("+");
}
}
tft.print(Y_result,2); // Display the result with 2 decimals
}
}
}
//--------------------------------------------------------------------------------------------------------------------
//
// Read X axis position
//
if (decode_axis == 1) {
bit_array[i] = digitalRead(X_DATA_PIN); // Store the 1st bit (start bit) which is always 1.
while (digitalRead(X_CLOCK_PIN) == HIGH) {}; // Wait until clock pin is LOW

for (i = 1; i <= 24; i++) {
while (digitalRead(X_CLOCK_PIN) == LOW) { } // Wait until clock returns to HIGH
bit_array[i] = digitalRead(X_DATA_PIN);
while (digitalRead(X_CLOCK_PIN) == HIGH) {} // Wait until clock returns to LOW
}
for (i = 1; i <= 20; i++) { // Turning the value in the bit array from binary to decimal.
X_value = X_value + (pow(2, i-1) * bit_array[i]);
}
if (bit_array[21] == 1) {
X_sign = -1; // Bit 21 is the sign bit. 0 = +, 1 = -
}
if (bit_array[24] == 1) { // Bit 24 tells the measuring unit (1 -> in, 0 -> mm)
X_in_unit = 1;
if (X_in_unit != X_old_unit) { // Force displaying if caliper shows zero to display unit change
X_old_unit = 1; // Set to 1 to indicate inches
tft.setCursor(210, 70);
tft.fillRect(210, 70, 140, 30, BLACK); // Erase previous characters
tft.print(" in");
X_old_result = 123456.98; // Fake value to force diplaying the unit change on the TFT display
}
X_result = (X_value * X_sign) / 2000.00;
if (X_result != X_old_result) { // Skip displaying if same result as before
X_old_result = X_result;
tft.setCursor(85, 70);
tft.fillRect(85, 70, 140, 30, BLACK); // Erase previous characters
if (X_result != 0) {
if (X_sign == 1) {
tft.print("+");
}
}
tft.print(X_result,3); // Display the result with 3 decimals
}
}
else {
X_in_unit = 0;
if (X_in_unit != X_old_unit) { // Force displaying if caliper shows zero to display unit change
X_old_unit = 0; // Set to 0 to indicate mm
tft.setCursor(210, 70);
tft.fillRect(210, 70, 140, 30, BLACK); // Erase previous characters
tft.print(" mm");
X_old_result = 123456.89; // Fake value to force diplaying the unit change on the TFT display
}
X_result = (X_value * X_sign) / 100.00;
if (X_result != X_old_result) { // Skip displaying if same result as before
X_old_result = X_result;
tft.setCursor(85, 70);
tft.fillRect(85, 70, 140, 30, BLACK); // Erase previous characters
if (X_result != 0) {
if (X_sign == 1) {
tft.print("+");
}
}
tft.print(X_result,2); // Display the result with 2 decimals
}
}
}
}


babosjozsef89 | 1    2024-08-02 10:07:08 [24625]

Sziasztok! Valaki ismer-e olyan szerelőt, aki az amada élhalítónk. Amada its 2 szoftver újratelepítését eltudná végezni vagy esetleg teljes retrofit. Köszönöm.


horcsab | 522    2024-08-01 16:44:00 [24624]

Sziasztok!

Keresek egy FUW 400 NC gép elektromos rajzát.
Heidenhain vezérlős, de bármilyen más vezérlős megoldás is érdekel.

Ha valakinek megvan és megosztaná velem, köszönettel venném.


jani300 | 12168    2024-07-28 19:52:40 [24623]

Igen !
És teljesen félre is értettél
Nem rezelünk , csak úgy , mert minek , és talán tiszteljük is valamennyire a vackainkat , de hagyjuk inkább ezt .

Előzmény: sarktibsi, 2024-07-28 18:31:54 [24622]


sarktibsi | 519    2024-07-28 18:31:54 [24622]

Teljesen hivatalosan vettem egy cnc gépet , áfás számlával. Csak eladhatom ami nekem nem kell róla (gondolom én) van hozzá hajtás is, működőképesen vásároltam.

Előzmény: jani300, 2024-07-28 18:18:33 [24621]

jani300 | 12168    2024-07-28 18:18:33 [24621]

Ezt ne
Pont itt ?

Előzmény: sarktibsi, 2024-07-28 18:11:35 [24620]


sarktibsi | 519    2024-07-28 18:11:35 [24620]

Nekem egy 18.5 Kw-os dc motorom van ami felesleges , nem tudom , hogy érne többet ha eladom egybe , vagy szétszedem darabokra. Mennyi réz lehet benne?

Előzmény: jani300, 2024-07-28 12:48:24 [24619]


jani300 | 12168    2024-07-28 12:48:24 [24619]

Most ugrott be ,miért is hányódik itt legalább 10 , vezetékétől megszabadított porszívó
Egyébként félvezetőket is szedtem ki ezekből , co gép huzalelőtoló vezérlőjébe .

Előzmény: sarktibsi, 2024-07-28 10:22:27 [24615]


Vetesi75 | 1567    2024-07-28 10:52:02 [24618]

SSR: Csak a tranzisztor kimenetűek tudják - de abból is csak a nullátmenet nélküliek, ezek viszont nem gyakoriak. Akkor már IGBT-vel célszerűbb. Viszont nullátmenet nélküli triac-ossal (optotriak), lehet csinálni fázishasítót. A Tungsramnak volt erre régen modulja (W9xxx?).

Előzmény: sarktibsi, 2024-07-28 10:32:54 [24616]


Vetesi75 | 1567    2024-07-28 10:41:18 [24617]

Persze, hogy pillanatnyilag a szaggató rákapcsolja a teljes* feszültséget, csak az áram nem akar folyni a soros induktív összetevő miatt... (*fázishasításnál csak részfeszültséget!)

Előzmény: mex, 2024-07-28 10:22:26 [24614]


  Fórum főoldal  |  A lap tetejére

Időrend:
Oldal 1 / 492 Ugrás ide:
Sorok:
1  2  3  4  5   Következő ►  Utolsó ►|


 ◊