Friday, April 30, 2010

Another Sparkfun Response

OK- from the previous post, it would seem that Sparkfun made a boo-boo and is doing the right thing to fix it. Hurray for Sparkfun!

While I am composing the last post, this email comes in (I left off the email headerinformation because it was a pain to post as it kept gagging the HTML):

Hello Bruce,

Our returns department finished testing the ATmega328s you returned to us, and found that they had somehow made it out without the Arduino Bootloader having been loaded. I have placed a new order, # 21xxxx, which contains five ATmega328, DEV-09217.

Please let me know if I can help with anything else, and have a great day!

Best,

L (Sparkfun rep name)
Customer Service
SparkFun Electronics

Now- I have not yet returned anything, but they have tested them.  I think I will wait and see what comes in the mail. Sparkfun may be experiencing growing pains- that's OK; it happens. Let's see how they handle it. I believe they will make everything right, it just may take another pass at the problem to get there.

Sparkfun Response

Received from Sparkfun:

Subject: Re: [FWD: SparkFun Order 21xxxx]
From: Tech Support
Date: Fri, April 30, 2010 10:16 am
To: "Your Host"


Hi Bruce,


I talked to customer service, they should be sending you out 5 replacement ATMega328s with the bootloader and a return label for the 5 unprogrammed ones. Sorry for the inconvenience this has caused.


Thanks,


P (Sparkfun rep name)

Monday, April 26, 2010

Sent to Sparkfun

Subject: [FWD: SparkFun Order 2xxxxx]
Date: Mon, April 26, 2010 11:39 pm
To: customerservice@sparkfun.com

Good day.

I received my latest order from Sparkfun. I had some spark, but unfortunately, no fun.

On my previous order, I received Arduino 328 chips. All were marked with a red dot but one. I had my doubts, so I reserved it. When attempting a project with the unmarked chip, it would not load. OK, I still needed some more Arduino chips, so I ordered four more- Order 2xxxxx. I received the four chips I ordered, but none were marked. I removed one from the package and tested it- it would not load.

Here is what I did to test:

1) Took a known good circuit and removed the Arduino
2) Installed the unmarked Arduino
3) Recompiled the code
4) Attempted to download
5) Received the following error:
avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
6) Powered down
7) reinstalled the known good chip
8) Powered up, recompiled code
9) Downloaded code
10) Code executed as expected

I think none of these chips has the Arduino bootloader loaded on, even though my packing list has a certification of compliance signed by the Customer Service Manager. What do you think?

I am attempting to write a class using Arduino chips, but that is rather difficult when they are not the correctly configured chip and my deadlines are slipping. I now have 5 chips that are not what I purchased. What can you do to rectify this situation?

Sincerely,

Testing the Unknown

Not what I wanted to see:

avrdude: stk500_getsync(): not in sync: resp=0x00
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51
 
Looks like my backup chip really is not an Arduino.
Neither are the chips in the new order.
 
I took a known good circuit with a known good Arduino in it, removed the Arduino and replaced it with an unmarked chip. I recompiled the code and tried to download it. I received the error above. I powered down, swapped the known good chip back in, powered up, recompiled, loaded to the chip and the program ran as expected.
 
Time to contact Sparkfun.

Package from Sparkfun

The package from Sparkfun arrived today. I need to do some testing. On the last order, all the chips were marked with a red dot, except one. The unmarked chip does not appear to have the Arduino bootloader on it. I will run one more test on it. None of the chips that arrived today were marked. I hope they just forgot to mark them.

I am hopeful that I can start on the Arduino project again- I have ideas and need to implement them!

Slightly out-of-focus pictures below tell the story better.

Marked Arduino on left, Unmarked, probably not Arduino on right.

Unmarked chips. Hoping for bootloaders.

Since we are on the topic, it has been bbrought to my attention that one may construct an Arduino bootloader burner rather easily. This may be something to add to the end of the class. If I have an order of plain AtmelATMega 328 chips, then I may have to do this. Not without a call to Sparkfun first.


