Karel de Grote-Hogeschool

            Katholieke Hogeschool Antwerpen

            Departement Industriële Wetenschappen en Technologie

            Campus Hoboken

 

 

               

 

            

 

   

 

 

 

 

 

3D Computergestuurde Graveermachine

 

door Thierry LOREYN

 

 

 

 

 

 

 

 

Promotor: Wim Van Weyenberg

 

 

 

 

 

 

 

 

 

 

                                                                                          Proefschrift tot het behalen van de graad van

                                                                                          Bachelor in de Elektronica - ICT,

                                                                                          Hoboken, juni 2008

 


 

 

 

Voorwoord

 

In dit derde en laatste jaar “ bachelor in de Elektronica-ICT “ dienen we een eindwerk te maken.

Dit om al de opgedane kennis te beproeven.  Hiervoor kregen we een stagebedrijf toegewezen.

 

Echter droomde ik er al lang van om de mechanische achtergrond (elektromechanica in het middelbaar onderwijs) te combineren met de elektronische kennis die we op KdG opdeden.

 

Hiervoor diende ik twee voorstellen in.

Het 3D Computergestuurde Graveermachine haalde het. Dit mocht ik als eindwerk ontwerpen, en realiseren. Zo werd KdG mijn stagebedrijf.

 

Met dank aan Dhr. Koen Heylen.

 

 

 

 

 

 

 

 

 

 

 

Dankwoord

 

Graag zou ik in dit dankwoord enkele mensen bedanken.

 

-         Mijn Promotor : Dhr. Wim van Weyenberg voor zijn tijd, en professionele ondersteuning.

-         Dhr. Koen Soontjens waar ik ook altijd terecht kon.

-         Dhr. Koen Heylen die het mogelijk maakte om dit ontwerp te realiseren als eindwerk.

-         Alle andere docenten van de opleiding voor het inzicht in de electronica-ICT

-         KdG als stagebedrijf voor de aangename werksfeer

-         Mijn medestudenten voor de leuke jaren die we hadden !

-         Mijn zust voor het naleeswerk

-         Maar vooral ook mijn ouders voor hun steun.

 

 

 

Bedankt !

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Opdrachtomschrijving

 

 

   Ontwerp, Constructie en sturing van een 3D graveermachine.

 

De bedoeling is dat er printplaten (baantjes) kunnen gefreesd worden, maar vooral TEKST en eventueel voorgeprogrammeerde figuren kunnen gegraveerd worden.

 

Hiervoor moet hetvolgende uitgewerkt en ontworpen worden;

 

·        Een mechanische constructie, die een freeskop 3 dimensionaal kan bewegen.

      Als materiaal worden assen/motoren gebruikt uit verkregen afgedankte toestellen.

De opbouw van de machine X- Y- en Z-as moet voor december klaar zijn !

 

·        De aandrijving van de X- Y- en Z-as moet gebeuren met stappenmotoren.

Voor elke stappenmotor dient een verschillende (elektronische) sturing opgebouwd en uitgewerkt te worden.

 

·        Het moet mogelijk zijn de machine zowel hardwarematig, als softwarematig te sturen.

 

·        De machine moet in staat zijn G-Codes te verwerken van CAD-programma’s.

 

·        Het maken van een scriptie, en toelichten van alle elektronica + programatie in detail.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Opm.:  De mechanische constructie mag eenvoudig gehouden worden, en moet niet verder toegelicht worden. (de nadruk ligt op de Elektronica)

 

 

 

 

 

 

 

 

Inleiding

 

Tijdens het lezen van dit eindwerk zal blijken dat elk onderdeel modulair opgebouwd is.

 

Hierdoor kon tijdens het ontwerp elk onderdeel afzonderlijk op zijn werking getest worden.

Na het afwerken van elk onderdeel, werd het samenbracht op het geheel, en weer getest.

Pas na een goed resultaat werd het volgende onderdeel vervaardigd.

 

Op deze werkwijze is heel de machine opgebouwd.

De volgorde waarmee de verschillende hoofdstukken zullen worden behandeld zijn gelijk aan de opbouwvolgorde van de machine, met uitzondering van de voeding.

 

 

Wat is er terug te vinden in dit eindwerk en wat niet?

 

Elk onderdeel is eerst uitvoerig getest op breadboard, en vervolgens op PCB vervaardigd.

Uiteraard was niet alles op breadbord meteen een succes, sommige schakelingen zijn na testen aangepast. Andere zijn gewoon gestopt wegens slechte werking, en hernomen.

 

Enkel wat werkt, en dus uiteindelijk op PCB gekomen is heb ik beschreven !

Al (de miserie J) wat aan de werking vooraf ging niet !

 

 

 

Besluit

 

·        De machine wordt compacter (opplooibaar) als de brug naar Y-Z-slede wordt doorgezaagd, en vervolgens scharnierend wordt opgesteld. (Dit is iets voor na de presentatie)

 

·        Met onderdelen uit afbraak (en bij houden) kan veel geld worden bespaard.

 

·        De assen waarover de sleden geleiden zijn niet echt zwaar genoeg om zwaar freeswerk te doen, eveneens de motoren die ze aandrijven. Dit kan opgelost worden door krachtigere motoren.

 

·        De X-slede wordt bewogen door middel van een snaar, wat handig is omdat de slede snel met de hand kan worden verschoven. Echter is dit niet zo nauwkeurig als schroefdraad.

 

·        Bij vervaardiging van een eventuele volgende gelijkaardige machines, kunnen alle componenten bijeengeperst worden op één kant en klare print, en is modulaire opbouw niet meer nodig.

 

·        De stuurschakeling met mosfets levert het beste resultaat van de drie. (Y-AS)

 

·        De stuurschakeling met mosfets, is tevens ook de goedkoopste, althans als je rekening houd met het koelelement dat niet moet worden gebruikt/gekocht.

 

·        De dimmer voor de freeskop zou eigenlijk weldegelijk moeten uitgevoerd worden met een filternetwerk (spoel) althans als storingen/ruis belangrijk is om te vermijden (altijd).

 

·        Ipv. op zoek te gaan naar krachtigere stappenmotoren, kan het geheel ook gestuurd worden doormiddel van DC motoren een daarop een terugkoppeling realiseren. (soort servo)

Let wel:   Hierdoor veranderd bijna heel het ontwerp…

 

 

 

 

Samenvatting (Abstract)

 

 

3D computergestuurde graveermachine gelijkaardig aan een klein CNC frees machientje.

De mechanische constructie is zo veel mogelijk uit recyclage onderdelen opgebouwd.

De drie assen worden aangedreven door stappenmotoren, voor elke motor is een driver voorzien. De drivers zijn opgeboud met H-bruggen. Deze H-bruggen worden elk met hun eigen microcontroller (µC) gestuurd. De microcontrollers zijn geschreven in de C-taal. De machine kan  serieel (RS-232) of parallel (LPT) gestuurd worden, dit door middel van G-codes. Via de parallelle computersturing wordt er gebruik gemaakt van bestaande CNC software. Optisch ontkoppeling is voorzien, zodat de pc niet rechtstreeks in verbinding staat met de machine. Ook is er een manuele bediening voorzien, de keuze tussen computersturing en manuele bediening wordt gemaakt met een multiplexer (MUX). Op het LCD scherm kan statusinformatie afgelezen worden. Met de dimmer kan de snelheid van de freeskop geregeld worden. De optionele stofzuiger, en freeskop kunnen aangezet worden met de one-toutch schakeling (flipflop geheugen).

Het geheel is gevoed met een ATX computervoeding.

 

Als extra-tje is een eigen interface (in VB) en eigen postprocesor (in C) geschreven. Hiermee kunnen rechte lijnen gegraveerd worden, steunend op het bresenham algoritme.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bibliografie

 

-         Vanheste J., Het handboek voor Internet- en Intranet-technologie,

derde druk, Pearson Education Benelux, 2004

 

-         Pollefiet J., Elektronische vermogencontrole,

zesde druk, Academia Press, 2004

 

-         Soontjens K., Digitale Elektronica,

Hoboken, KdG Departement Industriële wetenschappen en Technologie, 2004

 

-         Maxim Dallas-Semiconducters, Switch Bounce and Other Dirty Little Secrets,

http://www.maxim-ic.com/appnotes.cfm/an_pk/287

 

-         Nanfara F., ea., The CNC Workbook,

Addison-Wesley Publishing Compnay, 1994

 

-         Nota van Kelly Ware, KCAM 4 CNC control software,

Revision 4.0.24, Kelly Ware, 2007 (KCAM handleiding)

 

-         Uwe Altenburg, “M16C-mini-boardmet grafisch display – programmeerbaar in C en BASIC” Elektor (Elektuur), Mei 2008, nr. 535, blz. 16-23

 

