Stap 2: Het maken van de controller
Regelmatige CNC controller is meestal gewoon een eindversterker. Het is daadwerkelijk gecontroleerd door PC (via LPT-poort). Zoals u zien kunt, is deze controller veel complexer. Het is omdat de PC gewoon verzendt opdrachten, die worden uitgevoerd door de AVR.
Randapparatuur worden beheerd door ATmega16. Het controleert stappenmotoren (met ULN2803 en L293D) en elektromagneet (met IRLML2502). Ook controleert beperkende schakelaars (JP4) en stuurt gegevens naar de LCD.
Ik gebruikte om te communiceren met de PC, FT232RL chip (USB-UART-converter). Ik gebruik mijn eigen mededeling "protocol" te gemakkelijk verzenden zowel opdrachten en onbewerkte gegevens. Die twee TCMT1109 optokoppelaars worden gebruikt om elektrisch isoleren van PC van de controller (omdat ik per ongeluk gebrand ATmega eenmaal ^^). USB-UART-converter moet worden geherprogrammeerd met FT Prog met behulp van XML-bestand die hieronder zijn toegevoegd. Zonder daarmee LEDs zal niet geven wat ze zou moeten. U kunt het doen wanneer alle FT232 delen worden gesoldeerd.
Er zijn ook 4 switches op de PCB. Een is voor reseting de processor (het was nuttig tijdens het testen), maar de rest was gemonteerd voor toekomstig gebruik om te communiceren met de gebruiker. Voor nu het midden schakelen wordt ("OK") gebruikt voor het accepteren van de eerste opdracht (ik schrijf meer over het later).
Het maken van de PCB
Nadat u de PCB etch, kunt u het trommeltje (bijvoorbeeld met regelmatige soldeer). Ik deed het met de Lichtenberg legering - awesomeness niveau > 9000 :D. Ik stel voor dat je om te solderen in volgorde van de foto's. Hier is de lijst:
- ICs:
- ATmega16
- FT232RL
- L293DD
- ULN2803
- TCMT1109 x2
- 7805
- 47
- 100 x3
- 330
- 1k x2
- 2k 4 x2
- 4k 7 x3
- 10k
- 22p x2
- 100n x4
- 330n
- 2u2
- 4u7
- 100U
- IRLML2502
- BC857 x2
- LL4148
- RODE LED
- LED groen x2
- 1 x 2 x4
- 1 x 3
- 1 x 5
- 1 x 6 x2
- 2 x 4
- trui x2
- 5 k potentiometer
- 16MHz kristal
- pulsdrukker x4
- USB-mini B connector
- AK500/3 connector
- 2-kanaals schakelaar
- 16 x 2 LCD-scherm
De laatste foto presenteert mijn fout terwijl het ontwerpen van de controller. Ik vergat de pullup resistors voor optokoppelaars uitgangen. Dat was uiterst minderen transmissiesnelheid, dus ik moest soldeer 2 extra weerstanden. Maar maak je geen zorgen, dat werd bevestigd en de PCB in rar is voltooid.
De AVR te programmeren
Het bestand als bijlage hieronder bevat PCB project in Eagle, software geschreven in C, gecompileerde hex bestand en XML-bestand voor FT232RL.
Zoals u zien kunt, zijn er 6 extra pads in de PCB. U zijn in staat om de AVR met hen program - net soldeer wat draden (ze zijn beschreven in Eagle bestand, dus zorg ervoor dat u de juiste lijnen. Voordat u de chip programmeren, stelt u de fusebits op:
- laag: 0xEE
- hoog: 0x99
Ze zijn gewoon de standaardwaarden met gewijzigde CKSEL bits naar 16MHz externe crystal.
Één of andere info over broncode
Het is niet zo makkelijk om al deze spullen door slechts één AVR. Het moeilijkste deel is het genereren van XY verkeer signalen toen zowel de X als de Y-as in beweging waren. 16MHz kristal was bijna te traag, maar uiteindelijk werkt het heel goed.
Het tweede harde deel was communicatie met PC. Ik moest schrijven van mijn eigen communicatieprotocol via UART. Het is vergelijkbaar met AT-opdrachten, maar veel minder geheugen vereist en het is sneller, omdat de opdracht codes en de argumenten enkele bytes zijn (in plaats van tekenreeksen, zoals in AT).
De broncode werd gecompileerd met avr-gcc. Het is goed opgemerkt, ik veronderstel, maar ik weet het is nog steeds makkelijk om te verdwalen. Er zijn een aantal extra functies die vrijwel niet gebruikt - bijvoorbeeld tekening rechthoek, boog of tekst. Ik schreef het net te krijgen sommige vaardigheden;). Hoe dan ook, u nog steeds zal zitten kundig voor deze opdrachten door "bevel-lijn venster" uitvoeren in de PC software om de effecten te zien.