I'm just thinking of the projects I have coming up. The little board I want to play with to begin with has 13 different components - most are 0805 and 0603 resistors along with 3 different zener diodes, a small 4-legged bridge rectifier (DF04S, I think) and several mmbt4401 transistors. Its a simple circuit on a very tiny PCB - I got 200 panels of 6 boards per panel in my last PCB order. The board manufacturer also supplied a stainless-steel paste stencil for $50, which I thought was a reasonable price for stainless-steel.
The idea behind getting so many panels was specifically for me to be able to play with pick-and-place. I've got a Shapeoko CNC machine almost ready to go - the machine was actually built a couple of months ago but I'm reworking the Z-axis to use belt drive instead of a screw. But - I'll happily abandon the project if I can get a semi-pro machine for the cost that this machine is looking to cost.
My next SMD project uses significantly more component types - somewhere in the region of 25 different components. That said - I'll do what I can to reduce that number, even if I have to combine multiple components to get the correct values.
All of this is so that I can cost-effectively produce small to medium quantities of SMD boards in-house instead of having to out-source them or build them entirely by hand. Production quantities will be out-sourced - the big guys can do it much better than I can at lower cost. But they aren't much interested in less than several hundred to several thousand boards.
Anyway, I'm still VERY interested in purchasing this machine. The larger one would be nice but its definitely NOT worth an extra grand at this point in time.
Thanks again, Ian. I know that you didn't ask for all this extra work and you already have your own machine coming in - you don't really have to invest more time to help the rest of us out. I, for one, *really* appreciate it.
Anyway, wire transfers from Canada to Asia usually run about $45 and take anywhere from 15 to 30 minutes to process at the bank. Why so long? The Canadian banking wire transfer fields do not match to those in Asia and so it is a bit of a process. The $20 to $25 transfers mentioned by your manager is probably the cost for transfers to US destinations.
Sam
The bank wire transfers that I've been making are to Chinese PCB suppliers. I was pleasantly surprised at the cost - I had fully expected it to be in the $45 - $50 region based on past experience.
These wire transfers are being made from our US Dollar account. Like I mentioned earlier, wire transfers made from our Canadian Dollar account cost significantly more. I really have no idea why there is a difference. FWIW - we bank with Alberta Treasury Branch (ATB).
Something that that really frosts me is that I used to purchase PCBs made by a Chinese manufacturer but handled through a Canadian broker. The broker used to charge us for THEIR wire transfer fees to the manufacturer, which means that we paid wire transfer fees twice: to the broker as well as the broker's fee to the manufacturer. That only happened a couple of times before I found out about it - and it doesn't happen any more. I don't often get mad but that made me furious and I let everyone involved know exactly how I felt about it - including the PCB manufacturer. That policy changed soon after <grin>.
[quote author="ian"]Seeed is going to the factory on Monday and I have committed to buy one. Our goal is to get them at 3000 flat.[/quote]
Is there any chance that I can hop in with this purchase? I'd need to be able to arrange shipping to Edmonton, Canada.
I can do payment via PayPal or bank wire transfer - whichever is easiest. Bank wire is probably the least expensive, though. I think that our office manager says that it costs us something like US $20 to send a wire transfer in US Dollars. Oddly enough, it costs significantly more to send a wire transfer in Canadian dollars, even though its the same banking institution.
Anyway, please let me know. I'm also game for whatever accessories that others deem necessary.
[quote author="matseng"]Dammit Beavis! What the h*ll is going on here? :-)
I got some battery clips to make a 23A battery (a tiny 12 volt battery) -holder for an upcoming project. But when I snapped in the battery in the holders it was short-circuited thru the battery casing by the clips [/quote]
I use these clips in several projects. What I did was to insulate the clips that hold the battery with Red and Black heat-shrink tubing. This both insulates the clips PLUS gives the poor user some idea of how to install the battery.
A cooking pot with a 5W, 10W, or 15W TEG (Thermo-Electric Generator) power module on the bottom. The heat source is the hot side, the contents of the pot are the cold side. Must be used with a "watery" material inside the pot (water, soup, whatever).
Looks like they use thermocouple connectors to connect the pot to the control module. The smallest unit puts out 5V @ 1A but they plan to offer 9V and 12V versions in the future.
The stated use is for charging cellphones and such.
This actually looks like it might even work <grin>.
I'm not sure about the administrator issues, but I believe the sample rates are divided that way intentionally. There is a device mode that allows arbitrary frequency dividers to be set though in Device->generic IO.
Thanks, Ian.
I did solve the administrative issue: I created a shortcut to the batch file, then set the properties of the shortcut to run as administrator. It now starts properly when I click the shortcut.
Regarding the sample frequencies: the sample rates start at 10Hz and go up to 200 MHz in a standard 1-2-5 sequence except for 2KHz and 5KHz. I was assuming that is an oversight or mistake and am simply asking if that is indeed the case.
I noticed it because I was testing the OLS out at home where I don't have much in the way of test gear. So: I connected channels 1 & 2 to the "Update" switch on the OLS board and chose a low sample rate so that I could see button presses. 1KHz is a little slow and 10KHz is a little fast (6K samples). I used two channels simply because I didn't know which side of the switch was ground.
I'm also happy to report that RLE seems to be working - I can capture much more than 6 seconds worth of time when the OLS is set to 6K samples @ 1KHz sample rate. I'll actually have to use some proper test signals to verify correct operation, though.
I needed to have this working for Monday morning - I've got to capture a SPI data stream to see how much data is present. Its a long story, but the SPI buss controls a bunch of digital pots (each with its own select line) as well as some 74hc595 shift registers (with their own latch line). I was going to use the original OLS firmware and software but figured that I'd give the new stuff a workout.
Its easy for me to do this - I purchased two OLS boards. One has the latest firmware and bitstreams as of last fall, the other now has the Demon firmware as of yesterday.
Thanks again for making such great tools available at prices I can actually afford!
I'm not sure if this is the proper place to be asking questions, but here goes. Would someone be kind enough to move this post to its proper place if this is not it?
Anyway, here goes.
I'm trying to run release 0.9.3.1 on my Win7 64-bit system. The files are stored in D:OLS. I get errors when I run the 'run.bat' batch file as follows:
ERROR: Unable to create cache directory: .felix-cache ERROR: Error creating bundle cache. (java.lang.RuntimeException: Unable to creat e cache directory.) java.lang.RuntimeException: Unable to create cache directory. at org.apache.felix.framework.cache.BundleCache.<init>(BundleCache.java: 101) at org.apache.felix.framework.Felix.init(Felix.java:588) at nl.lxtreme.ols.runner.Runner.<init>(Runner.java:89) at nl.lxtreme.ols.runner.Runner.main(Runner.java:119) Exception in thread "main" java.lang.NoClassDefFoundError: nl/lxtreme/ols/util/H ostUtils at nl.lxtreme.ols.runner.Runner.<init>(Runner.java:98) at nl.lxtreme.ols.runner.Runner.main(Runner.java:119) Caused by: java.lang.ClassNotFoundException: nl.lxtreme.ols.util.HostUtils at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 2 more
<end of copy> I've checked security permissions and modified those to allow full access. No help.
[quote author="rsdio"] The hardware is fundamentally limited by the clock frequency going into the timer, and the number of bits in the counter. Specifying the desired frequency in Hz will not always be accurate.
It might be better if the Bus Pirate protocol had a command to query/set the basic peripheral clock rate, pre-divide options, counter settings, etc. Then, the client app could present options to the user in terms of period length or frequency. It might even be possible to have a popup with the precise frequencies and/or periods that are available with any given settings, and these options would change as different clock sources are selected, different pre-divide values are chosen, different timer modes are picked, etc.a suggestion to think outside the box... [/quote]
Let me propose something along the lines of what you just said: Can the BP monitor and display its own generator's frequency? If so, it might be as simple as allowing the user to tweak the counter bits up and down and home in on the desired frequency.
So far, I use the BP with a dumb terminal program (Procomm Plus). Its installed on all of my machines (Win98se, XP, Win7). Have to say that I haven't actually used it on my Win7 box yet, though - but give me time .
Anyway, I'm hoping for something that does NOT require the use of a dedicated client.
I'd like to propose one possible change and one variant.
1) The change is to allow finer tuning of the Generate command. At present, it appears to allow steps of 1KHz, starting at zero and increasing to 4 MHz.
Although useful as it is, I would find it much more usable if I could get finer-grained control.
For example, I needed a 32.768 KHz signal the other day while I away from my shop. My choices from the Bus Pirate were either 32.0 or 33.0 KHz. Neither was close enough to work.
I don't know if its reasonable to allow setting of output frequency down to 1 Hz resolution but 10Hz or 100Hz resolution would sure be nice.
Thoughts?
My other question is regarding the wire colors shown when you display Volts. The cable from Seeed has two mini-grabbers on the brown and orange wire, with ez-hooks on the remaining 8 conductors.
If you insert the connector one way, the colors match what is shown in the Volts display, with Gnd on Brown and a voltage on Orange.
If you reverse the connector, the mini-grabbers wind up on MOSI & MISO which often is really useful.
I guess that what I am saying is that I'd like to be able to toggle the Volts display between the two different wire color schemes. Maybe "v" & "V" ?
I have working PIC code that I'm happy to share. It has been used with 12-bit-core (12F508) and 14-bit-core devices (16Fxxx).
STXFAST ;enters with byte in W ;This version uses MFM encoding instead of NRZ: 25% / 75% encoding ;View with DSO set to trigger on <3us pulse width esigned to share an output line: preserves state of that line #define _STXOUT RA,0 ;transmit on spare pin ; #define ShareTXpin ;uncomment to save state of TX pin ; #define SendSyncBit ;uncomment to send intial sync bit ; #define UsingTMR1 ;uncomment if using TIMR1 ; #define SendLSBfirst ;uncomment to send data LSB 1st (MSB otherwise)
movwf SUBTMP1 movlw .8 ;8 data bits, no start or stop bits movwf SUBTMP2
ifdef ShareTXpin clrf SUBTMP3 ;save current state of o/p line btfsc _STXOUT decf SUBTMP3,F bcf _STXOUT nop endif
ifdef UsingTMR1 bcf _TMR1ON ;halt timer 1 for now endif
ifdef SendSyncBit ;send start of byte identifier that DSO can trigger on bsf _STXOUT ;single pulse 2cy wide (2us) nop ;set DSO to trigger on + pulse less than 3us endif
StxLoop ;8 cy loop: 125 KB/S with 1us instruction time bcf _STXOUT ;2 cycle LO
bsf _STXOUT skpc ;2cy HI + 4 cy LO **or** 6 cy HI bcf _STXOUT decfsz SUBTMP2,F goto StxLoop
ifdef ShareTXpin btfsc SUBTMP3,0 ;restore output pin state bsf _STXOUT btfss SUBTMP3,0 bcf _STXOUT else nop ;maintain same HI or LO pulse width bcf _STXOUT ;idle LO endif
ifdef UsingTMR1 bsf _TMR1ON ;only if TMR1 is used endif
return ;66 cy, not inc call & return ;Using TMR1 adds 2 cy, using SyncBit adds 2 cy, using ShareTX adds 9 cy
Notes for the above:
STMP1, STMP2, STMP3 are RAM bytes allocated for subroutine usage and must be defined prior to this code being called.
I'm the proud owner of a Bus Pirate and think this tool is going to help me greatly.
I'd like to add a new protocol to the Bus Pirate but am not sure how to go about even beginning.
I'll describe what I want and was hoping that someone might be interested in helping me implement it.
The protocol is a receive only serial protocol that uses a form of MFM encoding. Its generated by a chunk of code that I drop into PIC projects when I want to get some data out of a project that I am debugging.
The protocol is simple:
1) an optional sync pulse of 3us 2) 8 data bits where a logical 0 is 6us LO followed by 2us HI and a logical 1 is 2us LO and 6us HI. Data rate is 125 K bits per second
framing: a period of more than 10us either HI or LO.
Some background: I drop the code that generates this protocol into projects that I am currently debugging. Its designed to share a line that is already used as an output - whether its a LED or buzzer or whatever. It can be implemented such that it preserves and restores the original state of the line when it finishes transmitting the current byte.
I normally look at the bitstream with a DSO set up to trigger on narrow pulses. I can easily read 1 or 2 bytes of data on the DSO screen.
This has worked well for me for many years.
It occurs to me that it should be child's play to decode this with the Bus Pirate. That would make viewing easier and would make capturing lots of data to a disk file very easy.