controlul unui motor pas cu pas

14
http://tranzistor.3x.ro/ Tranzistor.3x.ro Continutul acestui site (proiectele si textele aferente) au fost create atunci cand eram un "incepator" in domeniul embedded software etc. Scopul republicarii acestui continut este de a ajuta novicii din acest domeniu cu exemple de proiecte functionale pe care le pot modifica sau integra in sisteme construite de ei. Avand in vedere ca la data realizarii acestor proiecte eram in perioada in care incepeam sa dobandesc experienta in domeniu electronicii aplicate, se poate ca solutiile propuse sa nu fie optime, insa la momentul realizarii lor unele dintre proiecte au avut un rol important in intelegerea modului de lucru al controlerelor, organizarii unui proiect etc. © Valentin Gruia 2011-01-05 16:30:12 Contact autor web Frecventmetru Aici gasiti informatii complementare celor ce au aparut in revista Conex. In primul rand, un lucru important ar fi ca in locul circuitului PIC16F84 s-ar mai putea folosi si PIC16C620, PIC16C621, PIC16C622 un OTP (one time programmable) care costa in jur de 2$. Personal nu am incercat inca. Din experimente am constatat ca divizorul U813 merge pina la frecvente de 48Mhz. Am constatat ca un PIC permite masurarea pe intrare a unor frecvente de pana la 50Mhz, ceea ce inseamna ca divizorul cu doi ar putea fi omis (deci si o pereche de jumperi). Deoarece folosirea pinului RA2 la circuitul nostru este cumva redundanta (functia sa ar putea fi incorporata in pinul RA3), am putea utiliza pinul

Upload: kramactar

Post on 23-Jun-2015

1.281 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Controlul unui motor pas cu pas

http://tranzistor.3x.ro/

Tranzistor.3x.roContinutul acestui site (proiectele si textele aferente) au fost create atunci cand eram un "incepator" in domeniul embedded software etc. Scopul republicarii acestui continut este de a ajuta novicii din acest domeniu cu exemple de proiecte functionale pe care le pot modifica sau integra in sisteme construite de ei. Avand in vedere ca la data realizarii acestor proiecte eram in perioada in care incepeam sa dobandesc experienta in domeniu electronicii aplicate, se poate ca solutiile propuse sa nu fie optime, insa la momentul realizarii lor unele dintre proiecte au avut un rol important in intelegerea modului de lucru al controlerelor, organizarii unui proiect etc.

© Valentin Gruia 2011-01-05 16:30:12

Contact autor web

Frecventmetru

Aici gasiti informatii complementare celor ce au aparut in revista Conex. In primul rand, un lucru important ar fi ca in locul circuitului PIC16F84 s-ar mai putea folosi si PIC16C620, PIC16C621, PIC16C622 un OTP (one time programmable) care costa in jur de 2$. Personal nu am incercat inca. Din experimente am constatat ca divizorul U813 merge pina la frecvente de 48Mhz. Am constatat ca un PIC permite masurarea pe intrare a unor frecvente de pana la 50Mhz, ceea ce inseamna ca divizorul cu doi ar putea fi omis (deci si o pereche de jumperi). Deoarece folosirea pinului RA2 la circuitul nostru este cumva redundanta (functia sa ar putea fi incorporata in pinul RA3), am putea utiliza pinul RA2 la comanda unui Switch realizat cu un 74HCT00, care sa comute intre intrarile de pe prescaler si cea directa (prin amplificator) (substituie jumper1). Astfel frecventmetrul ar putea sa aiba intrarile in totalitate controlate digital, iar perioadele de masurare ar fi de 1s, 0.1s, 0.64s. Iata o posibila implementare de switch realizat cu 4 porti TTL 74HCT00 in figurile de aici.

Singurul neajuns al acestui proiect cred ca este intrarea pentru frecvente joase prin amplificatorul realizat cu BF199, in sensul ca semnalul trebuie sa aiba o amplitudine semnificativa, dar nici prea mare. Daca cineva are mai multa experienta in proiectarea unor astfel de etaje de intrare poate ne da o mana de ajutor.

Page 2: Controlul unui motor pas cu pas

Dedesubt se afla niste arhive din care m-am inspirat si carora cred ca le-am completat unele neajunsuri. Poate nu am apreciat sursele acestea la adevarata valoare, asa ca vi le fac publice pentru studiu. Principala idee folosita in proiectul meu se refera la modul in care se poate obtine valoarea continuta in prescaller.

Aici se afla sursele de inspiratie. Aici se afla schemele si cablajele. De aici puteti descarca sursele. De aici puteti descarca PCB-ul sub forma pdf

PS

Am vazut si eu revista si m-am gandit sa pun pe net textul sursa al variantei finale pentru perioade de 1s, 100ms, 64ms putand astfel elimina divizorul cu 74HCT74, iar pinul RA2 este liber si poate fi folosit la diferite comutari dupa bunul nostru plac (nu mai este nevoie de dioda legata de el si RA3).

Page 3: Controlul unui motor pas cu pas

