2014. május 28., szerda


On Monday tried to access my office computer remotely. It didn't work. Checked the servers beside it that ones worked correctly.
Yesterday morning I come to the office and realized that the desktop's UPS is dead. (I've UPS on my desktop because this office building frequently produce momentary power outages and I lost my unsaved work many times.)
Today I disassembled the UPS:

No, my phones camera optic has no distortion.

2014. május 13., kedd

3D toolchain - bitmap

And we arrived to the first CNC work.
How will a bitmap image (in our case a jpg) to turn to a usable result.
When I started to work on it it was obvious that I'll need to following elements:
Some image manipulation software. For this I use paint.net for years. I was thinking it will be sufficient here. I need it to setup the parameters (contrast, brightness, sizing, etc.) of the source image.
I need something what is able to turn raster image to vectors. Looking around I fond the InkScape because it is able to export to CAD format (like DXF) and it's free.
I need a CAM software indeed. I was fighting a lot with the HeeksCNC, so I'll check if I can use it for the task.
And finally the Machine Controller what is the LinuxCNC.
Here is the source what will be the starting point:

For first trial I thought that no modification is needed on it. Looked around the net to find out how can I convert it to vectors with the InkScape.
Loaded it into the InkScape and given an A4 size for reference. After this I used the Path/Trace function it with the original settings. It created a vector format. There was a recommendation about the Simplify function, but it wasn't working correctly on this image.
I saved the result and given to the HeeksCNC.
The thing was known to me that I need pocket operation for the letters and profile for the edges. The thing what I wasn't know how to leave out the "islands" of the e and a letters. After a long struggling I found the solution. The two sketches must be combined after the island sketch order changed to counter-clockwise.
Its finished (as I believed)
I went with the finished file to the machine. I started a dry-run (the spindle switched off, no cutter bit installed). First it stated that I've no tool on the tool table in the 4th position. Ok, I created one for the 4.8 mm cutter in the LinuxCNC. Secondly it stated that I'm out of the dimensions. Looked into the G-Code, one of the values in the beginning was someting above 500mm movement. And yes, I don't fit in. This is fundamentally bad.
Back to the InkScape. Now I tried to put the image to the A4 sheet watchfully. I wasn't able to do it correctly. From the page settings I found out that the whole thing works with 90dpi. This is a fixed value. The dpi value of the source image doesn't count.
Opened the paint.net and resized the image to 20x20 cm and 90dpi. InkScape once more. It looks good. I created the vector format. Instead of the svg used before I saved it in dxf.
HeeksCNC. I went through the process with checking the sizes. Not good. The coordinate system is not in its place. Recreated it in InkScape with care of the origin point what should be at the lower left corner (I already know this step was unnecessary, because the HeeksCNC is able to move the object into its place with a well done transformation).
HeeksCNC once more. Now I like the result:

Back to the machine. I reconfigured the machine itself. I set that the whole size should be available both in the positive and the negative scale. This gives me the freedom to put the origin at a given job anywhere I like.
Starting to set the origin. I found out that the X axis works in the reverse direction (my guess is it is a reverse connection problem in the hardware). Back to the mahine configuration. Reverse the X axis polarity from software.
Now it's good. Dry run starts correctly. Material tighten, cutter bit in place, spindle to full throttle. Lets run...
And the result after a few hours:

After some post processing (sending and lacquering):

Unfortunately the letters of the lower line are not perfect because I haven't got thin enough cutter bit.

New course

The fact that I not completely finished the ARM course (but just the space invaders game left) and the Entrepreneurship course passed away without touching it, doesn't hold me back from starting a new one.
Precisely the Cyber-Physical Systems by Berkeley.
The subject is autonomous robot control from Visual Studio and National Instruments LabView. I didn't decided yet that I stay with the virtual labs or buy the necessary equipment. This one is relatively pricy for the Hungarian wallet and the fact that this course is for fun to me.
I finished the first module, if somebody interested just hurry up. The first deadline is today afternoon.

2014. május 9., péntek

And finally...


It was a hard case.
As I wrote earlier both of my DMMs are dead. I ordered it almost two weeks ago (on 27th April, Sunday evening) from the Farnell.
Nothing happened for a week. Monday I called them. I was talking with an English speaking lady. She said that one of the products have pricing issue and a management approval is required, what she will handle. I'll get it on Wednesday latest.
Not arrived, not posted even on Wednesday evening.
Another phone call on Thursday. I was able to catch the Hungarian customer service. This lady was able to find out that the system somehow lost my bank card's CVC number. This is the reason why I didn't got it.
So I provided my CVC number on phone. A big punch to the security.

CNC Starting

I'm working on the setup of my CNC router for a while.
The whole story is not so easy, especially if we add that I have no clue about the 3D machining.
For today I collected lots of information to be able to handle it.
The planed setup is the following:
  • I'm designing on my Windows machine
  • There is an additional machine (to be precise my previous desktop PC) what controls the CNC router and the 3D printer.
