Let's Make Robots!

GUI v2

Navigate around, line folowing, wireless telemetry
General view1.33 MB
General view1.43 MB
Down side of boards1.79 MB
Comparison1.66 MB
Top side of boards, without battery1.69 MB
General view of boards1.62 MB
Blocks Diagram46.96 KB
PCB Controller - Bottom49.77 KB
PCB Controller - Top67.16 KB
PCB Motors - Bottom57.07 KB
PCB Controller - Top58.6 KB
Schematics - Motors46.83 KB
Schematics - Controller58.57 KB
Control Board - Top983.26 KB
Control Board - Bottom891.75 KB
Control Board - Top Soldered1.05 MB
Control Board - Top Soldered with Breadboard883.89 KB
Control Board - Bottom Soldered993.88 KB
Control Board - Running a test.1.73 MB
S5033356.JPG933.6 KB

UPDATE 09/11/06  
It's finished! (almost). The Motor Board PCB arrives and I've soldered all components together. The final results looks awesome to me! Most beautiful that I've planed. There's some parts that I don't solder, because I need purchase a SMD rework station (all solders on this robot are made with a ordinary solder station). 
Two problems I only know after assembly:
  • I've used RA4 pin of PIC18F452 for digital I/O, but unfortunately this pin is a open drain. Because that, I need to solder a pullup 10kΩ SMD resistor. Lesson: All the times, read the entire datasheet before use any device pin. 
  • In my Eagle motor library, I don't provide horizontal restrictions. So, a little decouple capacitor stay above the motor, touch it, and make a bad contact between boards. Solution: remove it.
Well, even with all the issues (inverted connectors, capacitors with wrong package, pin without pullups) I think the whole project was a success. 
Now, the wireless part (NRF24L01+ transducer) waits to be soldered. It'll on the party next month. So, the whole project has been closed and I'll work on the software development, that I only write a very basic functions for test and maze solves.
Final Design
Final Design
The two boards
Two Boards - down
V1 and V2
There's a video of the test. And if someone needs more pictures or details, look at my Flickr page and my blog.
Thank's !!!
UPDATE 09/09/13 

The first definitive PCB arrived from Batchpcb and are soldered!

I received the board at this weekend, it's the first definitive PCB of my GUI robot. It's your Motor Control PCB. Above are some images. Only left to solder the nRF24L01+ because I don't have a Hot Air Reflow Solder, and the Buzzer that I can't find.
Note that I've made a little mistake on p-Channel MOSFET SOT23 pinout (orange wire fix). But nothing too horrible (but in the GUI v2 design, I'll remember that...).
The new YouTube video contains a little test to PIC18LF452, to see if it's alive. The test was a successful.
Now, I expect that in the next week the Motor Board arrives too, so I'll complete the entire robot. 


UPDATE 08/25/09
My PCBs are shipped!  I'm very excitted to pick them up and solder everthing! But this update is about the schematics. I released the entire schematics of two boards and now I comment the most important parts. The full schematic are in the attachments.
Motor Board - Motors
The Micro Gear Motors and the H-Bridge circui. To save two I/O pins on MCU, I used a 74HCT04 for drive the directions commands. I have never used other combinations (like 11 and 00) in control logic. You can see on left down two Ball Caster. I put two because I need two orientations on holes. 
Motor Board - Motors
Motor Board - Battery and Interface with Controller Board
This is how the battery are attached to board. Nothing special. On the right are the female housing for up board connection. On of them is for reflectance sensors signals.
Motor Board - Battery and Interface
Motor Board - Step-Up Converter for 5V
The LM2623 is a great Boost converter. Is very small (LLP or Mini SO-8 package) and use very tiny inductors. The output voltage is given by RF1 and RF2 voltage divisor by RF2=RF1/[(Vout/1.24)-1]. The frequency of PFM (Pulse Frequency Modulation) is setted by R18 andmay vary with input voltage (See page 6 of datasheet). In that design the frequency stay between 500KHz and 1MHz. The input and output capacitors are Tantalum capacitors, with X5R or X7R dieletric. I spect 85% of mean efficiency (over the voltage input range and current variation).
Step-Up Converter
Motor Board - Reflectance Sensors
These are the QRE1113GR Reflectance sensors. I have to write their symbol and footprint, because I don't find them in any place. So, I spect that the design is correct, specially the footprint. There's a lot of stuff on this robot that I have created the Eagle library. If anyone needs, I put my personal library here.
Controller Board - MCU
Nothing special on MCU. Is a PIC18F452. Detail is the Breadboard Mini, for small prototype.
Controller Board - USB Interface and Battery Charger
The Interface is given by a FD232RL, with self-power configuration. The 5V of USB don't power the robot, instead, charge the LiPo battery via MAX1555 circuit. I like MAX1811, because mre option like Low Batt indication, less charge time, but PCB space is a concern here.
After send the PCB for fabrication, I see a little mistake on this design. If you look this with Battery schematics, you see that only with the "ON/OFF" robot switch in "ON", the battery is charged. This was been corrected on next version.
USB and Battery charger
Controller Board - 3V LDO
For 3.3v devices i put a little LDO, because I don't need much power from this source.
3.3v LDO
Controller Board - RF transceiver
The transceiver choosen is the nRF24L01+, from Nordic. That's design is the same of SparkFun nRF24L01+ breakout board. So, I hope that works. 
Certainly this part  will be the most dificult to solder, because the nRF package. I don't have a SMD rework air station. Only when I have one this part will be soldered.

