Control de un motor paso a paso con Attiny85 y L293D

Hace unos días que estoy trabajando en un proyecto donde la idea es controlar un motor paso a paso, con dos objetivos en mente que sea el circuito resultante sea lo más chico posible y las partes sean económicas, no quiero utilizar motores paso a paso muy costosos; me voy a enfocar en los componentes que tengo en casa.

El objetivo es lograr controlar un motor paso a paso, utilizare un 28BYJ-48 y como driver utilizare un IC que es bastante conocido llamada L293D; pero sin emplearlo en algún shield, la idea es solo usar el IC.

Comencemos por el motor; tiene cinco cables/contactos, de los cuales solo utilizaremos cuatro; hay un quinto que no es necesario para nuestro esquema, es el cable de color rojo; se encuentra en uno de los extremos del conector (al menos en mi modelo)

Originalmente L293D tiene 16 pines , podemos emplearlo con 5V, lo cual es idea para alimentar nuestro motor y el Attiny85; si buscamos el datasheet vamos a encontrar el siguiente esquema



Lo conecte siguiendo el siguiente esquema:

Teniendo el L293D deberíamos conectar el pin 1,8,9 y 16 a VCC (5V), los pines 1 y 9 indican que están activas las bobinas, para mi caso va a ser siempre por lo que esta en 5V.

Los pines 4,5,12 y 13 van conectados a GND.

Una de las bobinas del motor (cables amarillo y naranja) van conectados a los pines 11 (OUTPUT 3) y 14 (OUTPUT 4); la otra bobina (cables celeste y azul) van conectados a los pines 6 (OUTPUT 2) y pin 2 (OUTPUT 1).

Respecto al Attiny85, tenemos el siguiente esquema:

Conectamos el pin 4 a GND y el pin 8 a VCC (5V).

El pin 5 (seria el 0 en el código) va conectado al pin 10 (INPUT3) del L293D. El pin 6 (1 en el código) va conectado al pin 15(INPUT4).

El pin 2 va conectado al pin 7 y por ultimo el pin 4 va conectado al pin 2.

La idea es que la bobina A quede conectada a OUTPUT 1 y 2; y la bobina B quede conectada a OUTPUT 3 y 4.

Se puede encontrar el código del ejemplo aquí:
https://gist.github.com/gsampallo/81331043fb443fb627c2697ab53dd342

Programar Attiny85 con Arduino Uno

Me interese en este micro buscando una manera de lograr que algunos proyectos sean fisicamente más pequeños, al no necesitar todos los puertos del Arduino UNO o del Nano, era una buena idea utilizarlo.

El primer paso consiste en cargar el sketch Arduino ISP en nuestro Arduino Uno para que quede listo para programar el Attiny. Para ello abrimos el IDE, vamos a Archivos – Ejemplos – ArduinoISP – ArduinoISP, y lo subimos.

Luego conectamos Attiny de la siguiente manera:

Attiny85 Pin 1  -> Arduino Pin 10
Attiny85 Pin 4  -> Arduino GND
Attiny85 Pin 5  -> Arduino Pin 11
Attiny85 Pin 6  -> Arduino Pin 12
Attiny85 Pin 7  -> Arduino Pin 13
Attiny85 Pin 8  -> Arduino 5v VCC

Finalmente colocamos un capacitor de 10uf del pin RESET del Arduino al GND, tomando en cuenta la polaridad del capacitor.

En el Arduino IDE, debemos cargar la URL en el gestor de tarjetas:

https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Vamos a Herramientas – Placa – Gestor de tarjetas, buscamos Attiny e instalamos el paquete correspondiente.

Luego seleccionamos la tarjeta Attiny85, microprocesador Attiny85, 8 mhz interno, y el puerto correspondiente al que este conectado el Arduino UNO.

Finalmente podemos cargar el sketch. Hay que tener en cuenta que Attiny85 no tiene todos los pins de los que dispone un Arduino UNO o un Nano, con lo cual recomiendo guiarse por el pinout correspondiente: