Wednesday, December 23, 2015

V1 boards are in!

Looks like OSHpark beat DirtyPCBs on delivery time this time around.  Now let's see if the boards work at all...  I'll start with the LED and UART test today.


Wednesday, December 9, 2015

PCBs have been submitted to the board houses!

Quick update -- I submitted my PCB to OSHpark a few days ago, and to DirtyPCBs yesterday.  We'll see what the differences are, and how quickly each service turns the boards around!

I also ordered a ton of components from Digikey, so once I have everything in hand, you can be sure to see some status updates here.

Keeping my fingers crossed, hoping that I won't need to do a rev of the board!

Saturday, December 5, 2015

First pass at PCB is done!

I've been spending a few minutes here, a few minutes there, and am close to having something to send out to OSHpark.  Here's what it looks like at the moment:


And here's what the BOM looks like right now:

DescriptionPart NumberUnit PriceDiscount Price qty 100QtyTotalDiscountedURL
PICAXE-14M2$3.39$3.191$3.39$3.19http://www.robotshop.com/en/picaxe-14m2-microcontroller-chip.html
USB-RS232 converterCH340G$0.40$0.401$0.40$0.40aliexpress
PCB$1.00$1.001$1.00$1.00OSHpark
green SMD LED160-1169-1-ND$0.30$0.131$0.30$0.13http://www.digikey.com/product-search/en?keywords=160-1169-1-ND
22pF capacitor, SMD399-8165-1-ND$0.16$0.052$0.32$0.11http://www.digikey.com/product-detail/en/C1206C220K5GACTU/399-8165-1-ND/3471888
0.1uF capacitor, SMD399-1249-1-ND$0.10$0.032$0.20$0.07http://www.digikey.com/product-search/en?keywords=399-1249-1-ND
12MHz crystal, SMDCTX888CT-ND$0.38$0.261$0.38$0.26http://www.digikey.com/product-search/en?keywords=CTX888CT-ND
22k resistor, SMDP22KACT-ND$0.10$0.011$0.10$0.01http://www.digikey.com/product-search/en?keywords=P22KACT-ND
10k resistor, SMDP10KACT-ND$0.10$0.011$0.10$0.01http://www.digikey.com/product-detail/en/ERJ-6GEYJ103V/P10KACT-ND/43118
200ohm resistor, SMDP200ECT-ND$0.10$0.021$0.10$0.02http://www.digikey.com/product-search/en?keywords=P200ECT-ND
TOTAL$6.29$5.19
I'm going to get pretty close to the $5 cost target!  After I do a quick review, I'm going to get this thing made and see how hard it is to assemble.  Hopefully, it works.  :)

Wednesday, December 2, 2015

Identifying a really cheap embedded solution that is ideal for schools

As I said in my previous post, a few dads and I are going to help out with a Maker's elective at school.  The three topics we will be covering include plumbing, woodworking, and electronics.  Of the three, I'm probably most skilled in electronics, so that's what I am going to attempt to "teach".

My goal is not going to be to make the kids experts in electronics.  Heck, I'm not an expert and just kind of hack my way through projects.  I just want them to be comfortable enough with the basics that they will be able to work on their own projects after the course is over.  In addition, I would like them to have fun and excite their curiosity so that they will WANT to pursue projects.

The basics include an explanation of voltage and current, Ohm's law, and Kirchoff's Laws.  I will need to come up with analogies to make the concepts easier to understand, as well as piece together simple demonstrations to show how the laws apply.  I would also like to give an overview of basic components, like resistors, capacitors, diodes, potentiometers, switches, and LEDs.

Blinking an LED when you press a button is nice for a "hello world" kind of electronics project, but to really capture their interest, I'm thinking that demonstrating fun things is the right way to go.  For example, I might be able to hack together demos like the following:
  • wiimote with accelerometer
  • spinning a stepper motor to drive a car
  • rotating a servo to move a Nerf cannon
  • lighting up LEDs in series to emulate a Force FX light saber
  • sound recording / playing (maybe to add to above light saber demo)
The list goes on and on... but then the question remains -- how in the world do you enable kids to create these projects?  When you think about schools and limited budgets in general, cost is a huge concern.  You also have to consider the programming hurdle for the kids, as well as what kinds of computers are available.  Are the programming tools free?  Do they work on Windows and Mac?  Can you program the board easily?

I created a matrix of products that had to be cheaper than $20, but the magic price I wanted to hit was $5.  That's a tall order, but I think I have reached a decision...


Dev BoardCostExtra Costs / TimeSolderable?Free Programming S/WFree Dev EnvWindows?OSX?iOS?Experience?CommentsSources
MSP430 Launchpad$10NoNYYYYNSomeBringup takes timeTI
EZ430$10/$24NoNYYYYNSomeNot sure if alibaba pricing is legitAlibaba.com
Cypress PSoC$4HeadersNYYYNNNo
Cyproess
Freescale FRDM-KL25Z$15HeadersNYYYYNYesBringup takes time, but really powerful toolsDigikey
Arduino variants$15-20USB cableNYYYYNSomeI don't like ArduinoAdafruit, Sparkfun
PICaxe custom$3PCB, Headers, USB-RS232YYYYYYNoCoding is easySparkfun, Aliexpress
PIC custom?PCB, Headers, USB-RS232Y?YYYNSomeNot sure about cheap programming optionsDigikey, Aliexpress
C.H.I.P.$8LinuxNYYNNNNoDelivery date? We are also not teaching them about programming computersgetchip.com
Raspberry Pi Zero$5LinuxNYYNNNLittleImpossible to get at the moment. We aren't interested in teaching Linux hereElement14
Onion Omega$19Mini dockNYYYYNNoI have one, and the available libraries are quite limited right nowonion.io

This matrix aims to evaluate each available platform in terms of cost, ease of use, my ability to help the kids out with them, as well as accessibility to programming tools and development environments.

I have decided to go with a custom solution, and am currently designing a simple PICAXE-based PCB that includes everything a kid would need on a stick that plugs into a USB board.  It wouldn't need a voltage regulator because I would just rely on the 5V, 500mA USB port present on all computers.  The USB-RS232 converter and PICAXE are both 5V compatible.  I am currently going to go with the 14M2, which I believe will give them a reasonable amount of I/O to play with.  The PCB will include all required components, as well as female stackable headers so that the board can be plugged into a standard breadboard for prototyping.

The other nice thing here (if it works!) is that this gives the kids an opportunity to learn soldering and assemble a mixture of through-hole and surface mount components.  I am going to go with the largest surface mount packages available for each component so that it's easier for them.

If this works out, this board could be a really useful platform for future classes at our school, or at our engineering fairs.  I'll open source everything so other schools can use it as well, not that there's really anything I'm doing here except assembling the BOM and designing a PCB...

If you have any suggestions about useful electronics topics for kids, or anything else at all, please post them!

Monday, November 30, 2015

Revisiting my racing simulator rig

It has been a while since my last post!  That's because work and life have, in general, prevented me from making stuff.  However, over this Thanksgiving holiday Steam had a great sale on games, so I picked up a bunch of them.  The most exciting one was project CARS, which is a racing simulator.  Well, it turns out that 2+ years ago, I built a racing sim and never wrote about it in my blog.

The frame I built is based on one from someone named "Mr. Burns".  His post is no longer online, unfortunately, so I cannot give credit to him other than reference his alias.  It was very helpful in getting me to the point where I was just attacking the build and creating on the fly, rather than evaluating the 10 million different ways I could build a seat frame.  Thanks, Mr. Burns!



For my particular design, I broke up the frame into two sections.  The first part was the steering wheel and monitor mount, and the second was Mr. Burns' seat mount.  This separation allows me to adjust the seat distance for taller players.  The current design is really inconvenient because I have to loosen up t-nuts to separate the frames.  The steering wheel / monitor frame is also not very rigid and stable.

The rear frame is composed of a cheap APR seat (purchased from Amazon), mounted to a frame, which is then mounted on top of another frame through a shock absorber.  Most builders suggested using tie rods to prevent the seat from twisting about the shock absorber, so I added them.  The seat motion is generated by two SCN5 linear actuators, which are connected from the rear of the bottom frame to the rear of the seat frame.  This allows the simulator to generate pitch and roll motions.

The magic is in all in the software, called x-sim.  For non-commercial use, you can download it for free from x-sim.de.  The mastermind behind the software, sirnoname, authors plugins for each of the available racing sims.  These plugins basically hook into the game and can peek at memory locations that represent the car's telemetry data.  Using this data and fancy math, he's able to convert the data into physical motion.  It's brilliant, and for project CARS it works really well.  When I first built this simulator, I only played it with iRacing and Dirt 3, and never spent the time to tune the seat feedback properly.  Well, with project CARS, I am quite happy with the results without having changed a single setting.  :)

In other news, I'm also going to be helping out with a Maker's elective at school, so I will be posting again shortly about a fun little project I'm going to try to complete for the kids (and possibly for kids in other schools, if it works well enough!).

