Windows 7 has a a limitation (That can be removed in the code of the individual driver) that you can’t set a fake mac id starting with 00 on a wireless usb So I did what any normal person would do, pulled apart the adapter, removed the eeprom found and edited the hardware MAC ID
Use a spudger to open the case, its not glued or anything.
I tried a few ways of programming the spi on board, but it just wouldn’t do it,, too much interference.
The chip is glued down, some acetone will take care of that, desolder the chip and pop it into a eeprom reader its an ATMEGA AT61 series SPI EEPROM so easy enough. Once you have the hex file, grep for the mac address in hex. Edit it to what you want it to be and reflash it back to the chip, there is no checksum etc.
You can send eeprom commands back to the chip via the driver, but I didn’t look into it too deeply;. Its pretty quick to remove it and change it, obviously this is more useful for cloning vs just changing.
The Proxim / Orinoco is just a Taiwanese usb adapter, I haven’t seen it for sale under the different brands though, but its considerably cheaper.
Its the first part, so 00-90-a9-a2-1a-33 isn’t cloneable it has to be 02-90-a9-a2-1a-33 06-90-a9-a2-1a-33 etc. Useful for when an ISP uses your MAC to identify your NIC for home internet connections etc.
Today my KL25Z dev board arrived from Newark, I had it on pre-order as soon as i saw it, mainly because its cheap at $12.95 +tax and because its ARM M0+ that can go upto 48Mhz.
Comes in a nice box you solder the headers in if you want too, otherwise you get nothing with it ( but that’s not a bad thing ) the box has a colour print diagram of the connections to the board on the underside and its a nicely packaged.
Oddly, or not, the first thing I noticed was an unpopulated spot for an IC U5, a quick scan of the schematics and its for an AT45DB161D which is a 5V tolerant 3.3V SPI flash memory chip. Which is great because I just happen to have a stack of 16’, 32’s and 64’s at NullSpace. I’ll update the blog when I add it and see if it works, it is a fairly costly IC so that might be why its not included versus a build mistake.
Underneath there is a space for a CR2032 PTH battery holder.
It is a very nicely laid out board, going for the black mask with gold finish. Though placement of the RST button could be better, the placement of the pads underneath mean when you press the reset the board flips up, less so when the USB cables are plugged in, a minor annoyance. The captouch could also have done with something underneath as well, its just slightly off balance, again very minor and easily fixed.
Capacitive touch “slider,” MMA8451Q accelerometer, tri-colour LED
Easy access to MCU I/O
Sophisticated OpenSDA debug interface
Mass storage device flash programming interface (default) – no tool installation required to evaluate demo apps
P&E Multilink interface provides run-control debugging and compatibility with IDE tools
Open-source data logging application provides an example for customer, partner and enthusiast development on the OpenSDA circuit
I dunno how I feel about the P&E stuff, Freescale must own stock in them or something, I have a bunch of P&E BDM’s, cyclones, cpu32/cpu16 etc. which i use for my reverse engineering work but they’re expensive and the software is about 1990’s level of basic, everything is an add on cost, the flash tool is one cost, programmer/debugger, capacity on the cyclone max etc. Also they don’t have a lot of protection, I’ve blown up my cyclone max with a bad PSU, for such an expensive tool its poorly protected.
Talking about questionable software, my old friend CodeWarrior rears its head again, anyone who has been in game development for a long time, especially console, probably has a special place for CodeWarrior, along with the Sony CD burners for PSONE. Freescale/Motorola bought them out a long time ago and so of course it keeps coming back to haunt me, and haunt me it does. Still I’m sure its gotten better?… I’m not sure why TI/Freescale etc wants to roll their own dev tools, maybe for QC or lock–in but GCC is OK enough to use it and ARM were smart and paid someone to make the ARM support better in GCC. Beyond that CodeSourcery seem to do a good job of keeping it all together. Maybe I do want to download another 1.5G Eclipse installer (not CW thankfully). I think its a mistake going down this route, but there you go.
Its an CDC driver that should auto install on Windows, there are drivers for it available if not. After that its drag and drop binary or Motorola S record files, they note that the dev tools work primarily on Windows but CDC obviously works on the other platforms.
Yes. This board is a really nice and versatile one! I already have published several articles around the Freedom KL25Z board on my blog, along with tutorials and software projects: http://mcuoneclipse.wordpress.com/tag/kl25z-freedom-board/
I ordered a SolderCore from Mouser yesterday, it arrived this morning. Its a pretty nice little device. Oddly I’d had some interaction with one of the creators at Rowley Associates, Paul, on an email list talking about C compilers/assembler etc and it turns out we’re both Lotus people as well as having ECU related experiences, it is a small world.
Haven’t done much with yet, since i’m not at NullSpace and all my stuff is there.
Built in Ethernet support with an on-board RJ45 connector.
USB OTG support with an on board microAB connector.
On board microSD holder.
Support for additional Flash and FRAM devices.
CAN, I2S, 2xI2C, UART, PWM, ADC, SPI and QEI supported
On board standard 10 way SWD JTAG header. (Only fitted to the Commando variant)
Power can be supplied via USB or the barrel jack (6V – 9V DC).
So decent enough specs.
Nice things are , no drivers, so no one whining about CDC driver support in Windows 7. All the help, examples firmware are net enabled. All you need is telnet to edit.
compared to a Pandaboard ES, and one of our NSL ADK boards. Soldercore in the middle.
If you want the headers, you can solder them on. I like the idea Sparkfun has with single row headers and to offset every other one so its easier to solder, but these aren’t difficult, just hold and tack the first one very lightly with solder, make sure its straight and do the others. That first tack is important so its aligned and then you can re-align easily.
I plugged it in, pinged as per the label on the back, then i use Putty to login in to it. (change from ssh to telnet) also it uses ^H for backspace so edit that too. I then posted to the forums with a hello world, but then realised it was a program that did it. So i went off to find it, since it isn’t in the examples but in the help section instead.
Had to edit a bit first. Mine didn’t like the command $NL so i used $LF instead. Then came along figuring out how to set NET.SMTPSERVER (which is fairly futile for me at this point so all my SMTP servers require a login) but trying anyway. I of course battled ahead and did NET.SMTPSERVER = “smtp.mail.com” NET.SMTPSERVER = “10.0.0.1” etc neither worked. It says ‘Digital I/O’ as the type. My SMTP server will work even less with an IP address since it wants to use the FQDN to find it. But regardless..
Luckily BASIC being immediate, i just did
PRINT NET.SMTPSERVER
Which yielded
[0, 0, 0, 0]
Aha!, So
NET.SMTPSERVER = [192,168,1,1]
Easy enough. But i don’t have an open relay… So i got as far as ?SMTP server down in 60:
10 SUBJECT = "Hello from SolderCore!" 20 FROM = NET.NAME + “charlie@xxx.com” ‘ fill in your own e-mail address 30 TOO = "soldercore@googlegroups.com" 40 BODY = "Hello from " + NET.NAME + "." + $LF 50 BODY = BODY + "My device address is 192.168.1.159 ." + $LF 60 MAIL TOO, FROM, SUBJECT, BODY 70 PRINT "e-mail away!" 80 END
It didn’t like the IP$(NET.ADDR) either so i replaced it with text.
> list ↵
10 SUBJECT = "Hello from SolderCore!"
20 FROM = NET.NAME + "@local" ' fill in your own e-mail address
30 TOO = "soldercore@googlegroups.com"
40 BODY = "Hello from " + NET.NAME + "." + $NL
50 BODY = BODY + "My device address is " + IP$(NET.IPADDR) + "." + $NL
60 MAIL TOO, FROM, SUBJECT, BODY
70 PRINT "e-mail away!"
80 END
> run ↵
e-mail away!
>
I concluded the problems/missing command might be an old firmware so I tried to do a firmware update with firmware run, but i realised it needed a FAT16 SD card (a good one not a cheap fakey one) All i had was a 16B MicroSD so its too big, but normally you’d do. 2G is what you need.
FORMAT n: /FS:FAT
where n: is the drive letter. After a year or two , it’ll be formatted
You should see something like :-
“Insert new disk for drive J:
and press ENTER when ready…
The type of the file system is FAT32.
The new file system is FAT.
Verifying 15267M (this is a problem)
You can also use this https://www.sdcard.org/downloads/formatter_3/ Which supposedly does a better job of the FAT format. I can’t try it at the moment, since format is still running.
The soldercore.com website does go into this in detail, if the GUI doesn’t show FAT as an option, the card is too big..
It has a few nice features, being able to update firmware over the internet is great, and you can type
example
and it’ll list all the examples available, over the net. Typing
example “welcome”
will load the welcome.bas, so that is pretty neat, most of the examples look like they need one of the add on boards though. It is case sensitive on the example filenames.
Typing
firmware
Seems equivalent to firmware catalog and it stops me typing catalogue(j/k)
A lot of people might gripe about BASIC but what BASIC looks like versus what goes on in the background are completely different things, look at BlitzBasic etc, they’re very quick. Having to do line numbers is a bit of a throwback for sure.
Here are a lot of builtin commands that do useful math, dot products, matrices etc. sin/cos, etc. Very useful. At worst case you can pop on a JTAG and write everything in C/ASM to your hearts content.
I have had one reset so far, but its probably the usb port i have isn’t giving me enough juice, it has external power port too. If i find a small enough SD card, i can try to update the firmware. My firmware is also at 0.9.5 which is older than they list at the website, so I’m sure some of the stuff has been fixed already. I’ll update the blog when i find an SD card.
I did all this with it so far, and no drivers installed and no software installed i can run it from android or nokia phone as long as it has telnet.
The usual BASIC commands like EDIT, RENUMBER work, its just like being back on the BBC or Archimedes.
Haven’t done much else with it yet, but I’m really interested in at as we use the Stellaris chips for other projects. I also really like Paul from the small interactions I’ve had with them, and Rowley Associates , I don’t know Iain or K&I but they did a nice layout job, so I’m looking forward to where they go with it. Anyone who’s a Lotus nut is ok with me !
Update
I realised my Skyrocket had a 2GB card in it, so I swapped that out, formatted it as FAT16 and made the top level SYS folder, plugged it into the soldercore and typed
firmware run
After a few seconds its at 0.9.12 now. I retried the original syntax of the Mail example and it accepted it fine, i still can’t relay the email but it does accept the commands that were missing. Easiest firmware update ever.
We’ve been trying to sort out a laser cutter for a while now, last year we bought a 40W tube and a PSU and burned holes into things. While hugely entertaining, it lacked some precision
That was as far as it went, so i had enough and just decided to order one, after a few stops and starts we bought an LC900N directly from wklaser in China, they’re the same ones FS laser and hurricane etc sell but they do some mods to the software/boards, but nothing that is worth the price increase that i can see. It cost us under $4,000 USD for a 90W laser with a 600x900mm cutting area, with a motorised Z table from china to us.
We’re on the third floor and our elevator is ( A ) too small ( B ) out of order, so we had to levitate it in.. Having hindsight we could have taken it apart, but had been previously assured we couldn’t do that. Anyway…..
We did what anyone would do and removed the window, hired a crane and lifted it in through the window.
Taking it out to inspect the contents etc.
Building a landing table
Scientific weight test, the window is gone and 3rd floor, proceed to start jumping. Some people were confused about what don’t go past the blue line meant.
Yes this is a good idea.
Test lift
We put out cones, people removed them and parked anyway, I told a few people they may not want to park there, most people got annoyed and asked why not? So i explained, most of them changed location. But only most….
ok we’ve gotten it to here, what now ? Time for a meeting.
The tricky part, removing the first strap, everyone pitched in to help.
The Rapunzel method started off well but we discovered a problem in the hair length dept.
And its in!
Books are useful. Dropping it the last meter was harder than getting it from China.
Put the window back, respackle it and no one is the wiser.
Ok so the laser is purchased, shipped from china, craned in through a window. What next?
First install the tube
The laser needs a vent, preferably hilarious. (needs video)
Obviously take it apart and improve it.
The height setting tool needed improvement, so made that and labelled it as such
Test cuts. Lots of test cuts.
Align mirrors, the manual came in useful here. (bits of paper)
Now change mind, remove the mirrors, turns out they’re dirty! So we swapped them out for ii-iv’s, increasing the power 20%. Interestingly there is a technique to make CO2 laser mirrors from hard drive platters hard disk platter co2 laser mirror
Frostbite hand.
The new lens vs old one.
Ply Wood 5.2mm 8speed 90power OLD LENS ply wood 5.2mm 15speed 40power NEW LENS
The T4 28” fluorescent bulb burned out after a day or so so we replaced it with some halogens, especially since they’re hard to source locally, test fitted with duct tape. The whole machine gets covered in grease for shipping so lots of cleaning first.
Next well they said we can’t cut steel. So quick trip to home depot for some O2.
The glo-stick is vital
well it is cut but…. not really useable, however great progress
vertical video!
Here we cut some 1” acrylic
Next!
The GUI is full of odd chinese-english conversions, but they use a UTF8 .ini file so you can edit it all you want. Instead of Datum, it is now Home . Just edit language.ini or use Resource Editor on the .exe for permanent changes the software does nt self check, even though it uses a senselock dongle.
Next is hack the software, we figured out the control software, reversed most of the API it actually rasterises vectors in the PC side and sends them over as points!! I’m shocked and amazed since the machine has a ‘DSP’ based controller board. It generates a TXT file and compiles it ,then uploads it the API has move, p-move, arc and circle functions but the software never uses them..
e.g.
CLASS_DECLSPEC int APICALL M05_m_fast_line2(int chx,long disx,int chy,long disy); CLASS_DECLSPEC int APICALL M05_m_set_vector_profile(double ls,double hs,double ac); CLASS_DECLSPEC int APICALL M05_m_set_vector_profile2(double start_ls, double hs, double end_ls, double ac, double dc); CLASS_DECLSPEC int APICALL M05_m_curve_vertex(); CLASS_DECLSPEC int APICALL M05_m_curve_begin(); CLASS_DECLSPEC int APICALL M05_m_curve_end(); CLASS_DECLSPEC int APICALL M05_m_set_period(double period); CLASS_DECLSPEC int APICALL M05_m_set_power(int LowPower,int HighPower); CLASS_DECLSPEC int APICALL M05_m_set_laser_mode(int mode);
The are all set ramp speeds, laser on, move here, move here move here, move here. Not set point, radius calculate in controller.
Oddly the first command we figured out (unintentionally) was fire the laser at full power indefinitely.
Is it off, no, is it off now , no ? how about now ,, no ? OK what’s the tube temp? still not off ? Easy to fix though, its just a toggle on/off. You also can’t easily jog the laser head around with the laser on, it’ll work but you can’t turn it off easily!
Knock out a quick GUI in Visual Studio.
I updated the header file for the DLL on our SVN. I’ll document it as i go along
Example of the txt file, which it compiles on the PC side.
SUB001 CMD101,0 SET002,20000 SET014,1,0,2,2 CMD109,1 CMD102,416,20833,97222 CMD104,6944 CMD401,416,880,41666,900 CMD402,900 CMD409,416,880,3000,41666,900,5000 //set ramp speeds and power CMD408,900,5000 CMD050,2,1 CMD002,63556,42631 CMD050,1,1 //laser on CMD103,416,41666,69444 CMD001,63556,42631 // move CMD050,1,0 //laser off i’m surprised it rasterises the vectors though, i was expecting to see a command for a circle that defined a center,radius etc. speed change. 100 to 300 CMD401,416,880,13888,900 CMD409,416,880,3000,13888,900,5000 CMD103,416,13888,69444 CMD401,416,880,41666,900 CMD409,416,880,3000,41666,900,5000 CMD103,416,41666,69444 power change 9 to 99 ( *100) CMD401,416,880,13888,900 CMD402,900 CMD409,416,880,3000,13888,900,5000 CMD408,900,5000 CMD401,416,880,13888,9900 CMD402,9900 CMD409,416,880,3000,13888,9900,5000 CMD408,9900,5000 horizontal line moved in y CMD002,62466,45271 CMD001,62466,45271 CMD001,69328,45271 CMD002,69328,45271 SUB603,416,20833,97222,69328,45271 CMD001,69328,45271 CMD001,69328,45271 CMD001,62466,45271 CMD001,62466,45271 CMD001,69328,45271 CMD001,69605,44993 CMD001,69605,45548 CMD001,62188,45548 CMD001,62188,44993 CMD001,69605,44993 CMD002,62466,45175 CMD001,62466,45175 CMD001,69328,45175 CMD002,69328,45175 SUB603,416,20833,97222,69328,45175 CMD001,69328,45175 CMD001,69328,45175 CMD001,62466,45175 CMD001,62466,45175 CMD001,69328,45175 CMD001,69605,44898 CMD001,69605,45453 CMD001,62188,45453 CMD001,62188,44898 CMD001,69605,44898 horizontal line moved in x CMD001,69328,45271 CMD002,69328,45271 SUB603,416,20833,97222,69328,45271 CMD001,69328,45271 CMD001,69328,45271 CMD001,69328,45271 CMD001,69605,44993 CMD001,69605,45548 CMD001,69605,44993 CMD001,69492,45271 CMD002,69492,45271 SUB603,416,20833,97222,69492,45271 CMD001,69492,45271 CMD001,69492,45271 CMD001,69492,45271 CMD001,69770,44993 CMD001,69770,45548 CMD001,69770,44993
So this ends our first week with the cutter, we have to decide if we’re replacing the controller, Leetro apparently want us to buy $25,000 of stuff to get the SDK documentation, but we’re so far into reversing it, that won’t matter. The controller might be ok. It has some strangeness we want it to speak GCODE so maybe another GRBL based controller like we did for Pickobear.
We’re also building a new frame for it, and updating it to 170W laser tube (maybe)
Great post & congrats on getting yourselves a laser!!! I bought a laser 18 months ago from WKLaser and had a wonderful experience dealing with them. Oh, and I had to remove a window to get my laser inside, too
I’m curious (and surprised about your modest successes cutting steel. I had heard that (due to the reflectivity of the molten steel?) attempting it can damage the laser or the head/nozel/lens and that metal-cutting CO2 lasers have an additional polarizing filter system to control the reflections. Have you noticed any problems since cutting steel? Or any plans to improve the cuts in the future?
The mirrors and the last part of the laser ( the focus stage ) are consumable basically, the very last stage will get eaten simply away with the heat etc, so we are looking to change them out to a copper ends and increasing the lasers power. We will probably only keep cutting the same thin steel but its useful for us. The 170W tube should get us where we want to be.
Awesome! Keep us up to date on the controller reversing – I’ve got one with an MPC6535 controller and the lasercut software can be quite limiting and badly behaved on occasion.
Congrats guys, wish I was still in LA to see this and help reverse that controller app, sounds like fun. I volunteer for the first NSL laser tattoo, just spray my arm with flat black spraypaint. (semi-serious here) Remind that distinguished rapist enzo to send me the nsl stickers! (he promised)
This is log of the current work we’re doing at NSL http://032.la
Rather than hand build all the badges for our socal security conference layerOne again, http://www.layerone.org/ we’ve gone to a pick and place machine.
Gleep found us a Juki(Zevatech) Placemat 360 (that seems to have been upgraded to a 460 ) pick and place machine. It was sold as ‘working’, the sellers definition was, if I’m completely honest a stretch (outright lie).
This is actually our second pick and place machine, we don’t mention the other one
We’re also interested in acquiring a Zevatech/Juki 460 if you have one for a decent price.
Basically he demo’d everything that didn’t need a compressor, that all worked. Of course everything that needed a compressor as we found out later, didn’t work! Still $1,200 isn’t bad.
I used my supersilent 20a as a temporary compressor, it only has a small < 1 gallon tank, but its actually quiet, we used the 8 gallon compressor at null space which is deafening, so i found a 3 gallon temporary one at harbour freight for cheap in their recent sale. its too small though, so we’ll need shop air at some point. The supersilent was causing the pickup head to fail to work after a few passes, so this caused as a few false starts, the machine needs a solid air supply to function , even in testing.
The existing filter and pressure regulator was a mess, so off to home depot to come back with the best we could find there, which isn’t that great.
This is the old one, remember sold as working. No filter, and all these bits were just lying around inside it.
The machine itself is based on the PC-8801 Z80 4mhz CP/M which I recognised straight away as my old job had me doing game conversions in Japan for the PC-9801.
Dusty
The whole machine works pretty much on the principal of that if the CNC software said do this, do that, that it executed perfectly. Only limit, head, home and the tool changer have checks.
We fired it up , Krs and Gleep got it picking and placing a few resistors (though they somehow managed to get the tape removal part completely wrong and it was throwing resistors all over the place. Then mmca got it placing QFP parts correctly. The lamp spot system was off, the 90′o rotation was off, the tubes were old and cracking. Compressor filter was non existent and rusted out. We’ve also discovered the whole thing is covered in parts from the previous owners, we’ve scored a few 100 0805s and some IC’s.
Free Parts!
The reed sensor was the first thing we found that was broken, a quick trip to eBay and a few days later we had replacements. Luckily Juki is in heavy use, and they use a lot of off the shelf components. Apparently the later 5xx machines do switch to a proprietary drive system.
The reed switch detects if the head is up or down. Its one of the few sensors in this machine. The bend has caused the wiring to break down internally over the years. so the machine gets confused about being up or down, and the software doesn’t cope well with that, it basically needs a full reset afterwards.
The new sensors , $9 from eBay.
I also bought a CPLD based floppy emulator from Poland, it hasn’t arrived yet and we’ll probably be done with the new system before it gets here, and we’ve discovered the speed stays the same but floppy drives won’t last so the SD is still a good replacement.
Placing QFPS (AT90CAN128)
Fashioned a quick tray for the IC placements. We use these great little boxes, also from eBay, for holding SMD components, they double up as handy platforms too.
Feeders
The feeder is controlled by the head, it moves over the spring loaded pin and pushes it down, this releases air and the notched wheel on the right moves the component reel tape one step, at the same time the protective covering tape is peeled away, allowing the machine to come back and pick the part up. This time, they’re correctly threaded, previously the protective tape was wrapped around the pin in the middle.
Side view of feeders, you can see the reel of components on the left, and the pneumatics underneath. Its important to choose a pick and place with a widely available range of cheap feeders, all too often people buy a cheap pick and place then find out it has none, and it’ll cost $1000’s to get them, if at all.
Feeder with pneumatic assembly
The expansion board
This is the board inside the machine, it is a couple of 8255s which are the defacto standard for PC parallel IO, almost every PC has had one or more of these, they’ve since moved into the ASIC’s but the principle is the same. It memory maps each of the input/outputs of the machine so that host PC can see them. I pulled off the floppy image, copied the files to my PC and reverse engineered the controller code with IDA.
I found an IMG of the floppy online, this was MFM encoded . So i converted that to a raw binary file, and then used cpmtools to copy the files from it. I was hoping to find some of the saved files so we could reverse the format and write a quick tool to do the placement. Once the files were copied off i tried a few of the different PC-8801 emulators, M88 etc, but had no joy in getting it running. So finally I just pulled apart the CP/MCOM files in IDA and see what we could find.
The teaching process is tedious, so reversing the format would have been worthwhile.
Interface board
This board takes the IO from the PC, buffers 74LS240 it and uses power darlingtons FT5723M to switch the 24V signals for the pneumatics. As well as read the various sensors and the + / – for the motors. The motors and stepper drivers are off the shelf, but very nice, we even have newer versions of the motors and controllers at NSL.I’ve removed the bottom connector to make it easier to take pictures.
The grey cable that has been added later is the automatic tool changer, this is soldered directly in the spare connections , 5V and 24V VDC. The 5V powers the small adapter board in the ATC and the 24V is for the pneumatic switches.
The remaining signals are multiplexed IO that are demuxed by a 74Ls138 on the ATC board, which deviates from the way the rest of the board works as the rest are all controlled by the darlingtons directly.
Each function of the machine is basically <control> – <buffer> — <pc> – <memory map>
So if you want the head to go down, you flip a bit in the PC’s memory. Its all digital IO, nothing fancy at all. The only extra part is the 5V TTL to 24VDC for the pneumatic switches.
Stepper drivers and power supplies.
The stepper drivers are on the bottom, the other one is to the right under the tray. the two power supplies are just visible at the top right, one is a 5V the other a 24V. The power filter is in the lower left.
Power supply
Stepper motor driver
XY gantry
Since the machine was in bad need of service, we stripped it down, here the XY belts are visible. The top side has the the driver motor and the bottom side gets its power from a rod under the bed on the right side, so both belts are moved in unison. The ATC is in the top right and the frame in the middle is what is left of the PCB holder.
Tearing it down.
The head
mmca stripped the head down. here it is removed from the gantry. mainly because there is a piece of string visible , and we can’t figure out what its for.
Shims, we don’t think these are factory shims.
The strange piece of string inside the head… What could it be for?
Bottom view of the tool pickup and the 90’o rotation.
These 4 arms are moved towards the part and clamp it gently, this straightens the part for placement, it can also rotate the part by 90’o ( which sucks for us because i always like to put parts at 45’o)
The laser, focused lamp (this machine continues to surprise us ) which is used to position the head in teaching mode.
We’re removing the lamp and replacing it with machine vision, so some measurements are taken.
The hoses are removed and marked with a letter , the corresponding connector is also marked with the same letter.
This is how the previous owners repaired the 90’o rotation arms….. so that explains the string. this was removed and repaired correctly. The 90’o does just that, it rotates a part by 90’o that’s all this machine can do, so we’re going to change that to it can do arbitrary rotations.
This hose had cracked, a few others did too. I found a few temporary replacements at the auto parts store 4mm ID, 8mm OD fuel priming line. The plan is to replace all the hose.
Stripped machine screw in the head. Replace from grainger, M3x8mm 0.4mm thread 5.5mm head size.
Spent some time measuring all the screws and what not. The machine is old enough that it came from proper manuals with circuit diagrams.
We’re replacing the IO board, the plan is to throw in a TI Stellaris ARM lm3s9b96 chip instead, (TI were good enough to send us a bunch a while ago, thanks TI!)
This board is a dumb board, it just marshals the I/O and does the switching of the 24VDC with darlington’s.
Here we’re removing and verifying the connector sizes and function (the manual had some errors) so its good to do that. It also gives us good insight into what’s going on.
Checking how the machine works with my trusty fluke.
I threw together the connector layout in eagle and printed it out to verify it, early revision.
Measure the hole size and distance. Our board is exactly the same size so its a drop in replacement, we’ll just lose the two larger connectors and change it to USB.
Here we were figuring out how the ATC worked, at first it was though to drive it directly , but there weren’t enough wires. So its 24V, 5V and control signals, the small interface board at the front is a 74LS138 decoder/demultiplexer with a few buffers and more darlington drivers , it switches the 24V on and off based on the 4 control signals coming in.
Automatic Tool Changer
The tool wanted is lifted up when the machine wants to change it, on the right are the pneumatic switches that are controlled by a 24V signal.
We’re using Power MOSFETs to control the 24V instead, a 6 pin ROHM US6K1DKR in a TUMT6 package ( time to create a new device in eagle again !) I ordered 100 from Digikey yesterday and should have the board layout finished today. Then we can mill out a test PCB and see how it works. (parts arrived a few minutes ago!)
You might be amazed, I was , about just how simple this machine is, you could run the whole thing from a set of on/off switches, albeit very slowly. But that is great for us though as it makes it very easy to replace the PC software.
The next big thing is going to be testing the new power MOSFET and building the new PCB. The chips will be here today have arrived.
So new eagle package
Cut out a few to test.
Apparently I goofed on the measurements, I did change it around a tad after the first revision. Teeny part.
Soldered it anyway
So the next step is adding cameras etc.
mmca explaining the new part to be cnc’d out for the camera
mockup of the mount
The head has to be recalibrated so the bottom of the tool is 62.5mm from the table, with a .1mm accuracy, so we as usual went overboard and used grade B gauge blocks.
69.5mm to .00005 inches accurate.
Gauge blocks are fascinating, they stick together like magnets if you put them together by making surer there is no air between them, but if you just stick them together they won’t. Super flat. these aren’t grade a or better, but they’re nice. mmca has the coolest stuff.
Starting to rebuild it
Machine vision tests
This is work in progress, testing RoboRealm/OpenCV and teaching it components, it works well!
Using a panda board a HP HD Webcam for testing the vision.
Software
Playing around with layouts for a quick test tool. two grey areas are for the cameras.
Well that is it so far, my Motorola Atrix decided that the fingerprint reader would become burning hot to the touch. So I pulled it apart and removed it, but somehow managed to make it do a full hard reset (or a docwho76 as we call it ) and it deleted a bunch of my pictures. google+ had failed to sync them. But we’ll keep documenting the project,
charliex, Jose, Marc Lalonde, and 5 others are discussing. Toggle Comments
Hey, this is great guys! I have the exact same pick and place unit and went through the same pains getting it up and running about a year ago.
Thought I’d share a couple tips that I learned, you might already know them, or they might help.
I was having trouble with the autochanger detecting if a bit was attached. At first I thought it was the reed switch. But it turned out that it was actually the PS4 pressure switch. You can put it into test mode, drop a bit onto the rubber pad by the autochanger and then look for a red LED to light up on the PS4. Adjust the screw on the PS4 to get it just right.
The other tip is that I don’t even bother with the teaching light anymore. Screaming Circuits has an EAGLE ulp file that generates a centroid file with exact coordinates of your parts. It saves a LOT of time to just print out the centroid file and type the exact coordinates in instead of teaching each component location. http://i.screamingcircuits.com/docs/ScreamingCircuits%20centroid%20ULP.zip
Hope this helps, and hope you guys have as much fun with your Juki as I have.
Yeah i saw you on the zevatech list, seems like its a small world!. We’re completely replacing the PCB and rewriting the software for it. The reed switch was definitely broken, and once repaired and realigned the head, it picks up stuff really nicely now.
The initial plan was to reverse the save file and put the centroids directly into that, but we decided to go whole hog and just redo all the software.
The thought has crossed my mind to replace the old Z80 computer with a Soft Z80 running on my Papilio FPGA board.
The two problems with that are:
1) The software as it is is not the greatest, seems like a lot of work and you would end up with the same software.
2) It’s a lot of work that very few people would actually ever use.
But, I love my local hackerspaces and if you think you can use a Papilio FPGA board I’d be happy to donate one to you guys.
thanks Jack, I’ve got a few of your fpga boards already, got a few maybe three years ago? when we were all looking at the sump. we’re always happy to take more donations of dev boards though for people. http://wiki.032.la/nsl/Equipment_Inventory
But we’re actually replacing it with an Stellaris ARM because TI gave us a bunch of free chips and dev boards, if we promised to make something cool. I’m writing the PC control software from scratch too and adding machine vision etc. I’ve got most of the board ready in eagle.
Wow, that is far too cool. Taking an old piece of tech and extending it’s usable life by upgrading it’s systems is priceless. I wish you great adventure with the machine!
Very cool! How are you planning to implement the control software and vision system? I’ve been laying some groundwork for an open-source pick&place design, and the software controller is the next major step. (Right now this consists only of a Python to EMC2 remote interface and a few not-ready-for-primetime opencv experiments, but my freetime will free up again a bit this fall!)
“Shims, we don’t think these are factory shims.” – They ARE factory shims.
“The strange piece of string inside the head… What could it be for?” – It could be and in fact IS an oil wick. Google JUKI to find out what they made b4 pp machines.
Contact Marc LeLonge(sp?) [alphatronique.com] on Zevatech list, he completed the ARM controller w/ PC GUI a while back.
There are also scanned manuals and exploded mechanical dwgs for machine and assy’s.
We found out about the shims being factory last night oddly enough, however the string was there to hold some bits in place. I’ve already chatted to marc, his solution isn’t finished yet and we’re pertty much at the same stage he his, maybe even a little bit beyond it as we’re moving on to the machine vision.
I have three 460 heads all with “the string”, just like in your photo. Two from Florida and one from Texas. Hmm.
charliex
5:34 am on September 10, 2011 Permalink
| Reply
yeah the oil string thing makes sense for the age of the machine, with modern lubricants you shouldn’t need it. our head was in a mess when we got it and had to rebuild it and it was held together with all sorts/ it wasn’t in the manual we could see either.
Marc Lalonde
6:19 pm on September 13, 2011 Permalink
| Reply
Hi
sorry charlies but my project not a same stage of your
i have all my machine doing production since august
and one of it whit vision and servo rotation on head
Kit i put on ebay was intended to be easy to install and setup so i remove
servo and vision since i quite hard to setup and expensive since i use cognex vision system
optic and lighting was not easy task to setup (top and bottom vision)
as for software issue that have make me crash my machine head it was fixed now
so now i monitor head cylinder switch and stop all motor in hardware if head was not full up
old soft version rely on soft but experience show me that if head was stuck down(no air)
the protection was not good and may let motor move and cause damage
but i not yet knot if i put back on ebay since commercial grade hardware software make it expensive
and market was quite limited so seem that i will never recover R&D money i put on solution
but at last i have all my 5 machine working (3 in production + 2 spare)
so my project main goal was dome i have machine that operate like i what and take 3 minute to program
also remeber that make machine move was the easy part , make it easy to operate ,user friendly
and reliable was more difficult i have ~75k line of code firmware hardware for have it
Best regard and good luck
Marc lalonde
Alphatronique inc.
charliex
6:38 pm on September 13, 2011 Permalink
| Reply
We have the head up down detection, it won’t move with the head down, it knows if its homed, it knows the size of the table, it knows if its not moving, it knows if it picked up a tool or not, it knows if it picked up a part or dropped it, it knows if the air supply is probably getting low and waits for the compressor to catch up. It knows if the emergency switch has been pushed and needs to rehome. We’re using half step, the controllers have been updated for newer ones, same for the motors.
We’ve added all sorts of safety features, some of them weren’t in the original . everything that can be checked is checked. The machine vision is being added too, head rotation is being worked on last night.
There is nothing fancy about it, its a very simple system it doesn’t take a lot of work to better the zevatech.
All of this we’ve done in a couple of weeks.
Marc Lalonde
10:05 pm on September 13, 2011 Permalink
| Reply
Hi
as said before i have no bout about your hardware
i just curious wly change drive and original stepper ?
original 5 phase stepper have lot of torque @ hi speed compared to 2 phase stepper
and still not sure about wly use half step ? original drive do 0.25mm/step
(zevatech software handel only 0.5mm but it software limitation)
but i found that resolution limitation not come from motor but from feeder mechanical variation (repetability issue)
and solder past making part slick since head height and force was only limited by gravity
Best regard
charliex
10:10 pm on September 13, 2011 Permalink
| Reply
Simply because we could and had the parts on hand in the lab. The new controllers also offer more features too, the guy i work with is a cnc magician so he’s the one driving the changes.
We’re also planning to add more features to the machine, and get down to 0402 (or better) we’re working on our own feeder design.
Hi Charliex, great work on the 360, I have a JUKI KP460 that also have rebuilt and doing some ggood work now, but I’m VERY interested on upgrading it to camera and GUI interface, eager to replace the 286 PC running it!!!! and the folppy drive, great tip, great work, I’m not a programmer but like to tinker, any info/tips on how to modify my unit servos to OpenPnP great. Also feeders, are you guys thinking to modify the feeders? to smartfeeders? and the tips, when you break were do you get the replacements from? I broke a few that I patched and modified to pick up up to 0603 components.
For some reason I always pick up these dumb scrolling message things at Fry’s, first one had an embedded uC that Furan had hacked by RE’ing the wires and installing a new uC, this one has USB but doesn’t work without the program running on the Host PC….
So lets hack it..
First thing is that it is a USB HID , so that is fairly straightforward. HID Write comes into play here. Jan Axelson is pretty much the standard for USB/serial etc http://www.lvr.com/hidpage.htm
A quick poke around the bytes look like, brightness, location, data. 0xFF is all off, 0×00 all on. right most byte is left most on the display at 0×00 0×00 0xFF 0xFF 0xFF 0xFF 0×00
First byte is brightness
Second byte is vertical row 0×5 is the bottom, two lines are written at once. If you give it 0×6 it’ll write the first line to the last row, then wrap after a few that disappear.
It takes 0×9 message length, and no read back.
That’s it on the hardware side really!
Using usbhido_vc6 as an example, all you have to do is FindHid() with the VID/PID set, and then do
I just threw in some junk code to show it working
if( MyDeviceDetected ) {
// always OutputReport[0 ] = 0×0;
// brightness 0 .. 15 OutputReport[1 ] = 15;
OutputReport[2 ] = row;
row+=2;
row%=8;
// fill in some random data for( int i= 3 ; i < 10 ;i ++ ) { OutputReport[i]++;; }
if (WriteHandle != INVALID_HANDLE_VALUE) { HRESULT Result = HidD_SetOutputReport (WriteHandle, OutputReport, 9); // fixed length (comes from device report) } }
It’s trivial to treat the output as a frame buffer, 21×7
offset 3, 0×00 – right hand side 5 LEDS on offset 4, 0×00 – middle 8 LEDS all on offset 5, 0×00 – left 8 LEDS all on
offset 6, 0×00 – right hand side 5 leds on , second row offset 7, 0×00 – middle 8 LEDS all on, second row offset 8, 0×00 – left 8 LEDS all on, second row
0xfe in an 8 LED cell, would mean the leftmost LED was ON and the others off
0xaa would be ON,OFF,ON,OFF,ON,OFF since the leds are reversed, since 1 is LED off.
Wow nice, I have no clue about the HID stuff but I guess it shouldn’t be a brainer to come up with a VB script that writes any message to it? You know, I’d like to let people leave comments on a website and have it sent to a little HTTP-server on my comp, then pass the message on to VB and have it displayed on the LED. Oh and received email headers could be displayed too. All I’d need is the VB code, any clue how to make that possible?
oh i just found something here – http://board.homeseer.com/showthread.php?t=129324
“There is a 3rd Party interface for the Dream Cheeky LED sign available. This allows Cmd line control and even has client/server facilities, font and graphic editing.”
Any further developments on this? I am looking for a way to visibly report on the latest build coming out of CruiseControl.NET, and figured this board would be awesome for “BUILD FAILING” messages… and maybe the name of the programmer who broke the build. Anyway, I don’t want to have to load software, I’d want something that would be .bat / .com friendly. Surely it’s trivial to call a .exe from a .bat and pass in a string, which is passed to the message board, yes?
I’m a bit worried about accuracy and the unusual use of math here, “It’s trivial to treat the output as a frame buffer, 21×7″ . Are we saying the device has 148 pixels and they are written to from left-to right, not top to bottom as one might expect?
It’s definitely 21×7, honestly i don’t recall if its left to to right or to bottom addressing, but you’d deal with that in the per write routines anyway. I do recall it being left to right.
Turns out its the Western Digital MyBook connected to the firewire port, supposedly it only happens after hibernate/resume but i was getting it at other times. Perhaps the drive itself was sleeping.
No solution I can find for W7 yet, Vista had a known problem for it and a service patch.
DRIVER_POWER_STATE_FAILURE (9f) A driver is causing an inconsistent power state. Arguments: Arg1: 00000003, A device object has been blocking an Irp for too long a time Arg2: 87653028, Physical Device Object of the stack Arg3: 82d70ae0, Functional Device Object of the stack Arg4: a980bd70, The blocked IRP
I was out enjoying my day at Starbucks, and my aspire one needed a reboot for something, came back to a blank screen and deader than tank tops and platform shoes.
So I did what anyone would do and took it apart, checked it all over for anything obvious, nada.. So then I checked google for others having the same issues, and sure enough its a common problem ( note to self, do exactly the same thing since you learn a lot more taking it apart than just finding the answer on google!
Apparently loosing the BIOS isn’t infrequent for these little machines, i really like it but i’ve made a few changes to it, added bluetooth changed the “i can’t believe they can get away with that” terrible wireless card that disconnects and disappears if you look at it the wrong way.
So quick flash with a USB recovery stick and it came back to life, and with only one screw left over!
For various reasons ( 8GB RAM and badly behaved software, or lazy software companies that don’t make 64 bit drivers) I run Vista 64 and the Windows 7 32 eval, i have them on different partitions ( Though I didn’t have to install an XP build since the Virtual XP in 7 seems to work pretty well, which is good because its a bit of a hassle to install XP after vista/7 are installed )
First I’d setup a new machine with each of the OS’es and set about installing a copy of the software I use to each of them, then installed the patches and so on and so forth, very time consuming.
Then i wondered about using junctions (soft links) to the different software on each OS install, obviously it won’t work on software that has native 64/32 versions that only install one or the other, but it I tried it with VC2008 SP1 and it works just fine.
1. Install and Patch VC2008 on both OS’es using same setup.
3. Boot into the OS you want the Junction to be hosted from, the original copy. Especially in the case of VC that runs all sorts of processes from its directory, so you cant rename it.
4. Rename the Target Directory to something else (later to delete). i.e.. “Microsoft Visual Studio 9.0” to “_Microsoft Visual Studio 9.0” or such.
5. Pop into the command shell and create a junction junction “D:\Program Files\Microsoft Visual Studio 9.0” “C:\Program Files(x86)\Microsoft Visual Studio 9.0”
For your OS it might be a different path, especially if you aren’t using a 64 bit OS. Junction is <target> <source>
Reboot into the other OS and try it out.
I also tried it with my new blog and windows live editor, since i have it installed in two OS’s. I only see the previous posts on the OS i created them on, so to solve it I created a junction from
“c:\Users\charlie\Documents\My Weblog Posts”
to
“D:\Users\charlie\Documents\My Weblog Posts”
removing the latter directory first as well as using your username path.
When I ran the Live Editor , the old posts did not show. I found though if you save a draft, they all magically appear. I actually just went to the above folder and double clicked an old post, and then saved a draft, but either ought to work.
Junctions are a lot like soft links in Un*x and can very useful, Windows does make it a bit harder on us since so many programs store odd information in the program folders, you might also get issues with the long type identifiers for drive paths, though that would be rare.
To determine if a program folder was suitable to do a junction with, i did a directory compare with the awesome Beyond Compare, change it to a binary comparison first, some files will likely be different, cache files, rebased dll’s etc but nothing i could find that mattered, i always have UAC off so security so far hasn’t been an issue.
You potentially run into issues when you’re running an update on a program that puts things in other folders, i.e. the windows folder, since it’ll be out of sync, to be sure break the junction, copy or rename the old folder if you kept it around and then install all the patches to be sure. A lot of updates just overwrite the files again anyway, so its often OK to just run the update twice in each OS.
Be careful with some folders as it’ll royally screw up windows if you pick the wrong one, but it’ll work for most of the My Documents folders, just watch out for some of the hidden application ones.
Pity it won’t work for everything, but my hope is that Windows 7 64 with a virtual XP inside it will solve all my problems and I’ll only need one copy of everything.
There are a couple of problems with the Live Blog Editor and this method, i think its using the cache files to link new posts against old edited ones, so if i edit a post from the other OS and then publish it, it’ll make a completely new entry, which is annoying, hopefully I’ll find a way around it *1
*1 And i did, click the ‘More..’ then switch to editing articles via the blog itself, rather than use the Recently Posted, this somewhat defeats the purpose of using a combined data folder. But once you’ve edited it once it seems to fix itself.
Andrew Bailey 4:23 am on December 24, 2012 Permalink |
Dumb question, why did you want a 00 MAC address?
charliex 4:33 am on December 24, 2012 Permalink |
Its the first part, so 00-90-a9-a2-1a-33 isn’t cloneable it has to be 02-90-a9-a2-1a-33 06-90-a9-a2-1a-33 etc. Useful for when an ISP uses your MAC to identify your NIC for home internet connections etc.