-         CNCezPRO, “CNC G Codes Definitions Examples Programs Programming Learning Training”, internet,  (april 3008),  (http://www.cncezpro.com/gcodes.cfm)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Inhoudstafel

 

1. Afspraken. 10

1.1. Het Assenstelsel 10

2. Mechanische constructie. 11

2.1. Langsrichting (X-as) 12

2.2. Dwarsrichting (Y-as) 13

2.3. Hoogterichting (Z-as) 14

2.4. Bevestiging Frees. 15

2.5. Bedieningspaneel 15

2.6. Spanplaat 15

3. De Stappenmotor 16

3.1. Waarom een Stappenmotor 16

3.2. Wat is één stap?. 16

3.3. Soorten Stappenmotoren. 16

3.3.1. Unipolaire Stappenmotor 17

3.3.2. Bipolaire Stappenmotor 17

3.3.3. Compatibiliteit 17

4. Stuurlogica. 18

4.1. Unipolaire Stuurlogica. 18

4.2. Bipolaire Stuurlogica. 20

5. De H-brug. 21

5.1. Werking H-brug. 21

5.2. Dubbele H-brug. 22

6. De gebruikte motorsturingen (voor mijn ontwerp) 23

6.1. Motorsturing Langsrinchting (X-as) 23

6.1.1. Het schema. 24

6.1.2. De print(PCB) 24

6.1.3. Gebruikte componenten. 25

6.2. Motorsturing Dwarsrichting (Y-as) 26

6.2.1. H-brug PCBy 26

6.2.1.1. Het schema. 26

6.2.1.2. De print 26

6.2.1.3. Uitleg Schema. 27

6.2.2. Logica PCBy 28

6.2.2.1. Schema van het µC bordje. 28

6.2.2.2. Programma voor de µC(PIC16F84A) voor het logica bordje. 29

6.2.3. Gebruikte componenten. 30

6.3. Motorsturing Hoogterichting (Z-as) 31

6.3.1. H-brug PCBz 31

6.3.1.1. Het Schema. 31

6.3.1.2. De print 32

6.3.1.3. Uitleg Schema. 32

6.3.2. Logica PCBz 33

6.3.2.1. Logica van deze print 33

6.3.2.2. Schema van het µC bordje. 33

6.3.2.2. Print van het µC bordje. 33

6.3.2.4. Programma voor de µC(PIC16F84A) 34

6.3.3. Gebruikte Componenten. 35

7. LCD Scherm.. 36

7.1. Wat is een LCD.. 36

7.2. Aansturing. 36

7.3. LCD driver 36

7.3.1. ControleBus. 36

7.3.2. DataBus. 37

7.3.2.1. Werkmodi 37

7.3.2.2. Instructiesignalen. 37

 

7.3.2.3. Datasignalen. 37

7.4. LCD contrast 38

7.5. LCD backlight 38

7.6. LCD debuggen. 38

7.7. Stuur programma voor LCD scherm.. 39

8. De multiplexer. 40

8.1. Wat is een multiplexer?. 40

8.2. Toepassingsgebied. 40

8.3. Waarom een MUX?. 40

8.4. Selectingang. 40

8.5. Schema van de MUX.. 41

8.6. MUX SN74LS157. 41

8.6.1. Bestaande MUX.. 41

8.6.2 Inwendig Schema. 42

8.6.3. Het schema. 42

8.6.4. De print 43

8.6.5. Gebruikte componenten. 43

9. Bedieningspaneel 44

9.1. Manuele bedieningsprint 44

9.1.1. Het schema. 44

9.1.2. De print (PCB) 44

9.1.3. Gebruikte componenten. 44

9.2. One-touch print 45

9.2.1. Opbouw.. 45

9.2.2. Werking flipflop. 45

9.2.2.1. Mechanische analogie. 45

9.2.2.2. Elektronische werking. 45

9.2.2.3. D-flipflop. 47

9.2.2.4. Dual D-Flipflop CD4013BC.. 48

9.2.3. Principeschema. 48

9.2.3.1. Dender 49

9.2.4. Het schema. 49

9.2.5. De Print 50

9.2.6. Gebruikte Componenten. 50

9.3. Dimmer 51

9.3.1. Werking. 51

9.3.1.1. Triac (TRIode for Alternating Current) 51

9.3.1.2. Diac (DIode for Alternating Current) 51

9.3.2. Het Schema. 52

9.3.3. De print 52

9.3.4. Gebruikte componenten. 52

10. Eindeloopschakelaars. 53

10.1. Wat is een eindeloopschakelaar ?. 53

10.2. Interne opbouw lichtsluis. 53

10.3. Schakeling. 53

10.3.1. Printontwerp. 53

10.4. Monteerbare lichtsluis. 54

10.4.1. Interne opbouw GP1A51HR.. 54

10.5. Gebruikte componenten. 54

11. De microcontroller. 55

11.1. Wat 55

11.2. Voordelen / Nadelen van een µC.. 55

11.2.1. Voordelen. 55

11.2.2. Nadelen. 56

11.3. Benodigdheden. 56

11.3.1. De Programmeer omgeving. 56

11.3.2. De header files. 56

11.3.3. De compiler 57

 

11.3.4. Programmer Software. 57

11.3.5. Programmer Hardware. 57

11.3.5.1. Programmer Hardware voor de PIC.. 58

11.3.5.2. Programmer voor de DS89c450. 59

12. De hoofd µC.. 61

12.1. Waarom Dallas Maxim DS89c450. 61

12.2. Behuizingen. 61

12.3. Aangesloten periferie. 61

12.4. Het programma. 62

13. De Voeding. 68

13.1. ATX-voeding. 68

13.1.1. Waarom ATX-voeding?. 68

13.1.2. De Voedingsconnector (molex) 68

13.1.3. Soft power on. 68

14. CNC (Computer Numerical Control) 69

14.1. KCAM.. 69

14.1.1. Waarom KCAM.. 69

14.1.2. KCAM kalibreren. 70

14.1.2.1. Freestafel parameters. 70

14.1.2.2. Parallelle poort parameters. 70

14.1.2.3. Andere parameters. 71

14.2. Andere leuke software. 71

14.2.1. DeskEngrave. 71

14.2.2.. Andere leuke software. 71

15. Extra’s. 72

15.1. Optische ontkoppeling. 72

15.1.1. Wat 72

15.1.2. Hoe. 72

15.1.3. Werking. 72

15.1.4. Het schema. 73

15.1.5. De print 74

15.1.6. Gebruikte componenten. 74

15.2. Seriële aansturing (RS-232) 75

15.2.1. Serieel  KCAM 4. 75

15.2.1.1.MaxStepper 75

15.2.1.2. Eigen CNC software. 76

 

 

 

 

Inhoudstafel bijlagen

 
 

 

 


I. De prints  (Op ware grootte) 81

II. ASCII tabel 86

III. ASCII tabel voor LCD driver 86

IV. Parallelle poort (LPT) 87

V. Null-modem.. 87

VI. Bresenham testjes. 88

VII. Enkele G-codes coor freesmachines. 89

VIII. Tools. 91

VX. Kostprijs. 92

X. Eindwerk Agenda. 95

XII. Voor geïnteresseerden. 95

 

 

 

 


 

 

 

1.        Afspraken

 

 

Alvorens van start te kunnen gaan moeten eerst essentiële afspraken gemaakt worden, die in de verdere opbouw van de machine moeten gerespecteerd worden. Indien dit niet gebeurt, komen er vroeg of laat problemen !

 

Deze afspraken zijn ‘de standaard’ voor bijna alle CNC freesmachines.

 

Door deze afspraken te respecteren, zullen we later de mogelijkheid hebben, om zonder problemen bestanden en g-codes van allerhande programma’s te importeren, zoals Autocad, Multisim, Protel, graveersoftwaren, enz…

 

 

 

1.1.  Het Assenstelsel

 

Het assenstelsel is gebaseerd op ‘De rechterhandregel voor machine coördinaten’.

De handpalm licht hierbij horizontaal, terwijl men met de neus voor de machine staat.

Men zegt gewoon  ‘ X Y Z’ met de bijbehorende beweging.

 

                            

 

 

Let hier vooral op de ‘+’. 

De richting waarin de vingertop wijst, bepaald de positieve bewegingsrichting van de AS.

Bewegen van de vingertop weg, is een negatieve beweging!

 

 

Het is duidelijk;      Als dit principe niet gerespecteerd word, dan wordt het verdere ontwerp een  puinhoop!

En dit vooral bij het schrijven van software.

 

Dus vanaf nu spreken we over   MotorX  ,  MotorY  en  MotorZ  (en niet 1 , 2 en 3)

                                                      X-As         Y-As            Z-as

 

 

 

 

2.        Mechanische constructie

 

De mechanische constructie licht ik even kort toe. Omdat het hier vooral om de aansturing en het elektronische gaat.

 

De schetsen, technische tekeningen + afmetingen, berekeningen

en constructievolgorde zijn hier dus weg gelaten.

 

Echter kan de elektronica niet zonder de mechanica, vandaar deze korte beschrijving.

 

 

Bedenkingen vooraf;

 

In de meeste CNC freesmachines staat de freeskop vast en beweegt de spanklem, meestal door middel van een zwaluwstaartgeleiding.

 

Omdat mijn ontwerp uiteraard geen gigantische machine ging worden, heb ik gekozen om de freeskop te laten bewegen. Zo is er toch de mogelijk om redelijk zware gewichten onder de frees te leggen. (Tevens is er dan de mogelijkheid om stukken onder de freeskop te schuiven).

 

Omdat het te frezen werkstuk niet moet meegetrokken worden, kan alles lichter uitgevoerd worden.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Opm.:

  Op het moment dat

  deze foto is genomen, is de

  machine nog niet helemaal klaar !

 

2.1.        Langsrichting (X-as)

De langsinrichting heb ik niet geheel zelf gemaakt. Deze komt uit een oude afgedankte A3-scanner van Agfa. (Van het containerpark van onze school.)

 

Deze is volledig uitgekleed, en een nieuw leven gegeven, al is het enkel maar het onderste gedeelte dat ik ervan gebruikte. (voor de X-inrichting)

 

 

 

 

De grondplaat zag er als volgt uit;

 

 

 

 

 

 

 

In het midden een rond geslepen en ondersteunde as, waarop een meenemer geleidt die op een ronde axiale geleider zit.

De meenemer wordt meegetrokken door een snaar, de snaar wordt op haar beurt getrokken door de stappenmotor. (zie rechtsachter op de figuur.) Verder zitten aan de zijkant 2 koperen geleiders.

 

 

Wat zelf bijgebouwd is:

 

Op de meenemer zit de volger die met kogellagers over de koperen geleiders rolt. (Zoals in de figuur te zien)

 

Achteraf is dit verstevigd met een bijkomende kogellager. Dit om de schokken die veroorzaakt worden tijdens het omkeren van richting op te vangen.

 

Links en rechts zijn hiertegen rechtopstaande profielen bevestigd. Deze vormen de brug naar de Y-inrichting

 

Aan de grondplaat is het volgende veranderd:

      

-   De afmetingen, omdat deze in de PVC voet zou vallen

-   Uitsparing voor wegwerken voeding

-   Gaten voor montage en elektrische leidingen

-   Versteviging tegen doorbuigen met twee houten balkjes

-   Bevestigingsbeugels voor werkoppervlak

 

 

 

2.2.        Dwarsrichting (Y-as)

 

 

 

 

De dwarsrichting bestaat zoals te zien op de figuur uit het volgende:

 

·        Een rechthoekig kaderment

Dit bestaat uit 4 aan elkaar gelaste L-profielen, waarin gaten voorzien zijn waar de assen is passen.

 

·        2 assen

Afkomstig uit twee printers van HP (690c)

 

·        1 draadstang

De draadstang is op lengte gemaakt en afgedraaid op de maat van de kogellagers.
Eerst was het een gewone, maar omdat die roestte, heb ik ze vervangen door een inoxen.
Omdat deze inox minder mee plooide, moet de uitlijning perfect zijn!

 

·        2 lagers

Dit zijn twee kleine skf lagers van 6mm binnendoormeter, voorzien van een lagerbeschermerkapje.

 

·        1 menemer.

Dit is een moer die is vastgelast op een plaatje. Zodat het plaatje vooruit of achteruit zal draaien door de verdraaiing van de as.

 

·        2 geleibusjes die over de assen geleiden.

De geleibussen zijn de insteekpinnetjes van automaten (steekzekeringen).

 

 

 

 

 

 

 

2.3.        Hoogterichting (Z-as)

 

Op de dwarsrichting zit de hoogterichtig. Deze bestaat uit het volgende:

 

·        Een rechthoekig kaderment.

Hierop zijn vier moeren gelast van M10. Hierin zitten de koperen bussen van de zekeringen, die voor een goede geleiding moeten zorgen.

 

De moeren zijn zoals op de figuur te zien eerst op een metalen plaatje vastgespeet, en daarna terug in lijn gezet om torsie te vermeiden (tijdens het lassen), en dan verder vastgelast.

 

Als deze twee plaatjes af waren, zijn ze met vijsjes(regeling mogelijk) vastgezet op het kaderment. Wanneer de uitlijning goed was, zijn beide plaatjes op het kaderment vastgelast.

 

 

·        2 assen

De twee assen van de hoogterichting zijn afkomstig van een oud faxtoestel (Container KdG)  Om de assen mooi uit te lijnen heb ik twee houten blokjes eerst los door geboord, zodat de gaten in lijn lagen, vervolgens hierover de moeren geschoven, en bijbehorende koperen geleibusjes.

Dan op de 4 moeren het meeneemplaatje vastgelast, hierdoor kan het geheel weer niet wegtrekken tijdens het lassen, en ligt zeker alles in lijn.

 

 

·        2 lagers

Om de schroefdraad van de Z-inrichting soepel te laten draaien.

 

·         Meenemer

Deze is hierboven te zien op de figuur.

 

 

 

2.4.        Bevestiging Frees

 

De freeskop is een dremel, of een dremel compatibele machine.
Deze past in de meenemer die op de Z-slede zit.

 

Tevens heb ik de freeskophouder voorzien van een stifthouder.
Het stiftje kan met 2 boutjes vastgezet worden.

 

 

 

 

 

2.5.        Bedieningspaneel

 

Met het bedieningspaneel kan het volgende gedaan worden:

 

-         Bedienen van de 3 assen          (zie ‘touch switch’).

-         Aanzetten Freeskop                (zie ‘one touch switch’)

-         Kiezen tussen manuele en computergestuurde bediening.

-         Aflezen statusinformatie           (zie LCD)

-         Aanzetten optionele stofzuiger

-         Contrastregeling van het LCD scherm

-         Voedingsspanning aan/uit zetten

 

Opm:    Op het toetspaneel links (manuele jogcontrol) moet nog een stikker met pijlen geplakt worden, zodat de onderliggende toetsen niet meer zichtbaar zijn.

 

 

 

 

 

2.6.        Spanplaat

 

Met de Spanplaat kunnen werkstukken op de machine gespannen worden, dit door middel van boutjes (M6)

 

 

 

 

 

 

 

 

 

 

 

 

 

3.        De Stappenmotor

 

 

3.1.  Waarom een Stappenmotor

 

Een stappenmotor maakt stapjes, zoals de naam al deed vermoeden. Dit wil zeggen dat hij niet tegen een constant toerental draait, zoals een gewone DC-motor, maar hij kan dit echter wel.
Het voordeel van deze motor is dat hij een aantal stappen kan doorlopen. Zo weten we precies wat de stand van de motor-as is.

Doorgaans is een stappenmotor niet zo krachtig. (Met de hand tegen te houden)
Stappenmotors zijn echter geen krachtpatsers.

De eisen die aan dit soort motors worden gesteld zijn meestal niet om krachtig te zijn, maar om nauwkeurig te zijn. Toch bestaan er grotere stappenmotoren die een koppel kunnen leveren van meer dan 40Nm.

 

Let wel: Hoe sneller een stappenmotor draait, hoe minder krachtig hij wordt!

 

 

Waar te vinden:

Stappenmotoren zijn sowieso altijd te vinden in printers, faxapparaten, plotters, kopieermachines, diskdrives, scanners, enz… Enkel het te leveren koppel kan soms wel onvoldoende zijn om in andere toepassingen te gaan gebruiken…

De stappenmotors die ik hier gebruikte zijn afkomstig van een A3scanner en een plotter.

 

      Opm.: Een stappenmotor is geen Servomotor, (Servo’s zijn hier niet besproken).

 

 

 

3.2.  Wat is één stap?

 

     De Grootte van een stap hangt af van stappenmotor tot stappenmotor.

      In de meeste gevallen is dit op de kenplaat van de motor af te lezen.

      Doorgaans zal één stap  1,5°  à  1,8°   zijn.

Het is echter mogelijk om het aantal graden voor één stap nog eens te halveren dit noemt men  “half stepping”, maar daarover later meer.

 

 

 

3.3.  Soorten Stappenmotoren

 

Elke stappenmotor werkt op gelijkspanning.
Er bestaan unipolaire en bipolaire stappenmotoren.

Komen er  5, 6 of 8 draden uit de stappenmotor, dan is het hoogstwaarschijnlijk een unipolaire stappenmotor. Bezit de motor vier draden dan is het een bipolaire stappenmotor.

Om te weten met welke spoeldraad je te doen hebt is uitmeten nodig.

Dit wordt duidelijk aan de hand van de figuren op de volgende blz.

 

Opm.:   Koop je een nieuwe stappenmotor, dan vind je natuurlijk in de datasheets van de motor de bijbehorende aansluitingen.

 

 

3.3.1.  Unipolaire Stappenmotor

 

      Het voordeel van een unipolaire stappenmotor is dat hij eenvoudig aan te sturen is.

De middenaftakking wordt permanent aan één kant van de voeding gehangen (+ of - klem). De vier andere draden worden dan afwisselend wel of niet bekrachtigd. Het wordt al snel duidelijk dat bij deze schakelwijze de motorwikkelingen niet erg efficiënt gebruikt worden. Er is telkens maar ¼ de van de beschikbare motorspoel bekrachtigd.

5 draden

6 draden

8 draden

    

 

 

 

 

 

 

 

 

 

Het is niet altijd even duidelijk welke draad bij welke spoel hoort, of welke draad de middenaftakking is. Dit kan gevonden worden door met de multimeter een weerstandsmeting te doen op de draden. Plots zul je op één draad de halve ohmse waarde meten dan op en andere draad, dan heb je de middenaftakking tepakken !

 

    

3.3.2.        Bipolaire Stappenmotor

 

Bipolaire stappenmotoren zijn efficiënter in het gebruik van de motorwikkelingen, maar moeilijker aan te sturen dan unipolaire stappenmotoren. Hiervoor zijn twee zogenaamde H-bruggen nodig  “Dubbele H-brug” genaamd. (hierover verder meer)

           

4 draden

Bipolaire stappenmotoren bezitten 2 wikkelingen zonder middenaftakking. Ze hebben dus 4 aansluitdraden.

 

De wikkelingen worden alternerend in beide stroomzinnen bekrachtigd. De stroomzin moet omgekeerd worden tijdens de werking. Dit vraagt  dus een ingewikkeldere stuurprocedure. Tevens is er bij onoplettendheid mogelijkheid tot kortsluiting!

 

      Toch heb ik gekozen voor dit werkingprincipe, de sturing is dan wel veel ingewikkelder, maar de efficiëntie van de motor (dus het koppel) gaat omhoog, daar nu 1/2 de van de motorspoelen gebruikt wordt tijdens één stap.  Een goed koppel is in dit ontwerp zeker van belang!

     

      Probleem:  Mijn stappenmotoren komen uit recyclage van andere(oudere/defecte) toestellen, ik had dus geen bipolaire stappenmotor ter beschikking, ik heb er wel bipolaire van gemaakt (zie compatibiliteit).

 

3.3.3.  Compatibiliteit

 

Opgemerkt dient te worden dat (buiten de ingewikkeldere sturing), de bipolaire motor qua opbouw bijna identiek is aan de unipolaire. Enkel is de unipolaire voorzien van middenaftakking.

Door kortsluiten / niet gebruiken van deze middenaftakking kan deze unipolaire motor bipolair werken. => Op de niet gebruikte draden staat wel spanning, isoleren is noodzakelijk !

 

DUS: Elke Unipolaire motor kan Bipolair werken mits aanpassing wikkelingen.(Omgekeerd niet)

 

 

4.        Stuurlogica

 

Aangezien er twee soorten stappenmotoren bestaan, zijn er ook twee soorten stuurlogica. De unipolaire stuurlogica en de bipolaire stuurlogica.

 

In mijn toepassing gebruik ik de bipolaire stuurlogica, maar om deze goed te begrijpen eerst even kort de unipolaire stuurlogica.

 

 

 

4.1.  Unipolaire Stuurlogica

 

Zoals eerder vermeld zijn unipolaire motors eenvoudiger te sturen dan bipolaire.

We nemen als voorbeeld de volgende unipolaire motor:

 

Unipolair: 6draden 2x middenaftakking

6 draads unipolaire motor met 2x middenaftakking

 

Draad 1 & 2 hangen we aan een kant van de voeding

Laat ons de min klem nemen (GND dus).

 

Stel dat de motorspoelen op 12v werken en dat 1a/1b/2a/2b verbonden zijn met de 12volt lijn via 4 schakelaartjes.

 

 

Neem aan dat de vier motorspoelen mooi onder een hoek van 90° verdeeld liggen rond de motorkern. Dan moeten we achtereenvolgens afwisselend de 4 schakelaartjes sluiten (telkens één gesloten de overige drie open.)

 

Waarheidstabel;

Stap

1a

1b

2b

2a

1

Toe

Open

0pen

Open

2

Open

Toe

Open

Open

3

Open

Open

Toe

Open

4

Open

Open

Open

Toe

1

Toe

Open

Open

Open

2

Open

Toe

Open

Open

3

Open

Open

Toe

Open

4

Open

Open

Open

Toe

 

Wordt deze logica gerespecteerd, dan zal de stappenmotor mooi in één richting draaien.

Moest de motor een beetje schokkerig draaien, dan zal waarschijnlijk een van de aansluitdraden verwisseld zijn.

 

Het is duidelijk wanneer alle schakelaars bediend worden alle spoelen bekrachtigd zijn. Nu zal de motor onbeweeglijk vast zitten, dit kan in sommige gevallen nodig zijn.

Door één spoel lang te bekrachtigen zal de motor ook vast komen te staan, maar niet zo vast als met vier spoelen.

 

Als alle schakelaars open zijn, zal de motor-as los staan.

 

 

 

Even ter verduidelijking, de as zal dan volgende standen doorlopen:

 

Stap 1

Stap 2

Stap 3

Stap 4

Stap 5

 

Een andere asverdraaiing kan verkregen worden door de schakelaars anders te bedienen.

Stap naar links opschuiven of stap naar rechts opschuiven, maar altijd via aangrenzende stappen.

 

In stuurtoepassingen is het uiteraard niet mogelijk om de schakelaartjes met de hand te bedienen. Daarvoor zal een elektronische sturing moeten gemaakt worden, meestal op een PCB’tje (Printed Circuit Board). Het PCB zal dan op zijn beurt via een microcontroller gestuurd worden.

 

Vervolgens zitten we dan niet meer met schakelaars, maar met digitale (binaire) logica.

Stel:      1 = Schakelaar Toe

            0 = Schakelaar Open

 

Dan krijgen we volgende waarheidstabel:

Stap

1a

1b

2b

2a

1

1

0

0

0

2

0

1

0

0

3

0

0

1

0

4

0

0

0

1

 

 

Deze volgorde dient dan opgenomen te worden in de microcontroller.

 

 

 

 

 

 

Nu buiten de Normale Stap is het ook nog mogelijk om halve stapjes te nemen. De “half step” is de kleinst mogelijke stap.

 

Stap

1a

1b

2b

2a

1

1

0

0

0

2

1

1

0

0

3

0

1

0

0

4

0

1

1

0

5

0

0

1

0

6

0

0

1

1

7

0

0

0

1

8

1

0

0

1

 

 

 

 

 

 

 

 

 

 

 

Het verdere principe blijft hetzelfde, maar nu zal er voor dezelfde asverdraaing te bekomen het dubbel aantal stappen moeten doorlopen worden.

 

 

 

 

 

 

 

4.2.  Bipolaire Stuurlogica

 

 

In tegenstelling tot unipolaire motoren zijn bipolaire motoren dus moeilijker aan te sturen.

Bipolaire motoren zijn gekend voor hun betere krachtverhouding tot dezelfde motorgrootte.

 

Het probleem is echter dat de stroomzin dient geïnverteerd te worden tijdens zijn werking.

Ze hebben echter hetzelfde werkingsdiagram(waarheidstabel) als de unipolaire stappenmotor.

 

Let wel; Nu kan niet meer gesproken worden van schakelaars die open of toe gaan (binair 0/1), maar we moeten hier werken met polariteiten.

 

 

Bipolair:  4 draden

 

 

Stap

1a

2a

1b

2b

1

+

-

-

-

2

-

+

-

-

3

-

-

+

-

4

-

-

-

+

 

 

 

 

 

 

 

 

 

 

 

 

Praktisch is dit te realiseren met een  zogenaamde “dubbele H-brug”.

 

Omdat ik dit principe (dubbele H-brug) bij mijn 3 motorschakelingen gebruik, wordt het volgende hoofdstuk volledig gewijd aan de “H-brug”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.  De H-brug

 

De H- brug heeft de vorm van een “H” en bezit vier schakelaars. Hiermee is het mogelijk om de stroom in één motorspoel om te keren. Omdat een bipolaire stappenmotor niet één spoel heeft, maar 2, moeten we de H-brug dubbel uit voeren!

 

 

 

5.1.  Werking H-brug

 

Omdat het werkingsprincipe van de H-brug eenvoudiger uit te leggen is aan de hand van één motorspoel (met dus ook één H-brug) zullen we er even vanuit gaan dat een DC motor dient gestuurd te worden. (Gelijkspanningsmotor met één spoel)

 

Als we de motor(M) willen laten draaien moeten we de schakelaars ( S1 & S4 ) gesloten worden. Willen we de motor de andere kant op laten draaien, dan dienen we schakelaars ( S2 & S3 ) te sluiten. Het is duidelijk dat de schakelaars altijd paarsgewijs dienen bekrachtigd te worden.

 

Ene kant op draaien

Andere kant op draaien

 

Zoals te zien in bovenstaande figuren zal de motor de ene keer linksom draaien, de andere keer rechtsom draaien. Wanneer alle schakelaars open staan zal de motor tot stilstand komen.

 

Let op:    Het is dus zeker niet toegestaan schakelaars S1 & S3 samen te sluiten, of schakelaars  S2 & S4 samen te sluiten, indien dit wel gebeurd zal de zekering getest worden ;-)

              

      Waarheidstabel;

        

