Autorul poate fi contactat la adresa: Login pentru adresa
Tema proiectului este aceea de a proiecta o busola electronica cu ac asemanatoare celor folosite in industrie.
Busola va functiona in modul urmator:
• microcontroller-ul va prelua prin intermediul unui magnetometru coordonatele 3D ale directiei actuale relative la deviatia fata de polul Nord
• folosind aceste coordonate se determina gradul de deviatie (notatie: gd)
• folosind gradul de deviatie si gradul asociat pozitiei actuale (notatie: gp) a acului atasat unui motor stepper se determina rotatia necesara motorasului astfel incat acul acestuia sa indice gradul de deviatie (gd)
i.e: daca gradul de deviatie gd este 250° si acul busolei indica 200° atunci acesta trebuie rotit cu 50° in sensul acelor de ceasornic
• microcontroller-ul transmite motorului gradul de rotatie calculat
• motorul stepper se roteste corespunzator
Modul de functionare este exemplificat schematic in cazul diagramei bloc ce urmeaza.
Lista de componente
• Placa PM2016 + componentele ei
Extra:
• Magnetometru 3 axe HMC5883L cu stabilizator si adaptor logic
1. Tensiune de alimentare: 3 - 5V 2. Protocol de comunicare: I2C 3. Cantitate: 1 4. Achizitionare: http://olx.ro/oferta/senzor-magnetometru-digital-compas-3-axe-hmc5883l-arduino-gy-273-ID2Namr.html 5. Pret: 13 RON
• Set
º Motor stepper 28BYJ-48 1. Tensiune de alimentare: 5V 2. Nr. faze: 4 3. Rotatie per pas: 5.65° / 64 4. Cantitate: 1
º Modul driver motor ULN2003 1. Cantitate: 1 Pret set: 24.95 RON Achizitionare set: http://olx.ro/oferta/set-motor-pas-cu-pas-28byj-48-5v-si-driver-uln2003-albastru-ID4z5RI.html#75a413e5d6
• 2 rezistente 10K & 2 tranzistoare BSS138 Pret: 2 RON
Schema electrica
Mediu de dezvoltare: Programmer's Notepad compiland cu WinAVR
Conectarea si comunicarea cu magnetometrul HMC5883L se face folosind interfata I2C, iar pentru asta am gasit online o biblioteca open source deja implementata pentru modelul acesta de magnetometru.
Pentru interactiunea cu motorul pas cu pas, am folosit ideologia prezentata in cadrul schemei bloc al proiectului. Se considera ca acul motorului este indreptat initial la 0°, dupa care se calculeaza gradele actuale obtinute pe baza coordonatelor primite de la magnetometru si motorul se roteste astfel incat sa arate gradele calculate. Dupa care, se actualizeaza variabila care retine noile grade indicate de acul motorasului si procesul se repeta. Pentru rotirea efectiva a acestuia, am transformat un cod de Arduino pentru AVR. Pentru a roti motorul trebuie ca pe cei 4 pini conectati la microcontroller sa avem 8 configuratii de semnale pe care sa le transmitem repetat catre driver. Pentru a roti stepperul in sens trigonometric, aceste configuratii trebuie executate invers: de la ultima la prima. Stiind ca pentru o rotatie completa motorului ii trebuie 4096 pasi, eu lucrand cu grade intregi, unitatea mea de referinta a fost de 12 pasi per grad. De asemenea, am realizat si o optimizare a rotatiilor astfel ca rotatia maxima pe care o poate face in orice sens este de maxim 180°.
Pentru mai multe detalii puteti urmari comentariile din codul pus la dispozitie in sectiunea de Download, dar si resursele puse in sectiunea Bibliografie/Resurse pentru o mai buna intelegere a functionalitatilor
<fc #FF0000>Proiectul poate fi vizualizat la urmatoarea adresa:</fc> BeIr6BNn4FY
Proiectul a fost foarte interesant datorita faptului ca mi-am dezvoltat abilitatile practice si teoretice si am realizat ceva de care o sa imi amintesc cu bucurie multi ani de acum incolo. In plus, toata lumea a realizat proiecte deosebite din care am ramas cu ceva. Proiectul meu nu a fost greu, nu m-am chinuit decat sa fac adaptarea pentru SCL si SDA intrucat magnetometrul de abia il tineam in mana si tranzistorii de asemenea. Oricum, a meritat caci totul functioneaza cum ma asteptam de la inceput.
Datasheet ATMega http://cs.curs.pub.ro/wiki/pm/_media/doc8272.pdf
Datasheet tranzistor BSS138 https://cdn-shop.adafruit.com/datasheets/BSS138.pdf
Datasheet motor stepper 28BYJ-48 http://robocraft.ru/files/datasheet/28BYJ-48.pdf
Datasheet driver ULN2003 http://cdselectronics.com/kits/uln2003.PDF
Datasheet magnetometru 3 axe HMC5883L https://cdn-shop.adafruit.com/datasheets/HMC5883L_3-Axis_Digital_Compass_IC.pdf
Biblioteca I2C Magnetometru HMC5883L http://davidegironi.blogspot.ro/2013/01/avr-atmega-hmc5883l-magnetometer-lib-01.html#.V0QywmPYrR0
Wiring and Test Magnetometru HMC5883L https://learn.adafruit.com/adafruit-hmc5883l-breakout-triple-axis-magnetometer-compass-sensor/wiring-and-test
Filmulete:
Functionalitate motor stepper 28BYJ-48 https://www.youtube.com/watch?v=B86nqDRskVU
Programare Arduino motor stepper 28BYJ-48 https://www.youtube.com/watch?v=I8XsE6Bb99s
Magnetometru HMC5883L https://www.youtube.com/watch?v=aKIuJaFk4V0