32 Generation X 1 Electronics
Here we discuss driving a RepRap with an Atmel AVR32, a 32-bit microprocessor capable of running Linux.
(This is not the ARM microprocessor that Atmel produces, although they have some similarities -- 32-bit RISC, runs Linux, etc. -- see Vaporware Electronics for ARM processors) (This is very different from the Atmel AVR ATmega32, an 8-bit microprocessor in a 40 pin DIP or a 44 pin TQFP).
|FILE ID#||TYPE||DESCRIPTION||AVAILABLE FORMATS||CREATED/RESERVED BY|
|Your-File-Name||SOLID MODEL ASSEMBLY||These are CAD files for the Solid Model Assembly||.xml.zip, .stl.zip||--Example User 12:00, Today's Date 20xx (UTC)|
|Your-File-Name||CAD FILES FOR PARTS||These are CAD files for each part.||.xml.zip, .stl.zip||--Example User 12:00, Today's Date 20xx (UTC)|
|Your-File-Name||EVEN MORE FILES||These are are even more files.||.xml.zip, .stl.zip||--Example User 12:00, Today's Date 20xx (UTC)|-|
|Your-File-Name||SOLID MODEL ASSEMBLY||This is the final finished machine||N/A||--Example User 12:00, Tomorrow's Date, 20xx (UTC)|
Please edit this and click the links to put in your own files! --Sebastien Bailard 08:34, 10 September 2010 (UTC)
I have been looking at the Atmel 32 microcontrollers, and I think we should start a design group for one of these. It not only helps solve the problem of microstepping multiple axes at once, it also makes USB interface easier, and adds Ethernet 10/100. But it certainly will not work on a single sided PCB, so it does not belong in the Gen 7 approach, which I agree is good for getting a board that a Mendel could possibly make. However, the 32 bit machines would allow for MANY extra interfaces, faster processing, more axes, more motors, more heaters. So I suggest we also start a working group to work on a 100 pin LQFP based design with lots of expansion built in. It will be longer before a reprap can build such a board, but for pre-purchased electronics it will open up whole new vistas for extra functions and capabilities for next generation repraps.
1) More than 3 stepper axes. 7 should be a minimum
Whether controlling a milling head (three extra axes plus motor control), adding a lathe to the work area (a different 3 extra axes, at least), pointing a nozzle sideways and rotating it to extrude long horizontal overhangs or embed fibers or wires, adding cooling air to freeze plastic in place or coolant liquid for metal cutting, stepper or dc motor controlled conveyor belt base to allow continuous building of parts, 3D scanning requiring camera, light source(s), and/or product to be moved around more than just the existing three, motor controls for recycler
2) More than 2 temperature reading/controlling. 4 should be a minimum
An enclosed cabinet allows for controlling ambient air temperature as well as bed temperature. With multiple extruder heads, some things can switch to the active head, but others will need to be kept in a standby state, and 'warm' plastic is at the top of the list, controlling the temperature of cooling air and/or fluid, safety check on electronics or motors getting too hot, temperature of most recently work part of material (plastic may sag, metal may puddle and run), temperature or raw stock in recycler, temperature of raw granules being converted to filament, temperature in granule fuser, temperature of filament coming out.
3) More than 3 end stops. 17 should be a minimum (2 for each of 7 axes, plus 3)
For safety, there should be a power off limit stop at both ends of every movement axis, re-zeroing points for each axis if separate from end of range limit stops, with multiple heads it will be necessary to re-zero the 'working point' of each extruder/mill head, surface sensor to correct Z axis for warpage in build plate for first few layers, detect electrically or optically fiducial marks on work surface, partially completed piece.
4) Adding Absolute or Relative encoders. 7 should be a minimum.
To eliminate lost steps, provide more repeatability, we may want to add linear and/or rotary optical or magnetic encoders. Absolute encoders would reduce or eliminate the need for re-zeroing each axis during a build. It also opens up the possibility of using DC-brushed motors, or cheaper, underpowered steppers and correcting for occasional lost steps.
5) PWM controllers for servos. 4 should be a minimum
Some of the added motion functions will be driven by servos. Such as rotating the sideways pointed extruder, switching between extruder orifice sizes, grabbing and releasing extruder heads, controlling lighting or camera movement for 3D scanning.
6) Additional Analog inputs. 4 should be a minimum
Environmental testing inside a closed cabinet other than just temperature, weight of filament or granules left to work with, pull force needed to unroll filament to detect a jam, track granule to filament quality in recycler.
7) Digital outputs or motor controls. 8 should be a minimum
Status LEDs to to indicate working, filament jam, over heated, head crash, axis error, product build error, finished. Motors for recycler, moving bed, parts removal, milling spindle, lathe rotation.
8) Adding outside world I/O. Spare RS232 port should be a minimum
LCD displays of extruder temp, bed temp, cabinet temp, run time. Full LCD/touch screen display to select parts files to print and control functions. RS232 terminal emulator to report all internal data and monitor operations, ethernet port with web server to allow ethernet interface for control, monitoring (3D scanning) of current part be constructed, download code for more parts, select from files in memory to print.
9) Memory storage. 1 GB should be a minimum
Current on-chip flash memory appears big enough to handle programming, but file storage for parts to make, status results of completed builds, store on built in SD flash drive, read from USB flash drive, extra compact flash or SD/microSD, read from CDROM or DVD.
10) Operating system. yes? no?
The realtime, real world interface and process control operations of a reprap makes it important to have a very fast response time program. Step pulses fro axis movement must be very precisely timed and controlled. This leads to no operating system at all, just interrupt driven routines, or a good, fast real time OS. On the other hand, human interface, possibly with GUI, web interface, ethernet stack, hirearchical file structures all are much easier to do from a standard OS, like Linux, Windoze, MAC.
11) High current carrying capacity. 40 amps of +12volts and 10A 0f +5volts a minimum.
In order to power the stepper motors, which might grow bigger as repraps grow to bigger build tables, we should plan for at least 4A per stepper motor. We may also may have a DC motor or two on a H-bridge motor driver, and that should be able to draw up to 4A. But most of all, the bed heater needs to 200W, each extruder heater at least 20W, and any additional cabinet or other heater another 20W. With rarely more than 4 of the 7 steppers moving at once, there is a need for 4*4 or 16A of 12v power for the stepper drivers. Plus a DC motor makes it 20A. The possible 3 heaters total 240W or 20A of +12v. There may also be servos running off of the 5v supply. Totaling all the +12v gives 40A, which often means 2 or more +12v supply lines from a standard 500W PC switching power supply, and 10A of +5v, which is easily provided by the same power supply.
1) A single, all-inclusive motherboard to reduce parts count and cost
2) Some degree of modularity allowing replacement of high current parts (MOSFETs, Stepper/Motor Drivers)
I have also been looking at hardware. No one chip can handle all the I/O described above. There are 4 main solutions. A) Use a big chip and add I2C (or CANbus or RS232 or other bus) based helper chips. I believe that there are many types of I2C addons for multiple PWM channels, ADC and DAC coverters, extra memory, possibly even stepper controllers. cool smiley Use a main control/interface chip with many secondary chips. Once again, the I2C bus, or other communications channel, allows a single master chip to separate tasks and assign them to secondary chips. One for doing all the temperature controls, one for main axis stepper timing and limit switches, one for secondary steppers and their switches, one for reading optical encoders, one for low level display (LEDs, simple LCD, etc). 3) Step up to a pentium based machine. The PC 104/plus single board computer is still more hardware interface, real world process control oriented. And they have a bus structure that can be used to expand the number of stepper motors and PWM channels they can handle. It would be easier to add code for GUI interfaces, but these usually don't run a full OS. 4) A mix of a pentuim computer running a standard OS (Linux?) to handle the user interface, web interface, file storage, and communicating with a microcontroller chip(s) to handle the real time process control in a custom designed board or box. At this point, we might as well put most of it into a small computer case and power supply, so that ethernet ports, CD/DVD drives, etc can be added.
There are other, larger single board computers (SBCs), but they rapidly get more expensive, and less real world timing and control oriented.
The other end of the spectrum would be to give up and microcontrollers, design and build low level I/O boards and use EMC2 to run a normal desktop computer. This is the most expensive, but also has the greatest room for expansion. And the 3D modeling software can now run natively on the reprap machine.
- The AVR32 Linux project http://avr32linux.org/ (it's a wiki)
- AVRfreaks: http://www.avrfreaks.net/wiki/index.php/Documentation:AVR32_Linux_Development (another wiki)
- bluwiki: AVR32 Linux
- Mono port to AVR32 Linux
- [http://store.stackfoundry.com/dev-tools/copper-avr32-stick.html Copper (AVR32 Stick)
AVR32 breadboard friendly module]