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:

  • PCB;
  • Microcontroller ATMega324
  • Componente de bază (rezistenţe, LED-uri, condensatoare etc);
  • Motoare stepper;
  • Servomotor;
  • Drivere pentru motoarele stepper;
  • Fire conexiune;
  • Baterii de alimentare pentru drivere;
  • Modul convertor USB la serial;

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)
  • roteste motorul stepper in sensul acelor de ceasornic pentru un numar dat de pasi;
void rotate_anticlockwise(volatile uint8_t *port, int pin0, int pin1, int pin2, int pin3, int period, int steps)
  • roteste motorul stepper in sens invers acelor de ceasornic pentru un numar dat de pasi;
void raise_pen()
  • trimite un impuls servomotorului de 2 ms care va ridica instrumentul de scris de pe hartie
void lower_pen()
  • trimite un impuls servomotorului de 1 ms care va cobori instrumentul de scris pe hartie
void init_stepper1()
void init_stepper2()
  • initializeaza pinii care vor controla motoarele stepper;

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

pm/prj2019/astratulat/4560102.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0