S1

S2

S3

S4

Functie

Open

Open

Open

Open

Niets

Toe

Open

Open

Toe

Motor draait ene kant op

Open

Toe

Toe

Open

Motor draait andere kant op

Toe

Open

Toe

Open

Zekeringtest

Open

Toe

Open

Toe

Zekeringtest

Toe

Toe

Toe

Toe

Zekeringtest

 

 

 

5.2.  Dubbele H-brug

 

Aangezien er in een bipolaire stappenmotor twee motorspoelen zitten, zullen we de H-brug twee keer moeten uitvoeren. Deze moeten volgens een bepaald patroon aangestuurd worden.

 

 Waarheidstabel:

Functie

S1

S2

S3

S4

S1’

S2’

S3’

S4’

niets

Open

Open

Open

Open

Open

Open

Open

Open

Stap 1

Toe

Open

Open

Toe

Open

Open

Open

Open

Stap 2

Open

Open

Open

Open

Toe

Open

Open

Toe

Stap 3

Open

Toe

Toe

Open

Open

Open

Open

Open

Stap 4

Open

Open

Open

Open

Open

Toe

Toe

Open

 

Tevens hier weer op te letten voor kortsluitingen !

 

Zoals te zien in de waarheidstabel wordt de logica voor één motor al wat complexer, nog niet gesproken dat er met elektronische componenten wordt gewerkt i.p.v. met schakelaars met elektronische componenten gaan werken, die of positieve of negatieve logica zullen hebben, waarover later meer…

 

