I'm gonna need a couple of PIC32 dev boards for a school proyect, and I thought about using the PICqueño, as it's the cheapest one I can get. I already own a PICqueño but I populated it with the PIC32MX320F128H and for this proyect it would be really really nice to have DMA available, so I thought about building two PICqueños with PIC32MX340F128H which should be compatible, and the extra ram would also be pretty useful (these babies will (hopefully) run a 400 input, 40 output, 3 layer neural network)
So I was thinking about ordering some PICqueño boards from seed/itead myself. Can I do that? I mean, I think I can because this things are open source, but maybe there's some issue that I'm not taking into account so that's why I'm asking for explicit permission.
I would also send the spare boards to the free PCB drawer.
A friend of mine loves chiptune, so he told me to mod his game boy to include screen backlight and a mod called prosound which is just an extra line-out minijack connected in such a way that it bypasses some noisy amplifiers which add an undesired audible hum. He's gonna use that gameboy for chiptune compositions with LSDJ.
So well, I thought about providing him with 10 different levels of backlight intensity. A small PIC12F683 (had it on hand) controls the LED's that light the screen via PWM through a P-channel mosfet. So at first I thought about using a PWM frequency above the audible range to minimize crosstalk effects, but the mosfet seems unable to switch that fast and the behaviour is kinda erratic. So I thought about using a low frequency but high enough to avoid flickering. The backlight didn't flicker, but as the refresh frequency of the screen itself almost matched the PWM frequency, some strange stroboscopic-like effect appeared. So I started increasing the frequency and just when the stroboscopic effect disappeared I started hearing a hum that I knew it was coming from the PWM signal coupling into the audio stuff.
So If I increase the frequency too much the mosfet doesn't behave properly, and if I drecrease the frequency too much a strange effect affects the screen. In the usable range a hum at the PWM frequency couples into every audio output.
The PCB which controls the backlight has its own dedicated regulator taking power directly from the main switch of the gameboy (which switches power from the batteries) and it's star-grounded with a dedicated wire running through the side of the console straight to the battery holder's ground terminal. The wires that carry the signal to the backlight LED's run sandwiched between a ground plane in the front PCB and a copper tape shield in the back PCB. So I don't really know where the hell it's coupling. Moving the wires that go to the LED's doesn't change the hum at all, and using the gameboy's power regulator instead of the on-board one also does nothing.
I know the hum comes from the PWM because if the duty cycle is 0 or 100% the hum disappears. Any idea?
I have a problem that's driving me nuts. I'm designing a robotics platform based on arduino for a very basic robotics course. The idea is to have an arduino with extras, like an H-bridge, some infrared sensors, an accelerometer, a color sensor, some battery charger and things like that, in a robot chassis shaped PCB. So you have a chassis PCB, you assemble the motors and there you go.
Also, I wanted to design it stealing as few pins as possible to the arduino. So everything uses an I2C bus to communicate. There's a secondary PIC16F677 microcontroller to handle the infrared sensors and some other stuff, and it interfaces to the ATMEGA via I2C. The color sensor and the accelerometer are also I2C and require 3.3V signals.
So I'm using an I2C voltage level translator/isolator to translate the 5V from the ATMEGA328 into 3.3V, and those 3.3V I2C lines are distributed to the sensors and the PIC.
So here comes the problem. The PCA9306 is pass-transistor based and requires pretty low value pull-ups to drive enough current through the pass transistor and allow proper operation (with the load imposed by my three devices, the thing should work at 100kHz with 10K pullups, but the use of the PCA forces me to use 1K pullups). It looks like the ATMEGA328 I2C open collector drivers have pretty weak transistors too. So the VOL in the arduino side is somewhat around 180mV (checked with o-scope). For some reason, the VOL in the 3.3V side gets multiplied and it's about 300mV. The accelerometer recognizes that as a 0 and works perfectly, the color sensor does it most of the times (but operates with some glitches) but the PIC doesn't recognize that as a 0 and therefore doesn't work. Well, to be fair it answered two or three times to its slave address in one of the tests, but then no more. I'm using the hardware SSP of the PIC.
I know that the PIC doesn't recognize the zeroes because I made a small testing program which made the I2C bus spit lots of zeroes, and I programmed the PIC to light a LED every time it detected a zero, and the LED just gave random pulses of light, and its activation signal didn't look as the I2C stream at all.
So next step, go for another bus translator. This time a TXS0102 from TI which I had on hand. Also pass-transistor based, but it requires far less current. The problem gets better but the PIC still doesn't recognize the zeroes with a VOL of 200mV.
So the whole project is based on I2C and it's the only part that doesn't work. Any advice? I'm thinking about trying an I2C translator WITH repeater like the PCA9517... Any advice?
This is all the PCB-related stuff I had before knowing DP:
And this is now, after knowing seeedstudio/itead from DP:
And I should have another two leftover boards like the big one, but I don't know where right now.
I could do the same with my piles of components, but it's kinda hard to gather them all. Before DP I had a box from DigiKey, a big envelope from farnell and a medium sized box full of components.
Now I have all that plus two new big envelopes from farnell, a big box from mouser, two new boxes from digikey and 2 more medium sized boxes full of components. Too lazy to take pictures.
I'm now trying to implement a barcode-based inventory control system for all my stuff.
I have to place a components order in the very near future (probably next week) and since I know DP, every time I order components I add some for a DP proyect.
This time I don't know what to build. I have a free PCB coupon waiting to be spent in something useful.
For now I have: -An OLS -A bus pirate -A CPLD dev board -A Piqueño
So what comes next, DP?
I personally like the LPC dev board and the TCPIP to serial converter.
This one has been a present for a good friend of mine.
Picture: http://i41.tinypic.com/rif1uo.jpg As always, it's soldered with solder paste and reflow and has some manual touches with the iron. It works perfectly.
Looks like the haxxors have fund a method for hacking the XBOX360 via glitching. They slow down the CPU and send a slower than required reset pulse. Then, about 25% of the times it glitches and loads a modified bootloader which gives access to the system and lets it load unsigned code.
The glitch generation requires fast programable logic, and they suggest using the digilent C-MOD which uses the XC2C64 CPLD. Every hacked XBOX needs one ofthose CPLD boards permanently attached, so there are millions of potential customers out there (the hack seems to be unpatchable in the future my Microsoft)
The XC2C64 board from dangerous prototypes would be totally compatible for using this hack. I know that this place is more about making new open hardware than about opening closed hardware, but maybe you could promote your boards out there. They'd be a total best seller, for sure. On the other hand, the forum would be filled with the worst class of noobs (those who don't want to learn and just want quick answers for already solved problems) and it would also affect the reputation of the site.
I'm not sure if I want this forum to become a nest of console hacking kiddies asking why their board doesn't work while showing a picture of the problematic board with a drilled hole in the centre of the CPLD which they made because someone told them that it'd make the CPLD go faster.....
I don't know what the hell is happening, but MPLAB keeps failing at programing the bootloader. The FTDI works and enumerates, and the PIC has no solder bridges, checked 4 times already. I'm getting mad...
It lets me read the PIC but it won't get programmed, it says
Programming... The following memory regions failed to program correctly: Boot flash memory Programming failed
Maybe it's fried but I don't know why....
EDIT: Oh well, a power problem. Seems that my PICKIT 3 was only putting out 2.8V instead of 3.3. I set it to 3.6V so it got up to 3.13 actual volts, and it programmed perfectly. Hoooray!!! Picture is coming.
EDIT2: here are the pictures. I soldered the board using the stencil I had made. I had to spread the paste twice, as the first time I put too little paste and not all pads were covered. The "spread quality" looked acceptable so I decided to continue with the mission (was much better on the first spread, I think that the paste just got hotter and more fluid between spreads). The plan B if the stencil failed was to just spread the paste manually, as I always do. This is how the paste spreading went:
I have two different soldering pastes, one that has superior quality and leaves no residue, and one that is pure crap and leaves a white, hard to clean residue. At least it gives quality solder joints. Guess which one I used for soldering this... (the high quality one is just too expensive to waste some by spreading it over a stencil, I use it only for manual application)
It looks a bit messy because of the white flux residue from the paste. But the soldering quality is actually very very good. I will try to clean it better with a toothbrush and IPA, and I'll post a pic after that if it gets much better. I'll try to get a nice supply of superior quality paste for the next times... I don't like white residues D:
Some shorts were formed in the PIC, but that was expected. They were easily removed with some flux and the iron. The rest was perfectly soldered.
I've always wanted to make my own soldering paste stencils. Some days ago I tried a method which should theoretically work, and it somehow did. I spreaded a coat of soldermasking ink (the only photosensitive, acid resistant thing that I have) to a piece of thick aluminium foil (the one that's used to make disposable food trays) and I insolated it. The soldermasking ink adhered very well to the aluminium. I covered the back of the aluminium piece with some plastic tape to protect it against the acid and I etched the stencil using diluted ferric chloride (it reacts veeery violently with aluminium). The result was pretty amazing for being the first time. However, aluminium is so soft that the stencil was useless as it was damaged while spreading the paste.
But well, it somehow worked, and if I could get the same results in a more usable material I could definitely produce usable stencils even for fine pitch components. So now I've ordered some 0.1mm copper foil to try again with a more proper metal. Copper should be much better for this as far as I know. It's not steel, but it's way more rigid than aluminium.
WARNING: THIS POST IS QUITE LONG. IF YOU DON'T WANNA READ, JUMP TO PARAGRAPH 4.
I'm a member of an university IEEE student branch, and every year we organize a basic-intermediate electronics and robotics course for beginners and to catch members. I'm the organizer for the next course, that will take place in early october, but as a big proyect that I was involved into has been delayed and now I have some spare weeks, I have decided to design a learning but at the same time powerful line following robot and i've already started the design.
It'll be a line following robot, completely based on arduino (not because I like arduino, but because it's simpler for beginners) and concretely on arduino duemilanove, because I think that we coudn't legally use the VID and PID of the ATMEGA8U2 that UNO's have so an FT232 could be the safest way. I will also correct the power distribution system to prevent current injection to the USB. It will feature an array of 8 infrared sensors to read the line on the floor. The PCB will be the chasis of the robot, supporting the motors. the lipo battery and the rest of the mechanics, so it'll be fairly big (should fit in 10x15). The idea is to include in the PCB lots of IC's (H-bridge, lipo charger, an accelerometer (cuz it's cheap and people loves things with accelerometers) and the sensors and related electronics ) without making too much impact to the arduino's functionalities, i.e. not stealing too many pins. The H-bridge needs 4 lines, but it can be disabled and apart for the negligible capacitive loads, it shouldn't affect those lines' functionality. The accelerometer has I2C and will have a couple of jumpers to disable it, I think.
The problem comes with the sensors. They are infrared reflective sensors (like the famous CNY70's) and you can get an analog voltage related to the amount of light reflected out of them. You only have to distinguish between a dark colour and a light colour. I have designed line following robots in the past, and what I did was feeding the analog signal from every sensor to a comparator with some hysteresis, with the threshold controlled by the microcontroller via a DAC or electronic pot. Then the output of every comparator was either fed directly to the microcontroller if there were enough pins, or via some paralel to serial shift register. That is a very fast and reliable way to read the sensors, but it's a bit expensive and hard to implement due to the amount of IC's required.
PARAGRAPH 4:
So i've though using another approach that i've seen implemented in similar robots, althought i'm a bit skeptical about it's reliability. The idea is to use an analog mux to sequentially feed the output of the sensors to an analog pin of the arduino, and just reading that value and applying the required thresholds and hysteresis on software. Something that arduiners love to do :p. Do you think this will be a reliable way to read the sensors, considering that the output impedance of the sensors should be around 50K and that I don't wanna use buffers? I don't know very much about the ATMEGA's ADC, but for PIC's it should somehow work, although it wouldn't be the best idea.
I would love to share this proyect with the community, but I think that I'll get (if i haven't already got) past the 1sheet of schematic and 80x100 board size of the free version of eagle and I'm not sure if I could share it. I'm using components and footprints from the dp library, the sparkfun library, eagle itself and some made by me, and I'm working over the arduino duemilanove's schematic. Would it be possible to share it?
I'm involved in some quite serious proyect related to GPS and I am the guy they hired for designing their custom hardware. I basically have to design a GPS data logger with GPRS internet connection to send data to a server. It'll also have a microSD card for saving the log. The interesting part of the proyect comes after processing all that logged data :p. I have the hardware design mostly under control, i'm still struggling a bit to find the best solution for the power management, as the GSM/GPRS module has the nasty habit of taking power bursts up to 2A for less than a millisecond, but the whole power system must withstand it without significant voltage drops (it'll feature the glorious TPS63020, that's for sure), and it'll be powered by a single cell lipo battery which will have to be protected and monitored (i.e. series resistance that makes transient reponse much worse and all that stuff). I'm trying to find the best monitor/protector solution.
I chose to use a PIC24FJ64GA106 as the main processor because it has plenty of RAM for all the file system stuff and 3 hardware UARTS, and was the first to show up in the list of PIC's that met requirements in the product selection tool. All the UART will be used (both the GPS and the GSM modules have serial interface as their main way to communicate, and the other will be FTDI'ed to a USB for computer controlling and configuration.
I commited to design the circuit and make the PCB layout (will be a hard one, with RF parts and switching PSU's all mixed together...I'll "love" it) and if they don't find anyone better i'll also have to make the firmware, but i'm not still commited. I'm not a software guy, and much less if I have to program something that must preserve the integrity of some valuable data through the whole system without dropping any bit because some buffer got filled or something. I can setup an UART, an SPI port, I think I can manage a filesystem (I've done it in C in ordinary computers, and for what i've seen it's pretty much the same in PIC's with the filesystem libraries) and I think I could do all that is required but in a PIC18 and using CCS.
It will be my first time using a PIC24 and also my first time using MPLAB for something more serious than changing a couple of lines of anyone else's code because I didn't like how a LED flashed. It will also be my first microcontroller program focused on data management, where RAM management will be really important. Most programs that i've done were things with very different requirements, like robots.
So well, after all this, any advice on the firmware stuff? Will it be hard to setup 3 UART's and manage them properly without dropping data? Should I stick to PIC18's? Is CCS any good for PIC24? is it easy to manage interrupts with PIC24 and MPLAB?
Built it weeks ago I think, but the button was missing because I didn't have any in stock. Got the buttons yesterday, so here's the final, completelly assembled picture.
I have an idea for a summer proyect that I'd love to share here. For now it's only in "thinking" stage, but I'll start seriously with it when I finish my exams. I just want you to tell me if you'd love the idea and if you'd want to have this product if it's finally done.
Well, the idea came to me after building my CPLD breakout board (will post pics). I have to power it with the bus pirate, because I don't have any handy, small PSU near my computer to take power from
So I thought about making a small PSU that woud take the input power from a USB port. That PSU will have a cheap USB microcontroller and an adjustable buck-boost switching regulator (not so cheap...). The idea is that you could adjust the output voltage on the fly via USB communication within a range (say 1.8 to 5.5 volts), and that you could also take measurements of the current voltage setting and current drawn by the load and monitorize those in the computer. It should also feature a stand-alone mode with some voltage presets selectable by jumpers or something, and a "led voltmeter", so you could connect it to a wall-plug USB adaptor.
It would also feature a clock output, that would travel through a level shifter to accomodate the signal to the current output voltage, so I could also have a handy clock source.
I think there are digitally adjustable buck-boost regulators (TI should have some, IIRC) but the adjustment could also be done with an electronic potentiometer.
There should also be a current sense resistor & current sense amplifier on the input side to monitorize the current being drawn from the USB and shutdown if it gets close to 500mA. (This part would be a bit tricky, as switching regulators tend to be quite sensitive to any input resistance at reasonable loads, but I think it's doable without a significant loss of efficiency).
I have quite a bit experience working with switching regulators (I have made some designs of switching constant current PSU's for laser diodes, up to 1.25A) and I think that a PSU like this could easily go past 90% conversion efficiency, meaning that you could have lots of power at 3.3V, and not be limited by a small SOT-23 linear regulator. However I don't have much experience with the USB part of the proyect so... if anyone wants to help, it'll be welcome.
The problem I see to this proyect is that it would be $$$$. Switching regulators are expensive, even more at low quanitities, coils are also expensive, and current sense amplifiers tend to be expensive too, so... well... at least TI provides samples for some of the best switching regulators i've ever tried (TPS630XX series are AWESOME) and coilcraft is always there for the coils.
So well, what do you think about all this?
EDIT: I've seen that there's a very similar proyect in this page, but my approach is different and much simpler, It's not a pro PSU, but just a small regulable one with a simple clock output. I mean, I want this to be as small and handy as possible, no power transistors in here!
I think we all hate how oxidized homemade PCB's get over time, and I also think we all love how easier it gets to solder SMD parts when you have a soldermask.
I myself tried to find a source for low quantities of soldermasking ink, better if photosensitive or UV curable, but I was unsuccesful. All I could find were buckets of the pro stuff for €€€,€€ in strange distributors.
I found it like a year ago, and I thought I had to give it a try. Bough a syringe and... my life has changed since then. Once you know how to use this stuff properly, your homemade PCB's will never look the same.
It's a bit hard to learn how to use that stuff, however.
The recommended way to apply it is to squeeze some drops in the centre of the PCB, cover it with a plastic film and extend the product with a squeegee all over the board forming a thin layer. But there is a problem: this stuff sticks to nylon, acetate and polyamides, so you can't use transparency films with the photolite already printed on them, because you'll mess up the board, so I'll tell you how I apply it.
The first thing you must find is a sheet of any thin but still quite rigid plastic. It must be as thin as possible but it must NOT form wrinkles, and be as smooth as possible. And it also must not stick to the stuff. Seems easy to find such plastics, but it isn't. I get mine from paper sheet packages. When you buy 500 sheet packs, they usually come wrapped in a kind of plastic that is just perfect for this job. You have to remove the prints from the plastic, I do it cleaning the plastic sheet with common ethil alcohol, until it's totally clear and transparent. Don't worry, plastic sheets are reusable and you won't have to buy a new 500 sheet pack every time you want to make a board.
Then, I apply a few drops of the product to the board, I put the plastic sheet on top and I extend the product all over the board with a plastic squeegee . The layer of product must be thin. If it looks too green then it's probably too thick. Once I have all the board covered with the product as uniformly as I can (a sandwich of board, layer of product and plastic sheet), I place the transparency film with the mask printed on top of the stack, and I align it with the board. Then I sandwich everything between two layers of glass and insolate the board for about 30 minutes with a 8 watt blacklight tube. Once it's done, the stuff that has been exposed to UV light will be hardened and stuck to the board, while the stuff that was covered by the mask will still be liquid. I peel off the plastic sheet that shouldn't be stuck to the ink (the plastic sheet shoudn't have rests of hardened ink attached), and the liquid ink that remains in the board can be easily removed wiping it with a towel and some alcohol or something. Then I clean the plastic sheet (which will have some rests of liquid ink) so it can be reused.
The results are pretty amazing, achieving very very high resolution masks that are really useful to protect the boards and facilitate soldering. Usually the coating won't be as uniform as one would want, and the texture and appearance of this solder mask isn't the same of an industry applied mask, but does its job perfectly.
I'll post pictures of the process if requested, but here's a sample of some homemade boards I did with the stuff applied:
(I took the same image I used for my presentation thread, obviously the OLS and the BP boards aren't homemade :P) I don't have other pics right now. The robot you see has three LGA or QFN -packaged IC's (a buck voltage regulator, a dual H-bridge and an electronic potentiometer) and the mask was perfect for them.
I had to register here to post a picture of a free pcb build. Now that I went through the registration process, I think i have to present myself. My name is David and i'm an electronics engineering student from Spain. I have electronics as my hobby and passion, and I also love lasers and related things. Over the years I've learned to code for microcontrollers and some stuff about analog electronics, and I'm pretty experienced in small switching PSU design, mostly for laser diode constant current sources (I have a quite powerful laser being pumped at 1.1Amps at 4.3V from a single li-ion). I also have some PCB making skills, and over the years I've developed enough of them for being able to easily make PCB's for tricky electronic packages and such. If I only could through-plate the holes... I'm equiped with a hot air soldering station, a temperature regulated soldering station with some different tips for the iron. I also have 2 boxes full of components that i've bough and accumulated over the years, mostly strips of passives and discretes, and a lot of leftover IC's from previous proyects. Now my goal is to learn some VHDL to develop CPLD and FPGA programming skills.
Here's a picture of my last electronic proyects along with the two gadgets I own from DP. I've ommited pics of the lasers for eye safety reasons :P [attachment=0] From left to right: A line follower competition robot, a 2-cell lithium battery charger-balancer, a MIDI based electronic battery controller (the rest of the battery is still to be built... someday) and a Nixie clock. All the PCB's are completely homemade.
Hope you like them. I hope I can contribute to this community!