Ovih dana me baš i nije bilo na blogu, bila sam poprilično zauzeta traženjem nekog cool projekta. Ljeto je dugo (nadam se) pa da sve te dane bezveze ne potratim surfajući netom odlučila sam pronaći neki projektić i time se pozabaviti.
Dakle sigurno se pitate što je to ploter, obzirom da slika govori 1000 riječi, a video sigurno i više to je ovo:
Za sada sam uspjela nabaviti step motor sa 6 žica, pošto je takvima (tatinim riječima) najlakše upravljati. U videu se ne koristi takav motor, no ionako nigdje nema koda i sheme kako tako nešto napraviti, pa ću sve morati sama, tako da ovo ne bi trebao biti problem. Jučer sam uspjela natjerati motor da se okreće, što je zapravo jako veliki uspjeh! Jer mi prekjučer to baš i nije išlo.
Ukratko o mom 6-žičnom motoru:
Sa 1,2,3,4 sam označila žice koji su njegovi izvodi koji se spajanju "na" pinove čipa kojim se upravlja motorom, a A i B su izvodi motora koji se spajaju na "+" napajanja motora, "-" napajanja motora se spaja zajedno sa GND-om čipa, no o tome malo kasnije.
Kada je pred vama step motor sa 6 žica glavno je pitanje kako odrediti koja je koja žica. Bezveze je tražiti po internetu koja boja žice odgovara žici 1, pa koja boja odgovara čici 2 itd. Najlakši način je uzeti ommetar i početi mjeriti otpore žica. Svaka zavojnica ima neki otpor jer je to obromna količina bakra.
Kako odrediti:
Uzmete neku žicu i sad gledate gdje vam se javlja otpor, od svega par oma, ukoliko vam ommetar ispisuje da je beskonačan otpor, znači da ste uzeli žicu druge zavojnica (kao što se vidi na slici, 2 zavojnice nisu spojene iz čega slijedi da je otpor beskonačan). Samo kada se uzmu 3 žice međusobno se pokazuje neki manji otpor. Između prve i druge žice je npr. otpor 10oma, sada pogledate onu 3. žicu koja je isto pokazivala otpor s nekom od ove dvije i utvrdite otpor između treće i prve te vidite da je otpor tu 20oma. Iz toga zaključite da prva žica odgovara žici 1 na slici, druga žica odgovara A žici na slici i treća žica odgovara žici 2 sa slike.
Prema istom tom principu odredite i preostale 3 žice.
Nemojte se opterećivati ako otpor između 1 i A, te 2 i A nebude u decimalu identičan, to je normalno pošto i mjerni uređaji griješe kao što je sigurna i neka manja greškica u namotajima zavojnice. Bitno je da su vrijednosti približne.
Kada su žice određene mogla bih objasniti i kako se pokreće step motor...
Kako napisati program... (za lpc1343)
(kod ću na kraju odlomka objaviti)
Svakom pinu odgovara jedan "brojčani" izvod motora, A i B izvode zanemarite za sada (oni se samo spajaju na "+" napajanja). U programu je potrebno inicijalizirati GPIO, definirati neka 4 pina kao izlazna (u registru DIR) i da bi se motor mogao okretati morate tablicu sa slike pretvoriti u kod.
Zapravo je to sve što trebate znati. U nastavku ću napisati neke programske probleme koji me nisu zaobišli.
/*
===============================================================================
Name : main.c
Author : Karolina
Version :
Copyright : Copyright (C)
Description : main definition
===============================================================================
*/
#ifdef __USE_CMSIS
#include "LPC13xx.h"
#endif
a
#include <cr_section_macros.h>
#include <NXP/crp.h>
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
#include "timer32.h"
#include "gpio.h"
int main(void) {
GPIOInit();
init_timer32(0,TIME_INTERVAL);
enable_timer32(0);
LPC_GPIO1->DIR|=0x100;
LPC_GPIO0->DIR|=0x40;
LPC_GPIO3->DIR|=0x5;
LPC_GPIO1->DIR|=0x20;
while (1){
//prvi redak tablice
GPIOSetValue(PORT1,8,0);
GPIOSetValue(PORT3,0,0);
GPIOSetValue(PORT0,6,1);
GPIOSetValue(PORT3,2,1);
delay32Ms(0,5);
//drugi redak tablice
GPIOSetValue(PORT1,8,0);
GPIOSetValue(PORT3,2,0);
GPIOSetValue(PORT0,6,1);
GPIOSetValue(PORT3,0,1);
delay32Ms(0,5);
//treći redak tablice
GPIOSetValue(PORT0,6,0);
GPIOSetValue(PORT3,2,0);
GPIOSetValue(PORT1,8,1);
GPIOSetValue(PORT3,0,1);
delay32Ms(0,5);
//cetvrti redak tablice
GPIOSetValue(PORT0,6,0);
GPIOSetValue(PORT3,0,0);
GPIOSetValue(PORT1,8,1);
GPIOSetValue(PORT3,2,1);
delay32Ms(0,5);
}
return 0 ;
}
No ništa u ovom svijetu nije tako jednostavno kao što se čini (s time imam dosta iskustva), evo nekih problema s kojima sam se susrela kod programiranja...
Cijelu tablicu sam pretočila u kod baš kako piše, što je zapravo djelomično krivo. To jesu kombinacije koje u određenim stanjima moraju biti na pinovima, ALI...
Kod kombinacija u tablici pri prijelazu iz nekog stanja u sljedeće zna se nakratko desiti da je na 3 pina istovremeno isto stanje (to nije dopušteno, tj. motor se neće okretati)! Da bi se to spriječilo prvo se napiše koji se sve pinovi postavljaju u 0, a tek onda se napišu pinovi koji (p)ostaju jedinice. Ako je neki pin 0 ništa se neće desiti, motor neće okrenuti rotor sve stoji, tek kada se prebaci u 1 onda se u motoru nešto promijeni.
Ukoliko ćete to s ledicama prvo ić provjeravat (što toplo preporučam, jer dosta deprimirajuće postaje kad motor ne radi) nećete opaziti da su u isto vrijeme 3 ledice upaljene, no motor hoće i stajati će dosta dugo na mjestu, tj. nikada se neće pomaknuti. Rekla sam da preporučam da s ledicama provjeravate zato što ćete vidjeti da li vam svi pinovi rade, recimo meni pin P0.10 ne radi, zato što bih trebala ić nešto onemogućavati u nekom registru da bi proradio (a iskreno nije mi se dalo to raditi za ovakav primjer).
Još ukratko što se nalazi na kojem pinu: u gornjem primjeru koda i slike.
1 - P1.8
2 - P0.6
3 - P3.0
4 - P3.2
Evo sheme kako je sve spojeno i slike kako to zapravo izgleda
Prvo da prokomentiram (bijelu sliku) shemu. S lijeve strane sam napisla izvodi čipa to zapravo znači da su to svi oni izvodi kojima ćete upravljati motorom, također piše i GND 2 puta na shemi. Ovaj prvi GND je od čipa, znači taj GND spajate zajedno s GND-om napajanja motora (to obavezno morate napraviti, ja nisam i nije radilo, naravno). Na slici (plava pozadina) vidite zelenim slovima napisano napajanje za motor, pošto nemam pravi podesivi ispravljač snašla sam se i raskopala neki stari punjač za mobitel koji na svojim izvodima daje 5,11V, zaokruženo 5V. Također pametno je (obavezno) odgonetnuti + i - tog ispravljača.
Prijatelj mi rekao da bi bilo dobro napisati čemu služe i ove diode na shemi. Naime pošto radim sa zavonicama (koje su sastavni dio motora) normalno je da će se inducirati napon i poteći struja. U ovom slučaju ta struja nam može naštetiti, tj. šteti tranzistorima. Da bi se spriječio negativan utjecaj struje stavljaju se diode kojima je jedina uloga da zaštite tranzistore.
Mislim da je to skoro sve što bi trebalo reći o ovom dijelu prijekta, ukoliko ima kakvih pitanja, konataktirajte me :)
Dakle sigurno se pitate što je to ploter, obzirom da slika govori 1000 riječi, a video sigurno i više to je ovo:
Za sada sam uspjela nabaviti step motor sa 6 žica, pošto je takvima (tatinim riječima) najlakše upravljati. U videu se ne koristi takav motor, no ionako nigdje nema koda i sheme kako tako nešto napraviti, pa ću sve morati sama, tako da ovo ne bi trebao biti problem. Jučer sam uspjela natjerati motor da se okreće, što je zapravo jako veliki uspjeh! Jer mi prekjučer to baš i nije išlo.
Ukratko o mom 6-žičnom motoru:
Sa 1,2,3,4 sam označila žice koji su njegovi izvodi koji se spajanju "na" pinove čipa kojim se upravlja motorom, a A i B su izvodi motora koji se spajaju na "+" napajanja motora, "-" napajanja motora se spaja zajedno sa GND-om čipa, no o tome malo kasnije.
Kada je pred vama step motor sa 6 žica glavno je pitanje kako odrediti koja je koja žica. Bezveze je tražiti po internetu koja boja žice odgovara žici 1, pa koja boja odgovara čici 2 itd. Najlakši način je uzeti ommetar i početi mjeriti otpore žica. Svaka zavojnica ima neki otpor jer je to obromna količina bakra.
Kako odrediti:
Uzmete neku žicu i sad gledate gdje vam se javlja otpor, od svega par oma, ukoliko vam ommetar ispisuje da je beskonačan otpor, znači da ste uzeli žicu druge zavojnica (kao što se vidi na slici, 2 zavojnice nisu spojene iz čega slijedi da je otpor beskonačan). Samo kada se uzmu 3 žice međusobno se pokazuje neki manji otpor. Između prve i druge žice je npr. otpor 10oma, sada pogledate onu 3. žicu koja je isto pokazivala otpor s nekom od ove dvije i utvrdite otpor između treće i prve te vidite da je otpor tu 20oma. Iz toga zaključite da prva žica odgovara žici 1 na slici, druga žica odgovara A žici na slici i treća žica odgovara žici 2 sa slike.
Prema istom tom principu odredite i preostale 3 žice.
Nemojte se opterećivati ako otpor između 1 i A, te 2 i A nebude u decimalu identičan, to je normalno pošto i mjerni uređaji griješe kao što je sigurna i neka manja greškica u namotajima zavojnice. Bitno je da su vrijednosti približne.
Kada su žice određene mogla bih objasniti i kako se pokreće step motor...
Kako napisati program... (za lpc1343)
(kod ću na kraju odlomka objaviti)
Svakom pinu odgovara jedan "brojčani" izvod motora, A i B izvode zanemarite za sada (oni se samo spajaju na "+" napajanja). U programu je potrebno inicijalizirati GPIO, definirati neka 4 pina kao izlazna (u registru DIR) i da bi se motor mogao okretati morate tablicu sa slike pretvoriti u kod.
Zapravo je to sve što trebate znati. U nastavku ću napisati neke programske probleme koji me nisu zaobišli.
/*
===============================================================================
Name : main.c
Author : Karolina
Version :
Copyright : Copyright (C)
Description : main definition
===============================================================================
*/
#ifdef __USE_CMSIS
#include "LPC13xx.h"
#endif
a
#include <cr_section_macros.h>
#include <NXP/crp.h>
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
#include "timer32.h"
#include "gpio.h"
int main(void) {
GPIOInit();
init_timer32(0,TIME_INTERVAL);
enable_timer32(0);
LPC_GPIO1->DIR|=0x100;
LPC_GPIO0->DIR|=0x40;
LPC_GPIO3->DIR|=0x5;
LPC_GPIO1->DIR|=0x20;
while (1){
//prvi redak tablice
GPIOSetValue(PORT1,8,0);
GPIOSetValue(PORT3,0,0);
GPIOSetValue(PORT0,6,1);
GPIOSetValue(PORT3,2,1);
delay32Ms(0,5);
//drugi redak tablice
GPIOSetValue(PORT1,8,0);
GPIOSetValue(PORT3,2,0);
GPIOSetValue(PORT0,6,1);
GPIOSetValue(PORT3,0,1);
delay32Ms(0,5);
//treći redak tablice
GPIOSetValue(PORT0,6,0);
GPIOSetValue(PORT3,2,0);
GPIOSetValue(PORT1,8,1);
GPIOSetValue(PORT3,0,1);
delay32Ms(0,5);
//cetvrti redak tablice
GPIOSetValue(PORT0,6,0);
GPIOSetValue(PORT3,0,0);
GPIOSetValue(PORT1,8,1);
GPIOSetValue(PORT3,2,1);
delay32Ms(0,5);
}
return 0 ;
}
No ništa u ovom svijetu nije tako jednostavno kao što se čini (s time imam dosta iskustva), evo nekih problema s kojima sam se susrela kod programiranja...
Cijelu tablicu sam pretočila u kod baš kako piše, što je zapravo djelomično krivo. To jesu kombinacije koje u određenim stanjima moraju biti na pinovima, ALI...
Kod kombinacija u tablici pri prijelazu iz nekog stanja u sljedeće zna se nakratko desiti da je na 3 pina istovremeno isto stanje (to nije dopušteno, tj. motor se neće okretati)! Da bi se to spriječilo prvo se napiše koji se sve pinovi postavljaju u 0, a tek onda se napišu pinovi koji (p)ostaju jedinice. Ako je neki pin 0 ništa se neće desiti, motor neće okrenuti rotor sve stoji, tek kada se prebaci u 1 onda se u motoru nešto promijeni.
Ukoliko ćete to s ledicama prvo ić provjeravat (što toplo preporučam, jer dosta deprimirajuće postaje kad motor ne radi) nećete opaziti da su u isto vrijeme 3 ledice upaljene, no motor hoće i stajati će dosta dugo na mjestu, tj. nikada se neće pomaknuti. Rekla sam da preporučam da s ledicama provjeravate zato što ćete vidjeti da li vam svi pinovi rade, recimo meni pin P0.10 ne radi, zato što bih trebala ić nešto onemogućavati u nekom registru da bi proradio (a iskreno nije mi se dalo to raditi za ovakav primjer).
Još ukratko što se nalazi na kojem pinu: u gornjem primjeru koda i slike.
1 - P1.8
2 - P0.6
3 - P3.0
4 - P3.2
Evo sheme kako je sve spojeno i slike kako to zapravo izgleda
Prvo da prokomentiram (bijelu sliku) shemu. S lijeve strane sam napisla izvodi čipa to zapravo znači da su to svi oni izvodi kojima ćete upravljati motorom, također piše i GND 2 puta na shemi. Ovaj prvi GND je od čipa, znači taj GND spajate zajedno s GND-om napajanja motora (to obavezno morate napraviti, ja nisam i nije radilo, naravno). Na slici (plava pozadina) vidite zelenim slovima napisano napajanje za motor, pošto nemam pravi podesivi ispravljač snašla sam se i raskopala neki stari punjač za mobitel koji na svojim izvodima daje 5,11V, zaokruženo 5V. Također pametno je (obavezno) odgonetnuti + i - tog ispravljača.
Prijatelj mi rekao da bi bilo dobro napisati čemu služe i ove diode na shemi. Naime pošto radim sa zavonicama (koje su sastavni dio motora) normalno je da će se inducirati napon i poteći struja. U ovom slučaju ta struja nam može naštetiti, tj. šteti tranzistorima. Da bi se spriječio negativan utjecaj struje stavljaju se diode kojima je jedina uloga da zaštite tranzistore.
Mislim da je to skoro sve što bi trebalo reći o ovom dijelu prijekta, ukoliko ima kakvih pitanja, konataktirajte me :)