Friday, January 9, 2015

Inside the MarkOne fiber support

Like I was saying in my previous post, my MarkOne failed during a print and the fiber was jammed up in the feed mechanism.  I had a support call in to Markforg3d, but I decided to be daring and take apart this mechanism to see how it worked.



Thankfully, it was a very simple process.  The feeder is basically two thin metal tubes fixed on either side of a pair of opposing-spinning rubber(ish) wheels.  The fiber is simply forced through by the wheels, just like a baseball pitching machine or battery-powered Nerf gun.

Just after the exit tube is a small gap before the next tube.  This gap is where the razor blade passes to cut the fiber.  They use a standard RC servo to do the cutting, which is a great way to do it.  Closed loop, high torque, small package.  The problem is the noise.  I suspected they were using a servo for the cutter because of the characteristic chirping, and disassembly confirmed this.


So the problem my machine was having was that the fiber got jammed up inside the wheels.  All I had to do was to provide light tension on the fiber by pulling it, while I manually rotated one of the wheels.  I ended up pulling a huge strand out of there!

After the repair, I was able to print two versions of the quadcopter, one with concentric fibers, and the other with isotopic fibers.

Concentric fibers just make outline passes around the perimeter of your object, as well as around any adjacent holes.

Isotopic fibers will do passes like it would for filled layers, but it doesn't do an entire layer of fiber.  Instead, the layer is partially printed with fiber, while the rest is completely filled with nylon.  The next layer is oriented at a different angle, as are all subsequent layers.  You get to control the layup angles through Eiger, if you like.


And the results?  Well, the parts are a little stiffer.  Not a lot, but I think I need to play with infill.  Concentric @ 25% was slightly stiffer than without fiber @ 25%.  Isotopic was a little stiffer than concentric, but that could be because it is basically going to print at 100% fill.

Unfortunately, my long follow up build (to complete all of the quadcopter parts) overnight failed, but this shows off another really nice feature of their system -- I just submitted a problem ticket, and they told me they will go into my machine's logs remotely and try to determine what went wrong!  So my MarkOne is out of commission for a few days, but hopefully this will help them fix a bug or two in the process.

Life with the new MarkOne

On Monday, I finally got my registration issues with Eiger resolved.  I wasn't going to use specific product names and screenshots in this blog post, but I just noticed that Markforg3d updated their website and are now showing off their software.  So I assume that I can now pretty much talk about whatever I want!  Eiger is their cloud-based 3D printing software.  I'm concerned about this platform for the obvious reasons, like how they can shut a printer down with a remote command if they really wanted to, and how customers are stuck with a paperweight if they go out of business.  I hope they eventually release desktop software for the MarkOne, I really do.  More about the software later.
So, how was the setup experience?  Overall, it was simple and there weren't any surprises.  The only problem I ran into was that the dry box that comes with the MarkOne is a rather large OTS Pelican case, and it doesn't fit on the bookshelf with my MarkOne.  All of the photos online show just the printer, but I think they should also post accurate images where they've got a large black plastic box adjacent to the printer. Or they could avoid this altogether by shipping with longer flexible tubing so customers have the freedom to place the dry box wherever they like.  Since I was forced to place the box to the left of the MarkOne, I just left it sitting precariously between my desk and bookshelf.

The spool holder is really nicely designed.  They printed it out of nylon and embedded magnets for attaching the end cap.  All you have to do is put the spool on the holder, snap on the magnetic end cap, and then drop the assembly into the dry box.  Next, feed the filament to the MarkOne, power it up, and then run the load filament utility from the touchscreen.  Simple!






Power up video!  Ok, it's not that exciting and it's also upside-down.



And here is the model that I decided to use, along with some of the images of the file getting processed.





The next step involved figuring out Eiger without first looking for a manual.  Thankfully, the software is so easy that you don't even need one.  It's a bit light on the options -- I like the fact that they don't expose a lot of features, but I'd also like to see customizable slicer profiles that allow me to mess with bridge settings, at the very least.  Of course, this assumes that their software even supports bridging.  I have no idea if it's an in-house software, or if they are using someone elses under the hood.  I'm sure that the fiber-related code is all theirs, though.  One other small nitpick is that they use sliders for entering some of the information.  I would much rather enter the parameters via textboxes because I generally don't like having to drag an object on the screen around just to decrease my number of base layers from 4 to 2.  I just want to hit 2.  If it's a slider where the exact number doesn't matter so much (like in my GUIs where 1 unit doesn't make a whole lot of difference), then it's generally okay in my book.

Overall, the workflow is intuitive and quick.  After logging in, you start in your library, where you can simply drag and drop STL files.  From there you can choose which object you'd like to print.  It takes a little while to process each step because the data is uploaded to their server, processed, and then the resulting data is downloaded to the browser.  Oh, did I forget to mention Eiger only supports Chrome?  Not a big deal for me, but I just wanted to let you know.

The 3D rendered parts are gorgeous.  I haven't seen a single 3D printer software package that renders models this nicely.  I also love how rotation is extremely quick compared to something like MakerWare, which I use with my Replicator 2.


Once the part is sliced and viewable, you can check out the individual layers by clicking Internal View and cycling through the layers.  Finally, click Save and then Print.  Select your printer from the droplist of available printers (I guess companies can afford multiple of these expensive machines), click Print again and the data will get transmitted over the network to your MarkOne.  That's it!

Having a cloud-based printer software is extremely nice.  Let's say you're at work and you come across a part that you really like.  Just submit the job remotely through Eiger, and you might be lucky enough to have a completed part right when you get home!


I submitted the print job and waited for it to complete.  Unfortunately, it was a failure because the part came out warped (but at least it completed!).  I guess I was expecting too much by assuming that a machine that claims 10 micron repeatibility can stay level even after shipping.  :)

I ran the bed leveling program, which was extremely simple to follow.  The only thing that bothered me was that no matter how many times I leveled the bed, I couldn't get the piece of paper to slip under the extruder nozzle at the center point.  I also noticed that the knobs are extremely sensitive.  If you literally tap them, you can go from feeling slight resistance to feeling none at all.  Despite all of this, my reprinted part came out very flat.  Here are the two prints side-by-side.

After this model printed, I moved on to an iPhone 6+ stand since my wife has been bugging me to design one and I keep forgetting.  I ended up just printing the awesome Octopus Stand by notcolinforreal on Thingiverse.


I then moved on to printing a stretch bracelet from anoved and a couple of GT2 and GT3 belts by LionAlex.  Nylon is a pretty awesome material.  I've wanted to print this material for a very long time, but didn't have a printer capable of handling the higher extruder temperature.  I love how it's very stretchy and tough.  The belts seem to work pretty well (I'd rather have an OTS belt, of course), but these can work for some prototyping.  The bend radius isn't very good, but I think that if you're willing to sacrifice durability, you can print with 0% fill, 0 base layers, and 1 shell.  The print will delaminate but the teeth are still intact!

After all of this printing, I decided to move to Kevlar printing last night.  Setting it up was also simple, but you need to read the directions.  It's very important to use the provided tape to keep the kevlar fiber under tension.  Just feed the fiber through the tube until it reaches the feeder/cutter mechanism and then run the load utility.  It will feed the fiber all of the way through the extruder, and when you tell it to cut, it will cut off that length of fiber, which you can then pull out through the extruder.

I decided to print the Mini Flame Wheel Styler Quadcopter by tosjduenfs, because quadcopters need to be tough, but rigid.  This would be a perfect test to see how stiff the parts come out, and how heavy they are compared to tosjduenfs' numbers.


Unfortunately, the first print failed because the nylon jammed up before the first layer was even partially complete.  You know it's jammed because the extruder makes a loud clicking noise, which is pretty much like all other FDM printers out there.  The layer was extremely thin, and almost looked thinner than 0.1mm.  I tried again and got the same results.  The funny thing is that fiber prints start each layer by printing a "timeline" cylinder in the rear left corner of the build plate, and the first layer of the cylinder printed perfectly.  I cleaned off the build platform and tried again -- exact same result.

As a sanity check, I printed the quadcopter piece without fiber, just to verify that it was a software issue and not a bed-leveling issue.  The part printed perfectly, so it had to be software.

In the main settings page under "Material Settings", you can enable the "Use Fiber" option.  However, when you do this, the "Layer Height" setting disappears.  If you disable Use Fiber and change the layer height to 0.2mm, it resets to 0.1mm if you disable/re-enable Use Fiber.  I figured the printing problem could be related to this, so I disabled fiber.  The trick is that you can still selectively enable fiber after you slice the part!