Daarom brengen fabrikanten driver IC’s op de markt, die de gehele  logica voor zich nemen, het enige wat de programmeur dan moet ingeven is; - de klok          (Step/Clk)

                             - de richting      (DIR)

                              - Aan/Uit         (Enable)

 

Een IC(Integrated Cirquit) maakt het aansturen van een stappenmotor een stuk eenvoudiger.

Zo’n volledige driver IC heb ik voor één motor gebruikt; die van de X-richting.

De overige twee motoren zijn zelf gestuurd.

 

 

Fase 1

Fase 2

Fase 3

Fase 4

 

6.  De gebruikte motorsturingen (voor mijn ontwerp)

 

Voor de graveermachine waren 3 stappenmotoren nodig (XYZ), dus ook drie motorsturingen.

Ze zijn alle drie gestuurd volgens het principe van de “dubbele H-brug”. Om niet drie keer dezelfde schakeling te hebben, heb ik ze op verschillende manieren ontworpen. Elke manier heeft zijn eigen complexiteit, voor- en nadelen. (zie verder)

 

 

 

6.1.  Motorsturing Langsrinchting (X-as)

 

Voor mijn eerste motorsturing heb ik het niet al te moeilijk gemaakt. Ik heb gezocht naar een geschikte driver IC en een geschikte H-brug IC. Deze twee logische bouwstenen vormen samen een stappenmotordriver.

 

Aan deze stappenmotordriver moeten dus 3 variabelen doorgestuurd worden:

·        CLK (Stap pulsen van de motor)

·        DIR  (Draairichting van de motor)

·        EN   (Aan / Uit van de motor )

 

L297           Stappenmotor Controller

L6203                                          Dmos H-Bridge  (2x nodig)

 

 

Het inwendige schema van de L6203 ziet er als volgt uit (dit zal verder toegelicht worden)

 

Deze IC heeft tevens volgende mogelijkheden:

·        unipolair / bipolair

·        normal stepping

·        wave stepping

 

 

6.1.1.  Het schema

 

Het schema is opgebouwd volgens de regels van de driver(L297) en de H-brug(L6203)

Deze staan uitgewerkt in hun datasheets. (zie bijlagen op CD)

 

Schema (opgebouwd in Multisim)

 

 

 

3D design van de Printplaat  (zonder koelvin)

Achterkant van de Printplaat

 

6.1.2.  De print(PCB)

 

 

 

 

 

6.1.3.  Gebruikte componenten

 

In het schema zijn volgende componenten gebruikt:

 

Component

Waarde

Aantal

 

prijs/stuk

totaal

weerstand

  Ω

2

 

€ 0,60

€ 1,20

weertand

100Ω

2

€ 0,60

€ 1,20

weerstand

3K9

1

€ 0,10

€ 0,10

weertand

4K7

2

€ 0,10

€ 0,20

weerstand

22k

1

€ 0,10

€ 0,10

trimpot

2K

1

€ 0,35

€ 0,35

condensator

3,3nF

1

€ 0,15

€ 0,15

condensator

15nF

4

€ 0,15

€ 0,60

condensator

22nF

2

€ 0,15

€ 0,30

condensator

100nF

3

€ 0,15

€ 0,45

condensator

220nF

2

€ 0,25

€ 0,50

condensator

1000µF

2

€ 1,00

€ 1,00

controller IC

L297

1

€ 6,75

€ 6,75

IC voetje

20 pins

1

€ 0,50

€ 0,50

H-bridge

L6203

2

€ 10,75

€ 21,50

header

3pins

2

€ 2,50

€ 3,00

header

6pins

1

€ 2,50

€ 2,50

kroonsteen

2pins

2

€ 0,65

€ 1,30

kroonsteen

3pins

1

€ 0,75

€ 0,75

moertjes

M3

2

€ 0,05

€ 0,10

boutjes

M3

2

€ 0,05

€ 0,10

isolatieringetjes

M3

2

€ 0,15

€ 0,30

isolatieblaadjes

 

2

 

€ 2,50

printplaatje

EZ

 

 

 

Koelvin

 

1

€ 15,00

€ 15,00

 

 

Sub Totaal =  € 60,45 

 

Printplaatmateriaal wordt op einde gerekend

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.2.  Motorsturing Dwarsrichting (Y-as)

 

Deze sturing is opgebouwd in twee stukken:     H-Brug PCBx   en   Logica PCBx

 

 

6.2.1.  H-brug PCBy

 

Deze sturing (met dubbele H-brug) is ontworpen zoals te zien in onderstaand schema.

Het schema is opgebouwd met discrete componenten. Dit wil zeggen dat niet alles in een behuizing zit, maar elk onderdeeltje één component is. In dit geval mosfet’s.

 

6.2.1.1.      Het schema

 

Schema (opgebouwd in Multisim)

 

6.2.1.2.      De print

3D design van de Printplaat

Achterkant van de Printplaat

 

 

6.2.1.3.      Uitleg Schema

 

Om het schema (de H-brug met mosfets) te kunnen verstaan, beschrijf ik eerst even kort de basis kenmerken van mosfets zonder hierover in detail te gaan. Daarna zal het schema duidelijk worden.

 