UPDATE 08/04/2009
The v1 PCB design was finished!
Some things change: 
  • LDO (Low Drop Out) Regulator MIC5205 for 3.3v devices;
  • Don't put Pin headers for stackable boards, althought I put a Mini Self-Adhesive Breadboard for small prototype (170 points in 1.8" x 1.4");
  • The Nokia 3310 LCD goes off, because some dificult in it's fixation on board;
  • For prototype, you have a header with 6 GPIOs (analog or digital pins) and access to +5v, +3.3v and GND;
  • A Buzzer! I like things that could make some noise;
  • A RGB led for general use, because I think that you need some blink LEDs to make your project a really nice project :D
The design comes with a NRF24L01+ for wireless communications. I like this little guy because your extreme very low power features (900nA in power down and 26uA in standby-I) WoW! And in most of cases I don't need full-duplex communication. With this feature, I'm stay really excitted to create a beacom frame for mutual identification between some robots, dont you?
Now that I finished the PCB design (see images bellow) I expect that in some days we have the robot mounted in the boards and look very professional.
Top (red) and Bottom (blue) Layers of Controller Board (with MCU): 
 3787157341_2c00055e0e_m.jpg                    3787967536_630af27476_m.jpg
Top (red) and Bottom (blue) Layers of Motors Board (with Motors):  
 3787157167_502072cb09_m.jpg                    3787967372_61829b823c_m.jpg

To view a greater image of PCBs, click on image files on begin of article (attachments)

GUI is a robot prototype made to be little, fast and easy to use and upgrade.  In your up board (main board) it has:
  • PIC MCU 18F252 at 20MHz;
  • DC-DC Boost converter NCP1400-5V;
  • The down board has:
  • Dual motor controller TB6612FNG;
  • 7 reflectance sensors QTR-1RC;
  • 2 Micro Gear Motor 30:1;
  • 3.7V LiPo battery.
The PIC is programmed with Tiny Bootloader, to easy program change. 
Robot dimensions are 73.12[L]x77.76[W]x32[H] mm. There's a lot of space for more things, yet. More photos in my flickr page.
The prototype works great, then a definitive PCB going to be designed to increment some new feetures. This include:
  • PIC MCU 18F452 TQFP, to add more I/O;
  • DC-DC Step-Up converter LM2623 for 5V devices;
  • DC-DC Step-Down converter (not defined yet) to 3.3V devices;
  • USB Serial FTDI 232RL for serial comunication;
  • LiPo Battery charge, directly from USB with MAX1555;
  • Nordic NRF24L01+ for half-dupplex comunication and telemetry;
  • Nokia 3310 LCD;
  • Pin Headers for stackable boards (like Arduino), for add... anything!;
All this stuff you found at SparkFun and Pololu.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

...at a long time ago, I'm developping a very large program, and it's load via ICSP spends a lot of time. When you is debugging your code, you can do thousands of new loads, so this delay is terrible. 

When you use a bootloader, your code is downloaded into the MCU at very high speed than via ICSP. For example, the default speeds of Tiny Bootloader is 19200bps and 115200bps. To download 16K of code at 115200bps, you only wait a few seconds.

And more: imagine add some wireless serial device (like ZigBee module) and download your code wireless? Really cool and useful when your robot stay some foots far away. 

Try it. Burn you MCU with the correct bootloader and you don't use your ICSP programmer for a long time (only when you bought a new device).

I'm addicted to bootloaders. 


...if you conects a 0.1uF capacitor in series with DTR pin of your serial cable and the MCLR MCU pin, you can download your code without touch your device!

This will reset your device at the begin of serial load, then you don't need to press any reset button in your device (press the reset button is a common task when you work with bootloaders).

Result: more time to write your code and enjoy it. 

Get a USB programmer :)
Specifically the PICkit2. Its very fast, and debugs. Much faster than any other RS232 cable.
...a USB programmer. It's don't a PICkit2, but it's USB too. But, even with a USB programmer, the main problem besides on ICSP interface, not in the PC interface. Really, try a bootloader one time.

Although I can see the advantage in using a bootloader, the longest flash time I've ever had using the PICKIT2 was 2 seconds for both write and verify... I don't think I'll ever need anything faster than that =D

WOW!  thats a really neat piece of work. i think i may build something like that too. really cool. compact, fast, reliable and expandable!

...anybody wants, I will post and send the schematics was soon they are finished. Both the prototype and definitive (definitive? I don't think so...) design.

That would be really nice!

I dont get how to make a programmer to work with tiny bootloader
I can't understand very well what you said: your question is about a _programmer_ (hardware that program the MCU) or a _program_ (code software). Please, explain more...