Table of Contents

WritingMachine

Introducere

Proiectul presupune implementarea unui dispozitiv de tip plotter care va scrie pe hârtie un cuvânt primit ca input de la tastatură. Poate fi util în procesul de automatizare a scrierii unor documente sau în caligrafie, păstrând iluzia prezenţei factorului uman.

Descriere generală

Procesul de scriere se va realiza prin intermediul unui mini-plotter pe planul orizontal XoY, mişcarea pe axe fiind controlată cu ajutorul motoarelor stepper. Deoarece acestea au nevoie de un curent de aproximativ 1A (cel transmis de pe Atmega nu va fi deci suficient), motoarele vor fi conectate la drivere de control alimentate dintr-o sursă de tensiune mai puternică.

Instrumentul de scris va fi translatat pe verticală, prin intermediul unui servomotor, care îl va apropia/îndepărta de suprafaţa de scris. Cuvântul va fi trimis ca input ASCII prin interfaţa serială.

Schema bloc:

Hardware Design

Listă componente:

Schemă electrică:

Software Design

Functii implementate:

void rotate_clockwise(volatile uint8_t *port, int pin0, int pin1, int pin2, int pin3, int period, int steps)
void rotate_anticlockwise(volatile uint8_t *port, int pin0, int pin1, int pin2, int pin3, int period, int steps)
void raise_pen()
void lower_pen()
void init_stepper1()
void init_stepper2()

Pentru transmisia pe seriala am folosit codul din laborator.

Dispozitivul asteapta un input pe seriala - un caracter care va determina urmatoarea actiune: coboara/ridica instrumentul de scris, deplaseaza cadrul din mijloc pe Ox sau pe Oy, scrie o linie sau un caracter;


<WRAP center round download 60%> cod_sursa_final.zip </WRAP>

Rezultate

Am reusit sa programez motorasele sa se miste:

Am inceput construirea cadrului de sustinere pentru plotter:

Rezultatul final arata asa:

Am reusit sa fac motoarele sa miste cadrul din mijloc in plan XoY, iar servomotorul ridica si coboara instrumentul de scris. Dispozitivul reuseste sa traga linii orizontale sau verticale.

Am renuntat la alimentarea driverelor pentru motoarele stepper cu baterii externe de 9V (se consumau foarte repede), in schimb le alimentez direct de la Vcc de la placa de baza.

Deplasarea o controlez prin comenzi date de la tastatura prin interfata seriala: pot controla miscarea pixului sus/jos, sa aleg directia pe care sa se deplaseze, precum si distanta fata de punctul curent. Miscarea pe axe este insa destul de lenta din cauza greutatii cadrului din mijloc.

Concluzii

Mi s-a parut un proiect interesant si util - am invatat sa lipesc componente pe un PCB si cum sa controlez motoarele pas cu pas si servomotoarele. De asemenea, mi s-a parut o provocare partea mecanica - construirea si asamblarea cadrului de sustinere, unde am incercat mai multe variante pana am ajuns la un rezultat satisfacator.

Bibliografie/Resurse

http://cs.curs.pub.ro/wiki/pm/prj2019/astratulat/4560102?do=export_pdf

Datasheets:

Link-uri utile