From 4d9c20cbd324d6c7d9ae389b53755ba94a8a766e Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 29 Jul 2019 11:38:27 +0200 Subject: [PATCH] TB6600 + moteur ok library et schema --- Doc Du projet/liste des taches a faire.md | 121 ------ Doc Du projet/note diverse.md | 205 --------- .../PdfOfficielCharly/espDoitPinout.jpeg | Bin 52834 -> 0 bytes SchemaKiCad/CRA4_GRBL_ESP32-cache.lib | 66 +++ SchemaKiCad/CRA4_GRBL_ESP32.bak | 70 ++++ SchemaKiCad/CRA4_GRBL_ESP32.bck | 3 + SchemaKiCad/CRA4_GRBL_ESP32.dcm | 3 + SchemaKiCad/CRA4_GRBL_ESP32.kicad_pcb | 1 + SchemaKiCad/CRA4_GRBL_ESP32.lib | 32 ++ SchemaKiCad/CRA4_GRBL_ESP32.pro | 62 +++ SchemaKiCad/CRA4_GRBL_ESP32.sch | 100 +++++ SchemaKiCad/Motor.dcm | 135 ++++++ SchemaKiCad/Motor.lib | 395 ++++++++++++++++++ 13 files changed, 867 insertions(+), 326 deletions(-) delete mode 100644 Doc Du projet/liste des taches a faire.md delete mode 100644 Doc Du projet/note diverse.md delete mode 100644 Ressource/PdfOfficielCharly/espDoitPinout.jpeg create mode 100644 SchemaKiCad/CRA4_GRBL_ESP32-cache.lib create mode 100644 SchemaKiCad/CRA4_GRBL_ESP32.bak create mode 100644 SchemaKiCad/CRA4_GRBL_ESP32.bck create mode 100644 SchemaKiCad/CRA4_GRBL_ESP32.dcm create mode 100644 SchemaKiCad/CRA4_GRBL_ESP32.kicad_pcb create mode 100644 SchemaKiCad/CRA4_GRBL_ESP32.lib create mode 100644 SchemaKiCad/CRA4_GRBL_ESP32.pro create mode 100644 SchemaKiCad/CRA4_GRBL_ESP32.sch create mode 100644 SchemaKiCad/Motor.dcm create mode 100644 SchemaKiCad/Motor.lib diff --git a/Doc Du projet/liste des taches a faire.md b/Doc Du projet/liste des taches a faire.md deleted file mode 100644 index 4bb2be9..0000000 --- a/Doc Du projet/liste des taches a faire.md +++ /dev/null @@ -1,121 +0,0 @@ -# liste des taches a faire - -## taches pré-travail - -- [ ] Verifier la vitesse max de grbl sur 3 axes simultané: - - [ ] en ligne droite - - [ ] dans les courbes - -*avec 640 steps/mm.* - -*Faire attention aux acceleration, au courant des moteurs si test réel (useless à l'oscillo), à la vitesse max setup sur grbl, mesurer le temps pour faire une ligne droite et une courbe et vérifier que c'est pareil, tester sur le plotter sans les courroies de mises. (logiquement c'est plus long à cause des accelerations)* - -- [ ] Voir comment fonctionne vérouillage de porte de grbl - -- [x] Mesurer le trou pour l’aspiration 30mm de dimètre - -- [x] mesurer le support d'aspiration - -- [ ] Mesurer et déterminer le type de collet - -- [ ] Dessiner l'aménagement des composants à l'intérrieur de la machine. - -- [ ] Prendre des photos et imaginer la mise en place d'un tablier et des led - -- [ ] Test les balais de volet sur l'axe y - -- [ ] Essayer de retirer la collet et prendre les dimentions pour la comparer à une er16 - -Mardi: - -- [ ] Faire un tableau avec les softs de contrôle et slice avec le niveau de difficulté, les problème rencontrés, testés ou non. Etablir eventuellement un protocol de test pour savoir les trucs indispensable ou non et en faire un tableau (changement d'outils, probing, gestion de gros gcode, 2d 2,5d 3d etc) - -- [ ] Faire une liste du matos à avoir à chaque étape (double face, colle, étain, pince croco etc) - -- [x] Voir si les relais à clément sont normalement fermé ou ouvert coté logique, voir le courant que ça tire, la tension d'alimentation minimum et la tension logique minimum. - -- [x] Mesurer la collet et comparé à une er11 ou trouver son type, voir les collet que le lab a déjà et prendre des photos - -- [x] Cabler l'esp32 sur le eggbot et faire des tests de jog basique - -- [ ] En réglant les micro step et le courant au maximum voir la vitesse et donc fréquence max des pas de l'esp (eventuellement utiliser l'analyseur logique) - -- [ ] Les vitesses en ligne droites et en courbes sont-elle les même ? (rond diamètre 16 carré 12,5) voir l'influance de la résolution de l'arc grbl et des accelerations grbl - -- [ ] Balancer un petit et gros gcode fusion à cncjs et via l'interface web de l'esp32 - -- [ ] Tester le feed hold (pas feed holt mais safety door) capôt ouvert Ligne 283 config.h pour activer les pin. Attention faut des pullup - -- [ ] Test du bouton spindle de l'interface web et voir globalement ce qui lui manque - -- [x] Verifier que je peux inverser la pin spindle enable - -f - -## taches travail - -#### Etape 1: Test du matériel sur table - -Modification et configuration des controleurs moteurs (utilisation de l'alimentation stabilisé et des moteurs eggbot) - -Test de l'interrupteur capot logiciel - -#### Etape 2: Comprehension et documentation de l'ancien électronique de la machine - -Faut-il du pull up ou pull down pour les end stop = normalement fermé ou ouvert ? - -Quel est la tension requise pour le bon fonctionnement du solenoid de verouillage capot et quel est la résistance de se dernier - -Ou prendre le 35v 9-15A pour les contrôleurs moteurs, laisse-t-il l'arrêt d'urgence intacte ? - -Le système de relais de la broche est-il récupérable, quel est sa tension logique - -#### Etape 3: Mise en place du nouvel électronique - -Réalisation de fixation et supports anti vibrations pour les différents composants - -Hack ou mise en place de l'alimentation 35v ainsi que de système d'arrêt d'urgence - -Hack ou mise en place du contrôle de la broche via le relais - -Mise en place et connexion des contrôleurs moteurs sur leurs supports - -Réalisation du pcb de l'esp - -Mise en place du pcb et connexion aux contrôleurs moteurs, broches, end stop - -Installation du connecteur usb et du bouton reset - -#### Etape 4: Réglage et test du nouvel électronique et son workflow - -##### Configuration du firmware - -- [ ] Pas par mm - -- [ ] Vitesse maximum - -- [ ] Taille de la machine - -- [ ] Acceleration - -- [ ] Homing avec End stop (vitesse, distance de retractation...) - -- [ ] G28 - -- [ ] Safety door switch (ou electroniquement la pin enable des drivers et la spindle) - -- [ ] Wifi (ip fixe et mode client sur le réseau du lab) - -- [ ] Soft - Hard limits - -- [ ] Vitesse minium et maximum de la broche (0-1) - -## taches post travail - -Création de deux série de courtes vidéos expliquant via la réallisation d'un mini projet le fonctionnement de la machine avec des outils simple, 2d ou 2,5d et des outils plus complexes, 3d. - -Design et affichage de panneaux informants l'utilisateur lambda des spécificités de la machine (comment allumer la machine, ou trouver la documentation vidéo) - -Réalisation d'un support de fraise et autres outils spécifique à l'utilisation de la cnc. - -Design de quelques fiches expliquant la différence entre les types de fraises. Alier cela avec une grille de demo sur différents types de bois. diff --git a/Doc Du projet/note diverse.md b/Doc Du projet/note diverse.md deleted file mode 100644 index a894eb0..0000000 --- a/Doc Du projet/note diverse.md +++ /dev/null @@ -1,205 +0,0 @@ -# Restauration de la charlyrobot cra4 - -De 17h à 20h De 6h30 à 8h45 - -### Notes - -https://www.meca-line.com/charlyrobot/sav-charlyrobot-charlyrobot-cra2-cra4-2u-4u-outils-fraise-gravure-fraise-cnc-usinage-javelot-pointe-diamante-isel-rack-sav-charlyrobot2013-10-01-12-19-02/depannage-charlyrobot-depannage-mecanumeric-maintenance-mecanumeric-maintenance-charlyrobot-procedures-documentations-exercices-tutorial-machines-charlyrobot-4u-2u-cra2-cra4-tour-4t2014-05-28 - -### La machine : - -- Elle mesure X562 Y705 ou Y770 capot ouvert Z670 ou Z855mm capot ouvert pour un poids de 62Kg - -- Son volume d'usinage est de X300 Y210 Z100mm avec des pas de 640/mm à une resolution de 1/16 ça fait 40 step/mm en full step - -- Entrenement par vis à bille de diamètre 16mm et de pas 5mm - -- Des moteurs 35v 3A continue et 5A peak avec un couple de 90Ncm de référence VRDM 266/50 L8A dont la nouvelle designation est VRDM 266/50L 3G8A. La datasheet donne un couple de 85Ncm et un courant d'également 3A donc ça semble coherent. - -- Une alimentation 38 ou 32,5V de xAmpères - -- Une broche de 600W qui utilise des collets ERxx - -### Les indispensables : - -##### Contrôleurs moteurs ou driver : - -[TB67S109AFTG](https://www.banggood.com/TB67S109AFTG-32-Segments-4A-Two-Phase-5786-Stepper-Motor-Driver-Controller-for-3D-Printer-p-981997.html?rmmds=search&cur_warehouse=CN) 10€ specs --> 32 micro step max, 5v logic, 9-40v power, 5A peak 2,8 ou 3 ou 3,5A continue ATTENTION --> changement de pad et ou pate thermique et capa recommandé pour une utilisation de plus de 10min (10uf et 330uf 50v à augmenter à 100 et 470uf). Ajout d'un ventilo aussi pour plus de 30min (12v 90mm OK) allumage que quand la fraise est en fonction ou tout le temps ? - -[Gecko 250X]([https://www.geckodrive.com/g250x-digital-stepper-drive.html](https://www.geckodrive.com/g250x-digital-stepper-drive.html) 90€ chez rs online specs --> 10 micro step , 3,3v ou 5v logic, 15-50v power, 3,5A ATTENTION --> pas de heatsink fourni, 251X pareil mais avec borniers à vis ? - -##### Electronique de controle : - -###### Arduino Uno grbl : - -protosheild 4€ - -header - -switch header, jumper header - -Cable usb pour l'arduino - -###### Esp 32 : - -Lecteur carte sd logic 3,3v - -###### Smoothieboard V1 : - -###### Smoothieboard V2 : - -##### Connections électrique : - -Securisation des connection en bornier à vis avec un [wire crimper](https://www.banggood.com/1200pcs-800pcs-Connector-Wire-Terminal-Kit-with-Crimper-Pliers-Wire-Stripper-Tool-p-1413598.html?rmmds=search&ID=565475&cur_warehouse=CN) 23€ specs --> 1200 bout rond + la pince - -[Kit](https://www.banggood.com/1000Pcs-Electrical-Wire-Connector-Insulated-Crimp-Terminals-Spade-Assorted-Set-p-1060461.html?rmmds=search&cur_warehouse=CN) d'embouts crimp pour bornier à vis 17€ - -[Kit](https://www.banggood.com/100pcs-Heat-Shrink-Wire-Crimp-Terminals-BUTT-Waterproof-Connector-p-1062524.html?rmmds=search&cur_warehouse=CN) d'embouts crimp pour relier deux cables ensemble 11€ - -Cable épais pour l'alimentation des drivers et de la broche et les led 15€ ? - -Cable fin pour les signaux 5€ ? - -Gain thermo, Etain, sert cable zip tie, scotch et colle... - -ENTRETOISES et VIS - -##### Arrêt d'urgence : - -Si c'est impossible d'utiliser le système de base : - -##### Auto home end stop : - -Installation de nouveaux end spot ? Inductive ou mecanique - -Récupération des actuels ? Pull up Pull down filtrage capa led témoins - -##### Contrôle de la broche : - -Récupération du cicuit de base ? Logic 5v isolé par des optocoupleur ou utilisation de transistor ? - -[Relay](https://www.banggood.com/DD220D25-25A-Single-Phase-Solid-State-Relay-SSR-DC-To-DC-Controller-3-32V-5-220V-p-1343324.html?rmmds=detail-left-hotproducts__1&cur_warehouse=CN) solide state (electronique, non mecanique) pour la broche 5€ specs --> 3-32v logic, 25A en 5-220v AC - -##### Alimentation : - -Récupération du circuit de base ? - -Récupération du transformateur et creation de notre propre circuit avec ponts de diode et capa ? - -Achat d'une nouvelle alimentation ? - -[Deux alimentation 36v 10A](https://www.banggood.com/Meanwell-LRS-350-Switching-Power-Supply-24V-36V-48V-350W30mm-Thickness-Smps-Best-Voltage-Converter-p-1399825.html?rmmds=search&ID=516800&cur_warehouse=CN) 45+45 = 90€ ou [une 36v 20A](https://www.banggood.com/AC-200V-250V-To-DC-36V-20A-720W-Switching-Power-Supply-For-DIY-Electronic-Project-p-1196806.html?rmmds=search&cur_warehouse=CN) 65€ - -[Regulateur](https://www.banggood.com/5A-XL4005-DCDC-Adjustable-Step-Down-Module-Power-Supply-Converter-p-923600.html?rmmds=search&cur_warehouse=CN) step down buck 12v pour l'arduino et les led 3€ specs --> 4-38v input 1,25-32v output 50W - -### L'accessoire : - -##### Eclairage led : - -Allumage dès que la machine est allumé. - -[Bande led](https://www.banggood.com/5M-6072W-DC12V-LED-Strip-Light-3528-300-LEDs-WhiteWarm-WhiteRedBlue-With-DC-female-Connector-p-1034235.html?rmmds=search&ID=229&cur_warehouse=CN) 12v 3€ specs --> 15W soit 1,25A poue 5m ATTENTION --> l'adhésif colle pas bien donc prévoir de l'epoxy, cyano ou autre - -##### Visualisation de la machine : - -Puissance utilisé par la broche en AC - -Puissance utilisé par chacun des drivers en DC - -Temperature des moteurs - -Temperature des drivers - -Le tout affiché sur un écran controlé avec une arduino ? - -##### Aspiration : - -Achat d'un tuyau flexible 35mm de diamètre puis modelisation d'un support pour le maintenir prêt de la fraise. Eventuel deplacement du trou de connection de l'aspirateur puis design d'un embout femelle. - -##### Fraise end mill : - -Collet - -Flat 4 flut end mill - -Flat 3 flut end mill - -Flat 2 flut end mill - -Ball end mill - -V carve end mill x° - -Surfacing end mill - -pcb end mill - -##### Touch prob : - -Récupération du connecteur et cable de base ? - -Touch prob mecanique ou électronique ? - -Touch prob fix ou à mettre sur le materiaux ? - -##### Verouillage du capot : - -Uniquement quand la broche est en fonctionnement. Possibilité de bouger les axes capot ouvert. Utilisation d'un transistor ou mosfet pour controler l'electro aimant ? - -##### Securisation du substrat usiné : - -Achat d'une nouvelle planche à martir wastboard spoilboard - -### Etape avant mise à jour: - -Verifier la vitesse max de grbl sur 3 axes simultané en ligne droite et dans les courbes avec 640steps/mm. Normalement je dois pouvoir monter jusqu'à 45mm/s. TIPS --> Faire attention aux acceleration, au courant des moteurs si test réel (useless à l'oscillo), à la vitesse max setup sur grbl, mesurer le temps pour faire une ligne droite et une courbe et vérifier que c'est pareil, tester sur le plotter sans les courroies de mises. (logiquement c'est plus long à cause des accelerations) - -Essayer de comprendre comment est cablé l'arrêt d'urgence et le controle de la broche pour voir si c'est logic 5v et si ya besoin de transistor ou opto coupleur. Voir si c'est possible d'activer les end-stop à la main - -Determiner le type de collet voir si ya besoin de changer le support à collet et donc mesurer le pas de vis de la broche. Mesurer la taille des collet actuels et des fraises - -Voir si la table est une T slot - -Voir si c'est facile de mettre un tablier - -Mesurer le trou de la tol pour l'aspiration puis mesurer le support de cet aspiration sur la broche en vue de l'utiliser ou dans faire une nouvelle - -Mesurer la place présente dans la machine et commencer à voir l'emplacement et la fixation des différents composants - -Voir comment ce comporte la fonctionnalité de vérouillage de porte de grbl - -Voir la tension et resistance du solenoid lock de port - -### Etape de mise à jour: - -Utiliser une commande grbl pour obtenir le status des endstop avant de faire un auto home de test. Verifier les status en déclancheant les end stop à la main. - -Design des supports de drivers - -Design du support de l'arduino - -Design de l'aspiration et fixation de celle-ci - -Design du tablier et fixation - -Design bandeau led - -Comprendre comment fonction le système d'arrêt d'urgence actuel et le hacker - -Comprendre comment fonction le relay de la fraise et le hacker - -Faire un code arduino qui utilise des capteurs de températures, courant continue et alternatif pour monitor la machine - -Utiliser des caoutchou pour isoler les borniers à vis des drivers. - -Tester les relais de clément - -Tips and tricks grbl : - -M5 = spindle off - -M3 = spindle on - -Spindle gpio 22 sur l'esp32 boolean 0-3.3v - -Setup le G28 (position safe de la machine) diff --git a/Ressource/PdfOfficielCharly/espDoitPinout.jpeg b/Ressource/PdfOfficielCharly/espDoitPinout.jpeg deleted file mode 100644 index b4ec3c98e76ee58fb94dae0e285d9efcc87cf17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52834 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 diff --git a/SchemaKiCad/CRA4_GRBL_ESP32-cache.lib b/SchemaKiCad/CRA4_GRBL_ESP32-cache.lib new file mode 100644 index 0000000..77820e0 --- /dev/null +++ b/SchemaKiCad/CRA4_GRBL_ESP32-cache.lib @@ -0,0 +1,66 @@ +EESchema-LIBRARY Version 2.3 +#encoding utf-8 +# +# Stepper_Motor_bipolar +# +DEF Stepper_Motor_bipolar M 0 0 Y N 1 F N +F0 "M" 150 100 50 H V L CNN +F1 "Stepper_Motor_bipolar" 150 50 50 H V L TNN +F2 "" 10 -10 50 H I C CNN +F3 "" 10 -10 50 H I C CNN +$FPLIST + PinHeader*P2.54mm*Vertical* + TerminalBlock* + Motor* +$ENDFPLIST +DRAW +P 5 0 0 0 -50 -70 -50 80 0 -20 50 80 50 -70 N +A -175 -75 25 -899 899 0 1 0 N -175 -100 -175 -50 +A -175 -25 25 -899 899 0 1 0 N -175 -50 -175 0 +A -175 25 25 -899 899 0 1 0 N -175 0 -175 50 +A -175 75 25 -899 899 0 1 0 N -175 50 -175 100 +A -75 175 25 -1799 -1 0 1 0 N -100 175 -50 175 +A -25 175 25 -1799 -1 0 1 0 N -50 175 0 175 +A 25 175 25 -1799 -1 0 1 0 N 0 175 50 175 +A 75 175 25 -1799 -1 0 1 0 N 50 175 100 175 +C 0 0 128 0 1 10 N +P 2 0 1 0 -200 -100 -175 -100 N +P 2 0 1 0 -200 100 -175 100 N +P 2 0 1 0 -100 200 -100 175 N +P 2 0 1 0 100 200 100 175 N +X ~ 1 -100 300 100 D 50 50 1 1 P +X - 2 100 300 100 D 50 50 1 1 P +X ~ 3 -300 100 100 R 50 50 1 1 P +X ~ 4 -300 -100 100 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# TB6600StyleMotorDriver +# +DEF TB6600StyleMotorDriver U 0 40 Y Y 1 F N +F0 "U" -550 850 60 H V C CNN +F1 "TB6600StyleMotorDriver" -100 -850 60 H V C CNN +F2 "" 0 0 60 H I C CNN +F3 "" 0 0 60 H I C CNN +DRAW +T 900 0 -350 60 0 0 0 Power Normal 0 C C +T 900 -50 400 60 0 0 0 Signal Normal 0 C C +S 400 800 -600 -750 0 1 0 N +P 4 0 1 0 150 700 50 700 50 100 150 100 N +P 4 0 1 0 200 -650 100 -650 100 -50 200 -50 N +X ENA- 1 600 700 200 L 50 50 1 1 I +X ENA+ 2 600 600 200 L 50 50 1 1 I +X DIR- 3 600 450 200 L 50 50 1 1 I +X DIR+ 4 600 350 200 L 50 50 1 1 I +X PUL- 5 600 200 200 L 50 50 1 1 I +X PUL+ 6 600 100 200 L 50 50 1 1 I +X B- 7 600 -50 200 L 50 50 1 1 w +X B+ 8 600 -150 200 L 50 50 1 1 w +X A- 9 600 -300 200 L 50 50 1 1 w +X A+ 10 600 -400 200 L 50 50 1 1 w +X GND 11 600 -550 200 L 50 50 1 1 W +X VCC 12 600 -650 200 L 50 50 1 1 W +ENDDRAW +ENDDEF +# +#End Library diff --git a/SchemaKiCad/CRA4_GRBL_ESP32.bak b/SchemaKiCad/CRA4_GRBL_ESP32.bak new file mode 100644 index 0000000..79c0c10 --- /dev/null +++ b/SchemaKiCad/CRA4_GRBL_ESP32.bak @@ -0,0 +1,70 @@ +EESchema Schematic File Version 2 +LIBS:power +LIBS:device +LIBS:transistors +LIBS:conn +LIBS:linear +LIBS:regul +LIBS:74xx +LIBS:cmos4000 +LIBS:adc-dac +LIBS:memory +LIBS:xilinx +LIBS:microcontrollers +LIBS:dsp +LIBS:microchip +LIBS:analog_switches +LIBS:motorola +LIBS:texas +LIBS:intel +LIBS:audio +LIBS:interface +LIBS:digital-audio +LIBS:philips +LIBS:display +LIBS:cypress +LIBS:siliconi +LIBS:opto +LIBS:atmel +LIBS:contrib +LIBS:valves +LIBS:CRA4_GRBL_ESP32 +LIBS:Motor +LIBS:CRA4_GRBL_ESP32-cache +EELAYER 25 0 +EELAYER END +$Descr A4 11693 8268 +encoding utf-8 +Sheet 1 1 +Title "" +Date "" +Rev "" +Comp "" +Comment1 "" +Comment2 "" +Comment3 "" +Comment4 "" +$EndDescr +$Comp +L TB6600StyleMotorDriver U? +U 1 1 5D3EB8AD +P 4150 3050 +F 0 "U?" H 3600 3900 60 0000 C CNN +F 1 "TB6600StyleMotorDriver" H 4050 2200 60 0000 C CNN +F 2 "" H 4150 3050 60 0001 C CNN +F 3 "" H 4150 3050 60 0001 C CNN + 1 4150 3050 + 0 -1 -1 0 +$EndComp +$Comp +L Stepper_Motor_bipolar M? +U 1 1 5D3EBA3A +P 3250 2000 +F 0 "M?" H 3400 2100 50 0000 L CNN +F 1 "Stepper_Motor_bipolar" H 3400 2050 50 0000 L TNN +F 2 "" H 3260 1990 50 0001 C CNN +F 3 "" H 3260 1990 50 0001 C CNN + 1 3250 2000 + 1 0 0 -1 +$EndComp +$EndSCHEMATC diff --git a/SchemaKiCad/CRA4_GRBL_ESP32.bck b/SchemaKiCad/CRA4_GRBL_ESP32.bck new file mode 100644 index 0000000..5f3ed79 --- /dev/null +++ b/SchemaKiCad/CRA4_GRBL_ESP32.bck @@ -0,0 +1,3 @@ +EESchema-DOCLIB Version 2.0 +# +#End Doc Library diff --git a/SchemaKiCad/CRA4_GRBL_ESP32.dcm b/SchemaKiCad/CRA4_GRBL_ESP32.dcm new file mode 100644 index 0000000..5f3ed79 --- /dev/null +++ b/SchemaKiCad/CRA4_GRBL_ESP32.dcm @@ -0,0 +1,3 @@ +EESchema-DOCLIB Version 2.0 +# +#End Doc Library diff --git a/SchemaKiCad/CRA4_GRBL_ESP32.kicad_pcb b/SchemaKiCad/CRA4_GRBL_ESP32.kicad_pcb new file mode 100644 index 0000000..02c8ecb --- /dev/null +++ b/SchemaKiCad/CRA4_GRBL_ESP32.kicad_pcb @@ -0,0 +1 @@ +(kicad_pcb (version 4) (host kicad "dummy file") ) diff --git a/SchemaKiCad/CRA4_GRBL_ESP32.lib b/SchemaKiCad/CRA4_GRBL_ESP32.lib new file mode 100644 index 0000000..7a292c0 --- /dev/null +++ b/SchemaKiCad/CRA4_GRBL_ESP32.lib @@ -0,0 +1,32 @@ +EESchema-LIBRARY Version 2.3 +#encoding utf-8 +# +# TB6600StyleMotorDriver +# +DEF TB6600StyleMotorDriver U 0 40 Y Y 1 F N +F0 "U" -550 850 60 H V C CNN +F1 "TB6600StyleMotorDriver" -100 -850 60 H V C CNN +F2 "" 0 0 60 H I C CNN +F3 "" 0 0 60 H I C CNN +DRAW +T 900 0 -350 60 0 0 0 Power Normal 0 C C +T 900 -50 400 60 0 0 0 Signal Normal 0 C C +S 400 800 -600 -750 0 1 0 N +P 4 0 1 0 150 700 50 700 50 100 150 100 N +P 4 0 1 0 200 -650 100 -650 100 -50 200 -50 N +X ENA- 1 600 700 200 L 50 50 1 1 I +X ENA+ 2 600 600 200 L 50 50 1 1 I +X DIR- 3 600 450 200 L 50 50 1 1 I +X DIR+ 4 600 350 200 L 50 50 1 1 I +X PUL- 5 600 200 200 L 50 50 1 1 I +X PUL+ 6 600 100 200 L 50 50 1 1 I +X B- 7 600 -50 200 L 50 50 1 1 w +X B+ 8 600 -150 200 L 50 50 1 1 w +X A- 9 600 -300 200 L 50 50 1 1 w +X A+ 10 600 -400 200 L 50 50 1 1 w +X GND 11 600 -550 200 L 50 50 1 1 W +X VCC 12 600 -650 200 L 50 50 1 1 W +ENDDRAW +ENDDEF +# +#End Library diff --git a/SchemaKiCad/CRA4_GRBL_ESP32.pro b/SchemaKiCad/CRA4_GRBL_ESP32.pro new file mode 100644 index 0000000..376b289 --- /dev/null +++ b/SchemaKiCad/CRA4_GRBL_ESP32.pro @@ -0,0 +1,62 @@ +update=Mon 29 Jul 2019 11:19:32 AM CEST +version=1 +last_client=kicad +[pcbnew] +version=1 +LastNetListRead= +UseCmpFile=1 +PadDrill=0.600000000000 +PadDrillOvalY=0.600000000000 +PadSizeH=1.500000000000 +PadSizeV=1.500000000000 +PcbTextSizeV=1.500000000000 +PcbTextSizeH=1.500000000000 +PcbTextThickness=0.300000000000 +ModuleTextSizeV=1.000000000000 +ModuleTextSizeH=1.000000000000 +ModuleTextSizeThickness=0.150000000000 +SolderMaskClearance=0.000000000000 +SolderMaskMinWidth=0.000000000000 +DrawSegmentWidth=0.200000000000 +BoardOutlineThickness=0.100000000000 +ModuleOutlineThickness=0.150000000000 +[cvpcb] +version=1 +NetIExt=net +[general] +version=1 +[eeschema] +version=1 +LibDir= +[eeschema/libraries] +LibName1=power +LibName2=device +LibName3=transistors +LibName4=conn +LibName5=linear +LibName6=regul +LibName7=74xx +LibName8=cmos4000 +LibName9=adc-dac +LibName10=memory +LibName11=xilinx +LibName12=microcontrollers +LibName13=dsp +LibName14=microchip +LibName15=analog_switches +LibName16=motorola +LibName17=texas +LibName18=intel +LibName19=audio +LibName20=interface +LibName21=digital-audio +LibName22=philips +LibName23=display +LibName24=cypress +LibName25=siliconi +LibName26=opto +LibName27=atmel +LibName28=contrib +LibName29=valves +LibName30=CRA4_GRBL_ESP32 +LibName31=Motor diff --git a/SchemaKiCad/CRA4_GRBL_ESP32.sch b/SchemaKiCad/CRA4_GRBL_ESP32.sch new file mode 100644 index 0000000..71e4b77 --- /dev/null +++ b/SchemaKiCad/CRA4_GRBL_ESP32.sch @@ -0,0 +1,100 @@ +EESchema Schematic File Version 2 +LIBS:power +LIBS:device +LIBS:transistors +LIBS:conn +LIBS:linear +LIBS:regul +LIBS:74xx +LIBS:cmos4000 +LIBS:adc-dac +LIBS:memory +LIBS:xilinx +LIBS:microcontrollers +LIBS:dsp +LIBS:microchip +LIBS:analog_switches +LIBS:motorola +LIBS:texas +LIBS:intel +LIBS:audio +LIBS:interface +LIBS:digital-audio +LIBS:philips +LIBS:display +LIBS:cypress +LIBS:siliconi +LIBS:opto +LIBS:atmel +LIBS:contrib +LIBS:valves +LIBS:CRA4_GRBL_ESP32 +LIBS:Motor +LIBS:CRA4_GRBL_ESP32-cache +EELAYER 25 0 +EELAYER END +$Descr A4 11693 8268 +encoding utf-8 +Sheet 1 1 +Title "" +Date "" +Rev "" +Comp "" +Comment1 "" +Comment2 "" +Comment3 "" +Comment4 "" +$EndDescr +$Comp +L TB6600StyleMotorDriver U? +U 1 1 5D3EB8AD +P 4100 3300 +F 0 "U?" H 3550 4150 60 0000 C CNN +F 1 "TB6600StyleMotorDriver" H 4000 2450 60 0000 C CNN +F 2 "" H 4100 3300 60 0001 C CNN +F 3 "" H 4100 3300 60 0001 C CNN + 1 4100 3300 + 0 1 1 0 +$EndComp +$Comp +L Stepper_Motor_bipolar M1 +U 1 1 5D3EBA3A +P 3700 4500 +F 0 "M1" H 3850 4600 50 0000 L CNN +F 1 "Stepper_Motor_bipolar" H 3850 4550 50 0000 L TNN +F 2 "" H 3710 4490 50 0001 C CNN +F 3 "" H 3710 4490 50 0001 C CNN + 1 3700 4500 + -1 0 0 -1 +$EndComp +Wire Wire Line + 3800 3900 3800 4200 +Wire Wire Line + 4050 4600 4000 4600 +Wire Wire Line + 4050 3900 4050 4600 +Wire Wire Line + 4800 4000 4800 3900 +Wire Wire Line + 3550 4000 4800 4000 +Wire Wire Line + 3550 4000 3550 3900 +Wire Wire Line + 4550 3900 4550 4000 +Connection ~ 4550 4000 +Wire Wire Line + 4300 3900 4300 4000 +Connection ~ 4300 4000 +Wire Wire Line + 3600 4150 3700 4150 +Wire Wire Line + 3700 4150 3700 3900 +Wire Wire Line + 3600 4150 3600 4200 +Wire Wire Line + 3950 3900 3950 4350 +Wire Wire Line + 3950 4350 4000 4350 +Wire Wire Line + 4000 4350 4000 4400 +$EndSCHEMATC diff --git a/SchemaKiCad/Motor.dcm b/SchemaKiCad/Motor.dcm new file mode 100644 index 0000000..64f254b --- /dev/null +++ b/SchemaKiCad/Motor.dcm @@ -0,0 +1,135 @@ +EESchema-DOCLIB Version 2.0 +# +$CMP Fan +D Fan +K Fan Motor +F ~ +$ENDCMP +# +$CMP Fan_3pin +D Fan, tacho output, 3-pin connector +K Fan Motor tacho +F http://www.hardwarecanucks.com/forum/attachments/new-builds/16287d1330775095-help-chassis-power-fan-connectors-motherboard-asus_p8z68.jpg +$ENDCMP +# +$CMP Fan_4pin +D Fan, tacho output, PWM input, 4-pin connector +K Fan Motor tacho PWM +F http://www.formfactors.org/developer%5Cspecs%5Crev1_2_public.pdf +$ENDCMP +# +$CMP Fan_ALT +D Fan without PWM or tach, alternative symbol +K Fan Motor +F ~ +$ENDCMP +# +$CMP Fan_CPU_4pin +D CPU Fan, tacho output, PWM input, 4-pin connector +K Fan Motor tacho PWM +F http://www.formfactors.org/developer%5Cspecs%5Crev1_2_public.pdf +$ENDCMP +# +$CMP Fan_IEC60617 +D Fan (according to IEC-60617) +K Fan Motor IEC-60617 +F ~ +$ENDCMP +# +$CMP Fan_PC_Chassis +D PC chassis fan, tacho output, 3-pin connector +K Fan Motor tacho +F http://www.hardwarecanucks.com/forum/attachments/new-builds/16287d1330775095-help-chassis-power-fan-connectors-motherboard-asus_p8z68.jpg +$ENDCMP +# +$CMP Fan_Tacho +D Fan, tacho output, 3-pin connector +K Fan Motor tacho +F http://www.hardwarecanucks.com/forum/attachments/new-builds/16287d1330775095-help-chassis-power-fan-connectors-motherboard-asus_p8z68.jpg +$ENDCMP +# +$CMP Fan_Tacho_PWM +D Fan, tacho output, PWM input, 4-pin connector +K Fan Motor tacho PWM +F http://www.formfactors.org/developer%5Cspecs%5Crev1_2_public.pdf +$ENDCMP +# +$CMP Motor_AC +D AC Motor +K AC Motor +F ~ +$ENDCMP +# +$CMP Motor_DC +D DC Motor +K DC Motor +F ~ +$ENDCMP +# +$CMP Motor_DC_ALT +D DC Motor, alternative symbol +K DC Motor +F ~ +$ENDCMP +# +$CMP Motor_Servo +D Servo Motor (Futaba, HiTec, JR connector) +K Servo Motor +F http://forums.parallax.com/uploads/attachments/46831/74481.png +$ENDCMP +# +$CMP Motor_Servo_AirTronics +D Servo Motor (AirTronics connector) +K Servo Motor +F http://forums.parallax.com/uploads/attachments/46831/74481.png +$ENDCMP +# +$CMP Motor_Servo_Futaba_J +D Servo Motor (Futuba J-connector) +K Servo Motor +F http://forums.parallax.com/uploads/attachments/46831/74481.png +$ENDCMP +# +$CMP Motor_Servo_Grapner_JR +D Servo Motor (Graupner JR connector) +K Servo Motor +F http://forums.parallax.com/uploads/attachments/46831/74481.png +$ENDCMP +# +$CMP Motor_Servo_Hitec +D Servo Motor (HiTec connector) +K Servo Motor +F http://forums.parallax.com/uploads/attachments/46831/74481.png +$ENDCMP +# +$CMP Motor_Servo_JR +D Servo Motor (JR connector) +K Servo Motor +F http://forums.parallax.com/uploads/attachments/46831/74481.png +$ENDCMP +# +$CMP Motor_Servo_Robbe +D Servo Motor (Robbe connector) +K Servo Motor +F http://forums.parallax.com/uploads/attachments/46831/74481.png +$ENDCMP +# +$CMP Stepper_Motor_bipolar +D 4-wire bipolar stepper motor +K bipolar stepper motor +F http://www.infineon.com/dgdl/Application-Note-TLE8110EE_driving_UniPolarStepperMotor_V1.1.pdf?fileId=db3a30431be39b97011be5d0aa0a00b0 +$ENDCMP +# +$CMP Stepper_Motor_unipolar_5pin +D 5-wire unipolar stepper motor +K unipolar stepper motor +F http://www.infineon.com/dgdl/Application-Note-TLE8110EE_driving_UniPolarStepperMotor_V1.1.pdf?fileId=db3a30431be39b97011be5d0aa0a00b0 +$ENDCMP +# +$CMP Stepper_Motor_unipolar_6pin +D 6-wire unipolar stepper motor +K unipolar stepper motor +F http://www.infineon.com/dgdl/Application-Note-TLE8110EE_driving_UniPolarStepperMotor_V1.1.pdf?fileId=db3a30431be39b97011be5d0aa0a00b0 +$ENDCMP +# +#End Doc Library diff --git a/SchemaKiCad/Motor.lib b/SchemaKiCad/Motor.lib new file mode 100644 index 0000000..cdbd409 --- /dev/null +++ b/SchemaKiCad/Motor.lib @@ -0,0 +1,395 @@ +EESchema-LIBRARY Version 2.3 +#encoding utf-8 +# +# Fan +# +DEF Fan M 0 0 Y Y 1 F N +F0 "M" 100 200 50 H V L CNN +F1 "Fan" 100 -100 50 H V L TNN +F2 "" 0 10 50 H I C CNN +F3 "" 0 10 50 H I C CNN +$FPLIST + PinHeader*P2.54mm* + TerminalBlock* +$ENDFPLIST +DRAW +A -98 94 113 297 -910 0 1 0 N 0 150 -100 -20 +A 0 -70 112 1534 266 0 1 0 N -100 -20 100 -20 +A 103 95 115 -915 1519 0 1 0 N 100 -20 0 150 +C 0 40 128 0 1 10 N +P 2 0 1 0 0 -200 0 -180 N +P 2 0 1 0 0 -88 0 -104 N +P 2 0 1 0 0 168 0 182 N +P 2 0 1 0 0 180 0 200 N +X + 1 0 300 100 D 50 50 1 1 P +X - 2 0 -200 100 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Fan_ALT +# +DEF Fan_ALT M 0 0 N Y 1 F N +F0 "M" 150 200 50 H V L BNN +F1 "Fan_ALT" 150 100 50 H V L BNN +F2 "" 0 -50 50 H I C CNN +F3 "" 0 -50 50 H I C CNN +$FPLIST + PinHeader*P2.54mm* + TerminalBlock* +$ENDFPLIST +DRAW +A -160 -90 184 -1506 1506 0 1 0 N 0 0 0 -180 +A -142 -45 149 -1624 1232 0 1 0 N 0 0 -60 -170 +A -90 160 184 -1506 1506 0 1 0 N 0 0 -180 0 +A -45 142 149 -1624 1232 0 1 0 N 0 0 -170 60 +A 45 -142 149 -1624 1232 0 1 0 N 0 0 170 -60 +A 90 -160 184 -1506 1506 0 1 0 N 0 0 180 0 +A 142 45 149 -1624 1232 0 1 0 N 0 0 60 170 +A 160 90 184 -1506 1506 0 1 0 N 0 0 0 180 +C 0 0 180 0 1 10 N +P 2 0 1 0 0 -200 0 -180 N +P 2 0 1 0 0 180 0 200 N +X + 1 0 300 100 D 50 50 1 1 P +X - 2 0 -300 100 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Fan_IEC60617 +# +DEF Fan_IEC60617 M 0 0 Y Y 1 F N +F0 "M" 150 150 50 H V L CNN +F1 "Fan_IEC60617" 150 100 50 H V L TNN +F2 "" 50 -140 50 H I L CNN +F3 "" 0 10 50 H I C CNN +$FPLIST + PinHeader*P2.54mm* + TerminalBlock* +$ENDFPLIST +DRAW +C 0 40 100 0 1 0 N +S -130 170 130 -90 0 1 10 f +P 2 0 1 0 -60 -40 90 0 N +P 2 0 1 0 -60 120 90 80 N +P 2 0 1 0 0 -200 0 -180 N +P 2 0 1 0 0 -88 0 -104 N +P 2 0 1 0 0 168 0 182 N +P 2 0 1 0 0 180 0 200 N +X + 1 0 300 100 D 50 50 1 1 P +X - 2 0 -200 100 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Fan_Tacho +# +DEF Fan_Tacho M 0 0 Y Y 1 F N +F0 "M" 100 100 50 H V L CNN +F1 "Fan_Tacho" 100 -200 50 H V L TNN +F2 "" 0 -90 50 H I C CNN +F3 "" 0 -90 50 H I C CNN +ALIAS Fan_3pin Fan_PC_Chassis +$FPLIST + FanPinHeader*P2.54mm*Vertical* + PinHeader*P2.54mm*Vertical* + TerminalBlock* +$ENDFPLIST +DRAW +A -200 -40 20 1800 900 0 0 0 N -220 -40 -200 -20 +A -200 -40 20 -1799 -1 0 0 0 N -220 -40 -180 -40 +P 2 0 0 0 -200 -20 -210 -15 N +P 2 0 0 0 -200 -20 -205 -30 N +P 3 0 0 0 -160 0 -160 -60 -130 -60 N +A -98 -6 113 297 -910 0 1 0 N 0 50 -100 -120 +A 0 -170 112 1534 266 0 1 0 N -100 -120 100 -120 +A 103 -5 115 -915 1519 0 1 0 N 100 -120 0 50 +C 0 -60 128 0 1 10 N +P 2 0 1 0 -160 0 -200 0 N +P 2 0 1 0 0 -300 0 -280 N +P 2 0 1 0 0 -188 0 -204 N +P 2 0 1 0 0 68 0 82 N +P 2 0 1 0 0 80 0 100 N +X Tacho 1 -300 0 100 R 50 50 1 1 P +X + 2 0 200 100 D 50 50 1 1 P +X - 3 0 -300 100 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Fan_Tacho_PWM +# +DEF Fan_Tacho_PWM M 0 0 Y Y 1 F N +F0 "M" 100 200 50 H V L CNN +F1 "Fan_Tacho_PWM" 100 -100 50 H V L TNN +F2 "" 0 10 50 H I C CNN +F3 "" 0 10 50 H I C CNN +ALIAS Fan_CPU_4pin Fan_4pin +$FPLIST + FanPinHeader*P2.54mm*Vertical* + PinHeader*P2.54mm*Vertical* + TerminalBlock* +$ENDFPLIST +DRAW +A -200 60 20 1800 900 0 0 0 N -220 60 -200 80 +A -200 60 20 -1799 -1 0 0 0 N -220 60 -180 60 +P 2 0 0 0 -200 80 -210 85 N +P 2 0 0 0 -200 80 -205 70 N +P 3 0 0 0 -160 100 -160 40 -130 40 N +A -98 94 113 297 -910 0 1 0 N 0 150 -100 -20 +A 0 -70 112 1534 266 0 1 0 N -100 -20 100 -20 +A 103 95 115 -915 1519 0 1 0 N 100 -20 0 150 +C 0 40 128 0 1 10 N +P 2 0 1 0 -160 100 -200 100 N +P 2 0 1 0 0 -200 0 -180 N +P 2 0 1 0 0 -88 0 -104 N +P 2 0 1 0 0 168 0 182 N +P 2 0 1 0 0 180 0 200 N +P 4 0 1 0 -100 -40 -160 -40 -160 -100 -200 -100 N +P 10 0 1 0 -210 -130 -200 -130 -200 -120 -190 -120 -190 -130 -170 -130 -170 -120 -160 -120 -160 -130 -140 -130 N +X - 1 0 -200 100 U 50 50 1 1 P +X + 2 0 300 100 D 50 50 1 1 P +X Tacho 3 -300 100 100 R 50 50 1 1 P +X PWM 4 -300 -100 100 R 50 50 1 1 I +ENDDRAW +ENDDEF +# +# Motor_AC +# +DEF Motor_AC M 0 0 Y Y 1 F N +F0 "M" 100 100 50 H V L CNN +F1 "Motor_AC" 100 -200 50 H V L TNN +F2 "" 0 -90 50 H I C CNN +F3 "" 0 -90 50 H I C CNN +$FPLIST + PinHeader*P2.54mm* + TerminalBlock* +$ENDFPLIST +DRAW +A -29 -108 31 -1763 -225 0 0 0 N -60 -110 0 -120 +A 28 -132 30 1568 36 0 0 0 N 0 -120 60 -130 +P 5 0 0 0 -40 -80 -40 40 0 -40 40 40 40 -80 N +C 0 -60 128 0 1 10 N +P 2 0 1 0 0 -300 0 -280 N +P 2 0 1 0 0 -188 0 -204 N +P 2 0 1 0 0 68 0 82 N +P 2 0 1 0 0 80 0 100 N +X ~ 1 0 200 100 D 50 50 1 1 P +X ~ 2 0 -300 100 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Motor_DC +# +DEF Motor_DC M 0 0 Y Y 1 F N +F0 "M" 100 100 50 H V L CNN +F1 "Motor_DC" 100 -200 50 H V L TNN +F2 "" 0 -90 50 H I C CNN +F3 "" 0 -90 50 H I C CNN +$FPLIST + PinHeader*P2.54mm* + TerminalBlock* +$ENDFPLIST +DRAW +P 5 0 0 0 -50 -130 -50 20 0 -80 50 20 50 -130 N +C 0 -60 128 0 1 10 N +P 2 0 1 0 0 -300 0 -280 N +P 2 0 1 0 0 -188 0 -204 N +P 2 0 1 0 0 68 0 82 N +P 2 0 1 0 0 80 0 100 N +X + 1 0 200 100 D 50 50 1 1 P +X - 2 0 -300 100 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Motor_DC_ALT +# +DEF Motor_DC_ALT M 0 0 Y Y 1 F N +F0 "M" 100 100 50 H V L CNN +F1 "Motor_DC_ALT" 100 -200 50 H V L TNN +F2 "" 0 -90 50 H I C CNN +F3 "" 0 -90 50 H I C CNN +$FPLIST + PinHeader*P2.54mm* + TerminalBlock* +$ENDFPLIST +DRAW +C 0 -60 117 0 0 10 N +P 4 0 0 0 -50 -170 -50 -200 50 -200 50 -170 N +P 4 0 0 0 -50 50 -50 80 50 80 50 50 N +P 5 0 0 0 -50 -130 -50 20 0 -80 50 20 50 -130 N +P 2 0 1 0 0 80 0 100 N +X + 1 0 200 100 D 50 50 1 1 P +X - 2 0 -300 100 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Motor_Servo +# +DEF Motor_Servo M 0 1 Y Y 1 F N +F0 "M" -200 175 50 H V L CNN +F1 "Motor_Servo" -200 -160 50 H V L TNN +F2 "" 0 -190 50 H I C CNN +F3 "" 0 -190 50 H I C CNN +ALIAS Motor_Servo_JR Motor_Servo_Hitec Motor_Servo_Futaba_J Motor_Servo_Robbe Motor_Servo_Grapner_JR +$FPLIST + PinHeader*P2.54mm* +$ENDFPLIST +DRAW +A 125 0 76 1132 -1132 0 1 0 N 95 70 95 -70 +A 267 142 37 1173 -273 0 1 0 N 250 175 300 125 +C 125 0 7 0 1 0 N +C 125 0 56 0 1 0 N +C 235 110 5 0 1 0 N +C 255 130 5 0 1 0 N +C 275 150 5 0 1 0 N +P 2 0 1 0 95 -70 80 -70 N +P 2 0 1 0 95 -70 90 -55 N +P 2 0 1 0 95 70 75 70 N +P 2 0 1 0 95 70 90 55 N +P 2 0 1 0 250 175 100 50 N +P 2 0 1 0 300 125 165 -40 N +P 5 0 1 10 200 140 -200 140 -200 -140 250 -140 250 60 N +X PWM 1 -300 100 100 R 50 50 1 1 P +X + 2 -300 0 100 R 50 50 1 1 P +X - 3 -300 -100 100 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Motor_Servo_AirTronics +# +DEF Motor_Servo_AirTronics M 0 1 Y Y 1 F N +F0 "M" -200 175 50 H V L CNN +F1 "Motor_Servo_AirTronics" -200 -160 50 H V L TNN +F2 "" 0 -190 50 H I C CNN +F3 "" 0 -190 50 H I C CNN +$FPLIST + PinHeader*P2.54mm* +$ENDFPLIST +DRAW +A 125 0 76 1132 -1132 0 1 0 N 95 70 95 -70 +A 267 142 37 1173 -273 0 1 0 N 250 175 300 125 +C 125 0 7 0 1 0 N +C 125 0 56 0 1 0 N +C 235 110 5 0 1 0 N +C 255 130 5 0 1 0 N +C 275 150 5 0 1 0 N +P 2 0 1 0 95 -70 80 -70 N +P 2 0 1 0 95 -70 90 -55 N +P 2 0 1 0 95 70 75 70 N +P 2 0 1 0 95 70 90 55 N +P 2 0 1 0 250 175 100 50 N +P 2 0 1 0 300 125 165 -40 N +P 5 0 1 10 250 60 250 -140 -200 -140 -200 140 200 140 N +X + 1 -300 0 100 R 50 50 1 1 P +X - 2 -300 -100 100 R 50 50 1 1 P +X PWM 3 -300 100 100 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Stepper_Motor_bipolar +# +DEF Stepper_Motor_bipolar M 0 0 Y N 1 F N +F0 "M" 150 100 50 H V L CNN +F1 "Stepper_Motor_bipolar" 150 50 50 H V L TNN +F2 "" 10 -10 50 H I C CNN +F3 "" 10 -10 50 H I C CNN +$FPLIST + PinHeader*P2.54mm*Vertical* + TerminalBlock* + Motor* +$ENDFPLIST +DRAW +P 5 0 0 0 -50 -70 -50 80 0 -20 50 80 50 -70 N +A -175 -75 25 -899 899 0 1 0 N -175 -100 -175 -50 +A -175 -25 25 -899 899 0 1 0 N -175 -50 -175 0 +A -175 25 25 -899 899 0 1 0 N -175 0 -175 50 +A -175 75 25 -899 899 0 1 0 N -175 50 -175 100 +A -75 175 25 -1799 -1 0 1 0 N -100 175 -50 175 +A -25 175 25 -1799 -1 0 1 0 N -50 175 0 175 +A 25 175 25 -1799 -1 0 1 0 N 0 175 50 175 +A 75 175 25 -1799 -1 0 1 0 N 50 175 100 175 +C 0 0 128 0 1 10 N +P 2 0 1 0 -200 -100 -175 -100 N +P 2 0 1 0 -200 100 -175 100 N +P 2 0 1 0 -100 200 -100 175 N +P 2 0 1 0 100 200 100 175 N +X ~ 1 -100 300 100 D 50 50 1 1 P +X - 2 100 300 100 D 50 50 1 1 P +X ~ 3 -300 100 100 R 50 50 1 1 P +X ~ 4 -300 -100 100 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Stepper_Motor_unipolar_5pin +# +DEF Stepper_Motor_unipolar_5pin M 0 0 Y N 1 F N +F0 "M" 150 100 50 H V L CNN +F1 "Stepper_Motor_unipolar_5pin" 150 50 50 H V L TNN +F2 "" 10 -10 50 H I C CNN +F3 "" 10 -10 50 H I C CNN +$FPLIST + PinHeader*P2.54mm* + TerminalBlock* +$ENDFPLIST +DRAW +P 5 0 0 0 -50 -70 -50 80 0 -20 50 80 50 -70 N +A -175 -75 25 -899 899 0 1 0 N -175 -100 -175 -50 +A -175 -25 25 -899 899 0 1 0 N -175 -50 -175 0 +A -175 25 25 -899 899 0 1 0 N -175 0 -175 50 +A -175 75 25 -899 899 0 1 0 N -175 50 -175 100 +A -75 175 25 -1799 -1 0 1 0 N -100 175 -50 175 +A -25 175 25 -1799 -1 0 1 0 N -50 175 0 175 +A 25 175 25 -1799 -1 0 1 0 N 0 175 50 175 +A 75 175 25 -1799 -1 0 1 0 N 50 175 100 175 +C -200 200 0 0 1 0 F +C -200 200 10 0 1 0 F +C 0 0 128 0 1 10 N +P 2 0 1 0 -200 -100 -175 -100 N +P 2 0 1 0 -200 100 -175 100 N +P 2 0 1 0 -100 175 -100 200 N +P 2 0 1 0 100 175 100 200 N +P 3 0 1 0 -200 200 -200 0 -175 0 N +P 3 0 1 0 0 175 0 200 -200 200 N +X ~ 1 -200 300 100 D 50 50 1 1 P +X ~ 2 -100 300 100 D 50 50 1 1 P +X - 3 100 300 100 D 50 50 1 1 P +X ~ 4 -300 100 100 R 50 50 1 1 P +X ~ 5 -300 -100 100 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Stepper_Motor_unipolar_6pin +# +DEF Stepper_Motor_unipolar_6pin M 0 0 Y N 1 F N +F0 "M" 150 100 50 H V L CNN +F1 "Stepper_Motor_unipolar_6pin" 150 50 50 H V L TNN +F2 "" 10 -10 50 H I C CNN +F3 "" 10 -10 50 H I C CNN +$FPLIST + PinHeader*P2.54mm* + TerminalBlock* +$ENDFPLIST +DRAW +P 5 0 0 0 -50 -70 -50 80 0 -20 50 80 50 -70 N +A -175 -75 25 -899 899 0 1 0 N -175 -100 -175 -50 +A -175 -25 25 -899 899 0 1 0 N -175 -50 -175 0 +A -175 25 25 -899 899 0 1 0 N -175 0 -175 50 +A -175 75 25 -899 899 0 1 0 N -175 50 -175 100 +A -75 175 25 -1799 -1 0 1 0 N -100 175 -50 175 +A -25 175 25 -1799 -1 0 1 0 N -50 175 0 175 +A 25 175 25 -1799 -1 0 1 0 N 0 175 50 175 +A 75 175 25 -1799 -1 0 1 0 N 50 175 100 175 +C 0 0 128 0 1 10 N +P 2 0 1 0 -200 -100 -175 -100 N +P 2 0 1 0 -200 100 -175 100 N +P 2 0 1 0 -175 0 -200 0 N +P 2 0 1 0 -100 175 -100 200 N +P 2 0 1 0 0 175 0 200 N +P 2 0 1 0 100 175 100 200 N +X ~ 1 -100 300 100 D 50 50 1 1 P +X ~ 2 0 300 100 D 50 50 1 1 P +X - 3 100 300 100 D 50 50 1 1 P +X ~ 4 -300 100 100 R 50 50 1 1 P +X ~ 5 -300 0 100 R 50 50 1 1 P +X ~ 6 -300 -100 100 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +#End Library