Zelfbouw kaart van gebruiker Ludo

Moderator: Moderators

Plaats reactie
aw
Berichten: 131
Lid geworden op: 22 jan 2007 19:57
Locatie: Soest
Contacteer:

Zelfbouw kaart van gebruiker Ludo

Bericht door aw »

heb goede en beproefde unipolaire motorsturing.Schema in orcad 3.2 en pcb in layo1.Schema omgezet naar pdf ,voor iedereen leesbaar maar hoe krijg ik dit op deze site als bijlage ?
ludo
De bestanden van Ludo staan hier:

2310_PCB.zip

2310_SCH.zip

L297_PCB_SCH.zip

win_frees.zip

XY_alogor1.zip


Ludo, geef je zelf even meer info? Ik heb maar een nieuw draadje gestart om dat het bestaande draadje over Erik's kaart gaat.

Mvg
Arthur[/url]
aw
Berichten: 131
Lid geworden op: 22 jan 2007 19:57
Locatie: Soest
Contacteer:

Re: Zelfbouw kaart van gebruiker Ludo

Bericht door aw »

Extra info van Ludo:

"Ik ben al heel wat jaren op mijn eentje bezig en probreer eigenlijk alles zelf te doen ,machine ,electronica,programmeren.

Mijn oude freesprogramma's werkte met DOS en het aansturen van de printerpoort was toen geen enkel probleem.Met windows kreeg ik het niet meer gedaan, de motors draaide met schokjes.Om dit op te lossen was mijn kennis onvoldoende,daarom ben ik maar overgeschakeld naar de seriele poort. Waaruit het volgende is ontstaan.

De controller 2313 ontvangt data van de PC en zet deze data om in klokpulsen en richting voor X,Y en Zas.Voor elke as is een eindtrap L297 nodig .

Het programma XY_algor1 is de broncode voor de controller.
Om deze schakeling te kunnen gebruiken moet U wel een programma hebben ,een voorbeeld met broncode in VB6 is win_frees.In dit programma heb ik een zeer eenvoudig 3D algoritme ontwikkeld.Hoe dit algoritme werkt zal ik later wel uitleggen.

De mircocontroller krijgt volgende info binnen:

1°.aantal stappen grootste afstand.
2°.toename1
3°.toename2
4°.resetbyte (met dit byte wordt ook de spindle motor in/uit geschakeld)
5°.grootste (1,2 of 3)
6°.Snelheid
7°.versnelling/vertraging
8°.Controlekarakter

Als de contoller deze info heeft ontvangen ,stuurt hij een "A" terug,De PC kan nu volgende coordinaten berekenen.

De microcontroller zal nu de stappenmotors X,Y en Z besturen .Als de bewerking gedaan is stuurt de controller een "R" naar de PC ,deze zend dan volgende data.

Als men de parallelpoort wenst te gebruiken (voor een ander programma bv) wordt met een omschakelaar P2 aan massa P4 gelegd,voor de seriele poort is dit P3.

Ik hoop dat deze korte uitleg enig licht werpt op de bedoeling."
aw
Berichten: 131
Lid geworden op: 22 jan 2007 19:57
Locatie: Soest
Contacteer:

Re: Zelfbouw kaart van gebruiker Ludo

Bericht door aw »

En de beschrijving van het algoritme:

"Eenvoudig 3 of meer-assen algoritme voor CNC.

Voor plotters gebruikte ik vroeger het Bresenham algoritme ,dit algoritme is vrijwel door iedereen gekend.

Toen ik met CNC begon bleek dat het Bresenham algoritme voor 3D te ingewikkeld was voor mij,daarom ben ik eens gaan nadenken of het niet eenvoudiger kon,ziehier mijn idee.

We gaan uit van een eenvoudig voorbeeld .

We nemen aan dat X=11 en Y=4 stappen.

Dus voor elke stap van de X motor moet de Ymotor 4/11 stap doen of 0.36363636.

Omdat de motoren alleen maar volle stappen kunnen doen ,zal de Ymotor moeten wachten totdat de Y-waarde groter of gelijk is aan 11/11.

