enigmaelectronica
Excluido
Codigo fuente Turbo Pascal, Accionar un motor Stepper por el puerto paralelo
El programa puede mover o accionar los motores Stepper por el puerto paralelo, aqui se los dejo, queda a criterio de ustedes si lo usan adecuadamente, porque si lo hacen mal o no saben la dirección del BIOS de su puerto Paralelo, pueden hacer estragos
Espero les funcione con aquellos motores Stepper que andan por ahi en impresoras viejas
El programa puede mover o accionar los motores Stepper por el puerto paralelo, aqui se los dejo, queda a criterio de ustedes si lo usan adecuadamente, porque si lo hacen mal o no saben la dirección del BIOS de su puerto Paralelo, pueden hacer estragos

Código:
program steppermotor;
uses crt;
const portAddr=$3BC;
motors=2;
var counter, a: integer;
procedure Low;
{Load one LOW bit in shift register}
begin
port[portAddr]:=$4; { [0100]b }
port[portAddr]:=$0; { [0000]b }
end;
procedure High;
{Load one HIGH bit in shift register}
begin
port[portAddr]:=$2; { [0010]b }
port[portAddr]:=$6; { [0110]b }
port[portAddr]:=$0; { [0000]b }
end;
procedure Strobe;
{Create STROBE signal for shift registers
to latch contents of shift reg. to output}
begin
port[portAddr]:=$1; { [0001]b }
port[portAddr]:=$0; { [0000]b }
end;
procedure Init;
{Makes all outputs of shift register(s) LOW}
begin
port[portAddr]:=$0; { [0000]b }
for counter := 1 to (8*motors) do Low;
Strobe;
end;
procedure Step 1;
{Load pattern for Step 1 [1000 1000]b }
begin
High; Low; Low; Low; High; Low; Low; Low;
end;
procedure Step 2;
{Load pattern for Step 2 [0010 1000]b }
begin
Low; Low; High; Low; High; Low; Low; Low;
end;
procedure Step 3;
{Load pattern for Step 3 [0100 1000]b }
begin
Low; High; Low; Low; High; Low; Low; Low;
end;
procedure Step 4;
{Load pattern for Step 4 [0001 1000]b }
begin
Low; Low; Low; High; High; Low; Low; Low;
end;
procedure Step 2Res;
{Load pattern for Step 2 with R3 in series
[0010 0000]b }
begin
Low; Low; High; Low; Low; Low; Low; Low;
end;
procedure Step 4Res;
{Load pattern for Step 4 with R3 in series
[0001 0000]b }
begin
Low; Low; Low; High; Low; Low; Low; Low;
end;
begin
{User defined}
ClrScr;
Init;
for a:= 1 to 50 do
begin
{Example causes one (slow) turn of both
motors in opposite direction.
mot_2; mot_1; strobe 1+2; Delay
--+------+-------+------+-----
| | | |
V V V V }
Step 1; Step 4; Strobe; delay(10);
Step 2; Step 3; Strobe; delay(10);
Step 3; Step 2; Strobe; delay(10);
Step 4; Step 1; Strobe; delay(10);
end;
delay(1000);
for a:= 1 to 50 do
begin
{Example causes one (fast) turn
of both motors in opposite direction.
mot_2; mot_1; strobe 1+2; Delay
--+------+-------+------+-----
| | | |
V V V V }
Step 4; Step 1; Strobe; delay(5);
Step 3; Step 2; Strobe; delay(5);
Step 2; Step 3; Strobe; delay(5);
Step 1; Step 4; Strobe; delay(5);
end;
Step 2Res;Step 2Res;
Step 4Res;Step 4Res;
Strobe;
end.
Espero les funcione con aquellos motores Stepper que andan por ahi en impresoras viejas