Saturday, April 24, 2010

Anticipation

Not much going on right now. Awaiting the delivery of new Arduinos from Sparkfun. My last adventure cost me an Arduino, if you remember. I will have A new Arduino as well as a few spares now. More posts as things move forward.

Saturday, April 17, 2010

Good day at The Generator

Today is the last Saturday of National Robotics Week. DPRG marked that date with an event at The Generator, a coffee shop in downtown Garland. the Arduino project made an appearance as well. There would have been one more Arduinp project board, but trying to get the board running at 6:30 this morning, a careless application of 12 volts was made, and that particular Arduino chip is no more. My backup chip, it turns out, may be a wonderful ATMega 328, but it is no Arduino. Maybe at one point, I will learn how to put the bootloader on the ATMega, but not today. Time for another order from Sparkfun.

The Arduino appeared in a rare, shared-power configuration. The Cylon board already had a voltage regulator on it, the Ping did not. These particular boards will snap together, so they were shapped and a jumper was run between the positive and negative 5-volt buses on each board. It would have looked great with the switching board in the middle, but that was not to be today.

Friday, April 9, 2010

RBNO

It's been a busy week.

Tuesday night was a productive night at Robot Builders Night Out (RBNO), a weekly gathering of DPRG (Dallas Personal Robotics Group http://www.dprg.org/ ) members. I finished a basic Arduino breadboard for the next class session. The next task is to see how much junk I can cram onto this board. It is sitting in front of me and the only additions are the USB to TTL converter and a phototransistor.

There have only been minimal changes made to the class, so there isn't much to report there.

Hopefully, I can make some progress this weekend and have more to report to you.

Monday, April 5, 2010

Arduino Project Checkpoint

Well, maybe I haven't been quite fair with you. Much of the work of the Arduino Project has been completed; at least as a draft. You have gotten to see snippets of the document without getting anything complete. I won't apologize for that as it is still a working document. I can't share the document at this point as I am working with someone else on this and have not discussed the topic with him.

What I will do is share the table of contents with you. I know, it isn't much, but you can get a feel for how things are progressing. The section on reading input has not been started yet. I need to build the board, write the class and the programs. 

If you happen to be within the reach of the Dallas Personal Robotics Group (http://www.dprg.org/), then please consider taking the introductory class and getting that under your belt. If you happen to BE a DPRG member, so much the better. If you are NOT YET a member of DPRG, visit the website and sign up! We do a lot of interesting things and have a lot of fun.

There are still a lot of detail items to complete before this class can be offered, but forward motion is being made; please have patience and the class should be available soon!

Remember- this is a DRAFT!

The Table of Contents is really tiny as that is the size I had to select to get the TOC to fit on the page. Go get your reading glasses and check it out.


Here is the Table of Contents:



Arduino Motor Control Breadboarding

OK- assuming you have already built your breadboard Arduino in the introductory class, here is where everything goes for the motor control session. Just plug and play. At this point you will still need motors, external power, and programming. 

You are playing along at home, aren't you?

Sunday, April 4, 2010

Arduino Using Ping ))) (tm)

Here is your latest snippet.

The Class


Ping)))™

What is Ping? “Ping” is a networking term used to troubleshoot network issues. It sends out a request and times how long before the response. It is analogous to a sonar ping used in submarines where a sound (audible or inaudible) is sent out and the response is timed to determine the distance of objects in water.

This demonstration uses a product from Parallax.com that is also called “ping”. Ping ))) ™ to be exact.

From the Parallax website: The Ping sensor measures distance using sonar; an ultrasonic (well above human hearing) pulse is transmitted from the unit and distance-to-target is determined by measuring the time required for the echo return. Output from the PING))) sensor is a variable-width pulse that corresponds to the distance to the target.

Read the Wikipedia entry: http://en.wikipedia.org/wiki/Sonar

Using Sonar

