marți, 10 iulie 2018
Primele incercari - printare 3D
joi, 2 martie 2017
Driver 3 axe
albastru cu TB6560 - China
In pachetul primit la
cumpãrare de pe net, am gãsit driver-ul din imagine, un cablu pentru portul
paralel
şi un CD. Pe CD în afarã de un kit pentru Mach3
, au mai fost puse câteva fişiere .pdf,
care nu folosesc la nimic – deoarece nu corespund produsului din pachet
!
Fabricantul
nu a furnizat schema electronicã ,
semnificaţia pinilor la cupla PC-LPT nu corespunde cu nici unul din
documentele de pe CD-ul pachetului.
Am fost nevoit sã caut
mult pe net o schemã dintre cele refãcute de amatori şi publicatã pe forumuri, care sã
se potriveascã cu acest modul. (amplasarea pieselor pe cablaj şa fie identicã şi
piesele … aceleaşi)
Din cele ce am scris în continuare nimic nu e
inventat de mine. Totul este din documentare şi multe multe cãutãri şi încercãri
!
În final , am reuşit sã –
l utilizez, deşi la un moment dat vroiam
sã-l trec la pierderi.
1.Identificarea produsului – este necesarã, deoarece la achiziţionare nu are
nici un fel de inscripţionare care ar putea defini varianta constructivã a
modulului . Au fost comercializate mai multe variante, la care diferã :
- semnificaţia pinilor
de la cupla PC-LPT
- ordinea în care sînt
amplasate pe placã ieşirile pentru motoarele pas cu pas - adicã Z, Y, X (existã
şi plãci cu ordinea X,Y,Z la acelaşi fabricant)
- amplasarea
componentelor electronice pe placã
-piesele de pe placã
Dacã apar diferenţe faţã
de imagine, trebuie sã re-identificaţi toate elementele driver-ului dvs.
Fabricantul nu a furnizat schema electronicã , am
preluat-o din cele refãcute de amatori şi publicate pe forumuri !
![]() |
| Fig.1 - driver 3 axe China , cu TBA 6560 |
1.2.Semnificaţia pinilor de la conectorul PC-LPT
Driver-ul se
cupleazã la portul paralel al PC-ului, iar pentru setarea aplicaţiei folosite
de operator, este important sã se cunoascã
semnificaţia fiecãrui pin de la conector.
1.3. Setare micro-switch pentru fiecare canal
Pentru fiecare canal ( X; Y; Z)
existã cîte un bloc cu 6 micro întrerupãtoare ca în fig 3, care trebuiesc
setate fizic On/Off ţinând seama şi de caracteristicile mecanice
ale maşinii şi a motoarelor pas cu pas utilizate
La prima încercare , am folosit setãrile:
1 = On; 2=On => motor current 100%
3 = On; 4=Off => 25%
decay
5 = Off; 6 = On
=>1/16 microsteps
Am mai fãcut încercãri
cu 1/2micropaşi - nu am obţinut funcţionare corespunzãtoare
Am finalizat cu setarea
pe 1/8 micropaşi.
Acestea sînt setãrile
fizice pt driver.
La aceste setãri, se vor mai adãuga setãrile din aplicaţia de
pe Pc (Mach3 sau Kcam).
1.4. Portul paralel la PC - setare LPT
Pentru probe şi
lucru cu Mach3 , trebuie ca portul paralel al
PC-ului sa fie setat în BIOS la opţiunea ECP. (cu alte opţiuni, driver-ul meu
nu a funcţionat). Atenţie : la calculatoarele mai vechi, care lucreazã cu
Windows XP , fereastra
de setare LPT poate sã difere. Trebuie aleasã varianta de funcţionare normalã ,
fãrã întreruperi (ECP) .
Pe Widows 7 ; Windows 10 , utilitarul Mach 3 nu funcţioneazã
.
La deschiderea Device
Manager->Propertis
trebuie sã aparã
imaginea din figurã.Pe PC-ul tãu, cu Windows XP, trebuie sã ai instalat utilitarul Mach 3 pentru a continua.
Informații pentru a continua :
Port = 1
Port Adresa = 03BC
1.5. Modificãri driver.
Surse net : diferiţi
utilizatori au fãcut modificãri asupra circuitelor electronice si pieselor acestui tip de driver, pentru optimizare
şi creşterea performanţelor:
Eu nu am încercat
sã fac astfel de modificãri.
2.Setãri în utilitarul Mach3
Adresa 03BC trebuie scrisã în panoul Config din Mach3, iar la port trebuie trecut 1.
1.6.
Setare releu motor principal (“Spindle”)
- Motorul pentru antrenarea sculei aşchietoare poate fi
pornit/oprit prin releul de pe placa driver-ului nostru, destinat acestui
scop. Acest releu poate fizic sã
porneascã/opreascã motorul , dupã semnalul primit la pin9 de la Mach3;
Pinul 9 – trebuie setat în Mach3 în Config -> Output Signals cu Enabled la “Output
#1” şi 9 în coloana “Pin Number”, iar în coloana “ActiveLow” rãmâne cu
cruciuliţa roşie – ca în figura anexatã, deoarece
semnalul este inversat prin sistemul optocuplor – vezi Fig. 4
- am validat ieşirea Output #1 pe pinul 9 ;
- în panoul “Spindle Setup” am avut grijã sã nu fie
bifate cãsuţele de la “Disable Spindle
Relays” şi “Disable Flood/Mist
relays”
In cazul nostru, nu
existã un releu pentru pompa de rãcire;
Pompa de rãcire poate
porni/opri prin intermediul aceluiaşi releu - simultan cu motorul principal.Va
trebui fãcut fizic un circuit de comandã
exterior în acest scop.In ecranul
“Diagnostic Alt-7” Led-ul (cãsuţa) de la “ Output 1” va clipi Led-ul roşu dacã programul este pornit şi
apãsãm pe comutatorul “Spindle Toggle” din acelaşi ecran (Fig.5).
![]() |
| Fig.5 |
Operatorul maşinii are
mai multe posibilitãţi de a porni şi opri motorul principal Fig.6
![]() |
| Fig.6 |
In ecranul principal “Program
Run Alt-1” Fig. 6 în dreapta jos se
aflã familia de controale “Spindle Speed”.Cu
butonul comutator “Spindle CW F5” se
poate porni/opri motorul principal.
Pentru încercãri, am montat un Led şi o
baterie pe contactele releului (vezi imaginea din Fig.10.)La acţionarea
acestui buton, Led-ul meu se aprindeşi se stinge.
In fereastra “Input” din ecranul “MDI Alt2”
daca tastãm comanda M3 , Ledul de la releu se aprinde, iar dacã tastãm
M5 se stinge.
Pentru mine a fost o
adevãratã încercare sã identific pinii, şi sã aflu cum trebuiesc corelate
setãrile cu ajutorul ecranului “Diagnostic
ALT-7”
1.6.Setarea limitatorilor de cursã.
In imaginea inclusã în
Fig.7, este redatã amplasarea cuplei J10 pe placa driver şi identificarea
pinilor.
Limitatorii de cursã
trebuie cuplaţi la driver prin cupla J10
cu 5 pini A;B;C;D;E din Fig7, unde :
A = masa (ground)
B = limitator axa X
(corespunde la pin 13)
C = imitator axa Y (corespunde la pin 12)
D = limitator axa Z (corespunde la pin 11)
E = neutilizat
(corespunde la pin 10)
De la limitatori,
semnalele sînt preluate de la driver şi trimise la PC – Mach3 prin pinii de
intrare 13; 12;11;10 de la cupla cu 25 pini.
Pentru setãri, am
constatat cã pinii de intrare de la J10 au corespondenţa astfel:
B = limitator axa X =
este intrarea Input #1 şi lucreazã cu pin 13
C = imitator axa Y = este intrarea Input
#2 şi lucreazã cu pin 12
D = limitator axa Z = este intrarea Input
#3 şi lucreazã cu pin 11
Pentru cã semnalele
sînt preluate şi inversate prin optocuplori, în tabelul Config ->Ports&Pins->Input
Signals am setat semnalele de
intrare Active Low şi pinii
corespunzãtori pentru fiecare semnal Fig 8:
![]() |
| Fig.8 |
Input#2 Enabled PinNumber=12 setare Active Low
Input#1 Enabled PinNumber=11 setare Active Low
Apoi,
am setat Enabled şi pinii corespunzãtori pentru fiecare limitator de cursã –fig.9
![]() |
| Fig.9 |
X++ Enabled PinNumber=13 Active Low
X-
- Enabled PinNumber=13 Active Low
Y++ Enabled PinNumber=12 Active Low
Y-
- Enabled PinNumber=12 Active Low
Z++ Enabled PinNumber=11 Active Low
Z-
- Enabled PinNumber=11 Active Low
Pentru încercãri, am
cuplat firul negru (masa) cu cele 4 fire roşii
la o linie comunã – practic la masã – simulând limitatorii închişi
In timpul încercãrilor, pentru setare, am
decuplat succesiv firele roşii de la masã simulînd deschiderea linitatorilor de cursã
Cu aceste încercãri reuşite, mi-am recãpãtat increderea cã pot finaliza maşina !
sâmbătă, 5 septembrie 2015
Am crezut cã este uşor de programat ATTiny85 ….
Cu
ideea din titlu, am cumpãrat 4 buc ATTiny 85 neştiind cã Arduino
IDE trebuie upgradat pentru a putea programa şi acest microcontroller. Am fost nevoit sã mã "cultiv" din nou pe internet.....
Arduino IDE trebuie complectat pentru programare ATTiny 85 cu cîteva fişiere. O bibliografie bunã şi accesibilã cu ce şi cum
se face am gãsit pe siteul :
Pentru
cã pinii lui ATTiny85, precum şi pinii soclului sânt scurţi şi nu fac contacte
sigure pe placa de încercãri (am constatat asta la primele încercãri ) am fãcut
o placã –PCB-) care sã aibã:
- conector pentru programare SPI;
- conectori
pentru legãturi exterioare;
Nu m-am mai complicat
sã schimb frecvenţa de funcţionare , am renunţat la quarţ , şi lucrez pe 1Mhz.
PCB ATTiny 85
Semnificaţie
pini ATTiny 85
Pinii mapaţi în libraria ATTiny (cu culoare violet/verde în poza de sus) sint :
Pentru
cã pinii lui ATTiny85, precum şi pinii soclului sânt scurţi. La primele încercãri
am constatat cã ei nu fac contacte sigure pe placa de incercare.A trebuit sã
fac o placã dedicatã ATTiny85 care sã
aibã:
- conecor pentru programare SPI;
-
conectori pentru legãturi exterioare;
Nu m-am
mai complicat sã schimb frecvenţa de funcţionare , am renunţat la quarţ , şi lucrez pe 1Mhz.
Schema PCB:
Desen cablaj:
Dupã ce am fãcut toate adaptãrile, am cuplat montajul la
programatorul USBTinyIsp, şi am încãrcat
sketch-ul BlinkTiny.ino
Nota:
- am
fãcut download din https://code.google.com/p/arduino-tiny/downloads/list
poziţia arduino-tiny-0150-020.zip si am dezarhivat-o într-un director, pe un
stik ; am deschis fişierul Readmy.txt şi
am parcurs pas cu pas instructiunile, adicã: în directorul unde sint
salvate programele din Arduino IDE (a se
vedea locaţia acestuia din meniul File
->Preferences :
Apoi,
trebuie creat directorul “hardware” , unde am copiat fişierele dezarhivate, şi
am fãcut fişierul boards.txt :
C:\.................................\Arduino\hardware\tiny\license.txt
C:\.................................\Arduino\hardware\tiny\Prospective
Boards.txt
C:\.................................\Arduino\hardware\tiny\README
C:\.................................\Arduino\hardware\tiny\bootloaders\
C:\..................................\Arduino\hardware\tiny\cores\
In plus
, am mai fãcut download de la aceeaşi
adresã pentru fişierul
tiny-isp-2-0100-0001.zip pe care l-am dezarhivat, într-un director denumit
TinyIsp în locatia unde pãstreazã Arduino IDE programele salvate.Acest
fişier (echivalentul lui Arduino ISP din
Arduino IDE) transforma Arduino Uno in programator pentru ATTiny .
L-am
uloadat pe Arduino Uno , şi am fãcut
conexiunile cu ATTiny 85 .
Cu încercãrile terminate , am mai fãcut cîteva etichete pe bord, ca utilizarea sã fie mai usoarã
Cu încercãrile terminate , am mai fãcut cîteva etichete pe bord, ca utilizarea sã fie mai usoarã
marți, 1 septembrie 2015
Afisaj LDC cu interfata I2c si senzor brick LM50 !
Am vrut sã scap de
cablarea cu fire multe dintre LCD şi Arduino şi mi-am propus sã fac o aplicaţie
cu interfaţa I2C.
Toate bune şi frumoase , pânã am instalat librãria LiquidCrystal_I2C şi am constatat cã
existã diferenţe faţã de LiquidCrytsal .
Am
încercat exemplele “CustomChars.ino” şi “Hello World.ino” din
LiquidCrystal_I2C;
Apoi , am încercat sã
adaptez la I2C şi exemplele din
LiquidCrystal, ca sã mã familiarizez cu
modul de lucru.
Si pentru cã aveam un
senzor LM50, am trecut la încercãri.
Ca întotdeauna, am
cãutat mai întîi pe modele lucrate de
altcineva – mi-am zis cã e mai
comod.
l-am încercat cu afişare pe SerialMonitor şi apoi l-am modificat la
afişarea pe LCD I2C.
Cea mai buna
bibliografie, pentru explicarea algoritmului
şi calculelor matematice este pe site-ul :
ttp://users.utcluj.ro/~rdanescu/pmp-c08.pdf
pagina 31.Tot de aici am preluat şi inaginea paginii 31, cu caracteristicile senzorului LM50 :
............................................................................................................................................
Conexiuni
De la modulul
I2c, pinul SDA la pinul A4 de la Ardu Uno
De la modulul
I2c , pinul SCL la pinul A5 Ardu Uno
De la
Brickul LM50, pinul Out la pinul A0 Ardu
Uno
GND –
este comun ; Vcc la +5v, comun
............................................................................................................................................
Codul modificat şi complectat (am blocat afişarea pe
Serial Monitor ) este redat mai jos :
//…………………………………
//temperaturaC_I2C.ino
//…………………………………
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// cu senzor brick LM 50
// am plecat de la schita de pe Robofun cu LM50 si
//http://users.utcluj.ro/~rdanescu/pmp-c08.pdf pagina 31
// am adaugat cod pentru afisare
pe LCD I2C 16x2
//.......................................
LiquidCrystal_I2C lcd(0x27,16,2);
// set the LCD address to 0x27 for a 16 chars and 2 line display
void setup(){
// Serial.begin(9600);
lcd.init(); // initialize the lcd
lcd.backlight();
// Print a message to the
LCD.
lcd.print("Temperatura:
");
}
void loop(){
Serial.print("Temperatura:
");
float temperatura =
readTempInCelsius(10,0); //apeleaza functia, cu 10 citiri pe pinul analg A0)
// functia returneaza media a 10 citiri succesive
lcd.setCursor(0,1);
lcd.print(temperatura);
lcd.setCursor ( 6, 1 ); // sare pe linia 2
lcd.print((char)223); // Tipareste cerculetul de la grade Celsius pe linia 2
lcd.setCursor ( 7, 1 ); // sare pe linia 2
lcd.print("C");
// Serial.print(temperatura);
// Serial.print(" ");
//Serial.write(176);
//Serial.println("C");
//delay(200);
delay(1000);
}
// functia pentru citirea temperaturii , referinte
:http://www.robofun.ro/senzor-temperatura-brick
//http://users.utcluj.ro/~rdanescu/pmp-c08.pdf exemplu pagina 31
float readTempInCelsius(int count, int pin) { //unde count= numarul de
citiri; la pin-ul specigicat-0
float sumaTemperatura;
for (int i =0; i <
count; i++) { // pentru i de la 1 la 10
int reading =
analogRead(pin); // citeste pinul analog
0
float voltage = reading
* 5.0; // 5 este rezolutia la tensiunea
de referinta 5V pt Arduino Uno
voltage /= 1024.0; //
imparte la rezolutie senzor
float
temperatureCelsius = (voltage - 0.5) * 100 ; //scade deplasament
sumaTemperatura =
sumaTemperatura + temperatureCelsius;
}
return sumaTemperatura
/ (float)count; //calculeaza media
}
Succes
la cine doreşte sã încerce !
Abonați-vă la:
Comentarii (Atom)





