De mosfet is een spanningsgestuurde component (in tegenstelling tot de transistor). Door een bepaalde spanning op zijn gate(stuurpoort) aan te leggen, zal er een kortsluiting gevormd worden tussen de Drain en de Source. Er bestaan twee soorten mosfets, namelijk N-channel mosfets en P-chanel mosfets. Beiden zijn in het schema gebruikt.

 

 

6.2.1.3.1.      N-channel MOS

De N-channel mosfet in de figuur hiernaast (IRF540) bezit positieve logica.

 

Dwz.:         Als er een spanning op zijn gate wordt aangelegd, zal er een    kortsluiting ontstaan tussen D en S.

      Als er geen spanning wordt aangelegd op de gate, zal er geen kortsluiting zijn.

 

 

6.2.1.3.2.      P-channel MOS

 

De P-channel mosfet in de figuur hiernaast (IRF9540N) is net het omgekeerde van de N-channel.   Maw. negatieve logica.

 

Dwz.:         Als er een spanning op zijn gate wordt aangelegd, zal er geen

kortsluiting ontstaan tussen D en S.

Als er geen spanning wordt aangelegd op de gate zal er wel een

kortsluiting ontstaan tussen D en S.

 

 

6.2.1.3.3.      Logica met mosfets

 

Als we nu terug onze dubbele H-brug erbij halen, en de schakelaars vervangen door mosfets.

Dan zal de schakellogica veranderd worden door de P-channel mosfet, hiermee dienen we rekening te houden bij het aansturen of we zullen talloze zekeringetjes gaan testen.

 

 

6.2.1.3.4.      Probleem mosfetsturing

 

Met al het voorgaande in gedachte te hebben begon ik vol enthousiasme aan mijn eerste zelf gemaakte H-brug schakeling. Eens de schakeling klaar stond op het breadboard kon ik deze gaan testen. De eerste test was met één enkele H-brug en DC-motortje op 12volt. Als dit motortje door gepaste gatesturing linksom en rechtsom kon draaien, dan zou de eerste H-brug klaar zijn.

Ik kwam echter tot vaststelling dat ik mijn mosfets(gates) niet zomaar kon aansturen vanuit de microcontroller (0 en 5volt). Het was nodig de gates van de mosfets aan te sturen met 12 volt.

Ik moest mijn logische signalen van de microcontroller dus gaan aanpassen (van 5v naar12v) dit door middel van een transistorschakeling voor elke mosfet zodat deze op 12v kon gestuurd worden.

Natuurlijk door de logica door de transistorschakelingetjes weer beïnvloed. (zie verder)

 

 

 

 

6.2.1.3.5.      NPN Transistor als schakelaar

 

Transistorschakeling die de gate van de Mosfets aanstuurt

 

Deze transistorschakeling zal 8 keer uitgevoerd moeten worden, 1 keer per mosfet.

 

Opgelet: Door deze transistor te gebruiken gaat de

   logische aansturing veranderen.

   Dit is negatieve / inverterende logica !

 

Dus als de microcontroller 5volt uitstuurt, dan zal er op de gate van de mosfet 0v komen te staan. Wanneer de µC 0v uitstuurt, dan zal op de gate 12v komen te staan.

µC

binair

Gate

Mosfet

0

12v

1

0v

 

Hiermee moet dus nogmaals rekening mee gehouden worden in de logica. Indien dit niet gerespecteerd wordt, bestaat er de kans op kortsluiting. (H-brug)

 

 

 

 

 

 

 

6.2.2.  Logica PCBy

 

Het is ondertussen duidelijk dat er met al deze factoren rekening moet gehouden worden. Om de logica van deze schakeling juist te laten verlopen heb ik bovenop de printplaat een bijkomend printje voorzien met microcontroller (PIC16F84A) die de logica voor zich neemt.

Dit zal nu eenvoudig aangestuurd kunnen worden met Clk-, Dir-, En-signaal

 

 

 

6.2.2.1.      Schema van het µC bordje

 

Schema (opgebouwd in Multisim)

3D model van het opzetprintje

 

 

 

 

 

6.2.2.2.      Programma voor de µC(PIC16F84A) voor het logica bordje

 

Programma geschreven in C  met    MPLAB   &   BKND Compiler

 

//#include "16f84a.h"

// ***********************************************************************

//configword: internal clock 4Mc, no WDT, BOD enabled...

#pragma config &= 0x0000

#pragma config |= 0x3FF2

// ***********************************************************************

 

long Teller;

long Teller2;

 

void Disable() {

            Teller++;

            if (Teller >= 30000)

              {

              Teller2++;

              if (Teller2 >= 30000)

               {

               Teller = 0;

               Teller2 = 0;

               PORTB.0=0; PORTB.1=0; PORTB.2=0; PORTB.3=0;

               }

              }

}

 

 

void main(void) {

 

OPTION_REG.7=1; //disable pullups on PORTB

TRISA=0B11111111; //all inputs pu

TRISB=0B11110000; //only PORTB.0 & PORTB.1 & PORTB.2 & PORTB.3 is output

 

int stand=1;

PORTB.0=0; PORTB.1=0; PORTB.2=0; PORTB.3=0;

 

while(1) {

 

            // opgelet hier dienen de linker en de rechter kant samen te werken

            // PORTA.0 =>> CLK

            // PORTA.1 =>> DIR

            // PORTA.2 =>> ENable

                       

            if (PORTA.2==1)  // ENable

                        {

                        while(PORTA.0==1); //zolang aanhouden tot flank terug laag wordt

                        if (PORTA.1==0) //DIR

                                   {

                                    stand--;

                                   if (stand == 0) stand = 4;

                                   }

                        else

                                   {

                                   stand++;

                                   if (stand == 5) stand = 1;

                                   }

                        if (stand == 1) { PORTB.0=0; PORTB.1=1; PORTB.2=0; PORTB.3=0; }

                        if (stand == 2) { PORTB.0=0; PORTB.1=0; PORTB.2=0; PORTB.3=1; }

                        if (stand == 3) { PORTB.0=1; PORTB.1=0; PORTB.2=0; PORTB.3=0; }

                        if (stand == 4) { PORTB.0=0; PORTB.1=0; PORTB.2=1; PORTB.3=0; }

                        while(PORTA.0==0) //zolang aanhouden tot flank terug hoog wordt

                                   {

                                   Disable(); //Als de CLK flank niet meer hoog moest worden =>> en het duurt 9999

                                   } //Als ondertussen Enable uitvalt hier blijven staan

 

                        }

               Teller = 0;

               Teller2 = 0;

            }

}

 

 

 

6.2.3.  Gebruikte componenten

 

In het schema zijn volgende componenten gebruikt:

 

Voor  H-brug PCB

 

Component

Waarde

Aantal

 

prijs/stuk

totaal

transistor

BC547

8

 

€ 0,15

€ 1,20

weerstand

1kΩ

8

€ 0,10

€ 0,80

weerstand

5k6 Ω

8

€ 0,10

€ 0,80

diode

1N5406

8

€ 0,25

€ 2,00

P-channel mos

IRF 9540N

4

€ 2,00

€ 8,00

N-channel mos

IRF 540

4

€ 1,80

€ 7,20

header

9 pins

1

€ 2,50

€ 2,50

printkroonsteen

2 pins

1

€ 0,65

€ 0,65

printplaatje

EZ

1

 

 

 

Voor logica PCB

           

Component

Waarde

Aantal

 

prijs/stuk

totaal

weerstand

10kΩ

1

 

€ 0,10

€ 0,10

condensator

22pF

2

€ 0,15

€ 0,30

condensator

100nF

1

€ 0,15

€ 0,15

diode

1N4007

1

€ 0,12

€ 0,12

kristal

4MHz

1

€ 1,00

€ 1,00

IC Voetje

DIP18

1

€ 0,50

€ 0,50

µC

PIC16F841

1

€ 5,95

€ 5,95

header

9 pins

3

 

€ 2,50

printkroonsteen

2 pins

1

€ 0,65

€ 0,65

printplaat

DZ

 

 

 

 

 

 

Sub Totaal =  € 34,42    

 

Printplaatmateriaal wordt op einde gerekend

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.3.  Motorsturing Hoogterichting (Z-as)

 

De 3de en laatste motorsturing is opgebouwd met transistoren (ook in H-brug transformatie).

Hiervoor opteerde ik eerst om de logica rechtstreeks op te nemen in de hoofd-µC (DSC89c450) en van hieruit ineens naar de transistorbasissen te gaan. Zodat hiervoor geen aparte µC met schakellogica nodig is. Dus zonder dat deze Step / Dir / En signalen krijgt.

 

Maar vanaf deze ontwerpfase naar de toekomst gezien, brengt dat enkele problemen met zich mee, daarom de volgende redenering:

   “  Er zouden immers 8signaaldraden naar de µC moeten lopen (één per transistor) dit betekend dat de hoofd-µC hieraan 8pinnen zal moeten inleveren. Wetende dat onze hoofd-µC 32aansluitpinnen heeft. En we er binnenkort nog wel wat gaan nodig hebben…(lichtsluizen, de 3motoren, de multiplexer, handbediende  stuursignalen, eventueel LCD...)

Die 8aansluitpinnen zijn inderdaad te reduceren tot 4aansluitpinnen door de samenwerkende paartjes samen te nemen. Maar; er komen ook nog eens  drie stuursignalen per motor vanuit de PC  3x( Step / Dir / En )

Om de motor te laten draaien met de software moet er toch een Step/Dir/En ingang voorzien zijn. Dus er zal altijd een logica(µC) nodig zijn om deze om te zetten naar gepaste stuursignalen voor de transistoren.

Dan is er ook nog  de optie om deze banen van de PC naar de hoofd-µC te leggen, en dan vandaaruit met minstens 4aansluitdraden terug te vertrekken.  (3+4=7aansluitpinnen).

Kortom  een betere oplossing is  een aparte µC gebruiken om I/0 van  de Hoofd-µC te besparen.  “

 

In dat geval komt er dus terug een PCB’tje met logica op het H-brug PCB.

 

Dus de sturing van de Z-AS is dus weer in twee stukken;   H-Brug PCBz   en   Logica PCBz

 

 

6.3.1.  H-brug PCBz

 

De Sturing (dubbele H-brug) is ontworpen zoals te zien in onderstaand schema.

Deze is opgebouwd met discrete componenten, in dit geval met transistoren.

 

6.3.1.1.      Het Schema

 

Schema (opgebouwd in Multisim)

 

 

6.3.1.2.      De print

 

3D design van de Printplaat   (zonder koelvin)

Achterkant van de Printplaat

 

 

 

 

 

