Skip to content

notcamelcase01/Blenders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blenders 🌈

Project Multicolor 3D printing

Problem Statement

  • 3D Printed products are usually monotonous in colour
  • Inability to print object in a variety of colours in the same build
  • Enable products to closely emulate the original and make it consumer friendly

Prototype Overview

  • To provide a proof of concept of mixing of heated filaments in the extruder to achieve varying grayscale outputs
  • To show that multicolour 3d printing can be achieved at much lesser cost than that is commercially available

Control Algorithm and Code Implementation

Mixer

Code arduino to run stepper accordingly
File name : decoder.py 🔗
Libraries used :

  • numpy pip install numpy
  • PIL pip install Pillow
  • pyfirmata pip install pyfirmata
  • scipy pip install scipy

Input : A single color gray image or gray intensity (0-255)
Output : Two stepper motor extruding PLA (black and white) at speeds to give the input grayscale variation

Variable Definations 🔗

  • resolution : how close to input gray image // high resolution increases voxel length is not good
  • min_speed : maximum time delay for nema17 stepper motor maximum time delay minimum speed
  • step : array of white and black step number

Function Definations

def create_image 🔗

Creates a test image not required to be executed download image from this link and save it in same directory of python file(decoder.py)


def get_intensity 🔗

Fetchs gray scale intensity of image assumme image to be mono-colored for testing purpose just input required gray scale intensities in color_grad variable at At line 140 of decoder.py . color_grad is an array containing different voxel color informtion for one voxel just input one item in list color_grad = [200]
For Example

color_grad = [0]*10 + [128]*5 + [200]*1 
This will print out 10 voxel of gray intensity 0 , 5 of 128 and 1 of 200

def motor_white / def motor2_black 🔗

Takes N number of steps to be executed as variable and runs the stepper for N times


def step_genertor 🔗

For a certain gray value we figure out how many steps should black/white motor runs say W,B
Divide W,B as sum of W = w 1+ w 2+ w 3 .... and similarly for black
For particular gray scale returns an array of which have reduced number steps in format [[w 1,b 1],[w 2,b 2]........] where w,b correspond to white and black .

White stepper runs w 1 steps
Black runs b 1 steps
again
White runs w 2 steps
Black runs b 2
goes on .............

def pixel 🔗

Same as step_generator just cares of edge cases and gives final array of steps required to print one voxel


def printer 🔗

Actuates motor and start printing . Receives one array needed to print a voxel


Run the project

  • Install Python 3.6(Python3.+ would work) and pip Check Here for installation
  • Download project
  • Open cmd in project directory Blenders>pip install virtualenv
    Blenders>cd venv/Scripts
    Blenders/venv/Scripts>activate.bat
    Blenders/venv/Scripts>cd ..
    Blenders>python decoder.py Run this command while you are connected to arduino uno check port by default its COM5 in decoder.py line 150 change it as in your System

Arduino Uno

Contributers

  • Ravindra Sagar ( BTech ME , IITB )
  • Nishant Venkatesh ( BTech ME , IITB )
  • Sujeet Singh ( BTech ME , IITB )
  • Prakhar Joshi ( BTech ME , IITB )
  • Maurya Patel ( BTech ME , IITB )
  • Sheryas Bhatt ( BTech ME , IITB )
  • Himanshu Singh ( BTech ME , IITB )
  • Aman Gautam ( BTech ME , IITB )