Ultima varianta poate fi descarcata de aici.

© Articol editat la data de:

2003-12-30 15:35:27

Sinteza frecventa

Un alt proiect de al meu este o sinteza de frecventa in domeniul 87-108Mhz realizata cu un microcontroller AT89C2051 si construita in jurul unui circuit specializat TSA5511. Costul unui astfel de montaj este foarte scazut cu toate ca performantele sunt dintre cele mai bune. Acest lucru se datoreaza utilizarii unor circuite larg folosite in industria electronica. Schema acestei sinteze este formata din doua module: partea de comanda si control realizata cu AT89C2051 si bucla PLL (TSA5511).

Partea de control cuprinde un afisaj ce indica frecventa, patru taste cu functiile UP, DN, TRIMITE, CITESTE si pinii aferenti comunicarii seriale. Controlul buclei se face prin protocolul I2C. Cu tastele UP si Dn se incrementeza respectiv decrementeaza frecventa (cu pas de 100Khz), iar daca aceasta a ajuns la limitele benzii sare automat la celalalt capat (pentru UP 108->87 sau pentru DN 87->108). Cu tasta TRIMITE informatia este scrisa in TSA5511, care va modifica automat frecventa, iar cu tasta CITESTE se citeste daca bucla este inchisa (oscilatorul a ajuns pe frecventa dorita). Daca se tine apasata tasta UP/DN mai mult de 8 incrementari/decrementari, viteza cu care se face citirea tastelor creste de circa 3 ori, rezultand o parcurgere mai rapida intre doua frecvente despartite de un ecart semnificativ. Circuitul TSA5511 are incorporat un oscilator local cu cuart (noi vom folosi unul de 6.4Mhz pentru a obtine pasul de 100Khz), un divizor programabil pe 15 biti, si comparatorul de faza. Acesta din urma comanda tensiunea pe varicap a VCO in curent continuu dar foloseste si pompe de curent de 100uA si 50uA; personal in aceasta aplicatie folosesc pompa de curent pe 50uA sau deloc (disable) deoarece introduce distorsiuni asupra semnalului modulator in incercarea de compensa variatiile de frecventa. Acest circuit are de asemenea 7 porturi de iesire (unele pot fi folosite pe intrare) care pot comanda diferite accesorii (ex: mira, opreste alimentare oscilator). Porturile nu sunt implementate in circuitul meu.

Iata implementarea celor 2 module

Page 4: Controlul unui motor pas cu pas
Page 5: Controlul unui motor pas cu pas
Page 6: Controlul unui motor pas cu pas

Schemele acestui circuit pot fi descarcate mai jos. Pentru a cupla cele 2 module, trebuie stiut ca porturile P3.0, P3.1 controleaza SCL si SDA (porturile 4, 5 ale TSA-ului). Pinul

Page 7: Controlul unui motor pas cu pas

15 al TSA-ului este intrare pentru radiofrecventa, iar la conectorul J4 se gaseste tensiunea care controleaza varicapul oscilatorului (frecventa).

Aici se gasesc sursele si hex-ul ce se incarca in controller Aici se gasesc schema si cablajele modulului de control al PLL-ului Aici se gasesc schema si cablajul modulului PLL Aici se gaseste documentul pe care l-am folosit la implementarea I2C

© Articol editat la data de:

2003-12-30 19:46:09

Miniemitator

La categoria amuzamente electronice, va prezint o schema de miniemitator. Prea multe nu se pot spune despre montaj. Schema a fost adaptata de la un microfon fara fir (chinezesc, desigur). Montajul se alimenteaza la 3V (doua baterii de telecomanda R6), iar raza de actiune prin casa 2-3 camere (prin pereti). Cel mai mult l-am folosi intr-o excursie cu colegii de liceu cand bateriile au rezistat 3 zile de mers non-stop, si probabil ca ar mai fi rezistat ceva timp daca nu plecam acasa :( . Aveam doua montaje si monitorizam doua camere invecinate.

Gama de frecvente in care lucreaza este intre 87 - 98Mhz.

Detalii de realizare:

Tranzistorul T1 este de tipul BC173 sau BC171 iar T2 de tipul BF255. Am folosit cu rezultate foarte bune tranzistoare de prin casetofoanele demontate astfel T1 - C914, iar T2 - C918. Bobina L1 in montajul original este formata din doua bobine puse cap la cap (stablitate mecanica superioara), lipite pe cablaj in asa fel incat sa para ca ar fi facute dintr-o bucata; diametrul pe care am bobinat-o este de circa 5mm, mai precis pe un condensator electrolitic (standard) 47uF/16V, 1uF/50V. Bobina L1 este bobinata pe un diametru de circa 3mm (mina de pix standard). Amplificarea microfonului poate fi ajustata din rezistenta de 680 omi iar in cazuri extreme poate fi chiar suntata. Microfonul este unul banal, "pastile" cum am auzit ca i se mai spune prin popor :P. Daca nu aveti unul desfaceti primul casetofon care va cade in mana si sigur o sa intrati in posesia unuia. Pe post de antena legati si voi o sarma de circa 75 cm.

Iata schema electrica. Puteti sa o scoateti de aici.

Page 8: Controlul unui motor pas cu pas

Cateva fotografii cu montajul functional. Le puteti downloada arhivate de aici.

Page 9: Controlul unui motor pas cu pas

Am pus imaginile luate din spate pentru a observa detalii despre cum este compusa bobina L1.

Page 10: Controlul unui motor pas cu pas

In speranta ca v-am lamurit cum sta treaba cu diametrele pe mine de pix, condensatoare etc, va urez de pe acum spor la lucru!

© Articol editat la data de:

2004-03-17 21:29:13

Controlul unui motor pas cu pas

Proiect cuprinde comandarea unui motor pas cu pas (stepper), comunicarea seriala (RS232) cu PC-ul, afisarea pe LCD. Toate acestea au fost puse laolalta pentru a realiza o aplicatie demonstrativa in vederea unui interviu (care nu a avut mai loc niciodata). Deoarece timpul de lucru a fost limitat nu are o complexitate deosebita. Dupa cum se poate observa are o structura modulara (placa de test, folosesc controller-ul pic 16F876) si modul dedicat care comanda motorul. Motorul este luat de la un Hdd distrus, are 3 fire de alimentare si 18 pasi pe rotatie. Ordinea in care se aplica tensiunile pe pinii motorasului este prezentata in figura urmatoare:

Pentru ca programul sa fie cat mai flexibil, starile portului care comanda motorul sunt scrise intr-un tabel. Astfel programul poate fi modificat foarte usor editand datele din tabel si o instructiune marcata prin comentarii care contine numarul maxim de pasi de citire. Pinii care comanda motorul sunt din PORTC[5:0].

Montajul de test. Cei mai experimentati isi vor da seama ca LCD-ul afiseaza invers decat este facuta fotografia. Dar daca am apucat sa fac insemnarile cu marker pe cablaj, am hotarat sa economisesc ceva timp...

Page 11: Controlul unui motor pas cu pas

Modulul ce cuprinde motorul pas cu pas:

Perioada la care se fac pasii este determinata de TMR1 & CCP1. Acesta poate fi modificata prin ajustarea valorii registrelor CCPR1H:CCP2lL. Acest lucru se face fie din butoane PORTA[0] pentru UP, PORTA[1] pentru DN, sau serial de la PC. Daca folosim comanda de la PC, putem opta pentru a varia perioada in mod discret (sare direct la perioada pe care o transmitem) sau continuu (prin incrementarea sau decrementarea a CCPR1H:CCPR1L pana ajunge la valoarea dorita). Pentru a varia in mod discret sau continuu selectam din PORTA[2], fiind afisata in a doua jumatate a LCD modul curent de functionare. In prima jumatate a LCD-ului este afisata in mod zecimal valoarea reg CCPR1H:CCPRlL. Pentru LCD pe care l-am folosit (1*16) pentru a afisa prima parte folosim AC (Address Counter) =00H-07H, iar pentru urmatoarele 8 pozitii AC=40H-

Page 12: Controlul unui motor pas cu pas

47H.(daca doriti mai multe informatii despre LCD-uri am pus un document "LCD.pdf" la rubrica downloads/protocoale). Daca intentionati sa faceti vreo placa de test (de genul celei folosite de mine) aveti grija sa conectati pinii DB[4:7] cu pinii PORTx[0:3] sau PORTx[4:7] si nu PORTx[3:0] sau PORTx[7:4]. Astfel o sa patiti ca mine, sa inversati bitii ce trebuie transmisi la LCD: 7-0, 6-1, 5-2, 4-3 (din acest motiv am facut o gramada de rotiri). Programul care trimite datele serial este scris in VC6.0++; transmite 2 byti a caror valoare maxima este de 65535. Pentru a inchide programul transmitem nr. 0 (zero).

Sursele se gasesc aici. Schemele si cablajele se gasesc aici. Programul cu care trimit date serial si sursele in VC6.0++ se gasesc aici.

Multa bafta!

© Articol editat la data de:

2004-05-10 10:15:48

Despre mine

In prezent ma ocup cu design-ul de dispozitive embbeded la comanda, realizarea de firmware in limbaje C si ASM, dar si software pentru PC dezvoltat in C#. Printre tehnologiile utilizate se enumera dispozitive USB simple si compozite, interfatarea cu cititoare de carduri RFID folosind wiegand sau porturi seriale, echipamente de plata, conexiuni GPRS, dispozitive DMX-512 de tipul master si slave etc. Mai multe detalii puteti gasi la adresa web www.eldevices.ro.

Proiectele de pe acesta pagina au fost realizate in timpul primilor ani de facultate si au doar un rol educativ. Din pacate controllerele utilizate in proiectele prezentate aici sunt aprope de incheierea ciclului de viata, insa exista membri ai acestor familii ce sunt compatibili si pot substitui controllerele originale.