6.3.1.3.      Uitleg Schema

 

Het schema van de H-Brug voor de Z-AS is eigenlijk niet volledig, om dit te vervolledigen is het volgende nodig:

 

1)      TIP127 & TIP110 vervangen door TIP42 & TIP41

Daar de transistoren die ik had liggen (TIP127 & TIP110) niet in het printontwerp programma (Multisim 8.0) aanwezig waren maar wel de pincompatiebele TIP42 & TIP41 heb ik deze genomen, zonder de componenten opnieuw te tekenen. Tijdens het monteren moet daar wel rekening mee worden gehouden!

 

2)      Stuurtransistoren bijzetten.

Dit is een vergetelheid. Na het ontwerp op breadboard, ben ik de stuurtransistoren vergeten op te nemen in de printplaatlayout. De stuurtransistoren zijn noodzakelijk, ze sturen de  basisen aan van de schakeltransistoren. (deze ontbreken dus in het schema).

Zonder de schakeltransistoren aan te sturen met de stuurtransistoren werkt het PCB’tje niet! (5v µC)

Omdat ik het bordje al geëtst, en de componenten gemonteerd had, heb ik geopteerd om hiervoor geen nieuwe print te maken. Ik heb dus de 8 stuurtransistoren en bijbehorende weerstanden op het bordje bijgesoldeerd.

 

Dit moet in het schema opgenomen worden in de plaats van elke 1Kweerstand !

Voorversterking TIP 127

Voorversterking TIP 110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.3.2.        Logica PCBz

 

Om de schakellogica ook hier juist te laten verlopen, is het H-brug PCB weer voorzien van een µC met schakellogica. Dit bordje staat bovenop het H-brug PCB.

Dit is weer met een PIC16F84A die de logica voor zich neemt.

De PIC is dan op zijn beurt weer aan te sturen met  ( Clk / Dir  / En ).

 

6.3.2.1.      Logica van deze print

 

Om niet twee keer hetzelfde Logica PCB’tje te hebben, heb ik voor de Z-driver gekozen om elke transistor apart aan te sturen. (Geen samenwerkende koppeltjes.)

Het gevaar bij het aansturen van elke transistor afzonderlijk is dat er kortsluiting kan ontstaan tijdens het schrijven van verkeerde software.

Tijdens het schrijven moet er rekening gehouden worden met de logica van de transistoren, omdat de schakelaars kunnen geprogrammeerd worden in een kortsluiting!

 

6.3.2.2.      Schema van het µC bordje

 

Schema (opgebouwd in Multisim)

 

6.3.2.3.      Print van het µC bordje

 

3D design van de Printplaat

Achterkant van de Print

 

 

 

6.3.2.4.            Programma voor de µC(PIC16F84A)

 

Programma geschreven in C  met    MPLAB   &   BKND Compiler

 

//#include "16f84a.h"

// **************************************************************************

//configword: internal clock 4Mc, no WDT, BOD enabled...

#pragma config &= 0x0000

#pragma config |= 0x3FF2

// **************************************************************************

 

long Teller;

long Teller2; // werkt niet met int??? (toch niet in µC)

 

void Disable() {

            Teller++;

            if (Teller >= 30000)

              {

              Teller2++;

              if (Teller2 >= 5000)

               {

               Teller = 0;

               Teller2 = 0;

               PORTB.7=1; PORTB.6=1; PORTB.5=0; PORTB.4=0; PORTB.3=1; PORTB.2=1; PORTB.1=0; PORTB.0=0; //Alles af

               }

              }

}

 

 

void main(void){

 

OPTION_REG.7=1; //disable pullups on PORTB inputs

TRISA=0B11111111; //all inputs pu

TRISB=0B00000000; //PORTB.7  tot  PORTB.0   is output

 

int stand=1;

PORTB.7=1; PORTB.6=1; PORTB.5=0; PORTB.4=0; PORTB.3=1; PORTB.2=1; PORTB.1=0; PORTB.0=0;  //Alles af

 

while(1){

            // opgelet hier dienen de linker en de rechter kant samen te werken

            // PORTA.0 =>> CLK

            // PORTA.1 =>> DIR

            // PORTA.2 =>> ENable

           

            if (PORTA.2==1)  // ENable

                        {

                        while(PORTA.0==1); //zolang aanhouden tot flank terug laag wordt

                        if (PORTA.1==0) //DIR

                                   {

                                   stand--;

                                   if (stand == 0) stand = 4;

                                   }

                        else

                                   {

                                   stand++;

                                   if (stand == 5) stand = 1;

                                   }

                     if (stand == 1) { PORTB.7=1; PORTB.6=1; PORTB.5=0; PORTB.4=0; PORTB.3=0; PORTB.2=1; PORTB.1=0;       

                                               PORTB.0=1; }

                     if (stand == 2) { PORTB.7=0; PORTB.6=1; PORTB.5=0; PORTB.4=1; PORTB.3=1; PORTB.2=1; PORTB.1=0;

                                               PORTB.0=0; }

                     if (stand == 3) { PORTB.7=1; PORTB.6=1; PORTB.5=0; PORTB.4=0; PORTB.3=1; PORTB.2=0; PORTB.1=1;

                                               PORTB.0=0; }

                     if (stand == 4) { PORTB.7=1; PORTB.6=0; PORTB.5=1; PORTB.4=0; PORTB.3=1; PORTB.2=1; PORTB.1=0;

                                               PORTB.0=0; }

                        while(PORTA.0==0) //zolang aanhouden tot flank terug hoog wordt

                                   {

                                   Disable(); //Als de CLK flank niet meer hoog moest worden =>> en het duurt 9999

                                   } //Als ondertussen Enable uitvalt hier blijven staan

                                                }

               Teller = 0;

               Teller2 = 0;

            }

}

 

 

 

 

6.3.3.  Gebruikte Componenten

 

In het schema zijn volgende componenten gebruikt voor de Hoogteinrichting:

 

Voor  H-brug PCB

 

Component

Waarde

Aantal

 

prijs/stuk

totaal

weerstand

1k

8

 

€ 0,10

€ 0,80

condensator

470µF

1

€ 0,12

€ 0,12

diode

1N5406

8

€ 0,25

€ 2,00

transistor

TIP110

4

€ 0,50

€ 4,00

transistor

TIP127

4

€ 0,50

€ 4,00

header

9 pins

1

€ 2,50

€ 2,50

printkroonstekker

2pins

3

€ 0,65

€ 1,95

boutjes

M3

8

€ 0,05

€ 0,40

moertjes

M3

8

€ 0,05

€ 0,40

isolatiemica

 

8

 

€ 2,50

koelvin

 

1

€ 15,00

€ 15,00

isolatieringetjes

M3

8

€ 0,15

€ 1,50

printplaat

EZ

 

 

 

 

 

Voor logica PCB

           

Component

Waarde

Aantal

 

prijs/stuk

totaal

weerstand

10k

1

 

€ 0,10

€ 0,10

condensator

100nF

1

€ 0,15

€ 0,15

condensator

22pF

2

€ 0,15

€ 0,30

diode

1N4007

1

€ 0,12

€ 0,12

IC voetje

16pins

1

€ 0,45

€ 0,45

kristal

4MHz

1

€ 1,00

€ 1,00

µC

PIC16F84a

1

€ 5,95

€ 5,95

header

 

1

 

€ 2,50

printkroonsteen

2 pins

1

€ 0,65

€ 0,65

printplaat

DZ

 

 

 

 

 

 

Sub Totaal =  € 49,59    

 

Printplaatmateriaal wordt op einde gerekend

 

 

 

 

 

 

 

 

 

 

 

7.        LCD Scherm

 

 

7.1.  Wat is een LCD

 

Zonder onnodig uitgebreid in detail te gaan, staat LCD voor Liquid Cristal Display.

Het schermpje dat ik gebruik (uit een oude HP-Computer) bevat twee lijnen van 16 karakters waar tekst in ASCII(American Standard Code for Information Interchange) karakters op kan weergegeven worden. (De ASCII tabel is terug te vinden in de bijlage). Ook zit er een backlight verlichting en een contrastregeling op.

(voor meer diepgang in LCD zie “LCD-beamer” Project Engels bij Mvr. Lut Weltens)

 

 

7.2.  Aansturing

Om iets op zo’n LCD schermpje te krijgen, zal het scherm pixel voor pixel moeten aangestuurd worden. Hiervoor is het  ook nodig om de exacte locatie van elke pixel te kennen. Zo kunnen er dan, door in de buurt liggen de pixels samen aan te zetten letters gemaakt worden. (zie figuur.)

 

Omdat dit een omslachtig werkje is, hebben fabrikanten een   “LCD Driver” chip op dit scherm geïmplementeerd.

 

 

 

7.3.  LCD driver

 

Met deze chip gaat het aansturen van zo’n LCD scherm al aanzienlijk eenvoudiger.

Het ASCII teken wordt nu naar de driver gestuurd. De comunicatie met de driver verloopt via een DataBus en een ControleBus. De driver stuurt de pixels aan op voorgedefinieerde wijze. (ASCII-patroon)  

Let wel:   Nu is er enkel nog maar de mogelijkheid om ASCII tekens weer te geven, grafisch zelf figuren gaan tekenen kan niet meer met dit soort LCD Driver!

  

 

7.3.1.  Controlebus

 

De controlesignalen zijn nodig zodat de ‘driver chip’ kan weten wat er juist moet gebeuren met de gegevens die worden aangeboden via zijn databus. Hiervoor zijn 3 controlelijnen voorzien:

1)     RS      Register Select Signal

2)     R/W    Read / Write Signal

3)     E       Enable Signal

 

In onderstaande tabel is te zien wat waarvoor dient;

RS

R/W

Operation

L

L

Instruction Write Operation (MPU writes Instruction code into IR)

L

H

Read Busty flag(DB7) and address counter (DB0 to DB6)

H

L

Data Write operation (MPU writes data into DR)

H

H

Data Read operation (MPU reads data from DR)

 

Zoals te zien in de tabel is er ook de mogelijkheid om data van het scherm uit te lezen. Voor mijn toepassing is dit niet nodig. Enkel Schrijven naar het LCD is hier nodig (R/W = L)

 

Verder is er ook nog het Enable signaal. Dit zal telkens de aangeboden info inklokken.

 

 

7.3.2.  Databus

 

De databus is een parallelle bus. (DB7 tot DB0). Deze bus wordt zowel voor de instructiesignalen als voor de datasignalen gebruikt. (Maar niet voor controlesignalen.)

 

7.3.2.1.      Werkmodi

 

De databus kan in twee werkmodi werken: byte niveau of nibble niveau.

 