In plaats van met een breuk te werken kunnen we gewoon Y telkens met 4 verhogen totdat Y_totaal >= 11

Als we dit nu even in een tabel zetten krijgen we het volgende.

Stap Xmotor Y_totaal Ymotor

1 1 4 0

2 2 4+4=8 0

3 3 12 1 y_totaal=Y_totaal-11= 1

4 4 1+4=5 0

5 5 9 0

6 6 13 1 Y_totaal=Y_totaal-11=2

7 7 6 0

8 8 10 0

9 9 14 1 Y_totaal=Y_totaal-11=3

10 10 7 0

11 11 11 1 Y_totaal=Y_totaal-11=0

X=11 Y=4 totaal

Om te testen of het werkte heb ik in een testprogramma alle mogelijke combinaties van x y en z laten uitvoeren.

Het algoritme werkt met een microcontroller,maar er is toch nog teveel rekenwerk,daarom wordt alles omgezet naar 16 of 24 bit

men moet dan enkel maar de carry vlag in de gaten houden. Als de carry vlag wordt gezet dan moet desbetreffende motor een stap doen.

De berekening van Y_totaal=Y_totaal-x is niet nodig omdat na de carry automatisch de rest overblijft.

Omdat we de controller aansturen via de seriele poort voert de PC de berekeningen uit.

We krijgen dan volgende psuedoVB code .Zoek eerst de grootste waarde .

Als X=grootste

Stap=x

Grootste=1

Inc1=((y_stappen/x_stappen) * 65535 ) +0.5

Inc2=((z_stappen/x_stappen) * 65535 ) +0.5

Als Y=grootste:

Stap=y

Grootste=2

Inc1=((x_stappen/y_stappen) * 65535 ) +0.5

Inc2=((z_stappen/y_stappen) * 65535 ) +0.5

Als Z=grootste:

Stap=z

Grootste=3

Inc1=((x_stappen/z_stappen) * 65535 ) +0.5

Inc2=((y_stappen/z_stappen) * 65535 ) +0.5

Zend via RS232 naar controller :

Zend=str(stap)+ str(inc1)+str(inc2)+grootste

Voor de microcontroller krijgen we volgend stukje code

Lus_Stappen:

Stap motor1

Totaal_1= totaal1+inc1

If carry set then stap motor 2 ‘wordt bepaald door vb routine!

Totaal2=totaal2+inc2

If carry set then stap motor 3 ‘wordt bepaald door vb routine!

Totaal=totaal-1

If totaal<>0 then goto Lus_Stappen

Zoals U ziet is het zeer eenvoudig.De volledige code is voor een AT90S2313 en is gedeeltelijk

in bascom en assembly gemaakt. Het program heet XY_algor1."
Gebruikersavatar
Joost
Berichten: 180
Lid geworden op: 24 jan 2007 10:38
Locatie: Veldhoven
Contacteer:

Re: Zelfbouw kaart van gebruiker Ludo

Bericht door Joost »

Hej, dat is toevallig :)

Ik ben met iets soortgelijks bezig. Ik zal binnenkort eens kijken wat je allemaal hebt ontwopren.

Waarom is 'ludo' zelf geen lid van het forum?
aw
Berichten: 131
Lid geworden op: 22 jan 2007 19:57
Locatie: Soest
Contacteer:

Re: Zelfbouw kaart van gebruiker Ludo

Bericht door aw »

Joost schreef:Hej, dat is toevallig :)

Ik ben met iets soortgelijks bezig. Ik zal binnenkort eens kijken wat je allemaal hebt ontwopren.

Waarom is 'ludo' zelf geen lid van het forum?
Ludo is zelf ook lid van het forum, maar had geen mogelijkheid de files te hosten. Dat heb ik voor hem gedaan en hier geplaatst. Ludo heeft daarna nog wat aanvullende info gestuurd wat ik er ook bij heb geplaatst.

Je kunt Ludo gewoon een PM of een e-mail sturen, zie de gebruikerslijst.

Mvg
Arthur
Plaats reactie