(Created page with "{{MOST}} Back to recyclebot Coming soon...")
 
(Add calibration)
Line 3: Line 3:
Back to [[recyclebot]]
Back to [[recyclebot]]


Coming soon...
This page describes the DC powered filament extruder that was designed by MOST.
 
Note that calibration (described below) requires a GNU/Linux system and reasonable advanced knowledge of hard- and software. In particular, you need to know how to edit a program, how to compile a program for a standalone AVR microcontroller, and how to upload that program to the microcontroller.  This page explains briefly how to do those things, but the explanations are not aimed at beginners.
 
Build procedures will be added later.
 
= How to calibrate the DC filament extruder =
This requires a GNU/Linux system and reasonable advanced knowledge of hard- and software.  In particular, you need to know how to edit a program, how to compile a program for a standalone AVR microcontroller, and how to upload that program to the microcontroller.  This page explains briefly how to do those things, but the explanations are not aimed at beginners.
 
== Overview of the steps ==
# Build debugging firmware.
# Upload debugging firmware to sensor board.
# Upload monitoring firmware to an Arduino.
# Check the sensor output.
# Adjust the debugging firmware and repeat until output is satisfactory.
# Upload adjusted regular firmware to sensor board.
# Adjust the firmware and repeat until output is satisfactory.
# Upload production firmware to sensor board.
# Build main board firmware and upload it to main board.
 
== How these steps work ==
Here is some information on how these steps work.
 
=== Building firmware ===
The github repository contains all the sources in the firmware directory.  The
firmware for the main board is in extruder, for the sensor is in sensor.  The
code in sensor-graph is for the monitoring Arduino that is used to show the
measured data on screen.
 
If all the requirements are installed, everything can be built using the make
command.  (Installing the arduino-mk package should pull everything in that you
need.)  The code in extruder and sensor-graph should also be buildable from the
Arduino UI, but that may not work.
 
=== Uploading firmware ===
Firmware is uploaded using ICSP.  We use a Beaglebone which connects four of
its digital pins and the 3.3V power to the ICSP connector.  An avrdude
configuration file is required to make this work.  Also, the avrdude version
from Debian Jessie (and earlier) has a bug that prevents it from working.  This
has been fixed in Stretch.  For an example of how this is done, see flash-bbb
and avrdude.conf in https://github.com/mtu-most/franklin/tree/master/server/.
 
When uploading firmware, the ICSP connector on the board that is programmed
must be used.  This is the 6-pin shrouded header.  The key of the header is
always on the side of the power.
 