With the new approach to using fiber, the first layer of nylon went down!  And the second!  And the first layer of Kevlar!  But then the fiber feeder jammed.  :(  I aborted the print and started looking into it by checking the online help pages.  It could definitely be an extruder jamming problem, so I followed the disassembly instructions.  The fiber was still in the tube -- it hadnt even reached the end of the extruder.  I then disconnected the feed tube from the output of the feeder/cutter and extracted the fiber.  What I found interesting was that there was still a piece of fiber in the tube after I removed the other piece!  I only ran the load procedure once, so this fiber had to have been left in the tube prior to shipment.  So I think what happened is that the fiber that got jammed had actually gotten caught up on the other piece, which then gunked up the inside of the feeder/cutter mechanism.

I imagine that the cutter is slightly complicated, so I submitted an online help request through Eiger.  I really like how you can post comments on any canceled print, and that this feedback goes back to Markforg3d for review.  That's a nice touch.

Well, we'll see if I can get this problem resolved with an engineer today!  I'm waiting for the call.

After a week with the MarkOne, I have to say that it's a nice looking, pretty nicely engineered product.  It almost works perfectly out of the box and the software has worked well so far, with the exception of a couple of problems.  My only real complaint with the design is that it is loud.  Stepper motors bolted to a metal frame just make too much noise.  Operation is noisy, and the final procedure of lowering the build platform is even noiser -- so much that when it completed a print last night, my wife yelled "WHAT WAS THAT???".  Hopefully, this is something they can address by softening the mounts, or changing the step resolution.  It's definitely possible to get quieter stepper operation.  My PP3DP Up! printer is really, really quiet in comparison to all of my other 3D printers.

Friday, January 2, 2015

MarkOne Unboxing!

I was quite surprised when my MarkOne 3D printer arrived earlier this week.  I honestly wasn't expecting to see it until early 2015.  Well, it is here, and it looks awesome!  Too bad I can't print with it yet, but more on that later.

Here's the box, and what it looks like in the box.




I carefully removed the MarkOne and placed it on my floor.  It is quite heavy.  I wish they had put in straps or some kind of carrying handle to make it a bit easier.  Getting my short arms around the machine and lifting up from the bottom was tough.  :)

Inside of the box was also a smaller box filled with accessories.  These included the build plate, some removal tools, a wireless antenna, a spool of Kevlar, and the power supply.  Shipped separately was a Pelican box that is used as a "dry box" for the nylon.  Since nylon absorbs water, you need to keep it dry for the best results.  The case was internally modified to accept a spool of nylon with a shaft to spin on.

The build plate is of exceptional quality.  I love the fact that it's a machined flat aluminum plate, with fly cutter marks and all.  Three bolts are inserted in the bottom, which I assume makes up the kinematic coupling.  I don't know what material they've used on the top surface.  It's kind of tacky.  And since I can't think of anything else, my guess is PEI?  I don't know.

But you probably could care less about the accessories, let's look at the hardware.  In a word, this printer is beautiful.  The best looking thing I've ever seen.  I once oohed and aahed over the Form1, but this is ever nicer.  I only have a couple of minor gripes.  The edges, while not technically sharp, are still...well... sharp.  Not enough to cut, but enough to not feel good.  It reminds me of my iMac from 2011ish, which I did cut myself on!  And the surface feels like it came straight out of the sandblaster.  I wish the frame surfaces were smooth like iMacs.  But hey, you can't have everything.

The front door is enormous and spans the entire machine.  It's very easy to lift to give you access to the entire build area.



Another really nice touch is the lid, which rotates upward and is assisted by a gas cylinder, seen below.



Opening the lid gives you access to all of the mechanical bits of the MarkOne.  Here are some photos.

This looks like the FFF drive mechanism.  Bowden-like design?

Here's the CFF / FFF extruder.

This looks like an interesting spin on a belt tensioner design.  I've never seen it done this way on any of the automation I've worked on before.


Nice energy chain.  I don't see IGUS anywhere, so perhaps it's a different brand.

A closer look at the FFF drive mechanism.

Here's what the extruder looks like from below.

Another nice upgrade I wasn't expecting was an LCD touchscreen.  It's a little mushy because it's a resistive panel, but it's still very responsive and easy to use.  I set up my wireless network and didn't have any trouble entering my huge WPA2 key.



So, at this point you're probably wondering, "How does it print?"  And there lies the biggest flaw with the Mark One, in my opinion -- the registration / activation process.  The printer software is entirely Chrome-based.  The app runs in the Chrome browser and sends the part data to the printer via WiFi.  It sounds powerful, but I haven't had a chance to try it yet.  Registration involves going to a special website and entering your email and a very long device key.  The problem is that my hosting provider's system somehow deleted *all* of my email aliases, so when I registered, the notification email bounced.  I have yet to get Markforged to reset my device activation so I can try to re-register my MarkOne.

I'm really excited about getting the new printer, but unfortunately for the past several days I have had to be content with staring at a very beautiful paperweight.