The Arduino chip is used to measure the distance as sound travels at a generally predictable rate through air at given densities (generally associated with altitude). The variances aren’t beyond usable in hobby robots.

Arduino supplies some code with the development platform code that handles the Ping )))™ (heretofore called just “Ping”) does return distance based on time of signal return. For this demonstration, functionality was added:

a) Delta distance

b) Indicating delta distance

c) Indicating direction

Sonar may be made more useful if other data points are included. Because the distance is measured with sound, it is not precise. The more measurements that are taken, then generally, the better the data on distance. However, there has to be a stopping point somewhere. This demonstration code takes the average (mean) of 4 distance samples. A better determination might be made taking the modal values and discarding the rest. This will be left as an exercise.

Once an acceptable distance is measured, the value is kept until the next measurement is averaged. The two distances are compared and the Delta (finite forward difference) of the distance is taken. From the Delta, direction may be determined- if the distance is smaller, then the gap between Ping and the sensed object is closing. If the distance is greater, then the gap is increasing.

Since the time between samples is known, then the rate of Delta may also be determined. At this point the following items are known:

Two distances

The Delta of those two distances

The rate of Delta for those two distances

Once the above information is in-hand...

==============

I know, this is such a tease- remember that the document is still in draft status right now.
Enjoy!

Saturday, April 3, 2010

Arduio Motor Control CLASS

I have, for the most part, finished the write-up for the motor control portion of the Arduino Project. The code works, the breadboarding is complete and the class is written. It's about time to move on to sensing input with the Arduino. However, for your enjoment, I have included a snippet from the class:

The Class

What is an H-bridge?

That’s a really good question. It is a device that allows voltage to be applied in either direction. The “H” is due to the graphical representation of the circuit used to control DC motor direction.

When controlling motors, especially drive motors, it is usually desirable to be able to not only control the motor speed with PWM, but to control the motor direction as well. To do that with a DC motor (the component used for this demonstration), one must reverse the polarity of the motor connections. Of course, this may be done with a relay, but a relay is not particularly advantageous for robotic control. One would like to be able to switch the motor direction at transistor speeds. It is possible to build a H-bridge with discreet components, but a low-cost H-bridges are available in DIP packages in such quantity that is makes more sense to try to find one of those to fit the project instead of “rolling your own”.

More information may be found on Wikipedia: http://en.wikipedia.org/wiki/H-bridge

This project uses the SN754410 Quadruple Half H-Driver. This particular unit was purchased from Sparkfun. It is a 16-pin DIP and will control two motors; 4.5 – 36 volts, one amp continuous rating. At this writing, Sparkfun offers the chip for $2.35.

The H-bridge has three distinct features that are interesting for this demonstration:

1) It can control two motors at significantly more power drain than the Arduino can

2) It is switchable at transistor speeds, direction AND speed; it supports PWM

3) It’s cheap

It also breadboards easily.

The way the H-bridge is controlled in this demonstration ...
 
And that is your tittilating tidbit for today. Enjoy!

Thursday, April 1, 2010

Nuts & Volts

This month's Nuts & Volts magazine (http://www.nutsvolts.com/) has an interesting article on breadboarding with the Arduino. Smiley builds a pretty breadboard. The breadboards in the advanced class will not be that neat. As there will be several projects during the course, the boards will be assembled and disassembled several times; there will not be time for nicely fitted connections.

Smiley also writes about Arduino novices and more experienced types. That is an important point to cover. The advanced Arduino course here is for the novice. Having fun is a big part of the course. Delving into the inner workings of the Arduino may indeed be fun for some, it is not typically an exercise for the novice.

In addition, Mr. Pardue is using a different development environment than this class will be using. Here is the environment for this Arduino class:


Obviously, there are many other development environments available, and each student is encouraged after the class to explore other options aviailable. This class is focused on learning and having fun. Students can take many paths in exploring the Arduino. This is your snippet for this evening.

National Robotics Week Arpil 10-18, 2010!