=== Running the monitor program ===
For this, the computer needs to have
[https://github.com/wijnen/python-websocketd python-websocketd] installed
(which requires python-network and python-fhs from the same place).  The
firmware must be installed on an arduino, and a cable must connect all pins
between the ICSP header on the Arduino and the ISCP header on the sensor board.
The Arduino does not have a shrouded header; the key should be on the outside
of the board.  If in doubt, measure which pins have 5V on them.
 
The server script needs to get the serial data from the Arduino on its standard
input.  This means the port first needs to be set up, and then it must be given
to the server:
 
  stty -F /dev/ttyACM0 115200 raw
  ./server < /dev/ttyACM0
 
Then use a browser to go to http://localhost:4567/.  You should see a graph of
the sensor's measurement.
 
=== Running the spy program ===
For the second step, the output of the regular firmware must be monitored.
This is done with the sensor-spy program.  It is loaded on an Arduino similar
to the sensor-graph program, and it outputs the last received value of the
sensor to the serial port.
 
To use it, simply view the output of the serial port with:
 
  cat /dev/ttyACM0
 
When moving a piece of filament through the sensor, it should change its value.
 
=== What to change ===
The senor firmware has two settings defined near the top that need to be
changed depending on your build.  They are called SKIP and DELAY.  The ouput
from the sensor should be approximately horizontal.  In most of the sensor, it
is, but near the edges it goes down to zero.  Because of this, the edges are
not used.  SKIP defines how many pixels are skipped on both sides.  Note that
the total number of pixels is 768, and it measures every 2^EACHBITS pixels, so
if you see something happen at pixel 20, and EACHBITS is 5, it's really pixel
20*32=640.
 
For monitoring, you may want to decrease EACHBITS.  Note that the total number
of measured pixels cannot be larger than 255.
 
DELAY is the integration time, in arbitrary units.  Set this so the signal is
as high as possible, but doesn't overexpose.
 
The lowest pixel is used as the position of the shadow.  But if its value is
higher than VALID_LIMIT, it is discarded and no measurement is sent to the main
board.  So make sure it is above that value normally, and the shadow takes it
below that value.
 
When this is done, the normal firmware should be uploaded.  But initially, this
is done with one change: the line defining SEND_MAX should be uncommented.
That makes the sensor send the maximum value of each measurement instead of the
position of the shadow.  The sensor-spy program should be used to check if
DELAY is good, and if it isn't it should be adjusted.
 
Once it's good, the SEND_MAX line should be commented out again and the final
version of the firmware should be uploaded.  The sensor-spy can be used again
to check that everything works well.

Revision as of 14:55, 29 April 2016

Back to recyclebot

This page describes the DC powered filament extruder that was designed by MOST.

Note that calibration (described below) requires a GNU/Linux system and reasonable advanced knowledge of hard- and software. In particular, you need to know how to edit a program, how to compile a program for a standalone AVR microcontroller, and how to upload that program to the microcontroller. This page explains briefly how to do those things, but the explanations are not aimed at beginners.

Build procedures will be added later.

How to calibrate the DC filament extruder

This requires a GNU/Linux system and reasonable advanced knowledge of hard- and software. In particular, you need to know how to edit a program, how to compile a program for a standalone AVR microcontroller, and how to upload that program to the microcontroller. This page explains briefly how to do those things, but the explanations are not aimed at beginners.

Overview of the steps

  1. Build debugging firmware.
  2. Upload debugging firmware to sensor board.
  3. Upload monitoring firmware to an Arduino.
  4. Check the sensor output.
  5. Adjust the debugging firmware and repeat until output is satisfactory.
  6. Upload adjusted regular firmware to sensor board.
  7. Adjust the firmware and repeat until output is satisfactory.
  8. Upload production firmware to sensor board.
  9. Build main board firmware and upload it to main board.

How these steps work

Here is some information on how these steps work.

Building firmware

The github repository contains all the sources in the firmware directory. The firmware for the main board is in extruder, for the sensor is in sensor. The code in sensor-graph is for the monitoring Arduino that is used to show the measured data on screen.

If all the requirements are installed, everything can be built using the make command. (Installing the arduino-mk package should pull everything in that you need.) The code in extruder and sensor-graph should also be buildable from the Arduino UI, but that may not work.

Uploading firmware

Firmware is uploaded using ICSP. We use a Beaglebone which connects four of its digital pins and the 3.3V power to the ICSP connector. An avrdude configuration file is required to make this work. Also, the avrdude version from Debian Jessie (and earlier) has a bug that prevents it from working. This has been fixed in Stretch. For an example of how this is done, see flash-bbb and avrdude.conf in https://github.com/mtu-most/franklin/tree/master/server/.

When uploading firmware, the ICSP connector on the board that is programmed must be used. This is the 6-pin shrouded header. The key of the header is always on the side of the power.

Running the monitor program

For this, the computer needs to have python-websocketd installed (which requires python-network and python-fhs from the same place). The firmware must be installed on an arduino, and a cable must connect all pins between the ICSP header on the Arduino and the ISCP header on the sensor board. The Arduino does not have a shrouded header; the key should be on the outside of the board. If in doubt, measure which pins have 5V on them.

The server script needs to get the serial data from the Arduino on its standard input. This means the port first needs to be set up, and then it must be given to the server:

 stty -F /dev/ttyACM0 115200 raw
 ./server < /dev/ttyACM0

Then use a browser to go to http://localhost:4567/. You should see a graph of the sensor's measurement.

Running the spy program

For the second step, the output of the regular firmware must be monitored. This is done with the sensor-spy program. It is loaded on an Arduino similar to the sensor-graph program, and it outputs the last received value of the sensor to the serial port.

To use it, simply view the output of the serial port with:

 cat /dev/ttyACM0

When moving a piece of filament through the sensor, it should change its value.

What to change

The senor firmware has two settings defined near the top that need to be changed depending on your build. They are called SKIP and DELAY. The ouput from the sensor should be approximately horizontal. In most of the sensor, it is, but near the edges it goes down to zero. Because of this, the edges are not used. SKIP defines how many pixels are skipped on both sides. Note that the total number of pixels is 768, and it measures every 2^EACHBITS pixels, so if you see something happen at pixel 20, and EACHBITS is 5, it's really pixel 20*32=640.

For monitoring, you may want to decrease EACHBITS. Note that the total number of measured pixels cannot be larger than 255.

DELAY is the integration time, in arbitrary units. Set this so the signal is as high as possible, but doesn't overexpose.

The lowest pixel is used as the position of the shadow. But if its value is higher than VALID_LIMIT, it is discarded and no measurement is sent to the main board. So make sure it is above that value normally, and the shadow takes it below that value.

When this is done, the normal firmware should be uploaded. But initially, this is done with one change: the line defining SEND_MAX should be uncommented. That makes the sensor send the maximum value of each measurement instead of the position of the shadow. The sensor-spy program should be used to check if DELAY is good, and if it isn't it should be adjusted.

Once it's good, the SEND_MAX line should be commented out again and the final version of the firmware should be uploaded. The sensor-spy can be used again to check that everything works well.

Cookies help us deliver our services. By using our services, you agree to our use of cookies.