For the things to run I need a software toolchain. Precisely toolchains for the various different tasks.
Any 3D designing/manufacturing process contains the following:
  • Some modelling program to draw the plans. It's called CAD-nek (Computer Aided Design)
  • Something what is able to translate the design into the machines language (gcode). It's called CAM (Computer Aided Manufacturing)
  • Finally a software is able to directly control the machine, send the commands created by the CAM with the required precise timing. It's called Machine Controller.
The idea that my own machine will act as CAD/CAM and on the controller machine the Machine Controller.
Let see the toolchains.
This is the base where I starting:
The CAD for the time being is the OpenSCAD. It is free, absolute precise, but it's philosophy is more for programers than designers. It is suits to me.
The other CAD to be precise EDA is the KiCAD what I'm using for designing PCBs.
The CAM if we are talking about the CNC is unknown. There are not to much free or low cost solution exists. I should test them, and it should evolve to a usable solution.
The CAM if we are talking about the 3D Printer is the Repetier Host (to be precise the Slic3r what is integrated into the Repetier Host).
The Machine Controller is the Mach3 for the CNC by the manufacturer's recommendation. For the 3D Printer is it is the Repetier Host itself.

 Most of the article above was written weeks ago. Since than the situation changed much. The toolchains and the various tools in it are getting evolved. This post is just a prequel for the continuation.

2014. május 7., szerda

Windows 8.1 vs Microchip CDC

And the winner is...
Me. :-)
After I was able to reanimate the FRDM-KE06Z board, I started to work with the robot.
With three days of struggling I drilled trough the Freescale's not to clever driver mess, the CodeWarrior's badly installing sample, and my errors.
As the result the PWM motor driving works.
I started to think what would be the continuation. One option is creating the classical "line follower" robot - I have not to much lust for this, but I'll install the sensor for sure.
Beside of this I've infinite number of ideas, but one thing is really iching in my mind. This freedom board has infrared transciever. This can be used for various things.
Like proximity sensor or IR remote receiver.
Finally I decided to work on the second one.
To have a clue about the code I should write, picked two equipment from my drawer:
A mini remote from DealeXtreme (this will be the remote control of the robot)

The IR Toy by dangerousprototypes (I want to use this to see the frequencies and wave patterns)

I picked th IR Toy, connected to my PC and...
So the article starts here.
The IR Toy was not recognized by the machine.
I started to investigate. The driver reside in the firmware upgrade package. Downloaded it.
It said that the driver is not signed for this OS therefore not installed it.
I remembered from somewhere, that exists a USB installer tool for this kind of equipment. Searched for it, downloaded it. We are talking about the Zadig WinUSB. I installed the IR Toy with it. Everything fine just I didn't got serial port.
Back to the roots. Started to search how can I generate a .cat file suitable for Windows 8.1 from the existing .inf file. The compliance of the driver (usbser.sys) itself is not in question since it is part of the operating system, just I need an .inf file what able to associate the Vendor/Product ID to this
I found the program called inf2cat.exe. It is part of the Windows WDK.
Installed a version 8 WDK and an 8.1 update for it.
Run Inf2cat:
"C:\Program Files (x86)\Windows Kits\8.1\bin\x86\Inf2Cat.exe" /drv:<inf path> /os:7_X86,7_X64,8_X86,8_X64,6_3_X86,6_3_X64
No success.
The result: 1 error, 2 warning
Error: the driver date in the file is too old for the new operating systems
Warning: the mentioned driver is not on the source list.
I changed the date (and the version), the warnings are natural because the driver in question is part of the OS.
Inf2cat once more. Runs, I got my .cat file.
Driver install. I got some unknown error.
Investigation further. I found that the foundation of the problem is the driver signing policy of the Windows 8/8.1, what doesn't allow the unsigned drivers. Here was my misunderstanding. Not just the binary driver but the .inf file requires a signing.
There are two options left:
  • Switch of the policy for the installation
  • Sign the driver (to be precise - the .cat file)
Choose the harder way.
I started to work according to this document, but simplified it:
I've an enterprise root ca, so I hadn't deal with the trusted root.
First of all we need a Code Signing certificate.
1. Installed the Code Signing template to the CA because it wasn't there.
2. Requested a certificate from the certificates mmc (for my account)
3. Exported the certificate to a file (the private key not required)
4. Imported the certificate into the Trusted Publishers store  (machine account)
Let's sign it
5. With the SignTool and with /a switch (It find the certificate automatically, I don't need the timestamp now. Just the driver will stop to work at the expiry of the certificate) signed the .cat file:
"C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe" sign /a mchpcdc.cat
Driver Install...
It installed, I've a serial port.
P.S.: I've an idea. It will be usefull to build a webpage what is able to create a signed driver from a template with it's own ca to anyone, and just asks the Vendor/Product ID as input.