7.3.2.1.1.      Byte Niveau

 

Dit is de eenvoudigste manier. Bij deze methode stuur je gewoon het nummer van het ASCII teken decimaal naar de poort door.

Het werken op byte niveau betekent dat er al zeker 8 I/O(Input/Output) poorten in gebruik zullen zijn + controlesignalen. Het is duidelijk dat deze niet meer voorhanden zijn op de µC omdat ze al in gebruik zijn voor de stappenmotoren en er later nog andere dingen moeten aangesloten worden.

 

7.3.2.1.2.      Nibble niveau

 

Deze manier is iets ingewikkelder. Hier moet het ASCII karakter in twee gesplitst worden, zodat we twee keer 4 bits hebben. (Dus samen weer 8 bits)

 

 

 

 

7.3.2.2.      Instructiesignalen

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


7.3.2.3.      Datasignalen

 

De datasignalen zijn de binaire ASCII tekens.

 

 

 

7.4.  LCD contrast

 

Om de leesbaarheid van het scherm vanuit elke invalshoek mogelijk te maken, kan het contrast ingesteld worden met een lineaire potentiometer

(Regelbare weerstand).

Door aan het staafje van de potmeter te draaien, zal de spanning aan de contrastpin variëren tussen 0 en 5v DC.

 

 

 

 

7.5.  LCD backlight

 

Het scherm bevat ook een achtergrondverlichting, hierdoor is het mogelijk om het scherm in het donker, of bij weinig licht af te lezen. De aansluitingen van de achtergrondverlichting zijn te vergelijken met die van een diode of LED. (Anode / Kathode)

De backlightverlichting heb ik niet voorzien om uit te zetten, en staat permanent aan.

 

 

 

 

 

7.6.  LCD debuggen

 

Eens de routine(software) voor het LCD scherm is geschreven (zie volgende bladzijde) kan het schermpje dankbaar gebruikt worden voor de verdere realisatie van dit eindwerk!

 

Het schermpje gebruiken om te debuggen*.

 

Vroeg of laat is het tijdens het schrijven van een programma noodzakelijk om te controleren wat het programma wel/niet doet. Een programma van de eerste keer zonder fouten neerschrijven is echter een utopie…

(Vb: Wordt een if clausule al of niet uitgevoerd)

 

Dit kan dan door het weergeven van tussentijdse meldingen of resultaten op het LCD scherm.

Zo kan dan gedebugd worden.

 

*Zoeken van (fouten in) een lopend programma. (De Bug(gen) eruit halen)

 

 

7.7.  Stuur programma voor LCD scherm

 

Dit is een deel code uit het hoofdprogramma “Graveerxx.c” dat nodig is voor de sturing van het LCD scherm.

Programma geschreven in C voor µC  met    Notepad   &   SDCC Compiler

 

void Delay(long snelheid) {

  long a;

  for (a=0;a<snelheid;a++);   

}

 

void LCD_Enable() { //inklokken data

  P1_3=1; Delay(2); P1_3=0; Delay(2);

}

 

void Line(int LineNr) {

 Delay(5);

  P1_2=0;

  if (LineNr==1) {

    P1_7=1; P1_6=0; P1_5=0; P1_4=0; LCD_Enable();

    P1_7=0; P1_6=0; P1_5=0; P1_4=0; LCD_Enable();

    Delay(300);

  }

  if (LineNr==2) {

    P1_7=1; P1_6=1; P1_5=0; P1_4=0; LCD_Enable();

    P1_7=0; P1_6=0; P1_5=0; P1_4=0; LCD_Enable();

    Delay(300);

  }

  P1_2=1; //terug in data mode

  Delay(100); Delay(30000); Delay(30000);

}

 

void Entry_Mode() {

  P1_2=0;

  P1_7=0; P1_6=0; P1_5=0; P1_4=0; LCD_Enable();

  P1_7=0; P1_6=1; P1_5=1; P1_4=0; LCD_Enable();

 

}

 

void OnOff_Control() {

  Delay(1000);

  P1_2=0;

  P1_7=0; P1_6=0; P1_5=0; P1_4=0; LCD_Enable();

  P1_7=1; P1_6=1; P1_5=1; P1_4=0; LCD_Enable();

}

 

void Function_Set() {

  P1_2=0;

  P1_7=0; P1_6=0; P1_5=1; P1_4=0; LCD_Enable();

  Delay(10000);

  P1_7=0; P1_6=0; P1_5=1; P1_4=0; LCD_Enable();

  P1_7=1; P1_6=0; P1_5=0; P1_4=0; LCD_Enable();

}

 

void Clear_Display() {

  Delay(100); //achteraf effe kijken of het nog wel gedaan wordt !

  P1_2=0;

  P1_7=0; P1_6=0; P1_5=0; P1_4=0; LCD_Enable();

  P1_7=0; P1_6=0; P1_5=0; P1_4=1; LCD_Enable();

}

 

void Lcd_Print_Char(char ASCII) { //ASCII = binair

  int twee=2;  // om integerdeling te verkrijgen

  LCDbit0 = ASCII % twee;

  LCDbit1 = (ASCII / twee) % twee;

  LCDbit2 = ((ASCII / twee) / twee) % twee;

  LCDbit3 = (((ASCII / twee) / twee) / twee) % twee;

  LCDbit4 = ((((ASCII / twee) / twee) / twee) / twee) % twee;

  LCDbit5 = (((((ASCII / twee) / twee) / twee) / twee) / twee) % twee;

  LCDbit6 = ((((((ASCII / twee) / twee) / twee) / twee) / twee) / twee) % twee;

  LCDbit7 = (((((((ASCII / twee) / twee) / twee) / twee) / twee) / twee) / twee) % twee;

 

 P1_2=1; Delay(50);

 P1_7=LCDbit7; P1_6=LCDbit6; P1_5=LCDbit5; P1_4=LCDbit4; LCD_Enable();

 P1_7=LCDbit3; P1_6=LCDbit2; P1_5=LCDbit1; P1_4=LCDbit0; LCD_Enable();

}

Met   Lcd_Print_Char(’C’) kan dan een karakter naar het scherm geschreven worden, let wel de headerfiles.h , Declarering en de main() zijn hier niet weergegeven.

 

8.        De multiplexer

 

 

 

8.1.  Wat is een multiplexer?

Een multiplexer, of kortweg MUX, is te vergelijken met een ronddraaiende schakelaar die op een rotor zit.

Op die manier kan de schakelaar zijn gewenste stand kiezen. Op de figuur is een MUX afgebeeld die zijn output aan één van de 4 inputs kan doorgeven.

Uiteraard is zo’n MUX uitbreidbaar door meerdere contactpunten op de schijf te monteren.

 

 

 

8.2.  Toepassingsgebied.

 

Multiplexers worden gebruikt om op het aantal aansluitpinnen en draadverbindingen naar de verschillende componenten te beperken. Meestal leggen we één BUS aan waar alle componenten parallel zijn op aangesloten. Elk component kan gegevens op de BUS zetten of van de bus lezen. Dit gebeurt met een multiplexer. Deze zal de gepaste gegevens op de BUS zetten. Met de selectie-ingang (keuzestand van de schakelaar) kan men kiezen tussen de verschillende gegevens. Daarom wordt de selectie-ingang ook wel de adresingang van de schakelaar genoemd.

In de elektronica bestaat deze schakelaar uiteraard niet uit een ronddraaiende schijf, maar uit logische poorten (AND / OR / NOT)

 

 

 

 

8.3.  Waarom een MUX?

 

De µC die ik gebruik (DS89c450) bezit een I/O van 4x8byte, wat net voldoende is mits doordacht om te gaan met de I/O. Daarom heb ik gekozen om de sturing van de stappenmotoren over een gemultiplexte BUS te laten verlopen. Hierdoor bespaar ik op I/O die later nog nodig is.

 

Met de MUX zal een keuze kunnen gemaakt worden tussen de handmatige sturing (jog control vooraan op de machine) en de sturing vanuit de PC.

 

 

 

 

8.4.  Selectingang

 

Voor de selectingang van de MUX heb ik gekozen voor een mechanische schakelaar.

Eerst liep de selectie tussen PC en touchpannel automatisch.Vanaf het moment dat je een toets van de manuele sturing indrukte, nam de controle over.

Achteraf bleek dit niet zo efficiënt, omdat er op een toets kon geduwd worden tijdens het frezen. Hierdoor voert de machine de gekozen beweging uit. Dit kan nefast zijn voor het freesje!

Daarom een tuimelschakelaar, zodat er veilig kan gekozen worden tussen PC en manuele bediening.

 

 

 

8.5.  Schema van de MUX

 

Schema MUX met Logische  AND / OF / NOT  poorten

(Hierboven wordt de AND poort gebruikt als schakelaar)

 

 

 

8.6.  MUX SN74LS157

 

8.6.1.  Bestaande MUX

 

Alhoewel het relatief eenvoudig is om voorgaand schema met logische poorten op te bouwen  heb ik toch gekozen om een bestaande MUX te zoeken die voor mijn toepassing geschikt was. Hierdoor valt de printafmeting kleiner uit en zijn er minder IC’s nodig.

Tevens is er ook minder poortvertraging (maar hier niet echt van toepassing).

SN74LS157

Deze bezit zoals op de tekening te zien 4 x een (2Line to 1Line MUX)

 

We hebben 9 (2Line naar 1Line MUX) nodig, we hebben dus zo’n drie IC’s nodig.

 

Van de 3de IC schieten er dan nog drie ongebruikte lijnen over. Dit is overschot. Ze zijn niet gebruikt maar wel naar buiten gebracht.

 

 

8.6.2.  Inwendig Schema

 

Inwendig Schema SN74LS157  (3x nodig)

 

 

8.6.3.  Het schema

 

Schema (opgebouwd in Multisim)

 

 

8.6.4.  De print

 

3d design van de Printplaat

 

 

 

 

8.6.5.  Gebruikte componenten

 

Component

Waarde

Aantal

 

prijs/stuk

totaal

multiplexer

SN74LS157

3

 

€ 0,62

€ 1,86

IC voetje

16pins

3

€ 0,45

€ 1,35

header

2 pins

1

 

€ 2,50

header

3 pins

12

 

€ 2,50

printkroonstekker

2 pins

1

 

€ 0,65

printplaat

EZ

1

 

 

 

 

 

 

Sub Totaal =  € 6,36

 

Printplaatmateriaal wordt op einde gerekend

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9.        Bedieningspaneel

 

9.1.  Manuele bedieningsprint

 

Dit printje bevat 8 tact-schakelaars die via pull-up weerstanden verbonden zijn met de µC (DS89c540). Hiermee kan handmatig, zonder tussenkomst van de software, naar een gewenste positie gegaan worden. Eventueel kan dan vanuit die positie een fictief nulpunt ingesteld worden.

 

9.1.1.  Het schema

 

Schema (opgebouwd in Multisim)

 

 

 

9.1.2.  De print (PCB)

3D design van de Printplaat

Achterkant van de Printplaat

 

 

 

 

9.1.3.  Gebruikte componenten

 

Component

Waarde

Aantal

 

print/stuk

totaal

weerstand

10k

7

 

€ 0,10

€, 0,70

tact schakelaar

2 pins

7

€ 0,25

€ 1,75

printplaat

EZ

1

 

 

 

Sub totaal =  € 2,45      Printplaatmateriaal wordt op einde gerekend

 

9.2.  One-touch print

 

Met dit printje, kan de boorkop(dremel) met één druktoets aan en uit gezet worden; met de eerste druk aanzetten, met de tweede druk terug uit zetten. Dit wil zeggen dat er moet bijgehouden worden in welke toestand de drukschakelaar zich bevindt (aan of uit). Tevens kan ook de PC de bediening overnemen. De PC sturing heeft voorrang op de manuele bediening omdat de frees niet zou kunnen stilgezet worden tijdens het graveren.

De schakeling is in tweevoud opgebouwd, zodat ook een optionele stofzuiger bediend kan worden. 

 

 

 

 

9.2.1.  Opbouw

 

De schakeling is opgebouwd rond een D-flipflop. Deze fungeert als geheugenelement om de toestand van de schakelaar bij te houden.

De Not-poort zal vermijden dat tijdens het aanzetten van de voedingspanning het relais aantrekt en de boorkop/stofzuiger opspringt.

De of-poort geeft de PC de mogelijkheid om de controle over te nemen.

 

Verder is het printje voorzien van een groene en een blauwe LED; groen voor aan, rood voor uit.   De vermogensturing (230v AC) gebeurt door het relais).

 

 

 

 

9.2.2.  Werking flipflop

 

Een flipflop is ‘het’ basisgeheugen element dat één bit kan onthouden. In het geheugen van een computer zitten er miljoenen. Zo kan men geheugens bekomen tot verscheidene Mbytes.

 

 

 

9.2.2.1.      Mechanische analogie

 

Met een mechanische analogie is hieronder de werking van ‘het’ prilste geheugenelement weegegeven. Als we een balletje in het buisje laten vallen, zal de “flipflop” een logische toestand aannemen, in de elektronica is deze hoge en lage toestand een 0 of 1.

Laten we daarna nog een balletje vallen, dan zal de andere logische toestand worden aangenomen. Dit is de basis van één geheugenelement. (De bit kan dus 0 of 1 zijn)

 

 

 

 

9.2.2.2.      Elektronische werking

 

Op de volgende bladzijde wordt de elektronische werking toegelicht. Dit van eenvoudig geheugenelement, tot de werking van de D-flipflop die ik hiervoor gebruik.

 

 

9.2.2.2.1.Eenvoudigste geheugenelement.

 

Het eenvoudigste geheugen om één bit te onthouden is een of-poort met teruggekoppelde uitgang zoals te zien in de figuur.

 

Indien S ‘0’ is, dan zijn beide ingangen van de of-poort ‘0’, en de uitgang dus ook ‘0’.

 

Indien S ‘1’ wordt, dan zal de uitgang ook ‘1’ worden, met als gevolg dat ingang twee ook ‘1’ wordt. Hierdoor blijft de uitgang continu ‘1’.

 

Het is duidelijk dat dit element niet meer van logische toestand kan veranderen. Het zal voor eeuwig  ‘1’ blijven, tenzij de voedingspanning wordt uitgezet. Dit is niet de bedoeling…

 

 

9.2.2.2.2.      Beter geheugenelement.

Het probleem kan opgelost worden door de terugkoppeling van de of-poort weg te nemen. Dan zal de ‘1’ aan de ingang ook wegvallen. Dit kan door een en-poort te implementeren, zodat het geheugenelement gereset kan worden.

 

R

S

Q

0

0

0

0

1

 

1

0

Q

1

1

1

 

Tijdsdiagram:

           

Opm.:  De toestand (R=1 en S=0 ) mag nooit gebruikt worden.

Bij deze toestand zal de uitgang 0 worden, maar als we van de toestand (R=1 en S=0 ) naar toestand (R=1 en S=0 ) zouden gaan, dan ontstaat er oscillatie !

 

 

Het tijdsdiagram zou iets logischer worden als de R(Reset) niet continu hoog moet gehouden worden.

Dit kan door het implementeren van een NOT poort.

 

Nu kan:      - met één korte puls geset worden (Set)

- met één korte puls gereset worden (Reset)

R

S

Q

0

0

Q

0

1

1

1

0

0

1

1

 

 

      Tijdsdiagram:

                 

 

Opm.:  De toestand (R=1 en S=1 ) mag nooit gebruikt worden.

Bij deze toestand zal de uitgang 0 worden, maar als we van de toestand (R=1 en S=1 ) naar toestand (R=0 en S=0 ) zouden gaan, dan ontstaat er oscillatie !

 

Om het aantal poorten te besparen, kan men via de wetten van DeMorgan komen tot een vereenvoudiging. (voor details zie bijlagen afgeleide poorten)

 

       is net hetzelfde als:     

 

 

De werking is uiteraard nog steeds dezelfde. (We noemen het een RS-Latch)

 

9.2.2.2.3.      RS-latch

 

 

 

 

9.2.2.2.4.      RS-latch met enable ingang

 

Als we de mogelijkheid willen om de S en R signalen te Enabelen of Disabelen, moeten we voor de RS-latch een en-poort als schakelaar implementeren.

 

 

 

9.2.2.2.5.      D-latch

 

Nu zijn we bijna aan de werking van de eigenlijke D-flipflop

Uiteindelijk is het de bedoeling om data te gaan opslaan. Hiervoor vervangen we de Set en Reset ingang door een Data (D) ingang. Nu kan er data aangeboden worden. (Vanaf hier is ook de verboden toestand verdwenen)

 

 

 

9.2.2.3.      D-flipflop

 

Het verschil tussen een flipflop en een latch is dat de flipflop zijn data enkel inklokt op de stijgende flank van een kloksignaal.

Bij een stijgende klokflank zal de uitgang gelijk worden aan de ingang. Zolang er geen stijgende klokflank optreedt, zal de flipflop de data niet inklokken.

Het enige wat er dus aan de D-latch moet toegevoegd worden is een pulsmaker (flank naar puls omzetter).

 

 

Als we deze twee samenvoegen krijgen we:

 

 

 

9.2.2.4.Dual D-Flipflop CD4013BC

 

In plaats van de bovenstaande D-flipflop schakeling te gaan maken met verschillende logische poorten, is er de kant en klare D-flipflop. In een 14pins IC’tje.

 

                                   

 

 

9.2.3.  Principeschema

Het principeschema van de one-touch-schakeling met de   D-FlipFlop is hieronder weergegeven, dit werkt volgens het hierboven beschreven principe. Zoals te zien is de ‘inverterende uitgang’ hier teruggekoppeld naar de ingang. Op elke klokflank zal er dus aan de dataingang de ’inverterende uitgang’ aangeboden worden, en de uitgang  elke klokpuls veranderen van bittoestand.

 

1 wordt na Clk Puls 0

0 wordt na Clk Puls 1

 

Als we dit nu handmatig willen maken, dan moeten we de pulstrein vervangen door een schakelaar, die een stijgende klokflank genereert bij het indrukken.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Telkens nu op de drukknop gedrukt wordt, krijgen we een stijgende klokflank binnen.

 

Na het bouwen van deze schakeling verkreeg ik geen stabiel uitgangssignaal.

De rede van onstabiliteit is bij de schakelaar te zoeken.

 

Een schakelaar schakelt immers niet ideaal. Dit wil zeggen dat de contactpunten van een schakelaar verschillende keren ‘contact maken en weer niet’ tegen een gigantisch hoge snelheid alvorens een stabiele toestand bereikt word. Dit noemt ‘dender’. (Zie volgende blz.)

 

 

9.2.3.1.      Dender

 

Definitie van  Maxim Dallas-Semiconductors: http://www.maxim-ic.com

Electrical contacts in mechanical pushbutton switches often make and break contact several times when the button is first pushed. A debouncing circuit removes the resulting ripple signal, and provides a clean transition at its output.

 

After connecting a standard switch to a digital counting circuit, you can observe several counts on opening and several counts on closing. This erratic action can wreak havoc on data, because the exact number of counts does not necessarily repeat in the long term. Switch bounce is not consistent from unit to unit,lot to lot, or even over the life of an individual switch. Membrane switches and some other types don't appear to bounce when new, but all mechanical switches bounce sometimes. Nothing can ensure that another switch of the same type will act the same way, or that a particular switch will remain bounce-free as it ages.

 

Bij de meeste toepassingen is dit effect niet zo erg, en verwaarloosbaar. Maar zoals hierboven in het citaat vermeld, is het voor tellers en dergelijke wel van belang.

Bij de stappenmotorschakelingen is hier ook rekening mee gehouden, dit bij het schrijven van de software in de PIC’s. Moest er geen rekening mee gehouden zijn, dan zouden er bij één stappuls, meerdere stapjes gedaan worden. In de PIC is dit probleem softwarematig opgelost met een vertragingstijd van +/- 10msec, zodat er tijd genoeg is om te ontdenderen.

 

In het geval met de flipflop is het probleem hardwarematig opgelost door de weerstanden en de condensators.

 

Tijdens het schrijven van deze scriptie ontdekte ik dat voor dit probleem al kantenklare IC’s op de markt zijn (MAX6816, MAX6817, and MAX6818) Switch Debouncers.

 

9.2.4.  Het schema

Schema (opgebouwd in Multisim)

 

9.2.5.  De Print

3D design van de Printplaat

Achterkant van de Printplaat

 

 

Opm.; De twee tact-schakelaars die boven elkaar staan hebben dezelfde functie. Twee druktoetsen met dezelfde functie op één print is dus absurd. De tweede is in het bedieningspaneel opgenomen. (De andere schakelaar op het printje hoeft zelfs niet)

Opm²;  In de figuur is de bovenste LED rood, deze moet groen zijn  (andere spanning).

Opm³;  De LED’s staan niet op het PCB’tje maar zijn met verbindingsdraadjes naar het  bedieningspaneel geleid.

 

 

 

 

9.2.6.  Gebruikte Componenten

 

Component

Waarde

Aantal

 

prijs/stuk

totaal